單片機LCD1602閃動顯示字符以及protues仿真_第1頁
單片機LCD1602閃動顯示字符以及protues仿真_第2頁
單片機LCD1602閃動顯示字符以及protues仿真_第3頁
單片機LCD1602閃動顯示字符以及protues仿真_第4頁
單片機LCD1602閃動顯示字符以及protues仿真_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、單片機LCD1602閃動顯示字符以及protues仿真 我的實驗二以下是我親自做的protues仿真,代碼絕對正確,仿真結果完全正確。實物也可完美運行。在網上的代碼總有問題,總想把正確的分享給學弟學妹,哈哈。1. 原理圖原理圖放大版2.仿真圖結果3c語言代碼#include<reg52.h> /包含單片機存放器的頭文件#include<intrins.h> /包含_nop_()函數定義的頭文件sbit RS=P20; /存放器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號位,將E位定

2、義為P2.2引腳sbit BF=P07; /忙碌標志位,將BF位定義為P0.7引腳unsigned char code string = "WWW.RICHMCU.COM" unsigned char code string1 ="QUICK STUDY MCU" /*函數功能:延時1ms*/void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+) ; /*函數功能:延時假設干毫秒入口參數:n*/ void delay(unsigned char n) unsig

3、ned char i;for(i=0;i<n;i+) delay1ms(); /*函數功能:判斷液晶模塊的忙碌狀態返回值:result。result=1,忙碌;result=0,不忙*/ unsigned char BusyTest(void) bit result;RS=0; /根據規定,RS為低電平,RW為高電平時,可以讀狀態 RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反響時間 result=BF; /將忙碌標志電平賦給resultE=0; return result; /

4、*函數功能:將模式設置指令或顯示地址寫入液晶模塊入口參數:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根據規定,RS和R/W同時為低電平時,可以寫入指令 RW=0; E=0; /E置低電平(根據表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發生正跳變,所以應先置"0" _nop_(); _nop_(); /空操作兩個機器周期,給硬件反響時間 P0=dictate; /將數據送入P0口,即寫入指令或地址 _nop_(); _nop_

5、(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反響時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反響時間 E=0; /當E由高電平跳變成低電平時,液晶模塊開始執行命令 /*函數功能:指定字符顯示的實際地址入口參數:x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /顯示位置確實定方法規定為"80H+地址碼x" /*函數功能:將數據(字符的標準ASCII碼)寫入液晶模塊入口參數:y(為字符

6、常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS為高電平,RW為低電平時,可以寫入數據 RW=0; E=0; /E置低電平(根據表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發生正跳變,所以應先置"0" P0=y; /將數據送入P0口,即將數據寫入液晶模塊 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反響時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期

7、,給硬件反響時間 E=0; /當E由高電平跳變成低電平時,液晶模塊開始執行命令 /*函數功能:對LCD的顯示模式進行初始化設置*/void LcdInitiate(void) delay(15); /延時15ms,首次寫指令時應給LCD一段較長的反響時間 WriteInstruction(0x38); /顯示模式設置:16×2顯示,5×7點陣,8位數據接口delay(5); /延時5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction(0x0F); /顯示模式設置

8、:顯示開,有光標,光標閃爍delay(5);WriteInstruction(0x06); /顯示模式設置:光標右移,字符不移delay(5);WriteInstruction(0x01); /清屏幕指令,將以前的顯示內容去除delay(5); void main(void) /主函數 unsigned char i; LcdInitiate(); /調用LCD初始化函數 delay(10); while(1) WriteInstruction(0x01);/清顯示:清屏幕指令 WriteAddress(0x00); / 設置顯示位置為第一行的第1個字 i = 0;while(stringi != '0') /'0'是數組結束標志 / 顯示字符WWW.RICHMCU.COMWriteData(stringi);i+;delay(400); WriteAddress(0x40); / 設置顯示位置為第二行的第1個字 i = 0;while(stringi !=

溫馨提示

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

評論

0/150

提交評論