《單片機原理、應用及c51程序設計》第9章MCS-51單片機的其他接口_第1頁
《單片機原理、應用及c51程序設計》第9章MCS-51單片機的其他接口_第2頁
《單片機原理、應用及c51程序設計》第9章MCS-51單片機的其他接口_第3頁
《單片機原理、應用及c51程序設計》第9章MCS-51單片機的其他接口_第4頁
《單片機原理、應用及c51程序設計》第9章MCS-51單片機的其他接口_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第9章 MCS-51單片機的其他接口,9.1 LCD與MCS-51接口,液晶顯示器按其功能可分為三類:筆段式液晶顯示器、字符點陣式液晶顯示器和圖形點陣式液晶顯示器。,9.1.1 字符型點陣式LCD液晶顯示器,有16字1行、16字2行、20字2行和40字2行等的字符液晶顯示模塊。這些LCM雖然顯示字數(shù)各不相同,但是都具有相同的輸入輸出界面。本節(jié)將以162字符型液晶顯示模塊RT-1602C為例,詳細介紹字符型液晶顯示模塊的應用。,一字符型液晶顯示模塊RT-1602C的外觀與引腳,RT-1602C采用標準的16腳接口,各引腳情況如下:,第1腳:VSS,電源地 第2腳:VDD,+5V電源 第3腳:VL

2、,液晶顯示偏壓信號 第4腳:RS,數(shù)據(jù)/命令選擇端,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。,第5腳:R/W,讀/寫選擇端,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。,第6腳:E,端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第714腳:D0D7,為8位雙向數(shù)據(jù)線。 第15腳:BLA,背光源正極 第16腳:BLK,背光源負極,二字符型液晶顯示模塊RT-1602C的內(nèi)部結構,液晶顯示模塊RT-C1602C的內(nèi)部結構可以分成三部份:一為

3、LCD控制器,二為LCD驅動器,三為LCD顯示裝置,如圖所示:,控制器采用HD44780,驅動器采用HD44100。 HD44780集成電路的特點: 1、可選擇57或510點字符。 2、HD44780不僅作為控制器而且還具有驅動4016點陣液晶像素的能力,在外部加一HD44100外擴展多40路/列驅動,則可驅動162LCD。 3、HD44780內(nèi)藏顯示緩沖區(qū)DDRAM、字符發(fā)生存儲器(ROM)及用戶自定義的字符發(fā)生器CGRAM。 HD44780有80個字節(jié)的顯示緩沖區(qū),分兩行,地址分別為00H27H,40H67H,它下實際顯示位置的排列順序跟LCD的型號有關,液晶顯示模塊RT-1602C的顯示

4、地址與實際顯示位置的關系如圖所示。,HD44780內(nèi)藏的字符發(fā)生存儲器(ROM)已經(jīng)存儲了160個不同的點陣字符圖形,如圖所示:,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼。比如數(shù)字“1”的代碼是00110001B(31H),又如大寫的英文字母“A”的代碼是01000001B(41H),可以看出英文字母的代碼與ASCII編碼相同。要顯示“1”時,我們只需將ASCII碼31H存入DDRAM指定位置,顯示模塊將在相應的位置把數(shù)字“1”的點陣字符圖形顯示出來,我們就能看到數(shù)字“1”了。,4、HD44780具有8位數(shù)據(jù)和4位數(shù)據(jù)傳輸兩種方式,可與4

5、/8位CPU相連。 5、HD44780具有簡單而功能較強的指令集,可實現(xiàn)字符移動,閃爍等顯示功能。,三指令格式與指令功能,LCD控制器HD44780內(nèi)有多個寄存器,通過RS和R/W引腳共同決定選擇哪一個寄存器,選擇情況如表,總共有11條指令,它們的格式和功能如下:,1清屏命令 格式:,功能:清除屏幕,將顯示緩沖區(qū)DDRAM的內(nèi)容全部寫入空格(ASCII20H)。 光標復位,回到顯示器的左上角。 地址計數(shù)器AC清零。,2光標復位命令 格式:,功能:光標復位,回到顯示器的左上角。 地址計數(shù)器AC清零。 顯示緩沖區(qū)DDRAM的內(nèi)容不變。,3輸入方式設置命令 格式:,功能:設定當寫入一個字節(jié)后,光標的

6、移動方向以及后面的內(nèi)容是否移動。 當I/D=1時,光標從左向右移動;I/D=0時,光標從右向左移動。 當S=1時,內(nèi)容移動,S=0時,內(nèi)容不移動。,4顯示開關控制命令 格式:,功能:控制顯示的開關,當D=1時顯示,D=0時不顯示。 控制光標開關,當C=1時光標顯示,C=0時光標不顯示。 控制字符是否閃爍,當B=1時字符閃爍,B=0時字符不閃爍。,5光標移位置命令 格式:,功能:移動光標或整個顯示字幕移位。 當S/C=1時整個顯示字幕移位,當S/C=0時只光標移位。 當R/L=1時光標右移,R/L=0時光標左移。,6功能設置命令 格式:,功能:設置數(shù)據(jù)位數(shù),當DL=1時數(shù)據(jù)位為8位,DL=0時數(shù)

7、據(jù)位為4位。 設置顯示行數(shù),當N=1時雙行顯示,N=0時單行顯示。 設置字形大小,當F=1時510點陣,F(xiàn)=0時為57點陣。,7設置字庫CGRAM地址命令,格式:,功能:設置用戶自定義CGRAM的地址,對用戶自定義CGRAM訪問時,要先設定CGRAM的地址,地址范疇063。,8顯示緩沖區(qū)DDRAM地址設置命令,格式:,功能:設置當前顯示緩沖區(qū)DDRAM的地址,對DDRAM訪問時,要先設定DDRAM的地址,地址范疇0127。,9讀忙標志及地址計數(shù)器AC命令,格式:,功能:讀忙標志及地址計數(shù)器AC, 當BF=1時則表示忙,這時不能接收命令和數(shù)據(jù);BF=0時表示不忙。 低7位為讀出的AC的地址,值為

8、0127。,10寫DDRAM或CGRAM命令 格式:,功能:向DDRAM或CGRAM當前位置中寫入數(shù)據(jù)。對DDRAM或CGRAM寫入數(shù)據(jù)之前須設定DDRAM或CGRAM的地址。,11讀DDRAM或CGRAM命令 格式:,功能:從DDRAM或CGRAM當前位置中讀郵數(shù)據(jù)。當DDRAM或CGRAM讀出數(shù)據(jù)時,先須設定DDRAM或CGRAM的地址。,四LCD顯示器的初始化 LCD使用之前須對它進行初始化,初始化可通過復位完成,也可在復位后完成,初始化過程如下: 1清屏。 2功能設置。 3開/關顯示設置。 4輸入方式設置。,9、12 LCD顯示器與單片機的接口與應用,下圖是LCD顯示器與8051單片機

9、的接口圖,圖中RT-1602C的數(shù)據(jù)線與8051的P1口相連,RS與8051的P2.0相連,R/ W與8051的P2.1相連,E端與8051的P2.7相連。編程在LCD顯示器的第一行、第一列開始顯示“GOOD”,第二行、第6列開始顯示“BYE”。,匯編語言程序: RS BIT P2.0 RW BIT P2.1 E BIT P2.7 ORG 00H AJMP START ORG 50H ;主程序 START:MOV SP,#50H ACALL INIT MOV A,#10000000B ;寫入顯示緩沖區(qū)起始地址為第1行第1列。 ACALL WC51R MOV A,“G” ;第1行第1列顯示字母“

10、G”。 ACALL WC51DDR MOV A,“O” ;第1行第2列顯示字母“O”。 ACALL WC51DDR MOV A,“O” ;第1行第3列顯示字母“O”。 ACALL WC51DDR MOV A,“D” ;第1行第4列顯示字母“D”。 ACALL WC51DDR,MOV A,#11000101B ;寫入顯示緩沖區(qū)起始地址為第2行第6列。 ACALL WC51R MOV A,“B” ;第2行第6列顯示字母“B”。 ACALL WC51DDR MOV A,“Y” ;第2行第7列顯示字母“Y”。 ACALL WC51DDR MOV A,“E” ;第2行第8列顯示字母“E”。 ACALL

11、WC51DDR LOOP:AJMP LOOP ;初始化子程序 INIT:MOV A,#00000001H ;清屏 ACALL WC51R MOV A,#00111000B ;使用8位數(shù)據(jù),顯示兩行,使用5*7的字型。 LCALL WC51R MOV A,#00001110B ;顯示器開,光標開,字符不閃爍。 LCALL WC51R MOV A,#00000110B ;字符不動,光標自動右移一格。 LCALL WC51R RET,;檢查忙子程序 F_BUSY:PUSH ACC ;保護現(xiàn)場 PUSH DPH PUSH DPL PUSH PSW WAIT:CLR RS SETB RW CLR E S

12、ETB E MOV A,P1 CLR E JB ACC.7,WAIT ;忙,等待 POP PSW ;不忙,恢復現(xiàn)場 POP DPL POP DPH POP ACC ACALL DELAY RET,;寫入命令子程序。 WC51R:ACALL F_BUSY CLR E CLR RS CLR RW SETB E MOV P1,ACC CLR E ACALL DELAY RET ;寫入數(shù)據(jù)子程序。 WC51DDR:ACALL F_BUSY CLR E SETB RS CLR RW SETB E MOV P1,ACC CLR E ACALL DELAY RET,;延時子程序。 DELAY:MOV R6,

13、#5 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END,C語言編程: #include #define uchar unsigned char sbit RS=P20; sbit RW=P21; sbit E=P27; void delay(void); void init(void); void wc5r(uchar i); void wc51ddr(uchar i); void fbusy(void); /主函數(shù) void main() SP=0 x50; init(); wc51r(0 x80); /寫入顯示緩沖區(qū)起始地址為第1行第1列 wc51dd

14、r(0 x44); /第1行第1列顯示字母“G” wc51ddr(0 x4f); /第1行第2列顯示字母“O” wc51ddr(0 x4f); /第1行第3列顯示字母“O” wc51ddr(0 x47); /第1行第4列顯示字母“D”,wc51r(0 xc5); /寫入顯示緩沖區(qū)起始地址為第2行第6列 wc51ddr(0 x42); /第2行第6列顯示字母“B” wc51ddr(0 x59); /第2行第7列顯示字母“Y” wc51ddr(0 x45); /第2行第8列顯示字母“E” while(1); /初始化函數(shù) void init() wc51r(0 x01); /清屏 wc51r(0

15、x38); /使用8位數(shù)據(jù),顯示兩行,使用5*7的字型 wc51r(0 x0e); /顯示器開,光標開,字符不閃爍 wc51r(0 x06); /字符不動,光標自動右移一格 ,/檢查忙函數(shù) void fbusy() RS=0;RW=1; E=1;E=0; while (P1調(diào)A/D轉換子程序 SJMP $ DC: CLR SCLK ;A/D轉換子程序 CLR CS SETB SHDN ;使SHDN腳為高電平,MAX1241處于工作模式,HERE: JNB DOUT,HERE SETBSCLK ACALL QUS MOV 0BH,C ACALL QUS MOV 0AH,C ACALL QUS M

16、OV 09H,C ACALL QUS MOV 08H,C ACALLQUS MOV 07H,C ACALL QUS MOV 06H,C ACALL QUS MOV 05H,C ACALL QUS MOV 04H,C,ACALL QUS MOV 03H,C ACALL QUS MOV 02H,C ACALL QUS MOV 01H,C ACALL QUS MOV 00H,C SETB CS CLR SHDN ;使SHDN腳為低電平,MAX1241工作于關斷模式 RET QUS: CLR SCLK NOP SETB SCLK MOV C,DOUT RET END,C語言程序 /*/ /* 功能:本

17、程序主要是讀入MAX1241芯片的12位A/D轉換值放在變量temp1中 /* 編碼變換后所得值在變量volt中*/ /*/ #include #include #define uchar unsigned char #define uint unsigned int sbitSHDN=P10; sbitDOUT=P11; sbitCS=P12; sbitSCLK=P13; uintbdatatemp; sbittemp00=temp0; uinttemp1; float idata volt; void delay1(uint x); uint adc( );,void main() /主程

18、序 SP=0 xcf; delay1(1000); EA=0; temp1=adc(); /讀出MAX1241芯片的A/D轉換值放入變量temp1中 volt=(temp1/4096.0)*5.0;/編碼轉換成電壓值 while(1); void delay1(uint x) /延時程序 uint j; uchar i; for (j=0;jx;j+) for (i=0;i125;i+); ,uint adc( ) /讀A/D轉換值函數(shù), 返回A/D轉換的12位編碼 uchar i; temp=0; SCLK=0;CS=0;SHDN=1; while(!DOUT); for (i=0;i13;i+) temp=temp1; SCLK=0;_nop_();SCLK=1; temp00=DOUT; CS=1;SHDN=0; return(temp); ,9.5.2 MCS-51單片機與串行D/A芯片MAX517的接口,MAX517是美國MAXIM公司生產(chǎn)的8位電壓輸出型串行D/A芯片。它采用I2C總線接口,允許多個設備之間進行通信。,1MAX517的主要特點 (1)采用單一5V電源供電。 (2)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論