數(shù)碼管顯示數(shù)字_第1頁
數(shù)碼管顯示數(shù)字_第2頁
數(shù)碼管顯示數(shù)字_第3頁
數(shù)碼管顯示數(shù)字_第4頁
數(shù)碼管顯示數(shù)字_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、在第6課里,我們講到數(shù)碼管的靜態(tài)顯示,利用靜態(tài)顯示法,通過控制位選和段選,可以讓數(shù)任意幾位數(shù)碼管顯示任意字符,但由于所有位數(shù)碼管的相同的段選全部接在一起,所以只能同時顯示相同的數(shù)字,例如8位同時顯示8字,1、3、5位同時顯示3字。但大家想一下,如果我們要讓數(shù)碼管同一時刻顯示不同的數(shù)字,如圖1所示的現(xiàn)象,用靜態(tài)顯示的方法就不能夠?qū)崿F(xiàn),這里就只能用到動態(tài)顯示的方法,今天這一節(jié)我們主要講解數(shù)碼管動態(tài)顯示的原理的程序?qū)崿F(xiàn)的方法。圖1 數(shù)碼管同時顯示123456 在講解動態(tài)顯示方法之前,我們先介紹在種數(shù)碼管及單片機(jī)程序開發(fā)過程常用的方法數(shù)組編碼法。1、數(shù)組編碼在跟數(shù)碼管相關(guān)的程序中,可以對位進(jìn)

2、行編碼,也可對段進(jìn)行編碼,這里我們以段編碼進(jìn)行講解。通過第8課的程序我們知道,在位選確定后,要顯示數(shù)字8時,P0=0x80,顯示數(shù)字3時P0=0xb0,也就是0xb0,0x80分別可以表示數(shù)字3和8,按此方法,我們把在數(shù)碼管上顯示0f,16個數(shù)字全部用16制度表示出來,這16個16進(jìn)制數(shù)就稱為數(shù)碼管可顯示0f的相應(yīng)的編碼,如圖2所示(注意共陽和共陰極數(shù)碼管相應(yīng)的編碼有所不同,這里以實(shí)驗(yàn)板上共陽極的為例)。圖2 共陽極數(shù)碼管編碼在編程中,編碼的表示方法如下:unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,

3、0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e ;這里編碼表示的方法與C語言中數(shù)組定義的方法基本一樣。table是數(shù)組名,后面需加,中括號中需加上數(shù)組中元素的個數(shù),也可以不寫。等號的右邊用一個大括號將所有元素包含起來,里面的元素之間用“,”隔開,在大括號外用“;”結(jié)束。等號左邊的unsigned char 是數(shù)據(jù)元素的數(shù)據(jù)類型,這里定義為無符號字符型,也就是元素的值范圍只能是0255之間。Code表示把這個數(shù)組定義為編碼,這樣定義的好處是其元素轉(zhuǎn)化成二進(jìn)文件后可能直接存儲到程序存儲器中,當(dāng)然這里也可以不加code,但是這樣編譯后會將其直接存儲到數(shù)據(jù)存儲器中,要知道單片機(jī)中

4、數(shù)據(jù)存儲器的容量是非常有限的,定義為code后可節(jié)約單片機(jī)數(shù)據(jù)存儲器的空間。調(diào)用程序的方法如下,P0=table1;這里表示將數(shù)組中的第2個元素(注意第一個是table0)0xf9賦給P1口,即P0=0xf9;也就是此時位被選通的數(shù)碼管會顯示數(shù)字2.下面利用編碼的方法讓6個數(shù)碼管以間隔1秒的時間循環(huán)顯示0f。相應(yīng)程序如例1.例1:6個數(shù)碼管循環(huán)顯示0f#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit duan=P26;sbit wei=P27;uchar num;unsigned ch

5、ar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e ;void delay(uint); void main()       wei=1;       P0=0xfe;       wei=0;      

6、0; for(num=0;num<16;num+)                     duan=1;              P0=tablenum;         

7、0;    delay(150);              duan=0;        void delay(uint z)       uint x,y;       for(x=z;x>0;x-)   &#

8、160;          for(y=500;y>0;y-);下載到實(shí)驗(yàn)板后實(shí)驗(yàn)現(xiàn)象如圖3所示。  圖3  6個數(shù)碼管依次從0f變化 2、數(shù)碼管的動態(tài)顯示明白了數(shù)組編碼后,現(xiàn)在我們正式介紹數(shù)碼管的動態(tài)顯示,為了更利于大家理解,我們先用前面介紹過的靜態(tài)顯示法寫一個程序,功能為:讓6個數(shù)碼管間隔一秒依次顯示1、2、3、4、5、6。程序如例2.例2          

9、;數(shù)碼管依次顯示1、2、3、4、5、6#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit duan=P26;sbit wei=P27;uchar num;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint); void main()      &#

10、160;      while(1)                     for(num=1;num<7;num+)                    &#

11、160;              if(num=1)                                   

12、60;             wei=1;                            P0=0xfe;        

13、;                    wei=0;                            duan=1; &#

14、160;                          P0=tablenum;                      &

15、#160;     delay(1000);                            duan=0;              

16、0;                           else if(num=2)                       

17、;                          wei=1;                       

18、0;    P0=0xfd;                            wei=0;                 

19、           duan=1;                            P0=tablenum;         

20、60;                  delay(1000);                            duan=0;  

21、                                        else if(num=3)         &#

22、160;                                       wei=1;           

23、                 P0=0xfb;                            wei=0;    &#

24、160;                       duan=1;                           

25、; P0=tablenum;                            delay(1000);                  

26、60;         duan=0;                                         

27、 else if(num=4)                                                 w

28、ei=1;                            P0=0xf7;                    

29、0;       wei=0;                            duan=1;              &

30、#160;             P0=tablenum;                            delay(1000);      

31、;                      duan=0;                            &#

32、160;             else if(num=5)                                   

33、0;             wei=1;                            P0=0xef;        

34、                    wei=0;                            duan=1; 

35、60;                          P0=tablenum;                      &#

36、160;     delay(1000);                            duan=0;               

37、;                           else if(num=6)                       

38、                          wei=1;                        

39、;    P0=0xdf;                            wei=0;                 &

40、#160;          duan=1;                            P0=tablenum;                      

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論