第8章鍵盤顯示接口技術(shù)-顯示器_第1頁
第8章鍵盤顯示接口技術(shù)-顯示器_第2頁
第8章鍵盤顯示接口技術(shù)-顯示器_第3頁
第8章鍵盤顯示接口技術(shù)-顯示器_第4頁
第8章鍵盤顯示接口技術(shù)-顯示器_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第八章:51系列單片機(jī)鍵盤/顯示器接口技術(shù)常用的顯示設(shè)備:發(fā)光二極管、八段LED顯示器、點(diǎn)陣LED,液晶顯示器(LCD)、屏幕顯示器(CRT)等。8.1LED顯示器接口技術(shù)8.2鍵盤接口技術(shù)8.3點(diǎn)陣接口技術(shù)8.4液晶顯示器接口技術(shù)8.151單片機(jī)顯示器接口技術(shù)

1、LED顯示器結(jié)構(gòu)與原理:(1)結(jié)構(gòu):LED封裝圖共陰極LED共陽極LED(2)LED顯示器的基本問題a.七段碼問題共陽極、共陰極七段碼如顯示“0”,共陰極七段碼:

dpgfedcba001111113FH共陽極七段碼:

dpgfedcba110000000C0H共陰極七段碼表:unsignedcharcodedaima[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};b.驅(qū)動(dòng)問題LED顯示器的每一個(gè)段通常需要1~5mA電流。段驅(qū)動(dòng)、位驅(qū)動(dòng);段口、位口c.顯示方式問題靜態(tài)顯示、動(dòng)態(tài)顯示d.譯碼方式問題硬件譯碼:采用專用譯碼器芯片實(shí)現(xiàn),如CD4511、7447等芯片軟件譯碼:采用軟件查表的方法,如顯示“3”:unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

unsignedchari,j;

i=0x03;//

j=table[i];//查表,轉(zhuǎn)換成7段碼(3)顯示函數(shù)的編寫問題a.建立7段碼表b.建立顯示緩沖區(qū)通常,顯示緩沖區(qū)中存放要顯示的內(nèi)容,對應(yīng)于每個(gè)顯示器,顯示緩沖區(qū)的數(shù)據(jù)由其他函數(shù)或主函數(shù)來修改。c.編制顯示函數(shù)顯示函數(shù)只完成將顯示緩沖區(qū)中的數(shù)據(jù)通過查表轉(zhuǎn)換成7段碼送顯示器顯示。d.顯示函數(shù)的調(diào)用在主函數(shù)或其他函數(shù)中調(diào)用顯示函數(shù)。例如:2位顯示器顯示函數(shù)的編寫unsignedchardis_buf[2]; //顯示緩沖區(qū)unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voidDisp(void)//2位數(shù)碼管顯示函數(shù){ unsignedchari;i=dis_buf[0];//取顯示內(nèi)容P1=table[i];//7段碼送顯示器i=dis_buf[1];P3=table[i];}

(4)LED顯示器靜態(tài)顯示1、一個(gè)8位端口控制1位LED顯示器;2、不改變顯示內(nèi)容,顯示器一直顯示不變;3、硬件復(fù)雜,軟件控制簡單。例1:利用P2、P3口進(jìn)行靜態(tài)顯示:輪流顯示“12”、“--”、“AB”#include<reg51.h>unsignedchardis_buf[2]; //顯示緩沖區(qū)unsignedcharcodetable[18]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00};voiddl(unsigned

intx) //延時(shí)xms{ unsignedintt1,t2; for(t1=0;t1<x;t1++) for(t2=0;t2<120;t2++);}voiddisplay(void)//顯示函數(shù){ P2=table[dis_buf[0]];//靜態(tài)顯示1 P3=table[dis_buf[1]];//靜態(tài)顯示2}voidmain(void){ while(1) { dis_buf[0]=1;dis_buf[1]=2;//送顯示數(shù)據(jù)12 display(); //調(diào)顯示函數(shù)

dl(500); //延時(shí)500ms dis_buf[0]=16;dis_buf[1]=16; //顯示-- display(); dl(500); dis_buf[0]=0x0a;dis_buf[1]=0x0b;//顯示ab display(); dl(500); }}例2:利用8255PA、PB、PC口進(jìn)行靜態(tài)顯示:輪流顯示“123”、“abc”#include<reg51.h>#include<absacc.h>#defineCOM8255XBYTE[0xbfff]#definePA8255XBYTE[0xbcff]#definePB8255XBYTE[0xbdff]#definePC8255XBYTE[0xbeff]unsignedchardis_buf[3]; //顯示緩沖區(qū)unsignedcharcodetable[18]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00};voiddl(unsigned

intx) //延時(shí)xms{ unsignedintt1,t2; for(t1=0;t1<x;t1++) for(t2=0;t2<120;t2++);}voiddisplay(void){ PA8255=table[dis_buf[0]]; PB8255=table[dis_buf[1]]; PC8255=table[dis_buf[2]];}voidmain(void){

COM8255=0x80; //8255初始化

while(1) { dis_buf[0]=1;dis_buf[1]=2; dis_buf[2]=3;//顯示123 display(); //調(diào)顯示函數(shù)

dl(500);//延時(shí)500ms dis_buf[0]=0x0a;dis_buf[1]=0x0b;dis_buf[2]=0x0c; //顯示abc

display(); dl(500); }}(5)LED動(dòng)態(tài)顯示動(dòng)態(tài)顯示即一位一位輪流點(diǎn)亮各位顯示器,采用動(dòng)畫模式。理解:段口和位口的含義unsignedchardis_buf[8]; //顯示緩沖區(qū)unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voiddisplay(void){ unsignedchari; unsignedcharbitcode=0xfe; //位碼

for(i=0;i<8;i++) {

DUANKOU=table[dis_buf[i]]; //送段碼

WEIKOU=bitcode;

//位碼

dl_ms();

//延時(shí)1ms

WEIKOU=0xff;//關(guān)閉顯示

bitcode=_crol_(bitcode,1);//位碼左循環(huán)移位 }}例3:利用P0、P3口進(jìn)行動(dòng)態(tài)顯示:顯示“123456”#include<reg51.h>#include<intrins.h>unsignedchardis_buf[6]={0};//顯示緩沖區(qū)unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voiddl_ms() //延時(shí)1ms{ unsignedintj; for(j=0;j<150;j++);}voiddisplay(void){ unsignedchari; unsignedcharbitcode=0xfe; //位碼

for(i=0;i<6;i++) { P0=table[dis_buf[i]]; //送段碼

P3=bitcode; //位碼

dl_ms(); //延時(shí)1msP3=0xff; //關(guān)閉顯示

bitcode=_crol_(bitcode,1);//位碼左循環(huán)移位

}}voidmain(void){ dis_buf[0]=1;dis_buf[1]=2; dis_buf[2]=3;dis_buf[3]=4;dis_buf[4]=5;dis_buf[5]=6;

while(1) { display(); }}A15A14A13A12A11A10A9A8A7---------A0101111001--------1

01

10

11

8255端口地址:BCFFH—BFFFH例4:利用8255A控制動(dòng)態(tài)顯示PA口為段口,PB口為位口74LS245、7407均為同向驅(qū)動(dòng)器。例4:利用8255進(jìn)行動(dòng)態(tài)顯示:顯示“12345678”#include<reg51.h>#include<intrins.h>#include<absacc.h>#defineCOM8255XBYTE[0xbfff]#definePA8255XBYTE[0xbcff]#definePB8255XBYTE[0xbdff]#definePC8255XBYTE[0xbeff]unsignedchardis_buf[8]={1,2,3,4,5,6,7,8}; //顯示緩沖區(qū)unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voiddl_ms() //延時(shí)1ms{ unsignedintj; for(j=0;j<150;j++);}voiddisplay(void){ unsignedchari; unsignedcharbitcode=0xfe; //位碼

for(i=0;i<8;i++) { PA8255=table[dis_buf[i]]; //送段碼

PC8255=bitcode; //位碼

dl_ms(); //延時(shí)1msPC8255=0xff; //關(guān)閉顯示

bitcode=_crol_(bitcode,1);//位碼左循環(huán)移位

}}voidmain(){ COM8255=0x80; //8255初始化

while(1) { display(); }}提高:顯示程序的實(shí)際問題前述顯示程序是理想仿真下的情況。實(shí)際電路板中的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論