51單片機LM016L液晶顯示Proteus仿真

2020-08-29 背影lmc

先上仿真圖,圖比較簡單,一個51單片機最小系統,加上一個LM016L液晶顯示器,需要注意的是,實際的LM016L晶片內部有上拉電阻,但是仿真中是沒有的,如果用P0口傳輸數據的話,需要給P0口接上拉電阻。

然後上代碼,有詳細的注釋,就不多解釋了。

include<intrins.h>//引腳定義sbit RS=P2^0;sbit RW=P2^1;sbit E=P2^2;sbit BF=P0^7;void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函數功能:延時若干毫秒入口參數: n***************************************************/void delaynms(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/********************函數功能:判斷液晶模塊是否忙碌入口參數:無返回值:result 1忙碌 0空閒**********************/bit BusyTest(void){bit result;RS=0;RW=1;//此時才可以讀狀態E=1;//此時才允許讀寫_nop_();_nop_();_nop_();_nop_();//四個空操作,給硬體反應時間result=BF;//將忙碌標值賦值給resultE=0;return result;}/*****************************************************函數功能:將模式設置指令或顯示地址寫入液晶模塊入口參數: dictate***************************************************/void WriteInstruction(unsigned char dictate){while(BusyTest()==1);RS=0;RW=0;E=0;_nop_();_nop_();P0=dictate;_nop_();_nop_();_nop_();_nop_(); // 空操作四個機器周期,給硬體反應時間E=1;_nop_();_nop_();_nop_();_nop_(); // 空操作四個機器周期,給硬體反應時間E=0;}/*****************************************************函數功能:指定字符顯示的實際地址入口參數: x***************************************************/void WriteAddress(unsigned char x){WriteInstruction(x|0x80); // 顯示位置的確定方法規定為 &34;}/*****************************************************函數功能:將數據 (字符的標準 ASCII 碼) 寫入液晶模塊入口參數: y( 為字符常量 )***************************************************/void WriteData(unsigned char y){while(BusyTest()==1);RS=1; //RS 為高電平, RW為低電平時,可以寫入數據RW=0;E=0; //E 置低電平 ( 根據表 8-6 ,寫指令時, E 為高脈衝,// 就是讓 E 從 0 到 1 發生正跳變,所以應先置 &34;P0=y; // 將數據送入 P0 口,即將數據寫入液晶模塊_nop_();_nop_();_nop_();_nop_(); // 空操作四個機器周期,給硬體反應時間E=1; //E 置高電平_nop_();_nop_();_nop_();_nop_(); // 空操作四個機器周期,給硬體反應時間E=0; // 當 E 由高電平跳變成低電平時,液晶模塊開始執行命令}/*****************************************************函數功能:對 LCD的顯示模式進行初始化設置***************************************************/void LcdInitiate(void){delaynms(15); // 延時 15ms,首次寫指令時應給 LCD一段較長的反應時間WriteInstruction(0x38); // 顯示模式設置: 16×2 顯示, 5×7 點陣, 8 位數據接口delaynms(5); // 延時 5ms ,給硬體一點反應時間WriteInstruction(0x38);delaynms(5); // 延時 5ms ,給硬體一點反應時間WriteInstruction(0x38); // 連續三次,確保初始化成功delaynms(5); // 延時 5ms ,給硬體一點反應時間WriteInstruction(0x0c); // 顯示模式設置:顯示開,無光標,光標不閃爍delaynms(5); // 延時 5ms ,給硬體一點反應時間WriteInstruction(0x06); // 顯示模式設置:光標右移,字符不移delaynms(5); // 延時 5ms ,給硬體一點反應時間WriteInstruction(0x01); // 清屏幕指令,將以前的顯示內容清除delaynms(5); // 延時 5ms ,給硬體一點反應時間}void main(void){LcdInitiate(); // 將液晶初始化WriteAddress(0x01); // 寫 Date 的顯示地址 , 將在第 1 行第 2 列開始顯示WriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCDWriteData(&39;); // 將字符常量寫入 LCD}

相關焦點

  • 基於proteus的51單片機開發實例30-模塊化程序設計
    基於proteus的51單片機開發實例30-模塊化程序設計1.1.設計思路本實例的設計思路是:將《基於proteus的51單片機開發實例29-單總線DS18B20的讀寫》中的程序代碼按照延時功能、LCD1602液晶顯示功能、DS18B20的讀寫控制功能這三個部分,使用模塊化程序設計的方法,將這三個部分分別封裝為三個.c和.h文件
  • 基於proteus的51單片機開發實例37-DAC0832
    基於proteus的51單片機開發實例37-DAC08321.1. 實驗目的之前我們學習了數模轉換晶片DAC0808,今天我們繼續學習另一種D/A轉換晶片DAC0832。設計思路圖1 DAC0832電路本例中使用51單片機控制D/A
  • Proteus軟體仿真與Keil的51單片機系統設計
    本文講述PROTEUS VSM單片機系統的PROTEUS設計與仿真功能,圖2為基於PROTEUS仿真軟體的單片機系統設計流程,它極大地簡化了設計工作,得到眾多設計師的青睞。圖1 傳統的單片機系統設計流程  圖2 基於Proteus的單片機系統設計流程  2 基於Proteus的單片機系統設計與仿真  Proteus支持51、PIC、AVR、ARM7等多個系列的單片機晶片
  • 學習電路仿真:基於proteus電路仿真軟體的步進電機仿真
    本文中,將基於proteus電路仿真軟體的步進電機仿真,一起來了解下吧。步進電機廣泛應用在生產實踐的各個領域。它最大的應用是在數控工具機的製造中,因為步進電機不需要A/D轉換,能夠直接將數字脈衝信號轉化成為角位移,所以被認為是理想的數控工具機的執行元件。
  • 介紹一個非常好用的單片機仿真軟體PROTEUS(帶下載連結)
    從事單片機教學多年,雖說不夠精通,但帶領學生入門單片機足夠了。說實話,一個從沒有接觸過計算機語言的初學者,因為沒有程序的概念,學習單片機是有一定難度的。但如果方法得當,則能再最短時間內入門,也會為之後的深入學習打好一個良好的基礎。以下我將從幾方面來總結入門單片機需要做的幾步。首先,選好設備。
  • 基於proteus的51單片機開發實例33-單片機的編程規範
    基於proteus的51單片機開發實例33-單片機程序的編程規範說明:本文中所說的編程規範只是我個人的一些想法和實踐,有些經驗可能並不能適合所有場合,當然也不可避免的有比較偏頗的看法,請大家多多批評指正。
  • 基於proteus的51單片機開發實例24-矩陣鍵盤(行列式鍵盤)
    基於proteus的51單片機開發實例24-矩陣鍵盤1.1.我們知道,51單片機總共只有4個8位I/O口,如果外部電路功能較多,I/O口就會不夠用,例如如果電路中接了一個8位數碼管,又接了16個按鍵,那麼即使數碼管採用動態掃描法 也需要佔用16個I/O口(8位I/O口用於連接數碼管8個段,另8位I/O口用於控制8位數碼管的每一位),這時如果按鍵還是採用獨立按鍵的接法
  • 基於Proteus仿真的AVR單片機串口程序
    以前在Proteus上做過51的串口仿真沒有成功,昨天再次嘗試atmega16的串口仿真居然成功了;當然仿真是最簡單的,實際做事的時候需要加上max232晶片,但仿真時就不需要了,本文引用地址:http://www.eepw.com.cn/article
  • LED分批漢字顯示屏的Proteus仿真設計
    Proteus是目前最先進、最完整的多種型號微處理器系統的仿真設計平臺,由ISIS和ARES兩個構成,其中ISIS是一款智能電路原理圖輸入系統軟體,可作為電子系統仿真平臺,ARES是一款高級布線編輯軟體,用於製作PCB印製電路板。
  • 單片機控制單只數碼管循環顯示0~F 用PROTEUS軟體仿真
    數碼管顯示是每一個單片機初學者都必須學的,而單片機驅動數碼管的數字循環顯示實驗,又是單片機基礎中的基礎,同時也是學好C語言編程的關鍵,現在供上代碼供大家學習研究,此程序經過一些改進,可以實現按鍵識別 數碼管動態掃描。同時也可以做各種有關顯示調試程序的二次開發等等。
  • 「Proteus」單片機H橋驅動24V直流有刷電機-電子芯吧客
    前言一般有關直流有刷電機的仿真都是直接高低電平驅動,或者ULN2003,這種電路是只能驅動小電壓小功率的電機的,如果碰到電壓稍高一些,電流大一些的電機,2003驅動是驅動不起來的,這時候對於大電流的電機,一般就是MOS管或者IGBT,相對來說,NMOS是經濟實用之選,本節就帶領大家使用單片機,搭建H橋驅動電路來驅動一個24V
  • Proteus和Keil軟體在單片機項目式教學中的應用
    同時,它具有電路互動仿真功能,通過動態外設模型,如鍵盤、LED/LCD等,可實時顯示系統輸入、輸出結果,以實現交互仿真,或配合Proteus配置的虛擬儀器如示波器、邏輯分析儀等,使單片機虛擬系統實現預期的實驗效果。 Keil軟體是美國Keil Software公司出品的兼容單片機C語言軟體的開發系統,是目前世界上最好的51單片機開發工具之一。
  • 有關Keil軟體仿真的51單片機串口調試技巧
    1 調試前的準備工作  下面介紹一種利用Keil的軟體仿真功能來實現51單片機串口調試用戶程序的方法。使用這種方法,無需任何硬體仿真器,甚至都不需要用戶電路板。所需的只是:  ① 硬體。1臺普通計算機(需要帶有2個標準串口)和1根串口線(兩頭都是母頭,連線關係如圖1所示)。
  • 基於51單片機的DS1307液晶顯示可調萬年曆項目設計
    我已經把這篇設計論文發到百度文庫裡了,不過在那裡下載需要5個財富值,所以為了回報朋友們,在日誌裡又重新整理的一便,這個程序涵蓋了51單片機幾乎所有的知識,學會這個項目可以說51單片機就拿下了。還有技術含量很高的I2C通訊技術,在這個程序裡都有涉及。
  • 如何使用通用單片機製作MIDI鍵盤
    單片機採用89c51或其他兼容單片機,包括89s51,89f51,8751,97c51等。上拉電阻排選10kΩ, MIDI接口插頭是15針的D型連接器,一般都標出了其引腳標號,按標號連接即可。給出的原理圖及印製版圖,都是完整的,可直接使用。
  • 51單片機-最小系統-流水燈-仿真
    打開APP 51單片機-最小系統-流水燈-仿真 Easadon 發表於 2020-05-26 16:00:42 現在開始學習單片機的仿真了,一般用的都是Proteus軟體 第一次使用,先畫了一個單片機最小系統練練手,加上流水燈代碼,做一個簡單的實驗, 在此把流程做一個簡單的介紹 1.建立工程之後,選擇相應的設備,所需要的設備如圖所示,大家自行添加
  • AVR的程式語言Arduino可用Proteus仿真調試
    ATMEGA168P控制器的AD轉換是10位的轉換器,5V對應的數字量為1024,2.5V應該是512,所以單片機一旦得知AD轉換後的數字量超過512時,把數字接口13的LED的變量ledpin為HIGH。下面是Arduino程序:
  • 單片機控制八隻數碼管滾動顯示1~8 附PROTEUS軟體仿真圖
    數碼管顯示是每一個單片機初學者都必須學的,而單片機驅動數碼管的數字循環顯示實驗,又是單片機基礎中的基礎,同時也是學好C語言編程的關鍵,此實驗在硬體上可以弄清楚單片機驅動原理和數碼管的顯示原理,在軟體上可以幫助建立編程思維和良好的編程習慣,同時加深C語言中 函數,變量和循環結構語句的學習
  • LCD1602液晶顯示DS1302實時時鐘Proteus仿真
    Proteus仿真圖:本文引用地址:http://www.eepw.com.cn/article/201611/316089.htm仿真程序:#include#include#include#defineuintunsignedint#defineucharunsignedchar
  • 單個數碼管顯示0-9
    一、實驗要求使用51單片機控制單個數碼管,使其循環顯示0-9.(LED字形顯示代碼)三、仿真圖1、proteus仿真圖四、程序voidmain(){uchar i=0;P0=0x00;while(1){P0=DSY_CODE[i];i=(i+1)%10;/*顯示