單片機(jī)實(shí)驗(yàn)報(bào)告流水燈雙機(jī)通信交通燈定時(shí)時(shí)鐘_第1頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告流水燈雙機(jī)通信交通燈定時(shí)時(shí)鐘_第2頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告流水燈雙機(jī)通信交通燈定時(shí)時(shí)鐘_第3頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告流水燈雙機(jī)通信交通燈定時(shí)時(shí)鐘_第4頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告流水燈雙機(jī)通信交通燈定時(shí)時(shí)鐘_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一 流水燈實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康?) 簡(jiǎn)單I/O引腳的輸出2) 掌握軟件延時(shí)編程方法3) 簡(jiǎn)單按鍵輸入捕獲判斷二、 實(shí)驗(yàn)實(shí)現(xiàn)的功能1) 開(kāi)機(jī)是點(diǎn)亮12發(fā)光二極管,閃爍三下2) 按照順時(shí)針循環(huán)依次點(diǎn)亮發(fā)光二極管3) 通過(guò)按鍵將發(fā)光二極管的顯示改為順逆時(shí)針?lè)绞饺?系統(tǒng)硬件設(shè)計(jì)流水燈原理圖四、 系統(tǒng)軟件設(shè)計(jì)演示程序按鍵閃爍正轉(zhuǎn)反轉(zhuǎn)五、 實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題及解決方法1) 每次循環(huán)無(wú)論正轉(zhuǎn)還是反轉(zhuǎn)程序,總先是先執(zhí)行P1口的8位led燈。原因:在利用KEIL自帶的庫(kù)函數(shù)中的_crol_和_cror_時(shí),在正轉(zhuǎn)和反轉(zhuǎn)程序中應(yīng)該調(diào)換順序的,開(kāi)始沒(méi)注意到。改正后顯示正常。2) 在開(kāi)始實(shí)驗(yàn)的時(shí)候?qū)嵭械氖且恢毖?/p>

2、環(huán)的方式,利用按鍵嵌套。后來(lái)發(fā)現(xiàn)不理想,每次按鍵按到三次以上后進(jìn)入死循環(huán)。解決方案:利用一個(gè)按鍵,顯示一次。并加入按鍵釋放,防止誤動(dòng)作。 指導(dǎo)老師簽字: 日期:實(shí)驗(yàn)一程序:/*工程說(shuō)明: 本工程主要完成了一下功能:1,復(fù)位后演示所有功能2,燈閃爍三次3,流水燈正轉(zhuǎn)4,流水燈反轉(zhuǎn)函數(shù)說(shuō)明:yanshi():演示程序dengss():閃爍程序right():正轉(zhuǎn)程序left(): 反轉(zhuǎn)程序scankey():按鍵掃描*/#ifndef _led_h#define _led_h#define uint unsigned int#define uchar unsigned charuchar i,j,

3、a,b,c,d;uchar flag=0;/亮燈判斷標(biāo)志uchar aa,bb,cc,dd,ss;sbit H1=P36;sbit key1=P05;sbit key2=P06;sbit key3=P07;void delay(uint);/1ms延時(shí)void yanshi(void);/演示所有亮燈方式void dengss(void);/閃爍三次void left(void); /左循環(huán)亮燈void right(void);/右循環(huán)亮燈void scankey(); /按鍵掃描#endif#include"stc10.h"#include<intrins.h>

4、;#include<led.h> /包含各種變量定義及函數(shù)聲明main()yanshi();delay(2000); /兩秒后進(jìn)入可控大循環(huán) while(1)scankey();if(flag=0)right();if(flag=1) left();if(flag=2)dengss();void delay(uint x)uint i,j;for(i=110;i>0;i-)for(j=x;j>0;j-);void yanshi()dengss();right();left();P2=0XFF;P3=0XFF;void dengss()for(ss=3;ss>0;s

5、s-)P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);flag+=3;/退出小循環(huán),只亮一次,增大按鍵掃描頻率void right()aa=0xfe;for(a=8;a>0;a-)P2=aa;aa=_crol_(aa,1);delay(500);bb=0xfb;P2=0xff;/熄滅循環(huán)后亮著的for(b=4;b>0;b-)P3=bb;bb=_crol_(bb,1);delay(500);/D12保留發(fā)亮flag+=3;/退出小循環(huán),只亮一次,增大按鍵掃描頻率void left()cc=0xdf;for(c=4;c>0

6、;c-)P3=cc;cc=_cror_(cc,1);delay(500);P3=0xff;/熄滅D9dd=0x7f;for(d=8;d>0;d-)P2=dd;dd=_cror_(dd,1);delay(500);/D1保留發(fā)亮flag+=3;/退出小循環(huán),只亮一次,增大按鍵掃描頻率void scankey()H1=0;if(key1=0)delay(10); if(key1=0)flag=0;while(!key1);/等待按鍵釋放if(key2=0)delay(10); if(key2=0)flag=1;while(!key2);/等待按鍵釋放if(key3=0)delay(10);

7、if(key3=0)flag=2; while(!key3);/等待按鍵釋放實(shí)驗(yàn)二 定時(shí)器或?qū)崟r(shí)時(shí)鐘實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康?) 數(shù)碼管動(dòng)態(tài)顯示技術(shù)2) 定時(shí)器的應(yīng)用3) 按鍵功能定義二、 實(shí)驗(yàn)實(shí)現(xiàn)的功能1) 通過(guò)按鍵可以設(shè)定定時(shí)時(shí)間,啟動(dòng)定時(shí)器,定時(shí)時(shí)間到,讓12個(gè)發(fā)光二極管閃爍,完成定時(shí)器功能。2) 實(shí)時(shí)時(shí)鐘,可以設(shè)定當(dāng)前時(shí)間,完成鐘表功能(四位數(shù)碼管分別顯示分鐘和秒)。三、 系統(tǒng)硬件設(shè)計(jì)定時(shí)器或?qū)崟r(shí)時(shí)鐘實(shí)驗(yàn)仿真圖定時(shí)器0四、 系統(tǒng)軟件設(shè)計(jì)按鍵正常時(shí)鐘倒計(jì)時(shí)時(shí)鐘數(shù)碼顯示全為0時(shí)燈閃爍五、 實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題及解決方法定時(shí)器0調(diào)試過(guò)程中:a) 建好工程后,操作太快,忘了將保存過(guò)的C文件添加到工程

8、里面,提示無(wú)效module。b) 初始化函數(shù) init_0() 聲明時(shí)后面的;忘記了,調(diào)試后出現(xiàn)了很多錯(cuò)誤與警告,里面的變量及端口都提示重復(fù)定義。數(shù)碼管顯示過(guò)程中:a) 函數(shù)編寫(xiě)好后調(diào)用提示:uncalled segment ,ignored for overplay.原因:有函數(shù)未調(diào)用,可是我已經(jīng)調(diào)用所有函數(shù),后來(lái)檢查一段時(shí)間后發(fā)現(xiàn),count_down() 被我寫(xiě)成了count_dowm().b) FLAG標(biāo)志位應(yīng)用時(shí),當(dāng)FLAG=1時(shí)應(yīng)該立即執(zhí)行正常時(shí)鐘程序clock(),可是當(dāng)按鍵稍微晚些按時(shí)會(huì)出現(xiàn):延時(shí)一段時(shí)間后才執(zhí)行。原因: num(uchar)定義于timer_0()中,主程序開(kāi)

9、始時(shí)就啟動(dòng),并num+,開(kāi)始clock()并顯示正確時(shí)間條件是:num=20,在按鍵按的晚時(shí),num計(jì)數(shù)已超過(guò)20,必須等到超過(guò)定義的類型(uchar)然后重新從零記到20才能正確顯示。c) 當(dāng)FLAG=2時(shí),應(yīng)該在所有值均為0時(shí)進(jìn)入dengss(),可每次都是直接進(jìn)入。原因:全局變量和局部變量使用了相同的符號(hào)。查過(guò)資料后知,當(dāng)全局變量和局部變量使用了相同的符號(hào)時(shí),起作用的是局部變量,全局變量被屏蔽掉。所以當(dāng)在dengss()中出現(xiàn)fen_shiwei,fen_gewei,miao_shiwei,miao_gewei 時(shí)直接做0處理,而燈閃爍的條件就是這個(gè)。當(dāng)把display()中的變量名改變

10、后,執(zhí)行過(guò)clock()的數(shù)值被保存,在執(zhí)行count_down()時(shí)接著原來(lái)的數(shù)據(jù)變化。硬件仿真過(guò)程中:a) 數(shù)碼管全暗,按鍵無(wú)反應(yīng)原因:電阻沒(méi)有連接。 指導(dǎo)老師簽字: 日期:實(shí)驗(yàn)二程序:/*工程說(shuō)明:此工程主要完成以下任務(wù):1.數(shù)碼顯示2.按鍵掃描3.正常時(shí)鐘顯示4.倒計(jì)時(shí)5.定時(shí)中斷主要函數(shù)名說(shuō)明:void delay(uint);/1ms延時(shí)程序void init_0();/定時(shí)中斷初始化void scankey();/按鍵掃描 /是時(shí)鐘暫停與開(kāi)始,時(shí)間調(diào)整,F(xiàn)LAG調(diào)整void dengss(); /燈閃爍void clock();/正常時(shí)鐘void count_down();/倒計(jì)

11、時(shí)時(shí)鐘void display(uchar,uchar,uchar,uchar); /數(shù)碼顯示*/#include<stc10.h>#include<dingshi_shuma.h>/包含變量定義和函數(shù)聲明void main()P1M1=0x00;P1M0=0xff;init_0(); /初始化,設(shè)置50毫秒TR0=1; /啟動(dòng)定時(shí)器while(1)switch(FLAG)case 0:display(8,8,8,8);/操作前顯示數(shù)字8888scankey();break;case 1:clock();scankey();break;case 2:count_down

12、();scankey();break;#ifndef _dingshi_shuma_#define _dingshi_shuma_#define uint unsigned int#define uchar unsigned char#define deport1 P1 /定義數(shù)碼管段選數(shù)據(jù)入口#define deport0 P0 /定義按鍵選選擇數(shù)據(jù)入口uchar num,FLAG=0,ss;extern uchar fen_shiwei=0,fen_gewei=0,miao_shiwei=0,miao_gewei=0;uchar clock_num10=0x3f,0x06,0x5b,0x4

13、f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共陰極數(shù)碼顯示數(shù)組0-9sbit w1=P00;sbit w2=P01;sbit w3=P02;sbit w4=P03;/位選口定義void delay(uint);/1ms延時(shí)程序void init_0();/定時(shí)中斷初始化void scankey();/按鍵掃描void dengss(); /燈閃爍void clock();/正常時(shí)鐘void count_down();/倒計(jì)時(shí)時(shí)鐘void display(uchar,uchar,uchar,uchar); /數(shù)碼顯示void init_0() /初始化,設(shè)置50毫秒定時(shí)TM

14、OD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;void timer_0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;num+;void delay(uint x)uchar i,j;for (i=110;i>0;i-)for(j=x;j>0;j-);void dengss()for(ss=3;ss>0;ss-)P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);void cl

15、ock() /正常時(shí)鐘程序if(num>=20) /1s定時(shí)num=0;miao_gewei+;if(miao_gewei=10)miao_gewei=0;miao_shiwei+;if(miao_shiwei=6)miao_shiwei=0;fen_gewei+;if(fen_gewei=10)fen_gewei=0;fen_shiwei+;if(fen_shiwei=6)fen_shiwei=0;display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);void count_down() /倒計(jì)時(shí)程序if(num>=20) /1s

16、定時(shí)num=0;miao_gewei-;if(miao_gewei=(0-1)miao_gewei=9;miao_shiwei-;if(miao_shiwei=(0-1)miao_shiwei=5;fen_gewei-;if(fen_gewei=(0-1)fen_gewei=9;fen_shiwei-;if(fen_shiwei=(0-1)fen_shiwei=5;display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);if(fen_shiwei|fen_gewei|miao_shiwei|miao_gewei)=0) /while(1)den

17、gss(); void display(uchar fen_shi,uchar fen_ge,uchar miao_shi,uchar miao_ge)w1=0;deport1=clock_numfen_shi;delay(10);w1=1;deport1=0; /消隱w2=0;deport1=clock_numfen_ge;delay(10);w2=1;deport1=0;/消隱w3=0;deport1=clock_nummiao_shi;delay(10);w3=1;deport1=0;/消隱w4=0;deport1=clock_nummiao_ge;delay(10);w4=1;depo

18、rt1=0;/消隱void scankey() uchar temp; P3=0xbf;temp=deport0;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=deport0;temp=temp&0xf0;if(temp!=0xf0)temp=deport0;switch(temp) case 0xdf: TR0=TR0;/暫停鍵break; case 0xbf: fen_shiwei+;if(fen_shiwei=6)fen_shiwei=0;break; case 0x7f: miao_shiwei+;if(miao_shiwei=

19、6)miao_shiwei=0;break;while(temp!=0xf0) /等待按鍵釋放 temp=deport0;temp=temp&0xf0; P3=0x7f;temp=deport0;temp=temp&0xf0;if(temp!=0xf0) delay(10);temp=deport0;temp=temp&0xf0;if(temp!=0xf0)temp=deport0;switch(temp) case 0xdf:FLAG+;if(FLAG>=3)FLAG=1;break;case 0xbf:fen_gewei+;if(fen_gewei=10)fe

20、n_gewei=0;break;case 0x7f:miao_gewei+;if(miao_gewei=10)miao_gewei=0;break;while(temp!=0xf0) /等待按鍵釋放 temp=deport0;temp=temp&0xf0; #endif實(shí)驗(yàn)三 雙機(jī)通信一、 實(shí)驗(yàn)?zāi)康腢ART 串行通信接口技術(shù)應(yīng)用二、 實(shí)驗(yàn)實(shí)現(xiàn)的功能用兩片核心板之間實(shí)現(xiàn)串行通信,將按鍵信息互發(fā)到對(duì)方數(shù)碼管顯示。三、 系統(tǒng)硬件設(shè)計(jì)雙機(jī)通訊實(shí)驗(yàn)仿真圖四、 系統(tǒng)軟件設(shè)計(jì)定時(shí)器0(定時(shí)時(shí)鐘)串口中斷(定時(shí)器1)按鍵數(shù)碼顯示數(shù)據(jù)傳送五、 實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題及解決方法串口通信過(guò)程中出現(xiàn)的問(wèn)題:a)

21、 在寫(xiě)程序前翻看了些相關(guān)資料,有一種寫(xiě)法是直接P2=SBUF;結(jié)果這種在接收程序中可以,但在發(fā)送程序中不可以。開(kāi)始一直找不到原因,用led燈測(cè)試時(shí),每次都是燈全亮。后來(lái)逐次嘗試才找到了問(wèn)題所在,但什么造成的這個(gè)結(jié)果還是沒(méi)找到。如果是因?yàn)槎丝趯S眉拇嫫鱌2和串口數(shù)據(jù)緩沖器SBUF間不可以直接傳送數(shù)據(jù),那接收程序中為什么可以呢? ?_?解決方案:兩寄存器中間找個(gè)中間變量。原因找到了:原程序SBUF=clock_nums; delay(5000); P2=SBUF;數(shù)據(jù)傳送所需的時(shí)間是非常短的,而中間的延時(shí)5s所需的數(shù)據(jù)已經(jīng)送走了,SBUF被重新初始化,所以出現(xiàn)了不正常的現(xiàn)象。結(jié)論:有中間變量是最可

22、靠的。b) 每次接收的數(shù)據(jù)都比發(fā)送的數(shù)據(jù)延遲一個(gè)節(jié)拍源程序:clock_num=SBUF; while(!RI);等待傳送完成RI=0;清零,等待接收dis();顯示函數(shù)當(dāng)修改成:clock_num=SBUF; dis();顯示函數(shù)while(!RI);等待傳送完成RI=0;清零,等待接收時(shí),問(wèn)題消失了。c) 上面的程序還有個(gè)問(wèn)題就是接收方的數(shù)碼管只是閃一下就熄滅了。應(yīng)把dis()放在while()后面,即:while(!RI)dis();這樣在等待下次接收數(shù)據(jù)的過(guò)程中,可以一直執(zhí)行顯示函數(shù)。d) 串口通信和定時(shí)器0不能同時(shí)運(yùn)行:TMOD定義問(wèn)題,在兩種初始化中定義不同,最后只能一個(gè)運(yùn)行.結(jié)論

23、:工程初始化時(shí)應(yīng)盡量把所有的初始化信息放在一起,方便檢錯(cuò).e) 數(shù)據(jù)傳送過(guò)程中,各位發(fā)生錯(cuò)位現(xiàn)象:在此實(shí)驗(yàn)中數(shù)據(jù)傳送方式為各位順次傳送的方式,傳送過(guò)程中容易由于信息未送達(dá)(丟失)而造成錯(cuò)位顯示現(xiàn)象.解決方案:在每個(gè)發(fā)送的數(shù)據(jù)前面發(fā)送一個(gè)標(biāo)志位,按照事先設(shè)置的標(biāo)志位分配數(shù)據(jù)位置. 指導(dǎo)老師簽字: 日期:實(shí)驗(yàn)三程序:發(fā)送程序:#include<stc10.h>#include<dingshi_shuma.h>main()P1M0=0XFF;P1M1=0;TR0=1;init();/串口初始化init_0(); /定時(shí)器0初始化,設(shè)置50毫秒while(1)switch(FL

24、AG)case 0:display(8,8,8,8);scankey();send();break;case 1:clock();scankey();send();break;case 2:count_down();scankey();send();break; void init()SCON=0X53; /0101 0011 /SMO SM1 SM2 REN TB8 RB8 TI RIPCON=0X80;TMOD=0X21;TH1=232;TL1=232;TR1=1;void send()switch(m)case 0:SBUF=10; /標(biāo)志位,區(qū)分送到的數(shù)據(jù)應(yīng)放在什么位上while(!T

25、I);TI=0;SBUF=miao_gewei;while(!TI)/等待數(shù)據(jù)發(fā)送完成并一直顯示上次發(fā)送的數(shù)據(jù)scankey();display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);TI=0;m+;break;case 1:SBUF=11; /標(biāo)志位,區(qū)分送到的數(shù)據(jù)應(yīng)放在什么位上while(!TI);TI=0;SBUF=miao_shiwei;while(!TI)/等待數(shù)據(jù)發(fā)送完成并一直顯示上次發(fā)送的數(shù)據(jù)scankey();display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);TI=0;m

26、+;break;case 2:SBUF=12; /標(biāo)志位,區(qū)分送到的數(shù)據(jù)應(yīng)放在什么位上while(!TI);TI=0;SBUF=fen_gewei;while(!TI)/等待數(shù)據(jù)發(fā)送完成并一直顯示上次發(fā)送的數(shù)據(jù)scankey();display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);TI=0;m+;break;case 3:SBUF=13; /標(biāo)志位,區(qū)分送到的數(shù)據(jù)應(yīng)放在什么位上while(!TI);TI=0;SBUF=fen_shiwei;while(!TI)/等待數(shù)據(jù)發(fā)送完成并一直顯示上次發(fā)送的數(shù)據(jù)scankey();display(fe

27、n_shiwei,fen_gewei,miao_shiwei,miao_gewei);TI=0;m=0;break;接收程序:#include<stc10.h>#define uint unsigned int#define uchar unsigned char#define deport1 P1 /定義數(shù)碼管段選數(shù)據(jù)入口uchar clock_num10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共陰極數(shù)碼顯示數(shù)組0-9uchar fen_shiwei=5,fen_gewei=6,miao_shiwei=7,miao_

28、gewei=8;uchar WEI_FLAG,t;sbit w1=P00;sbit w2=P01;sbit w3=P02;sbit w4=P03;/位選口定義void rec();void init();void delay(uint);void display(uchar,uchar,uchar,uchar); /數(shù)碼顯示main()P1M0=0XFF;P1M1=0;init();while(1)rec();void init()SCON=0X53; /0101 0011 /SMO SM1 SM2 REN TB8 RB8 TI RIPCON=0X80;TMOD=0X21;TH1=232;TL

29、1=232;TR1=1;void rec()WEI_FLAG=SBUF;while(!RI);RI=0; switch(WEI_FLAG)case 10:miao_gewei=SBUF;while(!RI)/等待數(shù)據(jù)接收完成并一直顯示上次接收的數(shù)據(jù)display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);RI=0;break;case 11:miao_shiwei=SBUF;while(!RI)/等待數(shù)據(jù)接收完成并一直顯示上次接收的數(shù)據(jù)display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);RI=

30、0;break;case 12:fen_gewei=SBUF;while(!RI)/等待數(shù)據(jù)接收完成并一直顯示上次接收的數(shù)據(jù)display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);RI=0;break;case 13:fen_shiwei=SBUF;while(!RI)/等待數(shù)據(jù)接收完成并一直顯示上次接收的數(shù)據(jù)display(fen_shiwei,fen_gewei,miao_shiwei,miao_gewei);RI=0;break;void display(uchar fen_shi,uchar fen_ge,uchar miao_shi,

31、uchar miao_ge)w1=0;deport1=clock_numfen_shi;delay(10);w1=1;deport1=0; /消隱w2=0;deport1=clock_numfen_ge;delay(10);w2=1;deport1=0;/消隱w3=0;deport1=clock_nummiao_shi;delay(10);w3=1;deport1=0;/消隱w4=0;deport1=clock_nummiao_ge;delay(10);w4=1;deport1=0;/消隱void delay(uint x)uchar i,j;for (i=110;i>0;i-)for(

32、j=x;j>0;j-);實(shí)驗(yàn)四 交通燈實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康?) 按鍵、數(shù)碼管、發(fā)光二極管綜合應(yīng)用編程技術(shù)2) 數(shù)據(jù)存儲(chǔ)于EEPROM的技術(shù)(也可以不使用)3) 定時(shí)中斷技術(shù)4) 按鍵中斷技術(shù)二、 實(shí)驗(yàn)實(shí)現(xiàn)的功能1) 對(duì)每個(gè)路口(主干道、次干道)的綠燈時(shí)間,及黃燈時(shí)間的設(shè)定。2) 設(shè)定參數(shù)掉電后不丟失(如果不使用EEPROM,此功能可以不實(shí)現(xiàn))。3) 緊急按鍵功能,當(dāng)按下該鍵時(shí),所有路口變成紅燈,相當(dāng)于交警指揮特殊車輛通過(guò)。再按該鍵,恢復(fù)正常顯示。三、 系統(tǒng)硬件設(shè)計(jì)交通燈實(shí)驗(yàn)仿真圖四、 系統(tǒng)軟件設(shè)計(jì)正常程序按鍵所有紅燈亮恢復(fù)到按鍵前狀態(tài)五、 實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題及解決方法1) 3秒閃爍程序只

33、是運(yùn)行了一下,沒(méi)有正常運(yùn)行原因:count 位置放錯(cuò)了。解決:將變量count拿到switch()外面就可以了。2) 閃爍像流水燈原因:每個(gè)燈之間時(shí)間間隔太大了。解決:把兩燈之間的延時(shí)去除,最后匯在一起延時(shí)處理。 指導(dǎo)老師簽字: 日期:實(shí)驗(yàn)四程序:/*工程說(shuō)明:由于實(shí)驗(yàn)板資源有限,交通燈模擬有如下約定:紅燈滅時(shí)做綠燈用,綠燈滅時(shí)做紅燈用本工程重要完成的功能如下:1,紅燈亮10秒;黃燈亮閃爍3秒,并在亮的過(guò)程中閃爍;綠燈亮10秒2,紅燈、綠燈交替亮滅3,按鍵1所有紅燈亮,按按鍵2恢復(fù)停止時(shí)狀態(tài)(燈的亮滅和原來(lái)一樣)*/#include<stc10.h>#define uint uns

34、igned int#define uchar unsigned char#define deport1 P1 /定義數(shù)碼管段選數(shù)據(jù)入口uchar FLAG=0,FLAG_1=1,count=9,num;/FLAG:燈三種狀態(tài)控制。flag:特殊狀況控制。uchar clock_num10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共陰極數(shù)碼顯示數(shù)組0-9void init();/初始化函數(shù),包括時(shí)鐘定時(shí)器0、外部中斷0.void go(); /行void ss(); /警示void stop(); /停void delay(uint)

35、;void scankey();void display(uchar,uchar,uchar,uchar);sbit L1=P05;sbit L2=P06;sbit L3=P07;/按鍵位定義sbit w1=P00;sbit w2=P01;sbit w3=P02;sbit w4=P03;/位選口定義sbit led1=P20;sbit led2=P21;sbit led3=P22;sbit led4=P23;sbit led5=P24;sbit led6=P25;sbit led7=P26;sbit led8=P27; /對(duì)各燈進(jìn)行位定義,然后單個(gè)操作sbit led9=P32;sbit led10=P33;sbit led11=P34;sbit led12=P35; /對(duì)各燈進(jìn)行位定義,然后單個(gè)操作sbit H1=P36; /第一排按鍵/sbit H2=P37;/第二排按鍵void main()P1M1=0x00;P1M0=0xff;init();while(1)if(FLAG=0)go(); /行else if(FLAG!=0)stop(); /停if(count<=3) /count<=3意味著著剩三秒就該換交通方向了 /此時(shí)黃燈開(kāi)始閃爍ss();display(0,count,coun

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論