標(biāo)題:
單片機(jī)流水燈 含Proteus仿真原理圖及代碼
[打印本頁(yè)]
作者:
1058047531
時(shí)間:
2022-3-22 16:37
標(biāo)題:
單片機(jī)流水燈 含Proteus仿真原理圖及代碼
之前學(xué)單片機(jī)做的一個(gè),以下是可實(shí)現(xiàn)的功能:
1. K1 為“啟動(dòng)鍵”,首次按壓 K1 可產(chǎn)生“自下向上” 的
流水燈運(yùn)動(dòng);
2. K2 為“停止鍵”,按壓 K2 可終止流水燈的運(yùn)動(dòng);
3. K3 和 K4 為“方向鍵”,分別產(chǎn)生 “自上向下”和 “自
下向上” 運(yùn)動(dòng)。
4. K5 為“閃爍鍵”,按壓 K5 可以使 4 個(gè)燈同時(shí)閃爍。
有很多不足,請(qǐng)多多指教。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.png
(77.49 KB, 下載次數(shù): 56)
下載附件
2022-3-22 16:37 上傳
2.png
(84.22 KB, 下載次數(shù): 36)
下載附件
2022-3-22 16:37 上傳
單片機(jī)源程序如下:
#include<reg51.h>
char led1[]={0xfe,0xfd,0xfb,0xf7}; //LED亮燈控制字
char led2[]={0xf0,0xff}; //LED閃爍控制字
bit dir=0,run=0,tao=0; //全局變量
unsigned char ms=0,i=0,j=3,k=0; //全局變量
unsigned char set; //全局變量
timer() interrupt 1 //T0方式延時(shí)延時(shí)函數(shù)
{
TH0=0x3c;
TL0=0xb0; //該初值為延時(shí)50ms,運(yùn)行10次后再進(jìn)行變量加一或減一即可實(shí)現(xiàn)延時(shí)500ms
ms++;
if(ms==10)
{
ms=0;
switch(set)
{
case 1:i++;break;
case 2:j--;break;
case 3:k++;break;
}
}
}
key() interrupt 0 //鍵控中斷函數(shù)
{
switch(P0&0x0f) //修改標(biāo)志位狀態(tài)
{
case 0x0e:run=1;break;
case 0x0d:run=0,dir=0;break;
case 0x0b:dir=1;tao=0;break;
case 0x07:dir=0;tao=0;break;
case 0x0f:tao=1;break;
}
}
void main()
{
TMOD = 0x01; //初始化T0,工作方式為工作方式1
TH0 = 0x3C;
TL0 = 0xB0;
ET0 = 1;
TR0 = 1;
IT0=1;EX0=1; //初始化外部中斷INT0
EA=1; //開(kāi)總中斷
PX0=0;PT0=1; //設(shè)置中斷優(yōu)先級(jí)
while(1)
{
if(run==1)
{
if(tao==1) //若run=1,tao=1,閃爍
{
set=3;
if(k==2)
{
k=0;
}
P2=led2[k];
}
else
{
if(dir==1) //若run=dir=1,自上向下流動(dòng)
{
set=1;
if(i==4)
{
i=0;
}
P2=led1[i];
}
else //若run=1;dir=0,自下向上流動(dòng)
{
set=2;
if(j==-1)
{
j=3;
}
P2=led1[j];
}
}
}
else
{
P2=0xff; //燈全滅
}
}
}
復(fù)制代碼
Keil代碼與Proteus仿真下載:
流水燈.zip
(60.29 KB, 下載次數(shù): 22)
2022-3-22 16:37 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1