protues软件仿真-LCD1602
生活随笔
收集整理的這篇文章主要介紹了
protues软件仿真-LCD1602
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2022.7.8
非常榮幸19年的關于proteus 軟件仿真的相關博文收到大家的關注,因本人能力有限,不能及時回復大家的評論區,現將19年本人所做過的關于51單片機的仿真文件和程序源文件開源給大家,如有問題歡迎大家討論。
開源的鏈接地址 51單片機 protues 的仿真程序源文件
proteus 軟件仿真之LCD1602
大二電子專業小白一名,平時閑來無事在學校老師實驗室自學,自學過程中發現一些有困擾到自己的地方,所以特來此記錄。一是當作自己學習筆記;二是有幸幫助到有和自己遇到相同問題的童鞋,也是一大善事。因個人水平能力有限,錯誤之處還請及時糾正。
仿真原理圖
以下為程序源代碼
#include "stdio.h" #include "reg52.h"#define uchar unsigned char #define uint unsigned int/* 端口定義 */ #define D P0 sbit E=P2^7; sbit RW=P2^5; sbit RS=P2^6;void delay_ms(uchar xms); /* 延時函數 */ void LcdWriteCom(uchar com); /* LCD1602寫入8位命令子函數 */ void LcdWriteData(uchar dat) ; /* LCD1602寫入8位數據子函數 */ void LcdInit(); /* LCD1602初始化子程序 */ void Show_string1(uchar a[]); /* 第一行從頭開始顯示 字符 "" 雙信號內直接加顯示內容即可 */ void Show_string2(uchar a[]); /* 第二行 "" 雙信號內直接加顯示內容即可 */ void show_string(uchar add,uchar a[]); /* 指定位置顯示字符串 注意 算好位置 0~27 40~67 地址值,"顯示字符串" */ void show_number(uchar add,uint a); /* show_number(0x加 要顯示的地址,變量或數字 */ void show_float(uchar add,float a); /* 顯示浮點數 */void main() {LcdInit(); /* LCD1602初始化函數 */Show_string1("LCD1602test"); /* LCD1602顯示->第一行 */while(1); }/* 延時函數 */ void delay_ms(uchar xms) {uchar i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--); }/* 向1602寫命令函數* 參數:com 命令* 返回值 : 無*/ void LcdWriteCom(uchar com) {E=0;RW=0;RS=0;D=com;delay_ms(5);E=1;delay_ms(5);E=0; } /* 向1602寫數據命令* 參數: dat 數據* 返回值: 無*/ void LcdWriteData(uchar dat) {E=0;RW=0;RS=1;D=dat;delay_ms(5);E=1;delay_ms(5);E=0; }/* LCD1602初始化函數*/ void LcdInit() {LcdWriteCom(0x38);LcdWriteCom(0x0c);LcdWriteCom(0x06);LcdWriteCom(0x01);LcdWriteCom(0x80); }/* 指定位置顯示字符串* 參數 add 地址 第一行 0~27* 第二行 40~67* a[] 字符串 "abc" */ void show_string(uchar add,uchar a[]) {uchar i;LcdWriteCom(0x80+add);for(i=0;a[i]!='\0';i++){LcdWriteData(a[i]);} }/* 第一行顯示字符串*/ void Show_string1(uchar a[]) {uchar i;LcdWriteCom(0x80);for(i=0;a[i]!='\0';i++){LcdWriteData(a[i]);} }/* 第二行顯示字符串*/ void Show_string2(uchar a[]) {uchar i;LcdWriteCom(0x80+0X40);for(i=0;a[i]!='\0';i++){LcdWriteData(a[i]);} }/* 任意位置顯示數字 */ void show_number(uchar add,uint a) {char s[10];sprintf(s,"%d",a); show_string(add,(uchar *)s); /* 格式轉換 */ }/* 任意位置顯示浮點數 */ void show_float(uchar add,float a) {char s[10];sprintf(s,"% .1f",a);/* 格式轉換 */show_string(add,(uchar *)s); }G.Z.W
2019年6月8日
總結
以上是生活随笔為你收集整理的protues软件仿真-LCD1602的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下tree命令详解
- 下一篇: 什么是I帧,P帧,B帧