版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1會(huì)計(jì)學(xué)單片機(jī)與液晶顯示器單片機(jī)與液晶顯示器(a)典型的七段式LED器件 (b) 共陽(yáng)極LED (c) 共陰極LED四位數(shù)七段LED數(shù)碼管模塊(左為正面圖、右為背面圖) 單片機(jī)P2.0P2.7abcdefgdp +5v +5vabcdefgdpP0.0P0.7編程:(以共陽(yáng)極為例)MOVP2,#11111001B(0F9H)MOVP0,#10100100B(0A4H)SJMP$靜態(tài)連接靜態(tài)顯示 單片機(jī)P2.0P2.7abcdefgdpP0.0P0.1P0.2P0.3想一想:和靜態(tài)連接的區(qū)別在哪里? 單片機(jī) P2.0P2.7abcdefgdpP0.0P0.1P0.2P0.3case 0 x01:
2、 key1(); /鍵盤(pán)1功能函數(shù)。 break; case 0 x02: key2();/鍵盤(pán)2功能函數(shù)。 break; case 0 x04: key3(); /鍵盤(pán)3功能函數(shù)。 break; case 0 x08: key4();/鍵盤(pán)4功能函數(shù)。 break; case 0 x10: key5(); /鍵盤(pán)5功能函數(shù)。 break; case 0 x20: key6();/鍵盤(pán)6功能函數(shù)。 break; case 0 x40: key7(); /鍵盤(pán)7功能函數(shù)。 break; case 0 x80: key8();/鍵盤(pán)8功能函數(shù)。 break; default:break; 說(shuō)明 :
3、采用輪詢(xún)方式查詢(xún)P1口,采用延時(shí)法消除鍵盤(pán)抖動(dòng)*/#include /* 函數(shù)名稱(chēng):delay()功能:用于鍵盤(pán)消抖的延時(shí)函數(shù)說(shuō)明:無(wú) 入口參數(shù):無(wú)返回值 :無(wú)*/void delay() unsigned char i; for (i=400;i0;i-);/ 主函數(shù) main()void main(void) unsigned char key; while(1) P1=0 xff; /要想從P1口讀數(shù)據(jù)必須先給P1口寫(xiě)1 key=P1; /讀入P1口的數(shù)據(jù),賦值給變量key if(key!=0 x00) /判斷是否有鍵按下,當(dāng)沒(méi)有鍵按下時(shí),P1口的數(shù)據(jù)為0 x00 delay(); /延
4、時(shí)去抖 key=P1; /再次讀入P1口的數(shù)據(jù),賦值給變量key if(key!=0 x00) /再次判斷是否有鍵按下 switch(key) 4x4 鍵盤(pán)的內(nèi)部結(jié)構(gòu)市售一體成型的4x4鍵盤(pán)低電平掃描按下“0”鍵X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵11 101110Key 01101Key 11011Key 20111Key 311 011110Key 41101Key 51011Key 60111Key 710 111110Key 81101Key 91011Key A0111Key B01 111110Key C1101Key D1011Key E0111Key Fxx xx1111無(wú)
5、按鍵按下低電平動(dòng)作鍵盤(pán)動(dòng)作分析表高電平掃描按下“0”鍵X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵00 010001Key 00010Key 10100Key 21000Key 300 100001Key 40010Key 50100Key 61000Key 701 000001Key 80010Key 90100Key A1000Key B10 000001Key C0010Key D0100Key E1000Key Fxx xx0000無(wú)按鍵按下高電平動(dòng)作鍵盤(pán)動(dòng)作分析表44鍵盤(pán)掃描電路基本原理:分行掃描檢查是否有鍵按下若有,確定哪個(gè)鍵被按下1. 行掃描法的原理 判斷哪一個(gè)鍵被按下的流程 P1=
6、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);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 x
7、f0; 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 x70):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):displa
8、y(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(); 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);brea
9、k; 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,0 xC6,0 xA1,0 x86,0 x8E; P2=0 xfe; P0=tablei;2. 行反轉(zhuǎn)法的原理行線、列線分別接并行口行線輸出,列線輸入列線輸出讀得的值,行線輸入行反轉(zhuǎn)法的流程 uchar keyscan(void)/鍵盤(pán)掃描函數(shù),使用行列反轉(zhuǎn)掃描法 uchar cord_h,cord_l;/行列值 P3=0 x0f; /行線輸出全為
10、0 cord_h=P3&0 x0f; /讀入列線值 if(cord_h!=0 x0f) /先檢測(cè)有無(wú)按鍵按下 delay(100); /去抖 if(cord_h!=0 x0f) cord_h=P3&0 x0f; /讀入列線值 P3=cord_h|0 xf0; /輸出當(dāng)前列線值 cord_l=P3&0 xf0; /讀入行線值 return(cord_h+cord_l);/鍵盤(pán)最后組合碼值 此處仿真圖1 測(cè)控系統(tǒng)的組成部分圖2 1602的顯示地址與DDRAM地址在點(diǎn)陣型LCD上顯示一幅圖片或是字符,如上圖所示,只需黑色的部分點(diǎn)亮,空白的點(diǎn)置0即可??梢詫CD看成128*6
11、4個(gè)LED燈來(lái)幫助理解。正面圖背面圖12864分類(lèi)12864點(diǎn)陣液晶顯示屏有三種控制器,分別是KS0107(KS0108)、T6963C和ST7920,三種控制器主要區(qū)別是:KS0107(KS0108)不帶任何字庫(kù)、T6963C帶ASCII碼,ST7920帶國(guó)標(biāo)二級(jí)字庫(kù)(8千多個(gè)漢字)。XY地址計(jì)數(shù)器實(shí)際上是作為DDRAM的地址指針,X地址計(jì)數(shù)器為DDRAM的頁(yè)指針,Y地址計(jì)數(shù)器為DDRAM的Y(列)地址指針。X地址計(jì)數(shù)器沒(méi)有記數(shù)功能,只能用指令設(shè)置。Y地址計(jì)數(shù)器具有循環(huán)記數(shù)功能,各顯示數(shù)據(jù)寫(xiě)入后,Y地址自動(dòng)加1,Y地址指針從0到63。從上圖可以看出數(shù)據(jù)按字節(jié)在屏幕上是豎向排列的。上方為低位,
12、下方為高位。因此在橫向上(也就是Y)就一共是128列數(shù)據(jù)。分為CS1和CS2兩個(gè)64列來(lái)寫(xiě)入。在豎方向上(也就是X)一字節(jié)數(shù)據(jù)顯示8個(gè)點(diǎn),豎向64個(gè)點(diǎn)分為8個(gè)字節(jié),稱(chēng)做8頁(yè)(X=0-7)。了解這些后我們就知道要滿屏顯示一張圖就要從y=0127、X=07一共寫(xiě)1288=1024個(gè)字節(jié)的數(shù)據(jù)。同樣在AT89S51中存一張圖就要1024個(gè)字節(jié)的空間。 注意:在對(duì)DDRAM進(jìn)行讀寫(xiě)操作后,Y地址指針自動(dòng)加1,指向下一個(gè)DDRAM 單元。寫(xiě)程序:附件寫(xiě)命令cmd(side0為左,1為右)void WriteCmd(uchar cmd, bit side) CheckBusy(side);if(side=
13、Left)/Left=0(宏定義)WI1=cmd;elseWI2=cmd;v1)查忙程序vvoid CheckBusy(bit side)/side0為左1為右vv unsigned char buf=0 xFF;v while(buf)vif(!side)vbuf=RI1;/單片機(jī)命令velsevbuf=RI2; v buf&=0 x80; /取D7若為1則忙,忙則buf != 0(LCD回信號(hào))vv初始化:LCD12864模塊的20個(gè)引腳定義如下:1.Vss 邏輯電源地2.VDD邏輯電源正5v3.V0LCD驅(qū)動(dòng)電壓4.RS 數(shù)據(jù)/指令選擇:高電平為數(shù)據(jù), 低電平為指令5.R/W讀/
14、寫(xiě)選擇:高電平為讀數(shù)據(jù), 低電平為寫(xiě)數(shù)據(jù)6.E讀寫(xiě)使能,高電平有效, 下降沿鎖定數(shù)據(jù)7.DB0數(shù)據(jù)輸入輸出引腳8.DB1數(shù)據(jù)輸入輸出引腳9.DB2數(shù)據(jù)輸入輸出引腳10.DB3數(shù)據(jù)輸入輸出引腳11.DB4數(shù)據(jù)輸入輸出引腳12.DB5數(shù)據(jù)輸入輸出引腳13.DB6數(shù)據(jù)輸入輸出引腳14.DB7數(shù)據(jù)輸入輸出引腳15.CS1片選擇號(hào),低電平時(shí)選擇前64列16.CS2片選擇號(hào),低電平時(shí)選擇后64列17.RET復(fù)位信號(hào),低電平有效。18.VEE輸出15v電源給V0提供驅(qū)動(dòng)電源19.A背光電源LED正極20.K背光電源LED負(fù)極圖5.LCD引腳圖所以只要我們寫(xiě)入指令0 x01,整個(gè)屏幕就被清空了。LCD初始化:
15、一般用指令0 x0c,開(kāi)顯示,關(guān)閉光標(biāo) 既可以控制擴(kuò)展功能,又可以控制繪圖顯示的指令!用0X30,基本指令集指令0X06光標(biāo)右移1.漢字顯示坐標(biāo) 顯示漢字一屏可以顯示4*8=32個(gè)16*16的漢字。實(shí)物圖對(duì)照下,把地址也表到實(shí)物圖上去了。 操作的具體流程:A進(jìn)入基本指令模式(指令16,指令為0 x30)B寫(xiě)入xy地址(地址需要查上表,用指令8,也就是寫(xiě)入DDRAM)C寫(xiě)入欲寫(xiě)入的漢字的編碼(一般定義一個(gè)數(shù)組,直接把漢字存放在里面即可,存儲(chǔ)的時(shí)候它就是以編碼的形式。例如:uchar code dis1=“南京師范大學(xué);)例程代碼:uchar code dis3 = “南京師范大學(xué);void di
16、splay_hz()Uchar I;Write_comd(0 x30);/基本指令Write_comd(0 x80);/寫(xiě)在第一個(gè)位置上For(i=0;i8;i+)Write_da(dis3i);/把數(shù)據(jù)送到端口Delay_ms(5);/延時(shí)一會(huì) 2.ASCII顯示坐標(biāo):它的坐標(biāo)和漢字的坐標(biāo)是一樣的,只不過(guò)一個(gè)漢字的位置可以放兩個(gè)ASCII碼字符。因?yàn)榍罢邽?6*16后者為16*8,這樣一行可以顯示16個(gè)ASCII碼了。在顯示一串字符穿的時(shí)候,給一個(gè)起始地址,屏幕就會(huì)依次顯示出來(lái)(自動(dòng)加一功能)。 操作的具體流程:A進(jìn)入基本指令模式(指令16,指令為0 x30)B寫(xiě)入xy地址(地址需要查上表,
17、用指令8,也就是寫(xiě)入DDRAM)C寫(xiě)入欲寫(xiě)入的漢字的編碼(一般定義一個(gè)數(shù)組,直接把ASACII碼存放在里面即可,存儲(chǔ)的時(shí)候它就是以編碼的形式。例如:uchar code dis1=SH;)例程代碼:uchar code dis2 = SH;void display_ascii()Uchar I;Write_comd(0 x30);/基本指令Write_comd(0 x80);/寫(xiě)在第一個(gè)位置上For(i=0;i2;i+)Write_da(dis2i);/把數(shù)據(jù)送到端口Delay_ms(5);/延時(shí)一會(huì)并行寫(xiě)資料到模塊:時(shí)序圖:寫(xiě)指令:void write_cmd(uchar cmd) lcdr
18、s = 0;/低電平表命令 lcdrw = 0;/ 低電平表寫(xiě) P0 = cmd;/把命令送給P0 lcden = 0;/產(chǎn)生一個(gè)高脈沖 delay_ms(5); lcden = 1; delay_ms(5);/不用的時(shí)候把en拉低,12864不使能 lcden = 0; (2)寫(xiě)數(shù)據(jù):void write_dat(uchar dat) lcdrs = 1;/高電平表示數(shù)據(jù) lcdrw = 0;/低電平表示寫(xiě) P0 = dat;/把數(shù)據(jù)送到端口 lcden = 0;/產(chǎn)生一個(gè)高脈沖 delay_ms(5); lcden = 1; delay_ms(5); lcden = 0; /不用時(shí)不使能根
19、據(jù)這個(gè)時(shí)序圖可以從12864液晶模塊內(nèi)部RAM中讀出相應(yīng)的數(shù)據(jù),忙檢測(cè)函數(shù)就是根據(jù)這個(gè)時(shí)序圖寫(xiě)出來(lái)的。帶中文字庫(kù)的128X64顯示模塊時(shí)應(yīng)注意以下幾點(diǎn):欲在某一個(gè)位置顯示中文字符時(shí),應(yīng)先設(shè)定顯示字符位置,即先設(shè)定顯示地址,再寫(xiě)入中文字符編碼。顯示ASCII字符過(guò)程與顯示中文字符過(guò)程相同。不過(guò)在顯示連續(xù)字符時(shí),只須設(shè)定一次顯示地址,由模塊自動(dòng)對(duì)地址加1指向下一個(gè)字符位置,否則,顯示的字符中將會(huì)有一個(gè)空ASCII字符位置。當(dāng)字符編碼為2字節(jié)時(shí),應(yīng)先寫(xiě)入高位字節(jié),再寫(xiě)入低位字節(jié)。模塊在接收指令前,向處理器必須先確認(rèn)模塊內(nèi)部處于非忙狀態(tài),即讀取BF標(biāo)志時(shí)BF需為“0”,方可接受新的指令。如果在送出一個(gè)
20、指令前不檢查BF標(biāo)志,則在前一個(gè)指令和這個(gè)指令中間必須延遲一段較長(zhǎng)的時(shí)間,即等待前一個(gè)指令確定執(zhí)行完成。指令執(zhí)行的時(shí)間請(qǐng)參考指令表中的指令執(zhí)行時(shí)間說(shuō)明?!癛E”為基本指令集與擴(kuò)充指令集的選擇控制位。當(dāng)變更“RE”后,以后的指令集將維持在最后的狀態(tài),除非再次變更“RE”位,否則使用相同指令集時(shí),無(wú)需每次均重設(shè)“RE”位。低電平掃描按下“0”鍵X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵11 101110Key 01101Key 11011Key 20111Key 311 011110Key 41101Key 51011Key 60111Key 710 111110Key 81101Key 91011
21、Key A0111Key B01 111110Key C1101Key D1011Key E0111Key Fxx xx1111無(wú)按鍵按下低電平動(dòng)作鍵盤(pán)動(dòng)作分析表X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵00 010001Key 00010Key 10100Key 21000Key 300 100001Key 40010Key 50100Key 61000Key 701 000001Key 80010Key 90100Key A1000Key B10 000001Key C0010Key D0100Key E1000Key Fxx xx0000無(wú)按鍵按下高電平動(dòng)作鍵盤(pán)動(dòng)作分析表XY地址計(jì)數(shù)器實(shí)際上是作為DDRAM的地址指針,X地址計(jì)數(shù)器為DDRAM的頁(yè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:近代漢文中國(guó)行紀(jì)與全球文學(xué)關(guān)系研究
- 2025年度個(gè)人與公司租賃合同稅費(fèi)承擔(dān)協(xié)議4篇
- 二零二五版金融服務(wù)保密協(xié)議范本修訂6篇
- 2025年保定怎么考貨運(yùn)從業(yè)資格證
- 二零二五年城投小貸與農(nóng)業(yè)產(chǎn)業(yè)合作框架協(xié)議4篇
- 2025年度農(nóng)村土地流轉(zhuǎn)經(jīng)營(yíng)權(quán)抵押貸款合同示范文本4篇
- 二零二五年度充電樁安裝工程知識(shí)產(chǎn)權(quán)保護(hù)合同4篇
- 二零二五年度出境領(lǐng)隊(duì)旅游目的地考察合同4篇
- 二零二五年度城市綜合體建設(shè)項(xiàng)目承包商安全作業(yè)管理協(xié)議4篇
- 2025年度葡萄采摘季節(jié)臨時(shí)工采購(gòu)合同范本3篇
- 垃圾處理廠工程施工組織設(shè)計(jì)
- 天皰瘡患者護(hù)理
- 2025年蛇年新年金蛇賀歲金蛇狂舞春添彩玉樹(shù)臨風(fēng)福滿門(mén)模板
- 《建筑制圖及陰影透視(第2版)》課件 4-直線的投影
- 2024-2030年中國(guó)IVD(體外診斷)測(cè)試行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 損失補(bǔ)償申請(qǐng)書(shū)范文
- 壓力與浮力的原理解析
- 鐵路損傷圖譜PDF
- 裝修家庭風(fēng)水學(xué)入門(mén)基礎(chǔ)
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)二 社群的種類(lèi)與維護(hù)
- 《詩(shī)詞寫(xiě)作常識(shí) 詩(shī)詞中國(guó)普及讀物 》讀書(shū)筆記思維導(dǎo)圖
評(píng)論
0/150
提交評(píng)論