51單片機(jī)50個(gè)實(shí)例代碼_第1頁
51單片機(jī)50個(gè)實(shí)例代碼_第2頁
51單片機(jī)50個(gè)實(shí)例代碼_第3頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、51單片機(jī)50個(gè)例程代碼程序里有中斷,串口等驅(qū)動(dòng),直接復(fù)制即可使用1- 10輸出-點(diǎn)亮1個(gè)LED燈方法1/*名稱:io 口高低電平控制論壇:.doflye .net編寫:shifa ng日期:2009.5修改:無容:點(diǎn)亮P1 口的一個(gè)LED燈 該程序是單片機(jī)學(xué)習(xí)中最簡單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平*/#i nclude /包含頭文件,一般情況不需要改動(dòng),/頭文件包含特殊功能寄存器的定義sbit LED=P1A0;/用sbit 關(guān)鍵字 定義LED到P1.0端口,void main (void) /LED=1;/LED=0;/while /主循環(huán)主循環(huán)中添加其他需要一直工作的程序

2、/LED是自己任意定義且容易記憶的符號(hào)/*主函數(shù)*/此方法使用bit位對(duì)單個(gè)端口賦值 將P1.0 口賦值1,對(duì)外輸出高電平 將P1.0 口賦值0 ,對(duì)外輸出低電平2- I0輸出-點(diǎn)亮1個(gè)LED燈方法2/*名稱: IO 口高低電平控制論壇: 編寫: shifang日期: 2009.5修改:無容:點(diǎn)亮P1 口的一個(gè)LED燈該程序是單片機(jī)學(xué)習(xí)中最簡單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 */ #include /包含頭文件,一般情況不需要改動(dòng),/頭文件包含特殊功能寄存器的定義/*主函數(shù)*/void main (void) /P1 = 0xFF; /P1 /ff此方法使用 1 個(gè)字節(jié)對(duì)單個(gè)端

3、口賦值口全部為高電平,對(duì)應(yīng)的 LED燈全滅掉,換算成二進(jìn)制是 1111 1111P1 = 0xfe; /P1 /0xfe /fe口的最低位點(diǎn)亮,可以更改數(shù)值是其他的燈點(diǎn)亮是 16 進(jìn)制, 0x 開頭表示 16 進(jìn)制數(shù), 換算成二進(jìn)制是 1111 1110while (1) /主循環(huán)主循環(huán)中添加其他需要一直工作的程序3- 10輸出-點(diǎn)亮多個(gè)LED燈方法1/*名稱:io 口高低電平控制論壇: 編寫: shifang日期: 2009.5 修改:無容:點(diǎn)亮P1 口的多個(gè)LED燈該程序是單片機(jī)學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平*/ #include / 包含頭文件,一般情況不需要改

4、動(dòng),/ 頭文件包含特殊功能寄存器的定義sbit LEDO=PO;用 sbit 關(guān)鍵字 定義 LED 到 P1.0 端口,sbit LED1=P1A1;/LED是自己任意定義且容易記憶的符號(hào)sbit LED2=P2;sbit LED3=P1A3;sbit LED4=P1A4;sbit LED5=P1A5;sbit LED6=P1A6;sbit LED7=P1A7;/*主函數(shù)*/ void main (void)此方法使用 bit 位對(duì)單個(gè)端口賦值將 P1.0 口賦值 0 ,對(duì)外輸出低電平主循環(huán)主循環(huán)中添加其他需要一直工作的程序/LED0=0;/LED1=1;LED2=0;LED3=1;LED4=

5、0;LED5=1;LED6=0;LED7=1;while (1)/4- 10輸出-點(diǎn)亮多個(gè)LED燈方法2/*名稱:io 口高低電平控制論壇: 編寫: shifang日期: 2009.5 修改:無 容:點(diǎn)亮P1 口的多個(gè)LED燈該程序是單片機(jī)學(xué)習(xí)中最簡單最基礎(chǔ)的,*/#include /包含頭文件,一般情況不需要改動(dòng),/頭文件包含特殊功能寄存器的定義/*主函數(shù)*/void main (void)1/此方法使用 bit 位對(duì)單個(gè)端口賦值P1=0x55;/換成二進(jìn)制是 0101 0101while (1)/主循環(huán)/ 主循環(huán)中添加其他需要一直工作的程序5- 閃爍 1個(gè) LED/*名稱: IO 口高低電

6、平控制 論壇: 編寫: shifang 日期: 2009.5修改:無容:點(diǎn)亮P1 口的1個(gè)LED燈閃爍該程序是單片機(jī)學(xué)習(xí)中最簡單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 */ #include / 包含頭文件,一般情況不需要改動(dòng), / 頭文件包含特殊功能寄存器的定義sbit LED0=P1A0;/用 sbit 關(guān)鍵字 定義 LED 到 P1.0 端口,/LED 是自己任意定義且容易記憶的符號(hào)void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù)*/void main (void) while (1)r/主循環(huán)LED0=0;/將P1.0 口賦值0 ,對(duì)外輸出低電平De

7、lay(10000);/調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長度;/用于改變閃爍頻率LED0=1;/將 P1.0 口賦值 1 ,對(duì)外輸出高電平Delay(10000);/主循環(huán)中添加其他需要一直工作的程序/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int 是定義無符號(hào)整形變量,其值的圍是065535*/ void Delay(unsigned int t) while(-t);6- 不同頻率閃爍1個(gè)LED燈/*名稱: IO 口高低電平控制 論壇: 編寫: shifang 日期: 2009.5修改:無容:點(diǎn)亮P1 口的1個(gè)LED燈閃爍該程序是單片機(jī)學(xué)

8、習(xí)中最簡單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 */ #include / 包含頭文件,一般情況不需要改動(dòng),/頭文件包含特殊功能寄存器的定義sbit LED0=P1A0;/用sbit 關(guān)鍵字 定義LED到P1.0端口,while (1) /主循環(huán)for(i=0;i10;i+) / 加入 for 循環(huán),表明 for 循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行10次LED0=0; /Delay(5000); /LED0=1; /將 P1.0 口賦值 0 ,對(duì)外輸出低電平 調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長度; 用于改變閃爍頻率將 P1.0 口賦值 1 ,對(duì)外輸出高電平Delay(5000); fo

9、r(i=0;i10;i+)LED0=0; /Delay(60000); /LED0=1; / Delay(60000);/將 P1.0 口賦值 0 ,對(duì)外輸出低電平 調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長度; 用于改變閃爍頻率將 P1.0 口賦值 1 ,對(duì)外輸出高電平主循環(huán)中添加其他需要一直工作的程序/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int 是定義無符號(hào)整形變量,其值的圍是 065535*/void Delay(unsigned int t) while(-t);7-不同頻率閃爍多個(gè) LED燈void Delay(unsigned int

10、 t); / 函數(shù)聲明 /*主函數(shù)*/ void main (void) / 此方法使用 bit 位對(duì)單個(gè)端口賦值unsigned char i; /定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255void main (void)/unsigned char i; /while (1)/for(i=0;i10;i+) /主循環(huán)/加入 for 循環(huán), 的程序循環(huán)執(zhí)行表明 for 循環(huán)大括號(hào)中10次LED0=0;LED2=1;LED4=0;Delay(5000);/將P1.0 口賦值0 ,對(duì)外輸出低電平LED0=1;LED2=0;/調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長度;/ 用于改變閃爍頻率

11、將 P1.0 口賦值 1 ,對(duì)外輸出高電平/*名稱: IO 口高低電平控制論壇: 編寫: shifang日期: 2009.5修改:無容:點(diǎn)亮P1 口的多個(gè)LED燈閃爍該程序是單片機(jī)學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平*/ #include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義sbit LEDO=PO; 用sbit 關(guān)鍵字 定義LED到P1.0端口,LED是自己任意定義且容易記 憶的符號(hào)sbit LED1=P1A1;sbit LED2=P2;sbit LED3=P1A3;sbit LED4=P1A4;sbit LED5=P1A5;sbit LE

12、D6=P1A6;sbit LED7=P1A7;void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù) */此方法使用 bit 位對(duì)單個(gè)端口賦值 定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255LED4=1;Delay(5000); for(i=0;i10;i+)LED0=0; /LED2=1;LED4=0;Delay(60000); /LED0=1; /LED2=0;將 P1.0 口賦值 0 ,對(duì)外輸出低電平調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長度;/ 用于改變閃爍頻率將 P1.0 口賦值 1 ,對(duì)外輸出高電平LED4=1;Delay(60000); /主循環(huán)中添加其

13、他需要一直工作的程序/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int 是定義無符號(hào)整形變量,其值的圍是 065535*/ void Delay(unsigned int t) while(-t);8- 8位LED左移/*名稱: IO 口高低電平控制 論壇: 編寫: shifang日期: 2009.5 修改:無容:左移,直至 LED全部點(diǎn)亮,左移符號(hào) */#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義/*主函數(shù)*/ void main (void)unsigned char i; /定義一個(gè)無符號(hào)字符型局部變量

14、 i 取值圍 0255Delay(50000);P1=0xfe; / for(i=0;i8;i+) /Delay(50000);賦初始值加入 for 循環(huán),表明 for 循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次P1*/#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義void Delay(unsigned int t); / 函數(shù)聲明/*主函數(shù)*/ void main (void)unsigned char i; / Delay(50000);P1=0x7f; / for(i=0;i=1;while (1)/定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255賦初始值加

15、入 for 循環(huán),表明 for 循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行 8 次主循環(huán)/主循環(huán)中添加其他需要一直工作的程序/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int 是定義無符號(hào)整形變量,其值的圍是 065535*/ void Delay(unsigned int t) while(-t);10- LED 循環(huán)左移/*名稱:IO 口高低電平控制論壇:編寫: shifang日期: 2009.5修改:無容:循環(huán)左移,始終一個(gè) led 點(diǎn)亮,并循環(huán)執(zhí)行流水動(dòng)作,左移符號(hào) 邏輯或符號(hào) |*/#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄

16、存器的定 義void Delay(unsigned int t); / 函數(shù)聲明/*主函數(shù)*/ void main (void)unsigned char i; /定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255Delay(50000);P1=0xfe; / 賦初始值while (1) / for(i=0;i8;i+) / Delay(50000);P1 邏輯或符號(hào) |*/ #include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義void Delay(unsigned int t); / 函數(shù)聲明/*主函數(shù)*/ void main (void)unsigned

17、char i; /定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255Delay(50000);P1=0x7f;/賦初始值while (1) ,/主循環(huán)for(i=0;i=1;P1=P1|0x80; / P1=0x7f; /右移后,最左端自動(dòng)賦值 0,所以需要該語句賦值 1 重新賦初始值/ 主循環(huán)中添加其他需要一直工作的程序/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int是定義無符號(hào)整形變量,其值的圍是065535*/ void Delay(unsigned int t) while(-t);12- 查表顯示 LED 燈/*名稱: IO 口高低電平控

18、制 論壇: 編寫: shifang 日期: 2009.5修改:無容:通過查表獲得1個(gè)字節(jié)的值然后賦值給P1端口,ROM允許情況可以設(shè)置更多表格*/#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義/*查表表格*/unsigned char code table=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0x00, 0x55,0x55,0xaa,0xaa ;/rom 允許情況可以無限添加/*函數(shù)聲明*/void Delay(unsigned int t); / 函數(shù)聲明/*主函數(shù)*/void

19、 main (void)unsigned char i; / 定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255for(i=0;i16;i+) /while (1)/ 主循環(huán)加入 for 循環(huán),表明 for 循環(huán)大括號(hào)中的程序循環(huán) 執(zhí)行 16 次,表明表格中有 16個(gè)元素P1=tablei;Delay(30000);/主循環(huán)中添加其他需要一直工作的程序/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int是定義無符號(hào)整形變量,其值的圍是065535*/ void Delay(unsigned int t) while(-t);13- 雙燈左移右移閃爍/*

20、名稱: IO 口高低電平控制 論壇: 編寫: shifang 日期: 2009.5修改:無容: 2 個(gè) led 燈先左移,然后右移,然后同時(shí)閃爍 */#include / 包含頭文件,一般情況不需要改動(dòng), / 頭文件包含特殊功能寄存器的定義void Delay(unsigned int t); / 函數(shù)聲明 /*主函數(shù)*/ void main (void) unsigned char i; /unsigned char temp;/while (1)/temp=0xfc;P1=temp;for(i=0;i7;i+) /定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255定義臨時(shí)變量用于轉(zhuǎn)換主循環(huán)

21、加入 for 循環(huán),表明 for 循環(huán)大括號(hào) 中的程序循環(huán)執(zhí)行 7 次Delay(50000); / / temp=1; temp=temp|0x01; / P1=temp; / / /temp=0x3f;P1=temp; for(i=0;i=1; temp|=0x80; / P1=temp;調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可 以更改延時(shí)長度;用于改變閃爍頻率也可以直接把 temp 換成 P1 之所以加入 temp 做中間變量,轉(zhuǎn)換 完成后直接賦值到端口,防止直接 操作端口造成的短暫閃爍加入 for 循環(huán),表明 for 循環(huán)大括號(hào) 中的程序循環(huán)執(zhí)行 7 次調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長度;

22、用于改變閃爍頻率等效于 temp=temp|0x80加入 for 循環(huán),表明 for 循環(huán)大括號(hào) 中的程序循環(huán)執(zhí)行 3 次主循環(huán)中添加其他需要一直工作的程序for(i=0;i3;i+) /P1=0xff;Delay(50000);P1=0x00;Delay(50000); /*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值unsigned int是定義無符號(hào)整形變量,其值的圍是065535*/ void Delay(unsigned int t) while(-t);14- 花樣燈/*名稱: IO 口高低電平控制 論壇: 編寫: shifang 日期: 2009.5 修改:無

23、容:花樣燈一般有兩種方法實(shí)現(xiàn):1 、程序循環(huán)執(zhí)行2 、查表法 這里我們兩種都使用一下*/#include / 包含頭文件, 一般情況不需要改動(dòng), 頭文件包含特殊功能寄存器 的定義/*花樣表格*/unsigned char code seg=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0x00,0x55,0x55,0xaa,0xaa;/rom 允許情況可以無限添加void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù) */main()unsigned char i; /while(1)P1=0xFE; /fo

24、r(i=0;i8;i+)Delay(20000);P1 =1;P1=0x7F; /for(i=0;i=1;P仁OxFE;/第1個(gè)LED亮for(i=0;i8;i+)Delay(20000);P1 =1;P1 |=0x01;P仁0x7F;/第8個(gè)LED亮for(i=0;i=1;P1 |=0x80;實(shí)用性更強(qiáng)/ 下面通過查表方法獲得花樣參數(shù)for(i=0;i16;i+)/ 查表可以簡單的顯示各種花樣 Delay(20000);P1=segi;/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int 是定義無符號(hào)整形變量,其值的圍是 065535*/void D

25、elay(unsigned int t)while(-t);15- PWM調(diào)光/*名稱:PW碉光論壇: 編寫: shifang日期: 2009.5修改:無容:通過PW(脈寬調(diào)制)調(diào)節(jié) LED的亮度*/#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義sbit LEDO=PO; 用sbit 關(guān)鍵字 定義LED到P1.0端口,LED是自己任意定義且容易記 憶的符號(hào)void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù)*/void main (void)unsigned int CYCLE=600,PWM_LOW=0;/ 定義周期并賦值whi

26、le (1)/主循環(huán)LED0=1;Delay(60000);/特意加延時(shí),可以看到熄滅的過程for(PWM_LOW=1;PWM_LOW0;PWM_LOW-)與/逐漸變亮相反的過程LED0=0;Delay(PWM_LOW);LED0=1;Delay(CYCLE-PWM_LOW);/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int 是定義無符號(hào)整形變量,其值的圍是 065535*/ void Delay(unsigned int t)while(-t);16- 共陽數(shù)碼管靜態(tài)顯示/*名稱:單個(gè)共陽數(shù)碼管靜態(tài)顯示 論壇: 編寫: shifang 日期: 2

27、009.5 修改:無容:通過賦值給P1,讓數(shù)碼管顯示特定的字符或者數(shù)字*/#include / 包含頭文件,一般情況不需要改動(dòng), / 頭文件包含特殊功能寄存器的定義void main (void) P1=0xc0; / 二進(jìn)制 為 1100 0000 參考數(shù)碼管排列,/ 可以得出 0 對(duì)應(yīng)的段點(diǎn)亮, 1 對(duì)應(yīng)的段熄滅,結(jié)果顯示數(shù)字 0 while(1)17- 1 個(gè)共陽數(shù)碼管顯示變化數(shù)字/*名稱:單個(gè)共陽數(shù)碼管動(dòng)態(tài)顯示變化數(shù)字論壇: 編寫: shifang日期: 2009.5 修改:無容:通過循環(huán)賦值給 P1,讓數(shù)碼管顯示特定的字符或者數(shù)字*/#include義/ 包含頭文件,一般情況不需要改

28、動(dòng),頭文件包含特殊功能寄存器的定unsignedcharcodedofly_table10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x77,0x7c,0x39,0x5e,0x79,0x71,;/ 顯示數(shù)值表 0-9void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù)*/void main (void) unsigned char i; /定義一個(gè)無符號(hào)字符型局部變量i 取值圍 0255while (1) /for(i=0;i16;i+) / P1=dofly_tablei; /主循環(huán)加入 for 循環(huán),表明

29、for 循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行10次循環(huán)調(diào)用表中的數(shù)值Delay(60000); / 延時(shí),方便觀看數(shù)字變化/*主循環(huán)中添加其他需要一直工作的程序延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值unsigned int是定義無符號(hào)整形變量,其值的圍是065535*/void Delay(unsigned int t) while(-t);18- 單個(gè)數(shù)碼管模擬水流/*名稱:單個(gè)共陽數(shù)碼管模擬水流 論壇: 編寫: shifang 日期: 2009.5 修改:無容:通過循環(huán)賦值給P1,讓數(shù)碼管顯示特定流動(dòng)樣式*/#include / 包含頭文件,一般情況不需要改動(dòng), / 頭文件包

30、含特殊功能寄存器的定義void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù)*/void main (void)unsigned char i; / 定義一個(gè)無符號(hào)字符型局部變量 i 取值圍 0255while (1) /P1=0xfe;for(i=0;i6;i+) / Delay(10000);P1=1;P1|=0x01;主循環(huán)6次加入 for 循環(huán),表明 for 循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行/主循環(huán)中添加其他需要一直工作的程序/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t ,無返回值 unsigned int 是定義無符號(hào)整形變量,其值的圍是 065535*/

31、void Delay(unsigned int t) while(-t);19- 按鍵控制單個(gè)數(shù)碼管顯示/*名稱:單個(gè)共陽數(shù)碼管動(dòng)態(tài)顯示變化數(shù)字 論壇: 編寫: shifang 日期: 2009.5修改:無容:通過循環(huán)檢測 P1 口按鍵輸入值,然后用數(shù)碼管輸出, 沒有按鍵按下時(shí)原值不變*/#include / 包含頭文件,一般情況不需要改動(dòng), / 頭文件包含特殊功能寄存器的定義unsigned char code dofly_table10=0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,;/ 顯示數(shù)值表 0-9/*主函數(shù)*/ void m

32、ain (void)while (1) / 主循環(huán) switch(P3) /P3 口作為獨(dú)立按鍵輸入端,檢測端口電平并做如下判斷 case 0xfe:P1=dofly_table1;break;/0xfe = 1111 1110,/ 說明連接在 P3.0 端口的按鍵被按下 , 顯示對(duì)應(yīng)的數(shù)字然后跳出循環(huán) case 0xfd:P1=dofly_table2;break;/ 調(diào)用表中的第三個(gè) / 元素 0xa4 下標(biāo) 0 才表示數(shù)組中的第一個(gè)元素case 0xfb:P1=dofly_table3;break;case 0xf7:P1=dofly_table4;break;case 0xef:P1=

33、dofly_table5;break;case 0xdf:P1=dofly_table6;break;case 0xbf:P1=dofly_table7;break;case 0x7f:P1=dofly_table8;break;default:break; / 如果都沒按下,直接跳出/ 主循環(huán)中添加其他需要一直工作的程序20- 單個(gè)數(shù)碼管指示邏輯電平/*名稱:單個(gè)共陽數(shù)碼管指示邏輯電平 論壇: 編寫: shifang 日期: 2009.5 修改:無容:通過循環(huán)檢測 P3.2 口電平輸入值,然后用數(shù)碼管輸出 H or L 表示該端口現(xiàn)在連接的是高電平還是低電平*/#include /包含頭文件

34、,一般情況不需要改動(dòng),/ 頭文件包含特殊功能寄存器的定義sbit IO_IN=P3A2; /定義 IO 信號(hào)輸入端/*主函數(shù)*/ void main (void)while (1)/主循環(huán)if(IO_IN=1)/如果端口檢測到 1 表示高電平P1=0x89; /HelseP1=0xc7; /L/ 否則表示低電平,這里使用 條件語句 if 。 else / 主循環(huán)中添加其他需要一直工作的程序21- 8 位數(shù)碼管顯示其中之一/*名稱: 8 位數(shù)碼管顯示其中之一論壇: 編寫: shifang日期: 2009.5修改:無容:顯示 8 位數(shù)碼管中任意一位 */ #include / 包含頭文件,一般情況

35、不需要改動(dòng),頭文件包含特殊功能寄存器的定 義#define DataPort P0 / 定義數(shù)據(jù)端口sbit LATC H仁P2A2;/ 定義鎖存使能端口 sbit LATCH2=P2A3;程序中遇到 DataPort 則用 P0 替換段鎖存位鎖存/*主函數(shù)*/ main()取顯示數(shù)據(jù),段碼 “ 3”共陰字符碼段鎖存while(1)DataPort=0xfe; /LATCH2=1; /取位碼 第一位數(shù)碼管選通,即二進(jìn)制 1111 1110位鎖存LATCH2=0;DataPort=0x4F; /LATCH1=1; /LATCH1=0;22- 8 位數(shù)碼管靜態(tài)顯示其中之二/*名稱: 8 位數(shù)碼管顯

36、示其中之二 論壇: 編寫: shifang日期: 2009.5 修改:無 容:顯示 8 位數(shù)碼管中任意二位 */#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義#define DataPort P0 / 定義數(shù)據(jù)端口sbit LATC H仁P2A2;/ 定義鎖存使能端口 sbit LATCH2=P2A3;程序中遇到 DataPort 則用 P0 替換段鎖存位鎖存/*主函數(shù)*/main()while(1)DataPort=0x7e; /LATCH2=1; /LATCH2=0;取位碼 第一位數(shù)碼管選通,即二進(jìn)制 0111 1110位鎖存DataPort=0x4

37、F; /LATCH1=1; /LATCH1=0;取顯示數(shù)據(jù),段碼 “ 3”共陰字符碼段鎖存23-8 位數(shù)碼管動(dòng)態(tài)掃描顯示/*名稱: 8 位數(shù)碼管動(dòng)態(tài)掃描顯示論壇: 編寫: shifang日期: 2009.5 修改:無 容: 8 位數(shù)碼管分別顯示不同數(shù)字,這種掃描顯示方式成為動(dòng)態(tài)掃描 */#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義#define DataPort P0 / 定義數(shù)據(jù)端口 程序中遇到 DataPort 則用 P0 替換 sbit LATCH1=P2A2;/定義鎖存使能端口 段鎖存sbit LATCH2=P2A3;/位鎖存unsignedc

38、hardofly_DuanMa=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;code/ 顯示段碼值 01234567unsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/ 分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮 , 即位碼void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù)*/main()unsigned char i=0;while(1)DataPort=dofly_WeiMai; /取位碼LATCH2=1; / 位鎖存 LATCH2=0

39、;DataPort=dofly_DuanMai; / 取顯示數(shù)據(jù),段碼LATCH1=1; / 段鎖存LATCH1=0;Delay(200); /掃描間隙延時(shí),時(shí)間太長會(huì)閃爍,太短會(huì)造成重影8位i+;if(8=i) /檢測 8 位掃描完全結(jié)束?如掃描完成則從第一個(gè)開始再次掃描i=0;/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值unsigned int是定義無符號(hào)整形變量,其值的圍是065535*/void Delay(unsigned int t)while(-t);24- 8 位數(shù)碼管動(dòng)態(tài)掃描原理演示/*名稱: 8 位數(shù)碼管動(dòng)態(tài)掃描顯示論壇: 編寫: shifang日期:

40、 2009.5修改:無容: 8 位數(shù)碼管分別顯示不同數(shù)字,這種掃描顯示方式成為動(dòng)態(tài)掃描 */#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義#define DataPort P0 / 定義數(shù)據(jù)端口 程序中遇到 DataPort 則用 P0 替換sbit LATCH仁P2A2; 定義鎖存使能端口段鎖存sbit LATCH2=P2A3;/位鎖存unsignedcharcodedofly_DuanMa=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/顯 示 段 碼值 01234567unsigned char

41、 code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮 , 即位碼void Delay(unsigned int t); /函數(shù)聲明/*主函數(shù)*/main()unsigned char i=0;while(1)DataPort=dofly_WeiMai; /取位碼LATCH2=1; /位鎖存LATCH2=0;DataPort=dofly_DuanMai; /取顯示數(shù)據(jù),段碼LATCH1=1; /段鎖存LATCH1=0;Delay(60000); / 掃描間隙延時(shí),時(shí)間太長會(huì)閃爍,太短會(huì)造成重影, / 這里故

42、意延長時(shí)間,方便直觀看出動(dòng)態(tài)掃描原理i+;if(8=i) / 檢測 8 位掃描完全結(jié)束?如掃描完成則從第一個(gè) / 開始再次掃描 8 位i=0;/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值unsigned int是定義無符號(hào)整形變量,其值的圍是065535*/void Delay(unsigned int t)while(-t);25- 數(shù)碼管顯示動(dòng)態(tài)數(shù)據(jù)/*名稱: 8 位數(shù)碼管動(dòng)態(tài)掃描顯示變化數(shù)據(jù)論壇: 編寫: shifang日期: 2009.5修改:無容: 8 位數(shù)碼管分別顯示不同數(shù)字,這種掃描顯示方式成為動(dòng)態(tài)掃描,并不停變化賦值 */#include / 包含頭文件,

43、一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義#define DataPort P0 / 定義數(shù)據(jù)端口 程序中遇到 DataPort 則用 P0 替換sbit LATCH仁P2A2; 定義鎖存使能端口段鎖存sbit LATCH2=P2A3;/位鎖存code分unsignedchardofly_DuanMa=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x3 9,0x5e,0x79,0x71;/ 顯示段碼值 0Funsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0

44、xef,0xdf,0xbf,0x7f;/ 別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮 , 即位碼void Delay(unsigned int t); /函數(shù)聲明主函數(shù)*/main()unsigned char i=0,num;unsigned int j;while(1)DataPort=dofly_WeiMai; /取位碼LATCH2=1; / 位鎖存 LATCH2=0;DataPort=dofly_DuanManum+i; / 取顯示數(shù)據(jù),段碼LATCH1=1; / 段鎖存LATCH1=0;Delay(200); / 掃描間隙延時(shí),時(shí)間太長會(huì)閃爍,太短會(huì)造成重影i+;j+;if(8=i) / 檢測 8 位掃

45、描完全結(jié)束?如掃描完成則從第一個(gè)開始再次掃描8 位i=0;if(j=500) / 檢測當(dāng)前數(shù)值顯示了一小段時(shí)間后,需要顯示的數(shù)值加1,實(shí)現(xiàn)數(shù)據(jù)顯示的變化j=0;num+;if(num=9)num=0;/*延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值unsigned int是定義無符號(hào)整形變量,其值的圍是065535*/void Delay(unsigned int t)while(-t);26- 9 累加/*名稱: 1 位數(shù)碼管動(dòng)態(tài)掃描顯示變化數(shù)據(jù)論壇: 編寫: shifang日期: 2009.5修改:無容: 1 位數(shù)碼管分別顯示不同數(shù)字,這種掃描顯示方式成為動(dòng)態(tài)掃描,并不停變化賦值 */#include / 包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 義#define DataPort P0 / 定義數(shù)據(jù)端口 程序中遇到 DataPort 則用 P0 替換sbit LATCH仁P2A2; 定義鎖存使能端口段鎖存sbit LATCH2=P2A3;/位鎖存unsignedcharcodedofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/顯 示 段碼值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論