![单片机1602液晶显示(共10页)_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b1.gif)
![单片机1602液晶显示(共10页)_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b2.gif)
![单片机1602液晶显示(共10页)_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b3.gif)
![单片机1602液晶显示(共10页)_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b4.gif)
![单片机1602液晶显示(共10页)_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b/ea6ac145-361e-4b69-b937-f4f2b4aa2d1b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 基于单片机89C52的1602液晶显示2012年8月23日单片机1602液晶显示一、电路原理图如下图所示: 二、程序调试 源程序经Keil 软件测试无错误,生成hex文件后烧写进89C52单片机。#include<reg52.h> /包含头文件#define uint unsigned int /预定义 #define uchar unsigned char sbit rs=P05; /1602的数据/指令选择控制线 sbit rw=P06; /1602的读写控制线 sbit en=P07; /1602的使能控制线 uchar code table1=&
2、quot;Hello!" /要显示的内容1放入数组tablel uchar code table2="Nice to meet you"/要显示的内容2放入数组table2 void delay(uint n) /延时函数 uint x,y; for(x=n;x>0;x-) for(y=110;y>0;y-); void lcd_wcom(uchar com) /1602写命令函数 rs=0; /选择指令寄存器 rw=0; /选择写 P2=com; /把命令字送入P2 delay(5); /延时一小会儿,让1602准备接收数据 en=1; /使能线电平
3、变化,命令送入1602的8位数据口 en=0; void lcd_wdat(uchar dat) /1602写数据函数 rs=1; /选择数据寄存器 rw=0; /选择写 P2=dat; /把要显示的数据送入P2 delay(5); /延时一小会儿,让1602准备接收数据 en=1; /使能线电平变化,数据送入1602的8位数据口 en=0; void lcd_init() /1602初始化函数 lcd_wcom(0x38); /8位数据口,5*7字形 lcd_wcom(0x0c); /开显示屏,关光标,光标不闪烁 lcd_wcom(0x06); /写一个数据后,光标右移,屏幕文字不动 lcd
4、_wcom(0x01); /清屏 void main() /主函数 uchar n,m=0; lcd_init(); /液晶初始化 lcd_wcom(0x86);/显示地址设为86H(即06H,)第一行第6位 for(m=0;m<6;m+) /将table1中的数据依次写入1602显示 lcd_wdat(table1m); delay(200); lcd_wcom(0x0f); /开显示屏,有光标,光标不闪烁 lcd_wcom(0x80+0x40); /设定显示地址为0xc0,第二行第1位 for(n=0;n<16;n+) /将table2中的数据依次写入1602 lcd_wdat
5、(table2n); delay(200); while(1); /动态停机 三、方案改进增加了四个按键,s4实现功能切换。1、输出信息;2、实现数字时钟;源程序如下:#include<reg52.h> /包含头文件#define uint unsigned int /预定义 #define uchar unsigned char sbit rs=P05; /1602的数据/指令选择控制线 sbit rw=P06; /1602的读写控制线 sbit en=P07; /1602的使能控制线 sbit s1=P30; /按键定义sbit s2=P31;sbit s3=P32;sbit
6、s4=P33;sbit rd=P37;uchar count,s1num;char miao,shi,fen;uchar code table1=" Hello!" /要显示的内容1放入数组tablel uchar code table2="Nice to meet you"uchar code table3="2011-8-1 MON"uchar code table4=" 00:00:00"void delay(uint n) /延时函数 uint x,y; for(x=n;x>0;x-) for(y=1
7、10;y>0;y-); void lcd_wcom(uchar com) /1602写命令函数 rs=0; /选择指令寄存器 rw=0; /选择写 P2=com; /把命令字送入P2 delay(5); /延时一小会儿,让1602准备接收数据 en=1; /使能线电平变化,命令送入1602的8位数据口 en=0; void lcd_wdat(uchar dat) /1602写数据函数 rs=1; /选择数据寄存器 rw=0; /选择写 P2=dat; /把要显示的数据送入P2 delay(5); /延时一小会儿,让1602准备接收数据 en=1; /使能线电平变化,数据送入1602的8位
8、数据口 en=0; void lcd_init() /1602初始化函数 lcd_wcom(0x38); /8位数据口,5*7字形 lcd_wcom(0x0c); /开显示屏,关光标,光标不闪烁 lcd_wcom(0x06); /写一个数据后,光标右移,屏幕文字不动 lcd_wcom(0x01); /清屏 void lcd_init1() uchar num; en=0; lcd_wcom(0x38); lcd_wcom(0x0c); lcd_wcom(0x06); lcd_wcom(0x01); lcd_wcom(0x80); /第一行第一位地址 for(num=0;num<12;nu
9、m+) lcd_wdat(table3num); delay(5); lcd_wcom(0x08+0x40);/第二行第一位地址 for(num=0;num<12;num+) lcd_wdat(table4num); delay(5); TMOD=0x01; /定时器0,工作方式1 TH0=0x3c; /定时器赋初值,定时时间设为50ms,计数20次得1s TL0=0xb0; EA=1; /允许中断,开定时器0 ET0=1; TR0=1; void write_sfm(uchar add,uchar date) uchar shi,ge; /向时分秒各位写入数字 shi=date/10;
10、 ge=date%10; lcd_wcom(0x08+0x40+add); lcd_wdat(0x30+shi); lcd_wdat(0x30+ge);void keyscan() rd=0; if(s1=0) delay(5); /延时,清抖 if(s1=0) s1num+; while(!s1); if(s1num=1) TR0=0; /关定时器0 lcd_wcom(0x08+0x40+11); /按s1一次选中秒位 lcd_wcom(0x0f); /开显示屏,有光标,光标不闪 if(s1num=2) lcd_wcom(0x08+0x40+8); /按s1两次选中分位 if(s1num=3
11、) lcd_wcom(0x08+0x40+5); /按s1三次选中时位 if(s1num=4) s1num=0; /按s1四次撤销选中 lcd_wcom(0x0c); /开显示屏,关光标,光标不闪 TR0=1; /开定时器0 if(s1num!=0) /调节时、分、秒各位数值 if(s2=0) /s2键实现各位数字加一操作 delay(5); if(s2=0) while(!s2); if(s1num=1) miao+; if(miao=60) miao=0; write_sfm(11,miao); lcd_wcom(0x08+0x40+11); if(s1num=2) fen+; if(fe
12、n=60) fen=0; write_sfm(8,fen); lcd_wcom(0x08+0x40+8); if(s1num=3) shi+; if(shi=24) shi=0; write_sfm(5,shi); lcd_wcom(0x08+0x40+5); if(s3=0) /s3键实现各位数字减一操作 delay(5); if(s3=0) while(!s3); if(s1num=1) miao-; if(miao=-1) miao=59; write_sfm(11,miao); lcd_wcom(0x08+0x40+11); if(s1num=2) fen-; if(fen=-1) f
13、en=59; write_sfm(8,fen); lcd_wcom(0x08+0x40+8); if(s1num=3) shi-; if(shi=-1) shi=23; write_sfm(5,shi); lcd_wcom(0x08+0x40+5); void clock() lcd_init1(); while(1) keyscan(); void main() /主函数 uchar n,m=0; lcd_init(); /液晶初始化 lcd_wcom(0x86); /显示地址设为86H(即06H,)第一行第6位 for(m=0;m<10;m+) /将table1中的数据依次写入1602显示 lcd_wdat(table1m); delay(200); lcd_wcom(0x0f); /开显示屏,有光标,光标不闪烁 lcd_wcom(0x80+0x40); /重新设定显示地址为0xc0,即第二行第1位 for(n=0;n<16;n+) /将table2中的数据依次写入1602显示 lcd_wdat(table2n); delay(200); while(1); /动态停机 if(s4=0) delay(5); if(s4=0) clock(); /功能切换 w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62561-5:2023 EN-FR Lightning protection system components (LPSC) - Part 5: Requirements for earth electrode inspection housings and earth electrode seals
- 【正版授权】 IEC 62546:2009 EN-FR High definition (HD) recording link guidelines
- 合同协议机床买卖合同(2024版)
- 2024节能降碳你我同行丨节能倡议书
- 合规审计与审计整改工作计划三篇
- 机械设备采购招标合同
- 医院绩效考核与激励计划三篇
- 2023年稀有稀土金属压延加工材项目评估分析报告
- 呼吸内科护理工作下半年总结
- 用工合同模板示范
- 苏科版八年级物理上册课件【全册】
- 特种设备作业人员体检表(叉车)
- 2023电动汽车充换电服务信息交换合订本
- 北京市东城区2020-2021学年七年级下学期期末英语试题
- 脑卒中随访表
- 2023届高考文言文实词汇总
- 两市商务局合作协议书
- 2023届南充市重点中学数学八下期末考试试题含解析
- 鸡蛋壳中钙含量的测定 思考题
- 智能电能表认知
- 中国武术介绍 -完整课件PPT
评论
0/150
提交评论