|
能夠?qū)崿F(xiàn)一下功能:
1、按下模式1按鈕時(shí),實(shí)現(xiàn)如下功能:
D2亮(其它燈不亮)→D4亮(其它燈不亮)→D6亮(其它燈不亮)→D8亮(其它燈不亮)并且以此循環(huán),每個(gè)等亮1S(用定時(shí)器實(shí)現(xiàn)延時(shí))。
2、按下模式2按鈕時(shí),實(shí)現(xiàn)如下功能:
D1不亮(其它燈亮)→D3不亮(其它燈亮)→D5不亮(其它燈亮)→D7不亮(其它燈亮)并且以此循環(huán),每個(gè)燈點(diǎn)亮1S(用定時(shí)器實(shí)現(xiàn)延時(shí))。
3、當(dāng)按下停止按鈕時(shí),停止工作,所有等熄滅。(適合初學(xué)者參考學(xué)習(xí))
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真放大圖
仿真圖
實(shí)現(xiàn)的功能(題目要求u)
程序的一部分
單片機(jī)源程序如下:
- #include <reg51.h>
- sbit key1 = P3^2;//給P3_2重命名
- sbit key2 = P3^4;//給P3_4重命名
- sbit key3 = P3^6;//給P3_6重命名
- unsigned char LED_shift[8] = {0xfd, 0xf7, 0xdf, 0x7f, 0x01, 0x04, 0x10, 0x40};
- void delay()//延時(shí)函數(shù)
- {
- unsigned int i = 1000;
- while(i--);
- }
- void main()//主函數(shù)
- {
- unsigned char cnt= 0;//設(shè)置標(biāo)志位
- unsigned char tmp = 0;
- unsigned char sec = 0;
- unsigned char shift = 0;
-
- TMOD = 0x01;//設(shè)置定時(shí)器0為定時(shí)模式,方式1
- TH0 = (65536 - 10000)/256;
- TL0 = (65536 - 10000)%256;//初值計(jì)算
- TR0 = 1;
-
- while(1)//死循環(huán)
- {
- if(key1 == 0)//按鍵檢測(cè)
- {
- delay();//防抖
- if(key1 == 0)
- {
- shift = 1;
- }
- while(!key1);
- }
- if(key2 == 0)//按鍵檢測(cè)
- {
- delay();//防抖
- if(key2 == 0)
- {
- while(!key2);
- }
- shift = 2;
- }
- if(key3 == 0)//按鍵檢測(cè)
- {
- delay();//防抖
- if(key3 == 0)
- {
- while(!key3);
- }
- shift = 0;
- }
- if(TF0 == 1)
- {
- TF0 = 0;
- TH0 = (65536 - 10000)/256;
- TL0 = (65536 - 10000)%256; //初值重裝
-
- tmp++;
- if(tmp >= 99)//定時(shí)1秒
- {
- tmp = 0;//重新清零
- if(shift == 0)
- {
- P1 = 0xff;
- }
- else if(shift == 1)
- {
- if(sec < 4)
- {
- P1 = LED_shift[sec];
- sec++;
- }
- else
- {
- sec = 0;
- }
- }
- else if(shift == 2)
- {
- if(sec < 4)
- {
- P1 = LED_shift[sec+4];
- sec++;
- }
- else
- {
- sec = 0;
- }
- }
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
定時(shí)計(jì)數(shù)器控制流水燈.zip
(53.8 KB, 下載次數(shù): 72)
2020-5-27 20:51 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|