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