下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1.使得8個發(fā)光二極管循環(huán)點亮,采用定時器方式0使得每個發(fā)光二極管點亮的時間為0.5s#include<reg51.h>#include<intrins.h>#defineucharunsignedcharucharT_count=0;/定時中斷voidtoProc()interrupt1TH0=(8192-5000)/32;/恢復初值TL0=(8192-5000)%32;if(+T_count=100)/0.5s移動一位P0=_crol_(P0,1);T_count=0;/主函數(shù)voidmain()TMOD=0;TH0=(8192-5000)/32;/5ms定時TL0
2、=(8192-5000)%32;EA=1;ET0=1;TR0=1;P0=0xfe;while(1);2.完成下面電路所示的功能,K1,K2對應兩個開關按鍵。P1口對應發(fā)光二極管的狀態(tài)P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7K1=0,K2=0ooOOooooK1=0,K2=1.ooooK1=1,K2=0.oo.ooK1=1,K2=1.#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitk1=P3人2;sbitk2=P3人3;/延時voiddelay(uintx)uchari;wh
3、ile(-x)for(i=0;i<120;i+);)/主函數(shù)voidmain()(while(1)(if(k1=0)&&(k2=0)(P1=0x00;delay(10);)elseif(k1=0)&&(k2=1)(P1=0xcc;delay(10);)elseif(k1=1)&&(k2=0)(P1=0xf0;delay(10);)else(P1=0xff;delay(10);)3.在一個數(shù)碼管上循環(huán)顯示“H'"E'#include<reg51.h>#defineucharunsignedchar#def
4、ineuintunsignedintucharcodetab=0xf6,0xf9,0xb8,0xb8,0xbf);ucharT_count=0;uchari=1;voidt0Proc()interrupt1TH0=0x3c;TL0=0xb0;if(+T_count=10)P0=tabi;i=(i+1)%5;/K1、K2同時按下/K1按下,K2不按/K2按下,K1不按L,“l(fā),“o,,循環(huán)的時間為1sT_count=0;)voidmain()(TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;TR0=1;ET0=1;P0=tab0;/初始化P0口while(1);)4.在6個數(shù)碼管上分
5、別顯示自己學號的后六位數(shù)字#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab=;/學號自己設置/延時voiddelay(uintx)uchari;while(x-)for(i=0;i<100;i+);/主函數(shù)voidmain()uchark;ucharwei=0x01;P0=tab0;P2=0x01;delay(1000);while(1)for(k=1;k<6;k+)wei=wei<<1;P0=tabk;/發(fā)
6、送數(shù)字段碼P2=wei;/發(fā)送位碼delay(1000);)5.做一個簡易30s的倒計時秒表,秒表的顯示通過8個發(fā)光二極管顯示出來。#include<reg51.h>#defineucharunsignedcharvoiddelay1s()uchari;for(i=0;i<10;i+)TH1=0x3c;TL1=0xb0;TR1=1;/啟動T1while(!TF1);/判斷T1有無請求TF1=0;)voidmain()uchari;uchart;TMOD=0x10;/選擇T1計時while(1)for(i=30;i>0;i-)t=(i/10)<<4)|(i%1
7、0);高四位顯示十位,低四位顯示個位P1=t;delay1s();))6.使用外中斷0來控制,去實現(xiàn)下列功能。其中K1為按鍵,P1口對應8個發(fā)光二極管的狀態(tài)P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7無按鍵按下(循環(huán)).OO.OO.OO.有按鍵按下.OOOO#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharucharcodetab=0xcc,0x30;sbitk1=P3人2;/延時voiddelay(uintx)uchari;while(-x)(for(i=0;i<120;i+);
8、)voidint0Proc()interrupt0(P1=0xf0;)/主函數(shù)voidmain()(ucharj;EA=1;EX0=1;IE0=1;while(1)(if(k1=1)/未按下(for(j=0;j<2;j+)(P1=tabj;delay(500);)8.采用定時器方式1使得8個發(fā)光二極管按如下方式點亮,循環(huán)的時間為2sP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7oooFo.oooo.oo.oo.#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab
9、=0x0f,0xf0,0xcc,0x00;ucharT_count=0;uchari=1;voidt0Proc()interrupt1TH0=0x3c;TL0=0xb0;if(+T_count=20)(P0=tabi;i=(i+1)%4;T_count=0;)voidmain()(TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;TR0=1;ET0=1;P0=tab0;/初始化P0口while(1);)9.在一個數(shù)碼管上循環(huán)顯示“0”“1”“5”3個數(shù)字,循環(huán)的時間為1s#include<reg51.h>#defineucharunsignedchar#defineuin
10、tunsignedintucharcodetab=0xbf,0x86,0xed;ucharT_count=0;uchari=1;voidintoProc()interrupt1TH0=0x3c;TL0=0xb0;if(+T_count=10)P0=tabi;i=(i+1)%3;T_count=0;voidmain()TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;TR0=1;ET0=1;P0=tab0;/初始化P0口while(1);10.在4個數(shù)碼管上穩(wěn)定顯示出“A”“C”“E”“P”四個字符。#include<reg51.h>#defineucharunsigned
11、char#defineuintunsignedintvoiddelay(uintx)uchari;while(x-)for(i=0;i<100;i+);voidmain()while(1)P0=0xf7;/AP2=0xb9;/CP3=0xf9;/EP1=0xf3;/Pdelay(500);12.做一個20s的簡易秒表,當按鍵K1按下時,秒表暫停計數(shù),K2按下時,開始計數(shù)#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharuchartab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7
12、d,0x07,0x7f,0x6f;sbitk1=P3人2;sbitk2=P3人3;ucharT_count=0;uchari=0;voiddelay(intx)uchari;while(x-)for(i=0;i<100;i+);voidt0Proc()interrupt1TH0=0x3c;/恢復定時器0初值TL0=0xb0;if(+T_count=10)/100ms*10=1s轉(zhuǎn)換狀態(tài)i+;P0=tabi/10;P2=tabi%10;if(i=20)(i=0;)T_count=0;)voidmain()(P0=tabi;P2=tabi;TMOD=0x01;TH0=0x3c;TL0=0xb
13、0;while(1)(if(k1=0&&k2=1)(EA=0;ET0=0;TR0=0;break;)elseif(k1=1&&k2=0)(EA=1;ET0=1;TR0=1;break;)14.使用外中斷1來控制,當無按鍵按下時8個發(fā)光二極管循環(huán)點亮,循環(huán)點亮的時間為1s,有按鍵按下時,8個發(fā)光二極管全部熄滅。#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitk1=P3人2;ucharcodetab=0x01,0x03,
14、0x07,0x0f,0x1f,0x3f,0x7f,0xff);ucharT_count=0;uchari=1;/T0定時voidT0Proc()interrupt1(TH0=0x3c;TL0=0xb0;if(+T_count=10)(P1=tabi;i=(i+1)%8;T_count=0;/INT1中斷函數(shù)voidInt1Proc()interrupt2(P1=0xff;EA=0;EX1=0;IT1=0;ET0=0;TR0=0;/主程序voidmain()(TMOD=1;EA=1;ET0=1;TR0=1;TH0=0x3c;TL0=0xb0;EX1=1;IT1=1;P1=0xfe;while(1
15、);16.完成下面電路所示的功能,K1,K2對應兩個開關按鍵。P1口對應發(fā)光二極管的狀態(tài)P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7K1=0,K2=0.K1=0,K2=1.ooooK1=1,K2=0oooo.ooK1=1,K2=1o.o.o.o.#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitk1=P3人2;sbitk2=P3人3;/延時voiddelay(uintx)(uchari;while(-x)(for(i=0;i<120;i+);/主函數(shù)voidmain()(w
16、hile(1)(if(k1=1)&&(k2=1)都未按下0:未按下,1:按下(P1=0x00;delay(10);elseif(k1=1)&&(k2=0)/k2按下,k1未按下(P1=0xf0;delay(10);elseif(k1=0)&&(k2=1)/k1按下,k2未按下(P1=0xcf;delay(10);elseif(k1=0)&&(k2=0)/都按下(P1=0x55;delay(10);完成下面電路的功能,P1口對應發(fā)光二極管的狀態(tài),狀態(tài)1顯示的時間為1s,狀態(tài)2顯示的時間為2s,狀態(tài)3顯示的時間為3s,如此循環(huán)P1.0
17、P1.1P1.2狀態(tài)1.Fo.狀態(tài)2o.狀態(tài)3.o#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab=0x05,0x06,0x03;ucharT_count=0;ucharState=0;uchari=1;voidt0Proc()interrupt1(TH0=0x3c;TL0=0xb0;switch(State)(case0:if(+T_count=10)(P1=tabi;i=(i+1)%3;T_count=0;State=1;break;case1:if(+T_count=20)(
18、P1=tabi;i=(i+1)%3;T_count=0;State=2;break;case2:if(+T_count=30)(P1=tabi;i=(i+1)%3;i=1;T_count=0;State=0;break;voidmain()(TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;P1=tab0;while(1);)17. 彩燈系統(tǒng),實現(xiàn)8個發(fā)光二極管從左到右點亮,每個發(fā)光二極管點亮的時間為2s,然后從右到左亮,每個發(fā)光二極管點亮的時間為1.5s.#include<reg51.h>#include<intrins.h>#def
19、ineucharunsignedcharucharcodetab=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;ucharcodetab1=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;ucharState=0;ucharT_count=0;uchari=1;voidt0Proc()interrupt1TH0=0x3c;TL0=0xb0;switch(State)case0:if(+T_count=20)P2=tabi;i=(i+1)%8;if(i=7)State=1;T_count=0;break;case1:if(+T_c
20、ount=15)i=(i+1)%8;P2=tab1i;if(i=7)State=0;i=1;T_count=0;break;)voidmain()(TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;P2=tab0;while(1);)18. 在4個數(shù)碼管上顯示出當天的日期。#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab=0x06,0x5b,0x06,0x6f);voiddelay(intx)uchari;while(x-)for(i=0;i<
21、;120;i+);)voidmain()P0=tab0;P2=tab1;P3=tab2;P1=tab3;delay(500);)19. 完成下面電路的功能,P1口對應發(fā)光二極管的狀態(tài),狀態(tài)1顯示的時間為3s,狀態(tài)2顯示的時間為1s,狀態(tài)3顯示的時間為0.5s,狀態(tài)4顯示的時間為0.1s,如此循環(huán)P1.0P1.1P1.2P1.3狀態(tài)1oo.狀態(tài)2o.狀態(tài)3.狀態(tài)4oooo#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab=0x0c,0x0e,0x0f,0x00;ucharT_count
22、=0;ucharState=0;uchari=1;voidt0Proc()interrupt1(TH0=0x3c;TL0=0xb0;switch(State)(case0:if(+T_count=30)(P1=tabi;i=(i+1)%4;T_count=0;State=1;break;case1:if(+T_count=10)(P1=tabi;i=(i+1)%4;T_count=0;State=2;break;case2:if(+T_count=5)(P1=tabi;i=(i+1)%4;T_count=0;State=3;break;case3:if(+T_count=1)(P1=tabi;
23、i=(i+1)%4;T_count=0;State=0;break;voidmain()TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;P1=tab0;while(1);數(shù)碼管數(shù)字顯示控制程序設計??刂埔螅河冒存IK1和K2分別控制數(shù)碼管顯示數(shù)字09的順序,當按下K1鍵時按從0到9的順序顯示,當按下K2時按從9到0的順序顯示。時間間隔均為1秒。硬件電路如圖所示。#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab1=0x3f,0x06,0x5b,0x
24、4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;ucharcodetab2=0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f;ucharT_count=0;sbitk1=P1A0;sbitk2=P1A1;uchari=0;voidt0Proc()interrupt1TH0=0x3c;TL0=0xb0;if(+T_count=10)T_count=0;i=(i+1)%10;voidmain()TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;P0=0x3f;while(1)if(k1=0&
25、;&k2=1)P0=tab1i;elseif(k1=1&&k2=0)(P0=tab2i;23. 89C51與PC通過串口通信,單片機采用方式3串行通信,晶振都采用12MHz,波特率為1200Baud。要求:當單片機收到PC發(fā)來的數(shù)據(jù)“S”后,將30H-3FH的16個字節(jié)發(fā)送給乙機,當單片機收到“P”H時就發(fā)40H-5FH的32個字節(jié)數(shù)據(jù)。#include<reg51.h>#include<stdio.h>char*startPoint;char*endPoint;voidsendData()(if(startPoint<=endPoint)
26、(SBUF=*startPoint;+startPoint;voidstartSend(char*start,char*end)(startPoint=start;endPoint=end;sendData();voidserialPorc()interrupt4(if(TI)(TI=0;sendData();else(RI=0;if(0x53=SBUF)(startSend(0x30,0x3f);elseif(0x50=SBUF)(startSend(0x40,0x5f);voidmain()(TMOD=0x20;TH1=0xe6;TL1=0xe6;TR1=1;SCON=0xd0;EA=1;
27、ES=1;24. while(1);交通控制系統(tǒng),如下圖所示,是交叉路口,要求:綠燈亮9秒后,黃燈閃3秒,后紅燈亮9秒,兩個數(shù)碼管分別顯視各種燈所剩余時間。#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab卜0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f;ucharcodetab1=0x4f,0x5b,0x06,0x3f;sbitRED_A=P0A0;sbitYELLOW_A=P0A1;sbitGREEN_A=P0A2;sbitRE
28、D_B=P0A3;sbitYELLOW_B=P0A4;sbitGREEN_B=P0A5;ucharOperation_Type=1;/操作類型變量ucharT_count=0;uchari=0;voidt0Proc()interrupt1TH0=0x3c;TL0=0xb0;switch(Operation_Type)case1:/紅燈亮RED_A=0;YELLOW_A=1;GREEN_A=1;RED_B=0;YELLOW_B=1;GREEN_B=1;if(+T_count=90)T_count=0;Operation_Type=2;i=0;if(T_count%10=0)(P3=tabi;P1
29、=tabi;i=(i+1)%10;break;case2:黃燈閃RED_A=1;YELLOW_A=YELLOW_A;GREEN_A=1;RED_B=1;YELLOW_B=YELLOW_B;GREEN_B=1;if(+T_count=30)(T_count=0;Operation_Type=3;i=0;if(T_count%10=0)(P3=tab1i;P1=tab1i;i=(i+1)%3;break;case3:/綠燈亮RED_A=1;YELLOW_A=1;GREEN_A=0;RED_B=1;YELLOW_B=1;GREEN_B=0;if(+T_count=90)(T_count=0;Oper
30、ation_Type=1;i=0;if(T_count%10=0)(P3=tabi;P1=tabi;i=(i+1)%10;break;)voidmain()(TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;P1=tab0;P3=tab0;while(1);)26用外部中斷1實現(xiàn)加計數(shù)功能,并將計數(shù)值輸出到數(shù)碼管上顯示。#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint/09的段碼ucharcodeDSY_CODE卜0x3f,0x06,0x5b,0x4f,0x66,0x6d
31、,0x7d,0x07,0x7f,0x6f,0x00;/計數(shù)值分解后各個待顯示的數(shù)位ucharDSY_Buffer=0,0,0;ucharCount=0;sbitClear_Key=P3人6;/數(shù)碼管上顯示計數(shù)值voidShow_Count_ON_DSY()DSY_Buffer2=Count/100;/獲取3個數(shù)DSY_Buffer1=Count%100/10;DSY_Buffer0=Count%10;if(DSY_Buffer2=0)/高位為0時不顯示DSY_Buffer2=0x0a;if(DSY_Buffer1=0)/高位為0,若第二位為。同樣不顯示DSY_Buffer1=0x0a;P0=D
32、SY_CODEDSY_Buffer0;P1=DSY_CODEDSY_Buffer1;P2=DSY_CODEDSY_Buffer2;/主程序voidmain()P0=0x00;P1=0x00;P2=0x00;EA=1;EX1=1;IT1=1;/下降沿觸發(fā)while(1)(if(Clear_Key=0)(Count=0;/清0Show_Count_ON_DSY();/INT1中斷函數(shù)voidEX_INT1()interrupt2(Count+;/計數(shù)值遞增28.LED燈要求亮2秒鐘,滅2秒鐘,要求使用定時計數(shù)器,要求寫主程序與中斷程序,fosc=6MHz#include<reg51.h>
33、;#defineucharunsignedcharucharT_count=0;sbitLED=P1A0;voidt0Proc()interrupt1(TH0=0x3c;TL0=0xb0;if(+T_count=20)(T_count=0;LED=LED;voidmain()(TMOD=1;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;while(1);29利用外部中斷0,每申請一次中斷使P0口連接的發(fā)光二極管點亮一個,從低位到高位,同時使P1口連接的發(fā)光二極管熄滅一個,從高位到低位#include<reg51.h>#defineucharunsignedcharucharcodetab=0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff);uchari=0;/INT1中斷函數(shù)voidEX_INT1()interrupt2P0=tabi;P1=tabi;if(+i=8)i=0;)/主程序voidmain()P0=0xff;P1=0x00;EA=1;EX0=1;IT0=1;/下降沿觸發(fā)while(1);)31.用定時計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 優(yōu)待證合作協(xié)議文本
- 2025版土地抵押權抵押權抵押權抵押資產(chǎn)證券化合同模板3篇
- 2025年度智能家居系統(tǒng)研發(fā)與裝修設計合同2篇
- 2025年全球及中國1-戊基-1H-吲哚行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國汽車雙面膠帶行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國流媒體音視頻產(chǎn)品行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球船底噴氣推進系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國游戲設計服務行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年度股權代持與風險控制協(xié)議書(個人股權轉(zhuǎn)讓與代持)4篇
- 2025年度大學學生心理健康服務合作協(xié)議
- 張家界喀斯特地貌
- 讓學生看見你的愛
- 12123交管學法減分練習題及答案二(帶圖文通用版)
- 銷售禮盒營銷方案
- 南潯至臨安公路(南潯至練市段)公路工程環(huán)境影響報告
- 《小英雄雨來》讀書分享會
- 初中數(shù)學校本教材(完整版)
- 重慶市銅梁區(qū)2024屆數(shù)學八上期末檢測試題含解析
- 中央導管相關血流感染防控
- 光的偏振和晶體光學基礎課件
- 中科大光學講義08光的偏振
評論
0/150
提交評論