版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機與液晶顯示器講座四單片機與液晶顯示器v1.多位led顯示v2.鍵盤管理模塊v3.點陣、字符液晶顯示器v4.字模提取軟件單片機與液晶顯示器led的工作原理的工作原理(a)典型的七段式led器件 (b) 共陽極led (c) 共陰極led單片機與液晶顯示器四位數七段led數碼管模塊(左為正面圖、右為背面圖)單片機與液晶顯示器單片機與液晶顯示器led數碼管和單片機的連接1 單片機p2.0p2.7abcdefgdp +5v +5vabcdefgdpp0.0p0.7編程:(以共陽極為例)movp2,#11111001b(0f9h)movp0,#10100100b(0a4h)sjmp$靜態(tài)連接靜態(tài)顯
2、示單片機與液晶顯示器led數碼管和單片機的連接2 單片機p2.0p2.7abcdefgdpp0.0p0.1p0.2p0.3想一想:和靜態(tài)連接的區(qū)別在哪里?單片機與液晶顯示器 單片機 p2.0p2.7abcdefgdpp0.0p0.1p0.2p0.3單片機與液晶顯示器靜態(tài)、動態(tài)顯示方式總結q靜態(tài)顯示連接q所有l(wèi)ed的位選均共同連接到+vcc或gnd,每個led的8根段選線分別連接一個8位并行i/o口。q原理簡單;顯示無閃爍;占用i/o資源較多。v動態(tài)顯示連接 所有l(wèi)ed的段選線共同連接在一起共用一個 8位i/o口而每個led的位選分別由一根相應的i/o口線控制。因此必須采用動態(tài)掃描顯示方式。單片
3、機與液晶顯示器例:74ls164+led(proteus)單片機與液晶顯示器獨立鍵盤單片機與液晶顯示器case 0 x01: key1(); /鍵盤1功能函數。 break; case 0 x02: key2();/鍵盤2功能函數。 break; case 0 x04: key3(); /鍵盤3功能函數。 break; case 0 x08: key4();/鍵盤4功能函數。 break; case 0 x10: key5(); /鍵盤5功能函數。 break; case 0 x20: key6();/鍵盤6功能函數。 break; case 0 x40: key7(); /鍵盤7功能函數。
4、break; case 0 x80: key8();/鍵盤8功能函數。 break; default:break; 說明 :采用輪詢方式查詢p1口,采用延時法消除鍵盤抖動*/#include /* 函數名稱:delay()功能:用于鍵盤消抖的延時函數說明:無 入口參數:無返回值 :無*/void delay() unsigned char i; for (i=400;i0;i-);/ 主函數 main()void main(void) unsigned char key; while(1) p1=0 xff; /要想從p1口讀數據必須先給p1口寫1 key=p1; /讀入p1口的數據,賦值給變
5、量key if(key!=0 x00) /判斷是否有鍵按下,當沒有鍵按下時,p1口的數據為0 x00 delay(); /延時去抖 key=p1; /再次讀入p1口的數據,賦值給變量key if(key!=0 x00) /再次判斷是否有鍵按下 switch(key) 單片機與液晶顯示器矩陣式鍵盤控制單片機與液晶顯示器4x4 鍵盤的內部結構單片機與液晶顯示器市售一體成型的4x4鍵盤單片機與液晶顯示器低電平掃描按下“0”鍵單片機與液晶顯示器x3x2x1x0y3y2y1y0動作按鍵11 101110key 01101key 11011key 20111key 311 011110key 41101k
6、ey 51011key 60111key 710 111110key 81101key 91011key a0111key b01 111110key c1101key d1011key e0111key fxx xx1111無按鍵按下低電平動作鍵盤動作分析表單片機與液晶顯示器高電平掃描按下“0”鍵單片機與液晶顯示器x3x2x1x0y3y2y1y0動作按鍵00 010001key 00010key 10100key 21000key 300 100001key 40010key 50100key 61000key 701 000001key 80010key 90100key a1000key
7、 b10 000001key c0010key d0100key e1000key fxx xx0000無按鍵按下高電平動作鍵盤動作分析表單片機與液晶顯示器44鍵盤掃描電路單片機與液晶顯示器基本原理:分行掃描檢查是否有鍵按下若有,確定哪個鍵被按下1. 行掃描法的原理行掃描法的原理單片機與液晶顯示器 判斷哪一個鍵被按下的流程單片機與液晶顯示器 p1=0 xfe; n=p1; n&=0 xf0; if(n!=0 xf0) delay(); p1=0 xfe; n=p1; n&=0 xf0; if(n!=0 xf0) switch(n) case(0 xe0):display(0);
8、break; case(0 xd0):display(1);break; case(0 xb0):display(2);break; case(0 x70):display(3);break; p1=0 xfd; n=p1; n&=0 xf0; if(n!=0 xf0) delay(); p1=0 xfd; n=p1; n&=0 xf0; if(n!=0 xf0) switch(n) case(0 xe0):display(4);break; case(0 xd0):display(5);break; case(0 xb0):display(6);break; case(0 x
9、70):display(7);break; p1=0 xfb; n=p1; n&=0 xf0; if(n!=0 xf0) delay(); p1=0 xfb; n=p1; n&=0 xf0; if(n!=0 xf0) switch(n) case(0 xe0):display(8);break; case(0 xd0):display(9);break; case(0 xb0):display(10);break; case(0 x70):display(11);break; p1=0 xf7; n=p1; n&=0 xf0; if(n!=0 xf0) delay();
10、 p1=0 xf7; n=p1; n&=0 xf0; if(n!=0 xf0) switch(n) case(0 xe0):display(12);break; case(0 xd0):display(13);break; case(0 xb0):display(14);break; case(0 x70):display(15);break; void display(unsigned char i) unsigned char table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,
11、0 xc6,0 xa1,0 x86,0 x8e; p2=0 xfe; p0=tablei;單片機與液晶顯示器2. 行反轉法的原理行反轉法的原理行線、列線分別接并行口行線輸出,列線輸入列線輸出讀得的值,行線輸入單片機與液晶顯示器行反轉法的流程 單片機與液晶顯示器uchar keyscan(void)/鍵盤掃描函數,使用行列反轉掃描法 uchar cord_h,cord_l;/行列值 p3=0 x0f; /行線輸出全為0 cord_h=p3&0 x0f; /讀入列線值 if(cord_h!=0 x0f) /先檢測有無按鍵按下 delay(100); /去抖 if(cord_h!=0 x0f
12、) cord_h=p3&0 x0f; /讀入列線值 p3=cord_h|0 xf0; /輸出當前列線值 cord_l=p3&0 xf0; /讀入行線值 return(cord_h+cord_l);/鍵盤最后組合碼值 此處仿真此處仿真單片機與液晶顯示器測控系統(tǒng)中必不可少的組成人機界面圖1 測控系統(tǒng)的組成部分單片機與液晶顯示器液晶顯示器的原理v字符型液晶(1602)方法:通過向指定顯示位置對應的ddram中寫數據來顯示字符。例如:在第2行第2列顯示字符 a,查表1 可知a對應的代碼為01100001即0 x31,則可向地址0 x41中寫入數據0 x31即可顯示。圖2 1602的顯示
13、地址與ddram地址單片機與液晶顯示器點陣型液晶(12864)在點陣型lcd上顯示一幅圖片或是字符,如上圖所示,只需黑色的部分點亮,空白的點置0即可??梢詫cd看成128*64個led燈來幫助理解。單片機與液晶顯示器正面圖正面圖背面圖背面圖單片機與液晶顯示器12864分類12864點陣液晶顯示屏有三種控制器,分別是ks0107(ks0108)、t6963c和st7920,三種控制器主要區(qū)別是:ks0107(ks0108)不帶任何字庫、t6963c帶ascii碼,st7920帶國標二級字庫(8千多個漢字)。單片機與液晶顯示器圖3 12864的ddram地址單片機與液晶顯示器xy地址計數器實際上
14、是作為ddram的地址指針,x地址計數器為ddram的頁指針,y地址計數器為ddram的y(列)地址指針。x地址計數器沒有記數功能,只能用指令設置。y地址計數器具有循環(huán)記數功能,各顯示數據寫入后,y地址自動加1,y地址指針從0到63。從上圖可以看出數據按字節(jié)在屏幕上是豎向排列的。上方為低位,下方為高位。因此在橫向上(也就是y)就一共是128列數據。分為cs1和cs2兩個64列來寫入。在豎方向上(也就是x)一字節(jié)數據顯示8個點,豎向64個點分為8個字節(jié),稱做8頁(x=0-7)。了解這些后我們就知道要滿屏顯示一張圖就要從y=0127、x=07一共寫1288=1024個字節(jié)的數據。同樣在at89s5
15、1中存一張圖就要1024個字節(jié)的空間。 單片機與液晶顯示器圖片在12864上的顯示v簡單來說,主要分為兩步:v1)將一幅圖片轉化為一系列二進制數據v2)將數據按字節(jié)(8位)寫入液晶對應的ddram由圖3可知,12864的ddram有128*8=1024個地址,只需將圖片轉化的數據按字節(jié)寫入這其對應的ddram地址即可。單片機與液晶顯示器字符在12864上的顯示上圖中,漢字為16*16點陣,ascii碼為8*16點陣,同圖片一樣,一個漢字(ascii)由16*2(8*2)個字節(jié)數據組成,字符顯示原理與圖片一致,只需將字符代碼寫入相應ddram地址。字體大小可以根據需要改變。單片機與液晶顯示器小結
16、v簡而言之,無論是字符型還是點陣型lcd,其基本原理都是通過將數據寫入所對應的ddram地址中來顯示所需要的圖形或是字符。v12864點陣型液晶對應的ddram有1024個地址,當需顯示的字符或圖片已轉為二進制數據時,確定將數據寫入對應的ddram地址就是你所要做的工作!單片機與液晶顯示器單片機與液晶顯示器的硬件連接v液晶顯示器(12864)主要包含了以下接口(圖6) :v1)使能e(51的rd和wr經或非門接lcd的使能e)v2)片選cs1(左半屏)、cs2(右半屏),見圖3v3)命令/數據選擇rs(0命令,1數據)v4)讀/寫選擇r/w(0寫,1讀)v5)數據總線db0db7v6)負壓產生
17、和負壓輸入(對比度)調整v7)復位rstv8)電源與地和背景光電源單片機與液晶顯示器軟件編程注意:程序的編寫與硬件是分不開的。以圖6為例,a11a8對應cs2、cs1、r/w、rs,未用的地址線為高。見圖5則當向12864的左半屏(cs1=1,cs2=0)寫(r/w=0)數據(rs=1)時,總線地址為0 x1111010111111111。即0 xf5ff。c文件中定義如下:#define wd1 xbyte0 xf5ff定義了總線地址后,對外部地址的操作變得非常簡單。如向左半屏寫數據0 xff : wd1=0 xff 讀左半屏數據 : data=rd1(data存儲讀取到的數據)單片機與液晶
18、顯示器舉例v下面簡單介紹程序編寫的流程v1)定義所有總線地址v#define wi1 xbyte0 xf4ff/向左半屏寫命令v#define wd1 xbyte0 xf5ff /向左半屏寫數據v#define ri1 xbyte0 xf6ff /讀左半屏命令v#define rd1 xbyte0 xf7ff /讀左半屏數據v#define wi2 xbyte0 xf8ff /向右半屏寫命令v#define wd2 xbyte0 xf9ff/向右半屏寫數據v#define ri2 xbyte0 xfaff /讀右半屏命令v#define rd2 xbyte0 xfbff/讀右半屏數據單片機與液
19、晶顯示器v2)編寫底層程序(查忙,寫數據,讀數據)v查忙(讀bf標志即db7總線,亦即讀命令)bf=1表示模塊在內部操作,此時模塊不接受外部指令和數據; bf=0時模塊為準備狀態(tài),隨時可接受外部指令和數據;b=ri1 或者 b=ri2,觀察b中最高位是否為0,否則忙。v寫數據avwd1=a或者wd2=av讀數據到datavdata=rd1或者data=rd2注意:無論是寫數據還是讀數據一定要先查忙(對左右半屏讀命令),只有在bf=0時才能對lcd進行操作單片機與液晶顯示器3)lcd初始化包含開顯示(0 x3f),起始行(0 xc0),設置起始頁地址(0 xb8)和y地址(0 x40),即分別向
20、lcd的左右半屏寫命令。可按括號內的數據進行初始化。具體可查閱12864的pdf資料。4)清屏(向ddram所有地址寫0)顯示一幅新圖片前必須清屏,否則之前顯示的數據仍存在于液晶上。單片機與液晶顯示器5)指定位置顯示一個ascii碼v首先將起始頁地址和起始y地址設置好,寫入ascii碼的上半部分(8個字節(jié)數據)重新設置起始頁地址和起始y地址,寫入ascii碼的下半部分(另8個字節(jié)數據)注意:在對ddram進行讀寫操作后,y地址指針自動加1,指向下一個ddram 單元。單片機與液晶顯示器6)指定位置顯示漢字 同顯示ascii碼基本相似,只是上下部分分別有16個字節(jié)數據需要寫入ddram。7)顯示
21、一張圖片對于圖片,必然從第0頁第0列開始,可以一頁一頁(不分左右屏)顯示,也可以先寫左半屏后寫右半屏。所謂的兩種方法差別正在設置的起始頁地址和y地址的不同。圖3單片機與液晶顯示器小結v12864點陣型液晶對應的ddram有1024個地址,無論是顯示字符還是圖片,靈活設置起始頁地址和y地址,可以達到想要的結果。vc語言中用到總線操作必須添加頭文件“absacc.h”,另如使用仿真器,需在debug中的setting里選擇使用xbus(數據總線)。v可使用取字模軟件將字符或圖片轉為一系列二進制數據。單片機與液晶顯示器寫程序:寫程序:附件單片機與液晶顯示器v3)寫數據datvvoid writeda
22、ta(uchar dat,bit side)vv checkbusy(side);vif(side=left)vwd1=dat;velsevwd2=dat;v寫命令cmd(side0為左,1為右)void writecmd(uchar cmd, bit side) checkbusy(side);if(side=left)/left=0(宏定義)wi1=cmd;elsewi2=cmd;單片機與液晶顯示器讀操作時序單片機與液晶顯示器v1)查忙程序vvoid checkbusy(bit side)/side0為左1為右vv unsigned char buf=0 xff;v while(buf)v
23、if(!side)vbuf=ri1;/單片機命令velsevbuf=ri2; v buf&=0 x80; /取d7若為1則忙,忙則buf != 0(lcd回信號)vv單片機與液晶顯示器初始化:初始化:單片機與液晶顯示器單片機與液晶顯示器v4)初始化程序vvoid lcd_init()vv writecmd(0 x3f,left);/顯示開v writecmd(0 x3f,right);vwritecmd(0 xc0,left);/起始行v writecmd(0 xc0,right);vwritecmd(0 xb8,left);vwritecmd(0 xb8,right);/起始x,y坐
24、標(0,0)vwritecmd(0 x40,left);vwritecmd(0 x40,right);v單片機與液晶顯示器5)清屏(一般dat=0)vvoid lcd_clear(uchar dat)vv uchar i,j;vfor(i=0;i8;i+)vwritecmd(0 xb8+i,left);vwritecmd(0 xb8+i,right);vwritecmd(0 x40,left);vwritecmd(0 x40,right);vfor(j=0;j64;j+)vwritedata(dat,left);vwritedata(dat,right);vvv單片機與液晶顯示器總結v理解12
25、864是如何顯示字符和圖形的v知曉單片機與12864的硬件連接v根據硬件接線,確定所有的總線地址(8個)v明白如何通過總線操作對12864進行數據與命令的交換v參考12864的命令字進行軟件編程v學會如何使用取字模軟件單片機與液晶顯示器圖6 at89c51與12864的硬件連接單片機與液晶顯示器lcd12864模塊的20個引腳定義如下:1.vss 邏輯電源地2.vdd邏輯電源正5v3.v0lcd驅動電壓4.rs 數據/指令選擇:高電平為數據, 低電平為指令5.r/w讀/寫選擇:高電平為讀數據, 低電平為寫數據6.e讀寫使能,高電平有效, 下降沿鎖定數據7.db0數據輸入輸出引腳8.db1數據輸
26、入輸出引腳9.db2數據輸入輸出引腳10.db3數據輸入輸出引腳11.db4數據輸入輸出引腳12.db5數據輸入輸出引腳13.db6數據輸入輸出引腳14.db7數據輸入輸出引腳15.cs1片選擇號,低電平時選擇前64列16.cs2片選擇號,低電平時選擇后64列17.ret復位信號,低電平有效。18.vee輸出15v電源給v0提供驅動電源19.a背光電源led正極20.k背光電源led負極圖圖5.lcd引腳圖引腳圖單片機與液晶顯示器帶字庫12864v帶字庫的帶字庫的12864的基本特性:的基本特性:(1)顯示分辨率)顯示分辨率:12864點點 (就是(就是64行,每行行,每行128個點)個點)(
27、2)內置漢字字庫,提供)內置漢字字庫,提供8192個個1616點陣漢字(點陣漢字(12864內內部有一個部有一個cgrom,內容掉電可以存儲,所以漢字字庫會,內容掉電可以存儲,所以漢字字庫會存放在里面。滿屏最多顯示存放在里面。滿屏最多顯示4*8=32個漢字)。個漢字)。(3)內置)內置 128個個168點陣點陣ascii字符(字符(12864一次最多可以一次最多可以顯示顯示4*16=64個個ascii字符)。字符)。(4)通訊方式:串行、并口可選)通訊方式:串行、并口可選 (數據寫入和讀出可以是以(數據寫入和讀出可以是以串行的方式,也可以是以并行的方式。)串行的方式,也可以是以并行的方式。)單
28、片機與液晶顯示器單片機與液晶顯示器所以只要我們寫入指令所以只要我們寫入指令0 x01,整個屏幕就被清空了。,整個屏幕就被清空了。lcd初始化:初始化:一般用指令一般用指令0 x0c,開顯示,關閉光標,開顯示,關閉光標 既可以控制擴展功能,又可以控制繪圖顯示的指令!用既可以控制擴展功能,又可以控制繪圖顯示的指令!用0x30,基本指令集,基本指令集單片機與液晶顯示器指令指令0x06光標右移光標右移單片機與液晶顯示器1.漢字顯示坐標漢字顯示坐標 顯示漢字一屏可以顯示顯示漢字一屏可以顯示4*8=32個個16*16的漢字。實的漢字。實物圖對照下,把地址也表物圖對照下,把地址也表到實物圖上去了。到實物圖上
29、去了。 單片機與液晶顯示器操作的具體流程:操作的具體流程:a進入基本指令模式(指令進入基本指令模式(指令16,指令為,指令為0 x30)b寫入寫入xy地址(地址需要查上表,用指令地址(地址需要查上表,用指令8,也就是寫入,也就是寫入ddram)c寫入欲寫入的漢字的編碼(一般定義一個數組,直接把漢字存放在里面即可,寫入欲寫入的漢字的編碼(一般定義一個數組,直接把漢字存放在里面即可,存儲的時候它就是以編碼的形式。例如:存儲的時候它就是以編碼的形式。例如:uchar code dis1=“南京師范大學南京師范大學;)例程代碼:例程代碼:uchar code dis3 = “南京師范大學南京師范大學;
30、void display_hz()uchar i;write_comd(0 x30);/基本指令基本指令write_comd(0 x80);/寫在第一個位置上寫在第一個位置上for(i=0;i8;i+)write_da(dis3i);/把數據送到端口把數據送到端口delay_ms(5);/延時一會延時一會 單片機與液晶顯示器2.ascii顯示坐標:顯示坐標:它的坐標和漢字的坐標是一樣的,只不過一個漢字的位置可以放兩個它的坐標和漢字的坐標是一樣的,只不過一個漢字的位置可以放兩個ascii碼字符。因為前者為碼字符。因為前者為16*16后者為后者為16*8,這樣一行可以顯示,這樣一行可以顯示16個個
31、ascii碼了。在顯示一串字符穿的時候,給一個起始地址,屏幕就碼了。在顯示一串字符穿的時候,給一個起始地址,屏幕就會依次顯示出來(自動加一功能)。會依次顯示出來(自動加一功能)。 操作的具體流程:操作的具體流程:a進入基本指令模式(指令進入基本指令模式(指令16,指令為,指令為0 x30)b寫入寫入xy地址(地址需要查上表,用指令地址(地址需要查上表,用指令8,也就是寫入,也就是寫入ddram)c寫入欲寫入的漢字的編碼(一般定義一個數組,直接把寫入欲寫入的漢字的編碼(一般定義一個數組,直接把asacii碼存放碼存放在里面即可,存儲的時候它就是以編碼的形式。例如:在里面即可,存儲的時候它就是以編碼的形式。例如:uchar code dis1=sh;)單片機與液晶顯示器例程代碼:例程代碼:uchar code dis2 = sh;void display_ascii()uchar i;write_comd(0 x30);/基本指令基本指令write_comd(0 x80);/寫在第一個位置上寫在第一個位置上for(i=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考化學一輪復習第一部分考點18化學能和熱能強化訓練含解析
- 2024高考化學一輪復習解題指導8物質結構與性質的命題分析規(guī)范演練含解析新人教版
- 2024高考歷史一輪復習方案專題四世界政治制度的演變與發(fā)展第10講英國代議制和美國1787年憲法教學案+練習人民版
- 2024高考地理一輪復習第二十單元中國地理考法精練含解析
- 紅外熱像技術檢測墻體保溫
- 2024年渤海石油職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 技術質量部年終工作總結
- 第一課1法律的基本特征教材課程
- 二零二五年度貨運合同標的貨物運輸與保險責任詳細條款2篇
- 2024年陜西省核工業(yè)二一五醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 英語-遼寧省大連市2024-2025學年高三上學期期末雙基測試卷及答案
- 2024年意識形態(tài)風險隱患點及應對措施
- 2025版新能源充電樁加盟代理合作協(xié)議范本3篇
- 2025年廣東省揭陽市揭西縣招聘事業(yè)單位人員11人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年云南昆明經濟技術開發(fā)區(qū)投資開發(fā)(集團)有限公司招聘筆試參考題庫附帶答案詳解
- 2023-2024學年廣東省廣州市花都區(qū)九年級(上)期末物理試卷(含答案)
- GB/T 5483-2024天然石膏
- 空調年度巡檢報告范文
- 線上推廣授權合同范例
- 保定學院《大學英語》2023-2024學年第一學期期末試卷
- 2024-2025學年九年級語文上冊部編版期末綜合模擬試卷(含答案)
評論
0/150
提交評論