历史上的今天
今天是:2024年12月16日(星期一)
2021年12月16日 | 51单片机驱动 LCD1602液晶显示系统
2021-12-16 来源:eefocus
废话不多说先上实物图
LCD1602+51单片机最小系统应用仿真及制作


好了,接下来正式进入制作环节:
第一步:仿真
绘制好原理图,仿真时单片机最小系统只放一个单片机就可以了,但实际电路中需要加上电源模块、复位模块。如下图:

原理图文件请在附件中找。
原理图绘制好后,编写代码并生成hex文件。参考代码如下:
/*功能/
/使用外部中断INTO改变LED状态,并且用1602显示出其状态/
#include #include #define uint unsigned int #define uchar unsigned char uchar code table[]=" HELLO 1602 "; uchar code table0[]="1602 TEST "; uchar code table1[]="RESULT: "; //空格是写到LCD了,即空格也是内容 uchar code table2[]=“OK!”; uchar code table3[]=“liang”; uchar code table4[]=“mie”; uchar num; sbit led=P1^7; sbit lcden=P2^0; //液晶使能端 sbit lcdrs=P2^2; //液晶数据命令选择端选择写数据还是写命令 void delay(uint z) // 延时函数 { uint i,j; for(i=z;i>0;i–) for(j=110;j>0;j–); } void write_com(uchar com) //写入 { lcdrs=0; //LCD 选择输入命令 P0=com; //向P0 口输入命令 39-32端口 delay(5); //延时 lcden=1; //打开LCD 使能 delay(5); //一个高脉冲 lcden=0; //关闭LCD 使能 } void write_data(uchar date) { lcdrs=1; //设置为输入数据 P0=date; //将数据赋给P0 口 delay(5); //延时 lcden=1; //置高 delay(5); //高脉冲 lcden=0; //置低完成高脉冲 } void init() //LED 初始化 { lcden=0; write_com(0x38);//设置16x2 显示5x7 点阵,8 位数据接口 write_com(0x0c); //设置开始显示不显示光标 (指令4) write_com(0x06); //写一个字符后地址指针加1 (指令3) write_com(0x01); //显示清零数据指针清零 (指令1) } void display(unsigned char *p)//按指针 地址写入数据 { while(*p!=’ ’) { write_data(*p); //写数据 p++; delay(1); } } void main() { TCON=0x01; //设置中断为INTO IE=0x81; led=0; init(); write_com(0x80); //将数据指针第一行第一个字处, display(table); //调用函数的方式写入数据 delay(800); write_com(0x80); //将数据指针第一行第一个字处, display(table0); //调用函数的方式写入数据 write_com(0x80+0x40); //定义指针位置 将数据指针第二行第一个字处 for(num=0;num<7;num++) { write_data(table1[num]); delay(5); } write_com(0x80+0x4c); //按1602的地址单个写入数据 write_data(table2[0]); write_com(0x80+0x4d); //按1602的地址单个写入数据 write_data(table2[1]); write_com(0x80+0x4e); //按1602的地址单个写入数据 write_data(table2[2]); while(1); } void key_can() interrupt 0 { delay(20); // 消除按键抖动 if(P3^30) { if(P3^30) { led=!led; } if(led1) { write_com(0x80+0x4b); display(table3); } else if(led0) { write_com(0x80+0x4b); //按1602的地址单个写入数据 display(table4); write_com(0x80+0x4f); write_data(table1[8]); //按1602的地址单个写入数据 write_com(0x80+0x4e); write_data(table1[8]); } } } 原理图和代码都有了,仿真的准备工作就完了,现在正式进入仿真。 将代码加载进单片机中,仿真结果如下图: 元器件清单 原件布局及效果图如下: 最后按照要求全部焊接好,上电烧程序测试就可以了。 



史海拾趣
|
uP51S是专门针对单片机爱好者而开发的一款多功能单片机学习设备,它将单片机编程器、仿真器、串行下载线以及实验板完美地集成在了一起,是初学者必备的一款上手的好东东。 本学习板新增了视频教学软件,详细的介绍了Keil C51 Uv2软件的安装和使用 ...… 查看全部问答> |
|
试用报告(一) 拿到开发板了, 把试用心得,体会和大家分享一下. 先上张板子的酷图 <验证平台> 硬件的东西验完了,下面对板子进行测试, 简单看了一下U盘中带的资料 其中 \\Driver_and_Tools : 主要是USB转 ...… 查看全部问答> |
|
请教: 电机的一个轴插在理合器里 转盘的一个也轴插在理合器里 电机转动 通过离合器带动转盘转动 离合器可以调速(相当于调力的大小 M=F*V) 离合器只有 2 根线, 单片机(AT89C52)来控制它? 是通过什么来控制呢? 这 2 根线,是不是分别是电 ...… 查看全部问答> |
|
【国际知名企业高薪诚聘-hardware PE】-猎头职位-可msn联系:alice007@live.cn 国际知名企业招聘硬件工程师 主要负责处理thinkpad电脑的问题 分析和设计解决方案。 定期与日本的开发团队和中国的厂商去解决未解决的问题。 要求有pc构架的基本知识,高级电气工程师,熟悉电子测试设备,熟悉操作系统和操作系统的调试工具 非 ...… 查看全部问答> |
|
求 ps2鼠标和cpu的连线图! 小弟过2天就要交毕业设计了,老师非得让我加个图.我的论文题目是基于嵌入式的PS/2鼠标接口设计. 拜托各位大哥大姐帮我下. 小弟不胜感激!在线等图. 把图发上来就行了 再次感谢!… 查看全部问答> |
|
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。在现在日益信息化的社会中,嵌入式系统已经全面渗透到日常生活的每一个角落,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子 ...… 查看全部问答> |
|
最近论坛团购密集啊! 实惠!! 话说MSP-EXP430FR5739这个板上有三轴加速计,而且是铁电MCU高级啊!前段时间想搞四轴飞行器,可没玩过三轴加速计,这次团购这个板,刚好可以用来了解一下三轴加速计! 再者也可以了解一下铁电MCU 优势 ...… 查看全部问答> |
|
刚开始用STM8,COSMIC还是菜鸟一个。有2个警告方面的问题请教大家(我在帮助里居然没查到说明)。谢谢。 工程编译模式为short stack(+mods0) 1. 下面这句都警告:“value out of range” PC_ODR &= (~0x04); 我估计cosmic是不是 ...… 查看全部问答> |




