




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章任務(wù)一:閃爍廣告燈的設(shè)計利用89c51單片機(jī)的端口控制兩個LED(D0和D1),編寫程序,實現(xiàn)兩個LED互閃。#in clude#define uint unsigned int#define uchar unsigned charsbit LED1=P0A0;sbit LED2=P0A1;void delayms(uint ms)uint i;v/hile(ms-)for(i=0;iD3-D4-D5 -D6-D7 ,然后再點亮D7-D6-D5-D4 -D3-D2-D1-DO,重復(fù)循環(huán)。#in clude#inelude define uint unsigned int#define u
2、char unsigned charuint i;uchar temp;uint a8 =Oxfe,Oxfd,Oxfb,Oxf7,Oxef,Oxdf,Oxbf,0x7f;void delayms(uint ms)wh ile(ms-) uint j;for(j=0;j120;j+);void main()vhile(1)P0=0xfe;v/hile(P0!=0x7f)/P1=temp;/delayms(500);P0=_croL(P0,1);delayms(250);temp=0x7f;v/hile(PO!=Oxfe)P0=temp;delayms(500);temp=_cror_(temp,
3、1);任務(wù)三:拉幕式與閉幕式廣告燈的設(shè)計利用89c51單片機(jī)的P0端口實現(xiàn)8個LED D0D7的拉幕式與閉幕式廣告燈設(shè)計。拉幕式:開始D0-D7全火,延時片刻后首先D3和D4亮,其次是D2和D5亮,再是D1 和D6亮,最后是DO和D7亮。閉幕式:開始D0D7全亮,延時片刻后首先DO和D7火,其次是D1和D6火,再是D2和 D5滅,最后是D3和D4滅。#in cludedefine uint unsigned int#define uchar unsigned charuchar code table=0xe7,0xc3,0x81,0x00;void delay(uint x)uint ij;f
4、or(i=x;i0;i-)for(j=120;j0;j-); void main()uint i; v/hile(1)P1=0xff;delay(500);for(i=0;i0;i-)P1=tablei-1;delay(500);任務(wù)四:復(fù)雜廣告燈的設(shè)計利用89c51單片機(jī)的端口實現(xiàn)8個LED (D0-D7)復(fù)雜廣告燈的控制,要求顯示規(guī)律為:正 向流水-反向流水-隔燈閃爍3次-高四盞、低四盞閃爍2次-隔兩盞閃爍3次,再重復(fù)循 環(huán)。#in clude#define uint unsigned int# includevoid delayms(uint ms)uint i;v/hile(ms-)f
5、or(i=0;i110;i+);void main()uint ij,xx2=0xaa,0xff,yy2=0xf0,0x0f,zz2=0xb6,0xff;unsigned char aa;v/hile(1)aa=Oxfe;for(i=0;i7;i+)P0=aa;aa=_crol_(aa,1);delayms(500);for(i=0;18;i+)PO=aa;aa=_cror_(aa,1);delayms(500);for(i=0;i3;i+)for(j=0;j2;j+)PO=xxj;delayms(500);for(i=0;i2;i+)for(j=0;j2;j+)po=yyj; delayms
6、(500);for(i=0;i3;i+)for(j=0;j2;j+)PO=zzj;delayms(500);任務(wù)五:單個LED數(shù)碼管顯示設(shè)計使用89c51的P0 口作為輸出口,外接LED數(shù)碼管,編寫程序,使數(shù)碼管循環(huán)顯示從09的 加1計數(shù)。#in clude#define uint unsigned int#define uchar unsigned charuchar table10= 0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;uint key=0;void intjnt()EA=1;IT0=1;EX0=1;void count_nu
7、m() interrupt 0if(key=9)key=0;else key+;void main()intjnt();while PO=tablekey;任務(wù)六:多個LED數(shù)碼管顯示設(shè)計使用單片機(jī)P0和P2 口作為輸出口,外接一個8位LED數(shù)碼管,編寫程序,使數(shù)碼管顯示“872AF635”。#in clude#in cludedefine uint unsigned int#define uchar unsigned chardelay(ms)vhHe(ms-) int i;for(i=0;i110;i+);main()uchara16 =0xc0,0xf9,0xa4 ,OxbO,0x99,
8、0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6, Oxa 1,0x86,0x8e;uchar b8 =0x08,0x07,0x02,0x0a,OxOf,0x06,0x03,0x05,j;uint i;while j=OxO1;for(i=0;i8;i+)P2=j;PO=abi;j=_crol_(j,1);.wddelay ;任務(wù)七:査詢式按鍵設(shè)計將8個按鍵從仆8進(jìn)行編號,如果苴中一個鍵被按下,則在LED數(shù)碼管上顯示相應(yīng)的鍵值。#in cludedefine uint unsigned int#define uchar unsigned charmain()uch
9、ara16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,Ox8e;PO=Oxff;while(PO!=Oxff) switch(PO)case Oxfe:P2=a1; break;case Oxfd:P2=a2; break;case Oxfb:P2=a3; break;case 0xf7:P2=a4; break;case Oxef:P2=a5; break;case Oxdf:P2=a6; break;case Oxbf:P2=a7; break;case 0x7f:P2=a8;任務(wù)八
10、:LED數(shù)碼管顯示矩陣鍵盤按鍵的設(shè)計設(shè)計一個傘4的矩陣鍵盤,以P1.0-P1.3作為行線,以P1.4-P1.7作為列線。要求:未按下 按鍵時,LED數(shù)碼管顯示按下按鍵時,在數(shù)碼管上顯示相應(yīng)的鍵值。#in clude#define uchar unsigned char#define uint unsigned intuchartable17=0xbf,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,Oxf8,0x80,0x90,0x88,0x83,0xc6,0wdxa1,0x86,0x8e;uint num=O; void delay(uint x)uchar i,j;f
11、or(i=x;i0;i-) for(j=120;j0;j-);keyscan() uint temp; temp=P2; temp&=OxOf;if(temp=0x0e)P2=OxfO; temp=P2;temp&=OxfO; svvitch(temp)case OxeO:num=1;break; case OxdO:num=2;break; case OxbO:num=3;break; case 0x70:num=4;if(temp=OxOd)P2=OxfO; temp=P2;temp & 二 OxfO; svvitch(temp) case OxeO:num=5;break; case O
12、xdO:num=6;break; case OxbO:num=7;break; case 0x70:num=8;if(temp=OxOb)P2=OxfO;temp=P2; temp&=OxfO;switch(temp)case OxeO:num=9;break; case OxdO:num=10;break;case OxbO:num=11;break;case 0x70:num=12;if(temp=0x07)P2=OxfO; temp=P2;temp & 二 OxfO; switch(temp) case OxeO:num=13;break;case OxdO:num=d4;break;c
13、ase OxbO:num=15;break;case 0x70:num=16;return num;void display(uint num) if(num=0)PO=Oxbf;PO=tablenum;main()uint temp;while P2=OxOf; temp=P2;if(temp!=OxOf) keyscan();display(num);(2)#in clude#define uchar unsigned char#define uint unsigned intsbit LED1=P2A0;sbit LED2=P2A1;uchar num;uchar code LED_co
14、de=OxcO, 0xf9,0xa4,0xb0,0x99,0x92,0x82, Oxf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;數(shù)碼管字形碼編碼void delay(uint x)uchar i,j;for(i=x;i0;i-) for(j=120;j0;j-);延時函數(shù)void display(uchar num)PO=LED_codenum;數(shù)碼管顯示函數(shù)void keyscan()/鍵盤掃描函數(shù)uchar temp;P1 =Oxfe;/key 1 -key4 第一行按下 temp=P1;temp&=OxfO;if(temp!=OxfO)delay
15、(10);/消除抖動 temp=P1;temp&=OxfO;if(temp!=OxfO) temp=P1; switch(temp)case Oxee:num=1; break;case Oxde:num=2; break;case Oxbe:num=3;break; case 0x7e:num=4; break;vhile(temp!=OxfO)/等待按鍵釋放 temp=P1; temp&=OxfO;P1 =Oxfd;/key5-key8 第二行按下temp=P1;temp & 二 OxfO;if(temp!=OxfO)delay(10);/消除抖動 temp=P1;temp&=OxfO;i
16、f(temp!=OxfO) temp=P1; sv/it ch(temp)case Oxed:num=5; break;case Oxdd:num=6; break;case Oxbd:num=7; break;case 0x7d:num=8; break;vhile(temp!=OxfO)/等待按鍵釋放 temp=P1; temp&=OxfO;P1 =Oxfb;/key9-key12 第三行按下temp=P1;temp&=OxfO;if(temp!=OxfO)delay(10);/消除抖動 temp=P1;temp&=OxfO;if(temp!=OxfO)temp=P1;switch(tem
17、p)case Oxeb:num=9; break;case Oxdb: num=10; break;case Oxbb: num=11; break;case 0x7b:num=12; break; v/hile(temp!=OxfO)/等待按鍵釋放 temp=P1; temp&二 OxfO;P1 =Oxf7;/key 13-key 16 第四行按下temp=P1;temp&=OxfO;if(temp!=OxfO)delay(1O);/消除抖動 temp=P1;temp&=OxfO;if(temp!=OxfO)temp=P1;sw 讓 ch(temp)case 0xe7:num=13;brea
18、k;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;vhile(temp!=0xf0) /等待按鍵釋放temp=P1;temp & 二 OxfO;void main()v/hile(1)keyscan();if(num=0)PO=Oxbf;elsedisplay( nu m-1);任務(wù)九:簡單撥號鍵盤的設(shè)計使用4*4的矩陣式鍵盤及8位共陽極LED數(shù)碼管設(shè)汁一個簡單撥號鍵盤,要求在初始狀態(tài) 時,8位數(shù)碼管均顯示化”,每按下一個號碼后,原8位LED數(shù)碼管顯示的內(nèi)容向左移動1 位。#in clude#in cl
19、udevin trins. h#define uint unsigned int#define uchar unsigned charuchar keycount=0,num;uchar code LED仁code=OxcO, 0xf9,0xa4 ,OxbO,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; 數(shù)碼管字形碼編碼uchar LED2_duan8=0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf;/8 段共陽數(shù)碼管編碼uchar LED2_wei8= 0x80,0x40,0x20,O
20、x10,0x08,0x04,0x02,0x01;void delay(uint x)uchar i,j;for(i=x;i0;i-)for(j=120;j0;j-);void displayOuchar i;/P2二0x80;for(i=0;i8;i+)P2 二 LED2_veii;P0=LED2_duan7-i;delay ;void keyscan()uchar temp;P3=0xfe;temp=P3;temp&二 OxfO;if(temp!=OxfO)delay(10);temp=P3;temp&=OxfO;if(temp!=OxfO)temp=P3;switch(temp)case
21、Oxee:keycount+;num=0;break;case Oxde:keycount+;num=1;break;case Oxbe:keycount+;num=2;break; case 0x7e:keycount+;num=3;break;while(temp!=OxfO)temp=P3; temp&=OxfO;P3=0xfd;temp=P3;temp & 二 OxfO;if(temp!=OxfO)delay(10);temp=P3;temp&=OxfO;if(temp!=OxfO)temp=P3;switch(temp)case Oxed: keycount+;num=4; brea
22、k; case Oxdd:keycount+;num=5;break;case Oxbd:keycount+;nuni=6;break; case 0x7d:keycount+;num=7;break;v/hile(temp!=OxfO)temp=P3; temp&二 OxfO;P3=Oxfb;temp=P3;temp & 二 OxfO;if(temp!=OxfO)delay(10);temp=P3;temp&=OxfO;if(temp!=OxfO)temp=P3; switch(temp)case Oxeb:keycount+;num=8;break;case Oxdb:keycount+;
23、num二9;break;case Oxbb:keycount+;num=10;break;case 0x7b:keycount+;nu1;break; vhile(temp!=OxfO)temp=P3; temp&=OxfO;P3=0xf7;temp=P3;temp&二 OxfO;if(temp!=OxfO)delay(10);temp=P3;temp&=OxfO;if(temp!=OxfO)temp=P3;switch(temp)case 0xe7:keycount+;num=12;break;case 0xd7:keycount+;num=13;break;case 0xb7:keycou
24、nt+;num=14;break;case 0x77:keycount+;num=15;break; whHe(temp!=OxfO)temp=P3; temp & 二 OxfO;void main()uchar i;v/hile(1)display();keyscan();if(keycount!=0)for(i=0;i右移流水-隔燈閃爍3次花樣顯示:如果按下K鍵 后,8只LED暫停默認(rèn)顯示,而進(jìn)行閃爍顯示,當(dāng)顯示達(dá)到5次后,繼續(xù)按默認(rèn)規(guī)律顯示。#in clude#define uint unsigned int#define uchar unsigned charuintLED_table
25、14=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfdfvoid delayms(uint ms)uint i;while(ms-)for(i=0;i120;i+);void intjnt()EA=1;EXO=1;IT0=1;void LED_shan() interrupt 0uint k;for(k=0;k5;k+)PO=Oxaa; delayms(500); PO=Oxff; delayms(500);void main()intjnt();v/hile(1)uint i;for(i=0;i14;i
26、+)PO=LED_tablei; delayms(500);for(i=0;i3;i+)PO=Oxaa; delayms(500);PO=Oxff; delayms(500);任務(wù)二:采用外中斷控制的條形LED彩燈設(shè)計P0端口作為輸岀口,外接條形LED。編寫程序,當(dāng)按鍵K未按下時,LED進(jìn)行循環(huán)左移顯 示。如果第1次按下按鍵K后,LED進(jìn)行循環(huán)右移顯示。如果第2次按下按鍵K后,LED 進(jìn)行拉幕式與閉幕式花樣顯示。如果第3次按下按鍵K后,又恢復(fù)循環(huán)左移顯示。#inelude unsigned char flag=O;/狀態(tài)標(biāo)志位unsigned char led =0;/LED 映射位unsig
27、ned char table=/花樣數(shù)組0x00,0x81,0xc3,0xe7,0xff,0xe7,0xc3,0x81;/先閉幕式再開幕式 void delayms(unsigned int ms);/延時函數(shù) void syslnit(void);/系統(tǒng)初始化void stepO(void);/狀態(tài)0void step 1 (void);/狀態(tài)1void step2(void);/狀態(tài)2void main(void)syslnit();v/hile(1)/初始化系統(tǒng)switch (flag)case 0: stepO();break;case 1: step1();break;case 2:
28、 step2();break; default: break;PO = -led;/將led值映射到LED燈delayms(500);/延時 500msvoid delayms(unsigned int ms)unsigned char i;for (;ms;ms-)for (i=110;i;i-);void syslnit(void)EX0 = 1; /打開外部中斷0EA =1;/打開總中斷IT0= 1; /外部中斷0下降沿觸發(fā)void stepO(void)led =1;/左移if (led=0)/溢出處理led = 0x01;void step 1 (void)led =1;/右移訐(l
29、ed=0)/溢出處理led = 0x80;void step2(void)static char t;led = tablet+; /開幕閉幕花樣顯示 if (t=8)t = 0;void EX_O() interrupt 0/外部中斷0服務(wù)函數(shù)flag+;if (flag=3)flag = 0;(2)#include/ 頭文件#define uchar unsigned char#define uint unsigned int/宏定義uchar temp,key_count;uchar code tab=/開幕式閉幕式編碼0x00,0x81,0xc3,0xe7,0xff,0xe7,0xc3
30、,0x81;void delay(uint ms) /延時子函數(shù)uint ij;for(i=ms;i0;i-)for(j=0;j110;j+);void loop_leftmove()temp=temp1;if(temp=0)temp=0x80;void open_close()uchar count;temp=tabcount;count+;if(count=8)count=0;void init()EA=1;EXO=1;IT0=1;temp=0;key_count=0;void main()init();while switch(key_c ount)case 0: loop_leftmo
31、ve (); break;case 1 :loop_rightmove();break;case 2:open_close(); break;default: break;P0=-temp;delay(250);void keyjnterrupt() interrupt 0/外部中斷 INTO 中斷服務(wù)程序key_count+;key_count%=3;/*if(key_count=3)key_count=0;*/任務(wù)三:采用兩個外中斷的LED彩燈控制P0端口作為輸出口,外接8只LED, P3.2外接按鍵K1, P3.3外接按鍵K2.編寫程序,沒 有按下任何按鍵時,LED隔燈閃爍,當(dāng)按鍵K1為
32、奇數(shù)次時,LED進(jìn)行左移流水-右移流水 顯示。當(dāng)按下按鍵K1為偶數(shù)次時,LED進(jìn)行拉幕式顯示:當(dāng)按下按鍵K2時,LED暫停顯示, 蜂鳴器發(fā)出叮咚”的開門聲音,然后LED繼續(xù)花樣顯示(K2按鍵優(yōu)先)。#in clude#in cludevin trins. h#define uchar unsigned char#define uint unsigned intsbit key1=P3A2;sb讓 key2=P3A3;sbit beep=P1A0;uchar code tab=0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7;/開幕式編碼uchar temp=0x0
33、1,key_count,flag,right,beep_FG;void delay(uint ms)uint ij;for(i=ms;i0;i-)for(j=110;j0;j-);void init()EA=1;/打開總中斷EX0=1;/打開外部中斷INTOEX1=1;/打開外部中斷INT1IT0=1;/下降沿觸發(fā)方式IT1=1;/下降沿觸發(fā)方式PXO=O;/設(shè)置INTO為低中斷優(yōu)先級PX1=1;/設(shè)置INT1為高中斷優(yōu)先級void interval_LED()PO=Oxff;delay(500);P0=0xaa;delay(500);void left_right_move()if(! ri
34、ght)temp=_crol_(temp, 1);elsetemp=_cror_(temp,1);if(temp=0x01)right=O;if(temp=0x80)right=1; void open_LED()uchar count; temp=tabcount+;if(cou nt=8)count=0;void Beep()uchar i,j,k;for(i=100;i;i-)for(j=20;j;j-)for(k=1000;k;k-)beep=beep;/*for(i=100;i;i-)for(j=200;j;j-)for(k=1000;k;k-)beep=beep;r/beep_FG
35、=O;void main()beep=0;while if(!flag)interval_LED();elseif(beep_FG)Beep();elseswitch (key_count%2)case 1:left_right_move();break;/奇數(shù)次按鍵左移右移顯示case 0:open_LED();break;/偶數(shù)次按鍵拉幕式顯示default: break;P0=-temp;delay(400);void key 1interrupt() interrupt 0flag;key_count+;void key2Jnterrupt() interrupt 2flag;beep
36、_FG=1;任務(wù)四:采用兩個外中斷實現(xiàn)LED鍵控移位P0端口作為輸出口,外接8只LED, P3.2外接按鍵K1, P3.3外接按鍵K2.編寫程序,要 求實現(xiàn)LED鍵控移位,按下按鍵K1時,8只LED左移4位;按下按鍵K2時,8只LED右 移1位。#in clude#in cludevin trins. h#define uint unsigned int#define uchar unsigned charuchar key1 =0,key2=0,tempi =0,temp2=0,tempi 仁0,tempi 2=0;/*void delayms(uint ms)uint i;v/hile(m
37、s-)for(i=0;i120;i+);*/void intjnt()EA=1;EX0=1;EX1=1;IT0=1;IT1=1;void intO() interrupt 0 key1+;void int1() interrupt 2key2+;void main()uchar a;intjnt();a=0xfe;while(1)if(temp1 !=key1)PO = a;a=_croL(a,1); tempi =key1;if(temp2!=key2)PO = a;a=_crorja,1); key2=temp2;(2)#in cludedefine uint unsigned int#d
38、efine uchar unsigned charuchar key 仁 0,key2=0,m ,n,k;uchar table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void intjnt()EA=1;EXO=1;IT0=1;EX1=1;IT1=1;void intO() interrupt 0key1+;m=key1%8;void int2() interrupt 2key2+;n=key2%8;void main()intjnt();while k=(m-n+8)%8;PO=tablek;任務(wù)五采用外中斷實現(xiàn)計數(shù)使用單片機(jī)PO、P2端口作為輸出口
39、,外接一個2位LED數(shù)碼管,P3.2外接按鍵P3.3 外接按鍵K2。編寫程序,每次按下K1時,LED數(shù)碼管進(jìn)行加1顯示:每次按下按鍵K2時, LED數(shù)碼管進(jìn)行減1顯示,計數(shù)范圍為099。#include/ 頭文件define uint unsigned int /玄迫義#define uchar unsigned char /宏定義uchar table=0xc0,Oxf9,0xa4,OxbO,0x99,0x92,0x82,Oxf8,0x80,0x90;/0-9 共陽字型碼編碼char count=0;uchar shi,ge;void LED_scan()/數(shù)碼管掃描子函數(shù)shi=count
40、/10; / / 分離十位ge=count%10; / / 分離個位P2=tablege;/顯示個位PO=tableshi;/顯示十位void intjnt() /初始化EA=1;/打開總中斷EX0=1;/打開外部中斷0EX1=1;/打開外部中斷1IT0=1;IT1=1;void main()intjnt();v/hile(1)/設(shè)置下降沿觸發(fā)方式/設(shè)置下降沿觸發(fā)方式/主函數(shù)/調(diào)用初始化函數(shù)LED_scan(); /調(diào)用數(shù)碼管掃描函數(shù)void intO() interrupt 0/外部中斷0服務(wù)程序 count+; /計數(shù)加 1 if(count=100) / / 溢出操作count=0;vo
41、id int2() interrupt 2/外部中斷1服務(wù)程序 count-;/計數(shù)減 1if(count0)/ / 溢岀操作count=99;#include /頭文件define uint unsigned int /公泄義#define uchar unsigned char /宏定義uchar table=0xc0,Oxf9,0xa4,OxbO,0x99,0x92,0x82,Oxf8,0x80,0x90;/0-9 共陽字型碼編碼 char count=0;uchar shi,ge;void delay(uint ms)/延時子函數(shù)uchar i;for(;ms;ms-)for(i=12
42、0;i;i-);void LED_scan()/數(shù)碼管掃描子函數(shù)shi=count/10;/分離十位ge=count%10; / / 分離個位P2=0x01;/個位對應(yīng)的數(shù)碼管點亮PO=tablege;/顯示個位delay ;P2=OxO2;/十位對應(yīng)的數(shù)碼管點亮PO=tableshi;/顯示十位 delay (1);void intjnt() /初始化EA=1;/打開總中斷EX0=1;/打開外部中斷0EX1=1;/打開外部中斷1IT0=1;/設(shè)置下降沿觸發(fā)方式IT1=1;/設(shè)置下降沿觸發(fā)方式svoid main()/主函數(shù)intjnt();調(diào)用初始化函數(shù)v/hile(1)LED_scan()
43、; /調(diào)用數(shù)碼管掃描函數(shù)void intO() interrupt 0/外部中斷0服務(wù)程序 count+;/計數(shù)加 1if(count=100)/ / 溢岀操作count=0;void int2() interrupt 2/外部中斷1服務(wù)程序count-;/計數(shù)減 1if(count0)/ / 溢岀操作count=99;任務(wù)六:采用外中斷進(jìn)行計數(shù)和清零控制使用單片機(jī)P0、P2端口作為輸出口,外接一個2位LED數(shù)碼管,P3.2外接按鍵K1, P3.3 外接按鍵K2。編寫程序,按鍵K2作為“加1/暫停/淸零”控制:按鍵K1作為加1計數(shù)控 制。當(dāng)按鍵K2沒有按下時,按鍵K1按下后LED數(shù)碼管總顯示為
44、0:第1次按下鍵K2時, 每次按下K1, LED數(shù)碼管進(jìn)行加1顯示;第二次按下按鍵K2時,暫停加1計數(shù),按鍵K1 按下后LED數(shù)碼管顯示暫停前的數(shù)值:第3次按下按鍵K2時,LED數(shù)碼管顯示為0:第4 次按下按鍵K2時,與第1次類似。#in clude#define uint unsigned int#define uchar unsigned charuchar key仁0,tempi =0,key2=0,temp2=0,key=0;uchar table=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;void delayms(uint m
45、s)while(ms)uint i=0; for(i;i120;i+);void intjnt()EA=1;EX0=1;EX1=1;IT0=1;IT1=1;void int1() interrupt 0key2+;void intO() interrupt 2key1+;void displayOP2=0xfe;P0=tabletemp1;delayms(2);P2=0xfd;P0=tabletemp2;delayms(2);void main()tempi =key1%10;temp2=key1/10;switch (key2%3)case 0:7hile(1)if(key2%3!=0) b
46、reak;P2=0xfe;PO=tableO;delayms(2);P2=0xfd;PO=tableO;delayms(2);key1=0;break;case 1: display();break;case 2:key=key1;vhile(1)if(key2%3!=2) break;P2=0xfe;P0=tabletemp1;delayms(2);P2=0xfd;P0=tabletemp2;delayms(2);key1=key;break;第六章任務(wù)一:簡單計數(shù)器的設(shè)計使用單片機(jī)P0, P2端口作為輸出口,外接一個2位LED數(shù)碼管,P3.4外接按鍵K。編寫程 序,每次按鍵K按下時LED數(shù)
47、碼管進(jìn)行加1顯示,計數(shù)范圍為099。#in clude#define uint unsigned int#define uchar unsigned charuchar table=OXCO,0XF9,0XA4,OXBO,0X99,0X92,0X82,0XF8,0X80,0X90;uchar key=0;void delayms(uint ms)uint i;v/hUe(ms-)for(i=0;i120;i+);void intjnt()EA=1;ET0=1; /開泄時器0中斷TR0=1; 啟動定時器0TMOD=0x05;/設(shè)置工作方式為1選擇計數(shù)功能THO=Oxff;TLO=Oxff; /裝初值使得按一下就中斷void int1() interrupt 1 THO=Oxff;TLO=Oxff; key+;void displayOP2=0xfe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于孩子撫養(yǎng)權(quán)的離婚合同書
- 貨物采購合同補(bǔ)充協(xié)議
- 設(shè)備銷售與購買合同范文
- 車險綜合保險合同示例
- 服務(wù)合同預(yù)付款借款范本
- 歌手簽約演出服務(wù)合同
- 服裝采購代理合同
- 大型建筑機(jī)械租賃合同樣本范本
- 城鄉(xiāng)結(jié)合部三方共建項目合同
- 商鋪租賃合同規(guī)范樣本
- 正大集團(tuán)大豬場開發(fā)流程
- 高中政治必修四知識體系每單元的總體框架
- 房地產(chǎn)金融創(chuàng)新與風(fēng)險防范的理論演進(jìn)
- GB/T 41255-2022智能工廠通用技術(shù)要求
- GB/T 41029-2021石油天然氣鉆井海洋棄井作業(yè)規(guī)程
- 深入推進(jìn)依法行政
- GB/T 4026-1992電器設(shè)備接線端子和特定導(dǎo)線線端的識別及應(yīng)用字母數(shù)字系統(tǒng)的通則
- 馬工程教材《公共財政概論》PPT-第二章 公共財政職能
- GB/T 14643.5-2009工業(yè)循環(huán)冷卻水中菌藻的測定方法第5部分:硫酸鹽還原菌的測定MPN法
- GB/T 13762-2009土工合成材料土工布及土工布有關(guān)產(chǎn)品單位面積質(zhì)量的測定方法
- 醫(yī)院轉(zhuǎn)診轉(zhuǎn)院記錄單
評論
0/150
提交評論