郭天祥之十天學(xué)會(huì)單片機(jī)視頻配套程序?qū)嵱?_第1頁(yè)
郭天祥之十天學(xué)會(huì)單片機(jī)視頻配套程序?qū)嵱?_第2頁(yè)
郭天祥之十天學(xué)會(huì)單片機(jī)視頻配套程序?qū)嵱?_第3頁(yè)
郭天祥之十天學(xué)會(huì)單片機(jī)視頻配套程序?qū)嵱?_第4頁(yè)
郭天祥之十天學(xué)會(huì)單片機(jī)視頻配套程序?qū)嵱?_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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、Lessonl作業(yè)i用位操作點(diǎn)亮第一個(gè)發(fā)光管適用TX-1C單片機(jī)實(shí)驗(yàn)板晶振為11.0592M#include/52單片機(jī)頭文件sbitled1=P1A0;單片機(jī)管腳位聲明voidmain()主函數(shù)led1=0;將單片機(jī)P1.0口清零while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。、用總線操作點(diǎn)亮第一個(gè)發(fā)光管#include/52單片機(jī)頭文件voidmain()主函數(shù)P1=0 xfe;將單片機(jī)P1口的8個(gè)口由高到低分別賦值為11111110while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。3、用位操作點(diǎn)亮最后一個(gè)發(fā)光管.*/#include/52單片機(jī)頭文件sbitled8

2、=P1A7;單片機(jī)管腳位聲明voidmain()主函數(shù)led8=0;將單片機(jī)P1.7口清零while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。4用總線操作點(diǎn)亮最后一個(gè)發(fā)光管#include/52單片機(jī)頭文件voidmain()主函數(shù)P1=0 x7f;將單片機(jī)P1口的8個(gè)口由高到低分別賦值為01111111while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。5用位操作點(diǎn)亮1,3,5,7發(fā)光管#include/52單片機(jī)頭文件sbitled1=P1A0;單片機(jī)管腳位聲明sbitled3=P1A2;單片機(jī)管腳位聲明sbitled5=P1A4;單片機(jī)管腳位聲明sbitled7=P1A6

3、;單片機(jī)管腳位聲明voidmain()主函數(shù)led1=0;將單片機(jī)P1.0口清零led3=0;將單片機(jī)P1.2口清零led5=0;將單片機(jī)P1.4口清零led7=0;將單片機(jī)P1.6口清零while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。6用總線操作點(diǎn)亮1,3,5,7發(fā)光管#include/52單片機(jī)頭文件voidmain()主函數(shù)P1=0 xaa;將單片機(jī)P1口的8個(gè)口由高到低分別賦值為10101010while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。、用位操作點(diǎn)亮2,4,5,6發(fā)光管.#include/52單片機(jī)頭文件sbitled2=P1A1;單片機(jī)管腳位聲明sbit

4、led4=P1A3;單片機(jī)管腳位聲明sbitled5=P1A4;單片機(jī)管腳位聲明sbitled6=P1A5;單片機(jī)管腳位聲明voidmain()主函數(shù)led2=0;將單片機(jī)P1.1口清零led4=0;將單片機(jī)P1.3口清零led5=0;將單片機(jī)P1.4口清零led6=0;將單片機(jī)P1.5口清零while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。8、用總線操作點(diǎn)亮2,4,5,6發(fā)光管#include/52單片機(jī)頭文件voidmain()主函數(shù)P1=0 xc5;將單片機(jī)P1口的8個(gè)口由高到低分別賦值為11000101while(1);程序停止在這里,在后面會(huì)講到為什么這樣寫(xiě)。/52單片機(jī)頭

5、文件單片機(jī)管腳位聲明主函數(shù)9嘗試讓第一個(gè)發(fā)光管閃爍(程序看不懂沒(méi)關(guān)系,后面章節(jié)會(huì)有詳細(xì)講解)#includesbitled1=P1A0;voidmain()unsignedinti;/定義一個(gè)int型變量while(1)i=50000;led1=0;while(i-);i=50000;led1=1;while(i-);變量賦初值為50000點(diǎn)亮燈延時(shí)熄滅燈0嘗試寫(xiě)出流水燈程序(程序看不懂沒(méi)關(guān)系,后面章節(jié)會(huì)有詳細(xì)講解)#include/52單片機(jī)頭文件voidmain()主函數(shù)unsignedinti;/定義一個(gè)int型變量while(1)i=50000;變量賦初值為50000P1=0 xfe;

6、點(diǎn)亮第一個(gè)燈while(i-);延時(shí)i=50000;變量賦初值為50000P1=0 xfd;點(diǎn)亮第二個(gè)燈while(i-);延時(shí)i=50000;變量賦初值為50000P1=0 xfb;點(diǎn)亮第三個(gè)燈while(i-);延時(shí)i=50000;變量賦初值為50000P1=0 xf7;點(diǎn)亮第四個(gè)燈while(i-);延時(shí)i=50000;變量賦初值為50000P1=0 xef;點(diǎn)亮第五個(gè)燈while(i-);延時(shí)i=50000;變量賦初值為50000P1=0 xdf;點(diǎn)亮第六個(gè)燈while(i-);延時(shí)i=50000;變量賦初值為50000P1=0 xbf;點(diǎn)亮第七個(gè)燈while(i-);延時(shí)i=5000

7、0;變量賦初值為50000P1=0 x7f;點(diǎn)亮第八個(gè)燈while(i-);延時(shí)Lesson2i第一個(gè)發(fā)光管以間隔200ms閃爍/*#include/52單片機(jī)頭文件#defineuintunsignedint宏定義#defineucharunsignedchar宏定義如delay(200);大約延時(shí)sbitled1=P1A0;單片機(jī)管腳位聲明voiddelay(uintz)延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),200ms.delay(500);大約延時(shí)500ms.uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidmain()主函數(shù)while(1)大循環(huán)

8、led1=0;點(diǎn)亮小燈delay(200);/延時(shí)200毫秒led1=1;熄滅小燈delay(200);/延時(shí)200毫秒28個(gè)發(fā)光管由上至下間隔1s流動(dòng)其中每個(gè)管亮500ms滅500ms,亮?xí)r蜂鳴器響滅時(shí)關(guān)閉蜂鳴器,一直重復(fù)下去。#include/52單片機(jī)頭文件#include/包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義如delay(200);大約延時(shí)sbitbeep=P2A3;voiddelay(uintz)延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),200ms./delay(500);大約延時(shí)500m

9、s.uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidmain()主函數(shù)uchara;a=0 xfe;while(1)大循環(huán)P1=a;點(diǎn)亮小燈beep=0;開(kāi)啟蜂鳴器delay(500);/延時(shí)500毫秒P1=0 xff;熄滅小燈beep=1;關(guān)閉蜂鳴器delay(500);/延時(shí)500毫秒a=_crol_(a,1);/將a變量循環(huán)左移一位38個(gè)發(fā)光管來(lái)回流動(dòng),每個(gè)管亮100ms,流動(dòng)時(shí)讓蜂鳴器發(fā)出滴滴聲。/*#include/52單片機(jī)頭文件#include/包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineuch

10、arunsignedchar宏定義sbitbeep=P2A3;如delay(200);大約延時(shí)voiddelay(uintz)延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),200ms./delay(500);大約延時(shí)500ms.uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidmain()主函數(shù)uchara,i;while(1)大循環(huán)a=0 xfe;賦初值for(i=0;i8;i+)左移P1=a;點(diǎn)亮小燈beep=0;開(kāi)啟蜂鳴器delay(50);/延時(shí)50毫秒beep=1;關(guān)閉蜂鳴器delay(50);再延時(shí)50毫秒a=_crol_(a,1);/將a變量循環(huán)左

11、移一位a=0 x7f;for(i=0;i8;i+)右移P1=a;點(diǎn)亮小燈beep=0;開(kāi)啟蜂鳴器delay(50);延時(shí)50毫秒beep=1;關(guān)閉蜂鳴器delay(50);再延時(shí)50毫秒a=_cror_(a,1);/將a變量循環(huán)右移一位、用8個(gè)發(fā)光管演示出8位二進(jìn)制數(shù)累加過(guò)程。#include/52單片機(jī)頭文件#include/包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義voiddelay(uintz)延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),女口delay(200);大約延時(shí)200ms./delay(50

12、0);大約延時(shí)500ms.uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidmain()主函數(shù)uchara;while(1)大循環(huán)a+;P1=a;delay(200);5、8個(gè)發(fā)光管間隔200ms由上至下,再由下至上,再重復(fù)一次,然后全部熄滅再以300ms間隔全部閃爍5次。重復(fù)此過(guò)程#include52單片機(jī)頭文件#include/包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義voiddelay(uintz)延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),女口delay(200)

13、;大約延時(shí)200ms.delay(500);大約延時(shí)500ms.uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidmain()主函數(shù)uchara,i,j;while(1)大循環(huán)for(j=0;j2;j+)a=0 xfe;賦初值for(i=0;i8;i+)左移P1=a;點(diǎn)亮小燈delay(200);/延時(shí)200毫秒a=_crol_(a,1);/將a變量循環(huán)左移一位a=0 x7f;for(i=0;i8;i+)右移P1=a;點(diǎn)亮小燈delay(200);/延時(shí)200毫秒a=_cror_(a,1);/將a變量循環(huán)右移一位P1=0 xff;全部熄滅for(j=0;j1

14、0;j+)delay(300);/延時(shí)P1=P1;全部取反10次,既閃爍5次、間隔300ms第一次一個(gè)管亮流動(dòng)一次,第二次兩個(gè)管亮流動(dòng),依次到8個(gè)管亮,然后重復(fù)整個(gè)過(guò)程。#include/52單片機(jī)頭文件#include包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義voiddelay(uintz)延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),女口delay(200);大約延時(shí)200ms.delay(500);大約延時(shí)500ms.uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);void

15、main()主函數(shù)uchara,i,j;while(1)大循環(huán)a=0 xfe;賦初值for(j=0;j8;j+)for(i=0;i8-j;i+)左移P1=a;點(diǎn)亮小燈delay(200);/延時(shí)200毫秒a=_crol_(a,1);/將a變量循環(huán)左移一位a=_crol_(a,j);補(bǔ)齊,方便下面的左移一位P1=0 xff;全部關(guān)閉a=a1;左移一位讓多一個(gè)燈點(diǎn)亮7、間隔300ms先奇數(shù)亮再偶數(shù)亮,循環(huán)三次;一個(gè)燈上下循環(huán)三次;兩個(gè)分別從兩邊往中間流動(dòng)三次;再?gòu)闹虚g往兩邊流動(dòng)三次;8個(gè)全部閃爍3次;關(guān)閉發(fā)光管,程序停止。#include/52單片機(jī)頭文件#include包含有左右循環(huán)移位子函數(shù)的

16、庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義voiddelay(uintz)延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),女口delay(200);大約延時(shí)200ms.delay(500);大約延時(shí)500ms.uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidmain()主函數(shù)uchara,i,j;for(j=0;j3;j+)寄偶交替P1=0 x55;點(diǎn)亮小燈delay(300);/延時(shí)300毫秒P1=0 xaa;delay(300);/延時(shí)300毫秒for(j=0;j3;j+)流水燈a=0 xfe;

17、for(i=0;i8;i+)P1=a;點(diǎn)亮小燈delay(300);/延時(shí)300毫秒a=_crol_(a,1);P1=0 xff;for(j=0;j3;j+)從兩邊往中間流P1=0 x7e;點(diǎn)亮小燈delay(300);/延時(shí)300毫秒P1=0 xbd;delay(300);/延時(shí)300毫秒P1=0 xdb;點(diǎn)亮小燈delay(300);/延時(shí)300毫秒P1=0 xe7;delay(300);/延時(shí)300毫秒P1=0 xff;for(j=0;j3;j+)從中間往兩邊流P1=0 xe7;點(diǎn)亮小燈delay(300);/延時(shí)300毫秒P1=0 xdb;delay(300);/延時(shí)300毫秒P1=0

18、 xbd;點(diǎn)亮小燈delay(300);/延時(shí)300毫秒P1=0 x7e;delay(300);/延時(shí)300毫秒P1=0 xff;for(j=0;j6;j+)全部閃爍P1=P1;點(diǎn)亮小燈delay(300);/延時(shí)300毫秒P1=0 xff;while(1);Lesson3i利用定時(shí)/計(jì)數(shù)器TO從P1.0輸出周期為1s的方波,讓發(fā)光二極管以1HZ閃爍。#include/52單片機(jī)頭文件#include/包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義sbitP1_O=PO;uchartt;voidmain()主

19、函數(shù)TMOD=0 x01;設(shè)置定時(shí)器0為工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;開(kāi)總中斷ET0=1;開(kāi)定時(shí)器0中斷TR0=1;啟動(dòng)定時(shí)器0while(1);等待中斷產(chǎn)生voidtimer0()interrupt1TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt+;if(tt=20)tt=0;P1_0=P1_0;2利用定時(shí)/計(jì)數(shù)器T1產(chǎn)生定時(shí)時(shí)鐘,由P1口控制8個(gè)發(fā)光二極管,使8個(gè)指示燈依次一個(gè)一個(gè)閃動(dòng),閃動(dòng)頻率為10次/秒(8個(gè)燈依次亮一遍為一個(gè)周期),循環(huán)。#include/52單

20、片機(jī)頭文件#include/包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義sbitP1_0=P0;uchartt,a;voidmain()主函數(shù)TM0D=0 x01;設(shè)置定時(shí)器0為工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;開(kāi)總中斷ET0=1;開(kāi)定時(shí)器0中斷TR0=1;啟動(dòng)定時(shí)器0a=0 xfe;while(1);等待中斷產(chǎn)生voidtimer0()interrupt1TH0=(65536-50000)/256;TL0=(65536-50000)

21、%256;tt+;if(tt=2)tt=0;P1=a;a=_crol_(a,1);3、同時(shí)用兩個(gè)定時(shí)器控制蜂鳴器發(fā)聲,定時(shí)器0控制頻率,定時(shí)器1控制同個(gè)頻率持續(xù)的時(shí)間,間隔2s依次輸出1,10,50,100,200,400,800,1k(hz)的方波#include/52單片機(jī)頭文件#include包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義sbitbeep=P2A3;uchartt;uintfreflag;voidmain()主函數(shù)fre=50000;beep=O;TMOD=Ox11;設(shè)置定時(shí)器0,定時(shí)器

22、1為工作方式1TH0=(65536-fre)/256;TL0=(65536-fre)%256;TH1=(65536-50000)256;TL1=(65536-50000)%256;EA=1;開(kāi)總中斷ET0=1;開(kāi)定時(shí)器0中斷ET1=1;TR1=1;TR0=1;啟動(dòng)定時(shí)器0while(1);等待中斷產(chǎn)生voidtimer0()interrupt1定時(shí)器0中斷TR0=0;進(jìn)中斷后先把定時(shí)器0中斷關(guān)閉,防止內(nèi)部程序過(guò)多而造成中斷丟失TH0=(65536-fre)/256;TL0=(65536-fre)%256;tt+;if(flag=40&flag=80&flag=120&flag=160&flag

23、=200&flag=240&flag=280&flag=320&flag360)tt=0;fre=156;beep=beep;TR0=1;voidtimer1()interrupt3定時(shí)器1中斷用來(lái)產(chǎn)生2秒時(shí)間定時(shí)TH1=(65536-50000)/256;TL1=(65536-50000)%256;flag+;if(flag=360)flag=0;fre=50000;4、用定時(shí)器以間隔500MS在6位數(shù)碼管上依次顯示0、1、2、3C、D、E、F,重復(fù)。#include/52單片機(jī)頭文件#include包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#define

24、ucharunsignedchar宏定義sbitdula=P2A6;數(shù)碼管段選鎖存端sbitwela=P2A7;/數(shù)碼管位選鎖存端ucharnum,tt;ucharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;voidmain()num=0;tt=0;TM0D=0 x01;設(shè)置定時(shí)器0為工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;開(kāi)總中斷ET0=1;開(kāi)定時(shí)器0中斷TR

25、0=1;啟動(dòng)定時(shí)器0dula=1;P0=0 x3f;給段開(kāi)始送顯示0。dula=0;關(guān)閉段選鎖存端,防止開(kāi)始時(shí)出現(xiàn)亂碼。wela=1;/11101010P0=0 xc0;/打開(kāi)六個(gè)數(shù)碼管位選wela=0;while(1)if(tt=10)每進(jìn)入10次中斷即為500ms,執(zhí)行一次顯示變化。tt=0;num+;if(num=16)num=0;dula=1;P0=tablenum;dula=0;voidexterO()interrupt1/定時(shí)器0中斷TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt+;Lesson41、利用動(dòng)態(tài)掃描方法在六位數(shù)碼管上顯示出

26、穩(wěn)定的654321.#include/52單片機(jī)頭文件#include包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義sbitdula=P2A6;數(shù)碼管段選鎖存端sbitwela=P2A7;/數(shù)碼管位選鎖存端ucharcodetable=數(shù)碼管顯示編碼0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;voiddisplay(uchar,uchar,uchar,uchaju

27、char,uchar);函數(shù)聲明voiddelay(uint);voidmain()while(1)display(6,5,4,3,2,1);始終顯示voiddisplay(ucharone,uchartwo,ucharthree,ucharfour,ucharfive,ucharsix)dula=1;P0=tableone;送段數(shù)據(jù)dula=0;P0=0 xff;/送位數(shù)據(jù)前關(guān)閉所有顯示防止打開(kāi)位選鎖存后段選數(shù)據(jù)通過(guò)位選鎖存器wela=1;P0=0 xfe;wela=0;delay(1);dula=1;P0=tabletwo;dula=0;P0=0 xff;wela=1;P0=0 xfd;w

28、ela=0;delay(1);dula=1;PO=tablethree;dula=0;PO=Oxff;wela=1;PO=Oxfb;wela=O;delay(1);dula=1;PO=tablefour;dula=O;PO=Oxff;wela=1;PO=Oxf7;wela=O;delay(1);dula=1;PO=tablefive;dula=O;PO=Oxff;wela=1;PO=Oxef;wela=O;delay(1);dula=1;PO=tablesix;dula=O;PO=Oxff;wela=1;PO=Oxdf;wela=O;delay(1);voiddelay(uintz)/uint

29、x,y;for(x=z;xO;x-)for(y=11O;yO;y-);2、用動(dòng)態(tài)掃描方法和定時(shí)器1在數(shù)碼管的前三位顯示出秒表,精確到1%秒,即最后一位顯示1%秒,一直循環(huán)下去#include/52單片機(jī)頭文件#include包含有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義sbitdula=P2A6;數(shù)碼管段選鎖存端sbitwela=P2A7;/數(shù)碼管位選鎖存端ucharge,shi,bai;uinttt;ucharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x

30、7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;voiddisplay(uchar,uchar,uchar);/函數(shù)聲明voiddelay(uint);voidmain()TM0D=0 x10;設(shè)置定時(shí)器1為工作方式1TH1=(65536-10000)/256;TL1=(65536-10000)%256;EA=1;開(kāi)總中斷ET1=1;開(kāi)定時(shí)器1中斷TR1=1;啟動(dòng)定時(shí)器1while(1)display(bai,shi,ge);voidexter0()interrupt3/定時(shí)器1中斷TH1=(65536-10000)/256;T

31、L1=(65536-10000)%256;tt+;if(tt=1000)tt=0;bai=tt/100;shi=tt%100/10;ge=tt%10;voiddisplay(ucharone,uchartwo,ucharthree)dula=1;PO=tableone;送段數(shù)據(jù)dula=0;P0=0 xff;/送位數(shù)據(jù)前關(guān)閉所有顯示,防止打開(kāi)位選鎖存后段選數(shù)據(jù)通過(guò)位選鎖存器wela=1;P0=0 xfe;wela=0;delay(1);dula=1;P0=tabletwo;dula=0;P0=0 xff;wela=1;P0=0 xfd;wela=0;delay(1);dula=1;P0=tab

32、lethree;dula=0;P0=0 xff;wela=1;P0=0 xfb;wela=0;delay(1);voiddelay(uintz)延時(shí)子函數(shù)uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);3、利用動(dòng)態(tài)掃描和定時(shí)器1在數(shù)碼管上顯示出從765432開(kāi)始以1/10秒的速度往下遞減直至765398并保持顯示此數(shù),與此同時(shí)利用定時(shí)器0以500MS速度進(jìn)行流水燈從上至下移動(dòng),當(dāng)數(shù)碼管上數(shù)減到停止時(shí),實(shí)驗(yàn)板上流水燈也停止然后全部開(kāi)始閃爍,3秒后(用T0定時(shí))流水燈全部關(guān)閉、數(shù)碼管上顯示出HELLO。到此保持住。#include/52單片機(jī)頭文件#include包含

33、有左右循環(huán)移位子函數(shù)的庫(kù)#defineuintunsignedint宏定義#defineucharunsignedchar宏定義sbitdula=P2A6;sbitwela=P2A7;ucharcodetable=顯示數(shù)據(jù)編碼0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x76,0 x79,0 x38,0 x3f,0;uchartemp,t0,t1,bai,shi,ge,flag,flag1;uintshu;voidinit();函數(shù)聲明void

34、display(ucharaa,ucharbb,ucharcc,ucharbai,ucharshi,ucharge);voiddelay(uintz)延時(shí)子函數(shù)uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidmain()主函數(shù)init();while(1)if(flag1!=1)如果flagi不再等于1則顯示數(shù)據(jù)display(7,6,5,bai,shi,ge);elsedisplay(16,17,18,18,19,20);否則顯示hellovoidinit()初始化函數(shù)shu=432;temp=Oxfe;P1=temp;TMOD=0 x11;TH0=(6

35、5536-50000)/256;定時(shí)器初始化TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;voidtimer0()interrupt1定時(shí)器0中斷TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0+;if(flag!=1)/flag不等于1時(shí)進(jìn)行流水燈if(t0=10)t0=1;temp=_crol_(temp,1);P1=temp;else否則進(jìn)行燈閃爍if(t0%4=0)小燈每200毫秒變化一次P1=P1;

36、if(t0=60)TR0=0;/3秒后關(guān)閉定時(shí)器0,關(guān)閉燈,并置flag=1P1=0 xff;flag1=1;voidtimer1()interrupt3定時(shí)器1中斷函數(shù)TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1+;if(t1=2)t1=0;shu-;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu=398)當(dāng)?shù)?98時(shí)把原來(lái)T0中的數(shù)清除,重新加裁初值讓小燈閃爍TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;flag=1;t0=0;P1=0

37、xff;TR1=0;voiddisplay(ucharaa,ucharbb,ucharcc,ucharbai,ucharshi,ucharge)/顯示子函數(shù)dula=1;P0=tableaa;dula=0;P0=0 xff;wela=1;P0=0 xfe;wela=0;delay(1);dula=1;P0=tablebb;dula=0;P0=0 xff;wela=1;P0=0 xfd;wela=0;delay(1);dula=1;PO=tablecc;dula=0;PO=Oxff;wela=1;PO=Oxfb;wela=O;delay(1);dula=1;PO=tablebai;dula=O;

38、PO=Oxff;wela=1;PO=Oxf7;wela=O;delay(1);dula=1;PO=tableshi;dula=O;PO=Oxff;wela=1;PO=Oxef;wela=O;delay(1);dula=1;PO=tablege;dula=O;PO=Oxff;wela=1;PO=Oxdf;wela=O;delay(1);#include#defineuintunsignedint#defineucharunsignedchar*/12864液晶接口定義sbitrs=P2A5;sbitstd=P2A6;sbitsclk=P2A7;sbitpsb=P2A4;sbitrst=P2A2;

39、sbitD1820=P3A7;/*定義18b20總線ucharcodetabO=當(dāng)前溫度ucharcodetab1=ucharcodetab2=C1;ucharcodetab3=uinti,j,s1num,num2;voiddelay(uintz)uintx,y;for(x=z;x0;x-)for(y=11O;yO;y-);voidwr_date(uchardate)/寫(xiě)數(shù)據(jù)uchara,p;delay(10);a=date;rs=1;sclk=O;std=1;for(i=O;i5;i+)數(shù)據(jù)命令選擇=1時(shí)讀取數(shù)據(jù)/串口時(shí)鐘,未開(kāi)選擇串口方式開(kāi)啟字節(jié)sclk=1;sclk=O;std=O;sc

40、lk=1;sclk=O;std=1;/寫(xiě)/開(kāi)啟時(shí)鐘脈沖選擇數(shù)據(jù)sclk=1;sclk=O;std=O;sclk=1;sclk=O;for(p=0;p2;p+)for(i=0;i4;i+)a=a1;左移目的是為了將溢出數(shù)據(jù)(即0或1)賦予stdstd=CY;單片機(jī)特殊功能寄存器,片用機(jī)存放字符串溢出字符sclk=1;一開(kāi)一鎖將數(shù)據(jù)顯示sclk=O;std=O;for(i=0;i4;i+)sclk=1;sclk=O;voidwr_com(ucharcom)/寫(xiě)命令uchara,p;delay(10);a=com;rs=1;數(shù)據(jù)命令選擇=1時(shí)讀取數(shù)據(jù)sclk=0;串口時(shí)鐘,未開(kāi)std=1;/選擇串口

41、方式for(i=0;i5;i+)開(kāi)啟字節(jié)sclk=1;sclk=0;std=0;sclk=1;開(kāi)啟時(shí)鐘脈沖sclk=0;std=0;sclk=1;sclk=0;std=0;sclk=1;sclk=0;for(p=0;p2;p+)for(i=0;i4;i+)a=a1;左移目的是為了將溢出數(shù)據(jù)(即0或1)賦予stdstd=CY;單片機(jī)特殊功能寄存器,片用機(jī)存放字符串溢出字符sclk=1;一開(kāi)一鎖將數(shù)據(jù)顯示sclk=0;std=0;for(i=0;i4;i+)延時(shí)一下為下一數(shù)據(jù)到來(lái)做準(zhǔn)備sclk=1;sclk=0;voidwrite_lcd()/向液晶寫(xiě)入顯示內(nèi)容ucharnum;wr_com(0

42、x80);for(num=0;num16;num+)wr_date(tab0num);delay(1);wr_com(0 x90);for(num=0;num16;num+)wr_date(tab1num);delay(1);wr_com(0 x88);for(num=0;num16;num+)wr_date(tab2num);delay(1);wr_com(0 x98);for(num=0;num16;num+)wr_date(tab3num);delay(1);voidinit_lcd()rst=1;psb=O;選串口wr_com(0 x30);/30-基本指令動(dòng)作wr_com(0 x01);/清屏,地址指針指向00Hdelay(1);wr_com(0 x06);/光標(biāo)的移動(dòng)方向即讀入或?qū)懭霐?shù)據(jù)后指針加一wr_com(0 x0c);/開(kāi)顯示,關(guān)游標(biāo)類似1602return;voidinit()init_lcd();write_lcd();voidDelay_xus(uinti)/(16+9*i)us(51)while(i-);voidDelay_100us(ucharj)/(16+9*i)us(51)uchar

溫馨提示

  • 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)論