找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2406|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机1602LCD时钟,请求大神帮忙看看为什么不能读数据

[复制链接]
跳转到指定楼层
楼主
//LCD源程序//
#include<reg51.h>
#include<lcd1602.h>
#define uchar unsigned char
#define uint unsigned int
uchar int_time;//定义中断次数计数变量
uchar second;//秒计数变量
uchar minute;//分计数变量
uchar hour;//时计数变量
uchar code date[]="  H.I.T CHINA  ";
uchar code time[]=" TIME 23:59:55";
void clock_init() //对lcd放入初始数据
{
uchar i,j;
for(i=0;i<16;i++)
{
write_data(date[i]);
}
write_com(0x80+0x40);
for(j=0;j<16;j++)
{
write_data(time[j]);
}
}
void clock_write(uint s,uint m,uint h)//对lcd时间进行刷新
{
write_sfm(0x47,h);
write_sfm(0x4a,m);
write_sfm(0x4d,s);
}
void main()
{
init1602();   //lcd初始化
clock_init(); //放入初始数据
TMOD=0x01;    //方式1
EA=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
int_time=0;  //中断次数计数变量
second=55;  //秒
minute=59;    //分
hour=23;  //时
while(1)
{
clock_write(second,minute,hour);
}
}
void int0() interrupt 1 using 1   //中断系统
{
int_time++;;
if(int_time==20)
{
int_time=0;
second++;
}
if(second==60)
{
second=0;
minute++;
}
if(minute==60)
{
minute=0;
hour++;
}
if(hour==24)
{
hour=0;
}
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
}


//LCD头文件//
#ifndef LCD_CHAR_1602_2005_4_9
#define LCD_CHAR_1602_2005_4_9
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)  //写命令函数
{
lcdrw=0;
lcdrs=0;
P3=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)  //写数据函数
{
lcdrw=0;
lcdrs=1;
P3=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init1602()    //lcd初始化
{
lcdrw=0;
lcden=0;
write_com(0x3c);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void write_sfm(uchar *pp,uint n)
{
int i;
for(i=0;i<n;i++)
{
write_data(pp[i]);
}
}
#endif

谢谢大神们
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111634 发表于 2018-2-10 22:47 | 只看该作者
本帖最后由 zl2168 于 2018-2-10 22:48 编辑

实例91  具有校正功能的时钟1302(LCD1602显示)
先Proteus仿真,确认有效。
实例91 带校正时钟1302(LCD1602显示).rar (52.68 KB, 下载次数: 51)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1,书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表