實例40-16×2字符型液晶顯示實例_第1頁
實例40-16×2字符型液晶顯示實例_第2頁
實例40-16×2字符型液晶顯示實例_第3頁
實例40-16×2字符型液晶顯示實例_第4頁
實例40-16×2字符型液晶顯示實例_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、【實例40】16×2字符型液晶顯示實例/*文件名稱: 1602_test.C功能 :SMC1602A的C51驅動程序說明 :在 SMC1602A上顯示字符*/#include <reg51.h>#include<intrins.h>/變量類型標識的宏定義#defineUchar unsigned char#define Uint unsigned int/ 控制引腳定義sbitRS= P20; /數據/命令選擇,高電平表示傳送的是數據,低電平則表示是命令sbitRW= P21; / 讀寫選擇,高電平表示從1602讀數據,低電平則表示寫數據到1602sbitEl

2、cm= P26; /使能信號#define Data P0/定義數據端口#define By0x80code char emp="For an example"void Delay400Ms(void);void Delay5Ms(void);void WaitEnable( void );void WriteLcdData( char dataW );void WriteLcdCommand( Uchar CMD,Uchar AttribC );void LcdReset( void );void Display( Uchar dd );void DispOneChar(

3、Uchar x,Uchar y,Uchar Wdata);void ePutstr(Uchar x,Uchar y, Uchar code *ptr);/主程序void main(void)Uchar temp;Delay400Ms();LcdReset();temp = 32;ePutstr(0,0,emp);/ 顯示一個預定字符串“For an example”Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();while(1)temp

4、 &= 0x7f;/ 只顯示ASCII字符if (temp<32)temp=32; / 屏蔽控制字符,不予顯示Display( temp+ );Delay400Ms();/*函數名稱: void ePutstr(Uchar x,Uchar y, Uchar code *ptr)功能 :在1602上在指定位置顯示指定的字符串說明 : 無入口參數:x為橫坐標,y為縱坐標,*ptr為指向顯示字符串的指針返回值 :無*/void ePutstr(Uchar x,Uchar y, Uchar code *ptr) Uchar i,l=0; while (ptrl>31)l+; for

5、 (i=0;i<l;i+) DispOneChar(x+,y,ptri); if ( x = 16 ) x = 0; y = 1; /*函數名稱: void Display( Uchar dd )功能 :在1602第一行顯示dd到dd+15說明 : 無入口參數:dd為要顯示的第一個數 返回值 :無*/void Display( Uchar dd ) Uchar i;for (i=0;i<16;i+) DispOneChar(i,1,dd+);dd &= 0x7f;if (dd<32) dd=32;/*函數名稱: void LocateXY( char posx,cha

6、r posy)功能 :在指定位置顯示光標定位說明 : 無入口參數:posx為光標的橫坐標,posy為光標的縱坐標 返回值 :無*/void LocateXY( char posx,char posy) Uchar temp;temp = posx & 0xf;posy &= 0x1;if ( posy )temp |= 0x40;temp |= 0x80;WriteLcdCommand(temp,0);/*函數名稱: void DispOneChar(Uchar x,Uchar y,Uchar Wdata)功能 :在指定位置顯示出一個字符說明 : 無入口參數:x為光標的橫坐標,

7、y為光標的縱坐標,Wdata為要顯示的字符 返回值 :無*/void DispOneChar(Uchar x,Uchar y,Uchar Wdata) LocateXY( x, y );/ 定位顯示地址WriteLcdData( Wdata );/ 寫字符/*函數名稱: void LcdReset( void ) 功能 :初始化液晶屏說明 : 無入口參數:無 返回值 :無*/void LcdReset( void ) WriteLcdCommand( 0x38, 0);/ 顯示模式設置(不檢測忙信號)Delay5Ms();WriteLcdCommand( 0x38, 0);/ 共三次Delay

8、5Ms();WriteLcdCommand( 0x38, 0);Delay5Ms();WriteLcdCommand( 0x38, 1);/ 顯示模式設置(以后均檢測忙信號) WriteLcdCommand( 0x08, 1);/ 顯示關閉 WriteLcdCommand( 0x01, 1);/ 顯示清屏WriteLcdCommand( 0x06, 1);/ 顯示光標移動設置WriteLcdCommand( 0x0c, 1);/ 顯示開及光標設置/*函數名稱: void WriteLcdCommand( Uchar CMD,Uchar AttribC )功能 :寫控制字符子程序說明 : E=1

9、 RS=0 RW=0入口參數:CMD為命令碼,AttribC為屬性 返回值 :無*/void WriteLcdCommand( Uchar CMD,Uchar AttribC )if (AttribC) WaitEnable(); / 檢測忙信號? RS = 0;RW = 0; _nop_();Data = CMD; / 送控制字子程序_nop_();Elcm = 1;_nop_();_nop_();Elcm = 0;/ 操作允許脈沖信號/*函數名稱: void WriteLcdData( char dataW )功能 :當前位置寫字符說明 : E =1 RS=1 RW=0入口參數:dataW

10、為要顯示的字符 返回值 :無*/void WriteLcdData( char dataW )WaitEnable();/ 檢測忙信號RS = 1; RW = 0; _nop_(); Data = dataW; _nop_();Elcm = 1; _nop_();_nop_(); Elcm = 0;/ 操作允許脈沖信號/*函數名稱: void WaitEnable( void )功能 :檢測LCD控制器狀態說明 :正常讀寫操作之前必須檢測LCD控制器狀態:CS=1 RS=0 RW=1DB7: 0 LCD控制器空閑; 1 LCD控制器忙入口參數:無 返回值 :無*/void WaitEnable( void )Data = 0xff;RS =0; RW = 1; _nop_();Elcm = 1; _nop_(); _nop_();while( Data &By ); /等待LCD空閑Elcm = 0; /*函數名稱: void Delay5Ms(void)功能 :短延時函數說明 :在單片機工作在12MH是大約延時5毫秒入口參數:無 返回值 :無*/void Delay5Ms(void)

溫馨提示

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

評論

0/150

提交評論