标题:
单片机使用1062lcd设置的电子时钟源代码
[打印本页]
作者:
来了666
时间:
2018-11-22 20:43
标题:
单片机使用1062lcd设置的电子时钟源代码
单片机使用1062lcd设置的电子时钟。
第一行显示字符
第二行显示时间
适用于初学者和一些学生。
在文件里面有源文件C文件以及hex烧录程序。
大家可以看一看。
单片机源程序如下:
#include<reg51.h>
#include<string.h> //strcat():合并字符串
#define uchar unsigned char
#define uint unsigned int
#define GPIO_KEY P1
sbit E=P2^7; //1602使能引脚
sbit RW=P2^5; //1602读写引脚
sbit RS=P2^6; //1602数据/命令选择引脚
uchar table1[]="zhangwenhua2017210484"; //The time is
//注意修改后的长度
uchar str1[2]="12"; //second
uchar str2[2]="12"; //minute
uchar str3[2]="07"; //hour
uint KEY_VALUE;
uint second,minute,hour; //时钟显示数值
uint tag; //中断计时指标
void intTostring(uint num,uchar temp[2]);
void clock() //时钟进制函数
{
if(second == 60){minute++;second=0;}
if(minute == 60){hour++;minute=0;}
if(hour == 24){hour=0;}
//数字->字符串的转换
intTostring(second,str1);
intTostring(minute,str2);
intTostring(hour,str3);
// time 已经存储了时间
}
void delayms(uint del) //延时1ms
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=110;j++);
}
void writecmd(uchar com) //写指令
{
E=0;
RS=0;
RW=0;
P0=com;
delayms(2);
E=1;
delayms(2);
E=0;
}
void writedata(uchar dat)//写数据
{
E=0;
RS=1;
RW=0;
P0=dat;
delayms(2);
E=1;
delayms(2);
E=0;
}
void init(void) //初始化
{
delayms(15);
writecmd(0x38);
delayms(5);
writecmd(0x38);
delayms(5);
writecmd(0x38);
writecmd(0x38);
writecmd(0x08);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
void intTostring(uint num,uchar temp[2])// 一定要注意这里的字符串长度。
{
uint ge,shi;
shi = num/10;
ge = num%10;
temp[0] = shi+48;//利用ASCLL编码转换
temp[1] = ge+48;
}
void display()
{
uchar j;
uchar i;
writecmd(0x80); //告诉液晶在哪个地方显示 (设置地址指针)//80H+00
for(j=0;j<11;j++) //有11个字符,要循环11次
{
writedata(table1[j]); //The time is
delayms(5);
}
writecmd(0x80+0x40); //再设置第二行的起始位置
//时钟显示
for(i=0;i<2;i++)writedata(str3[i]);
writedata(':');
for(i=0;i<2;i++)writedata(str2[i]);
writedata(':');
for(i=0;i<2;i++)writedata(str1[i]);
delayms(5);
//end
}
void main()
{
TMOD = 0x02; //设置T0为自动重装初值的工作方式
TL0 = 0x06;// 12Mhz晶振 --> 1us,此处取250us作为一次中断所用时间, 那么4000次中断就算一秒。
TH0 = 0x06;// 自动重装初值,不影响精度
EA = 1;
ET0 = 1;
TR0 = 1;
init();
while(1){
display();
clock();
}
}
//利用定时器0计时
void T0_time() interrupt 1
{
if(tag == 4000)
{
tag = 0;
second++;
}
tag++;
}
复制代码
所有资料51hei提供下载:
电子时钟.rar
(2.45 KB, 下载次数: 13)
2018-11-22 20:43 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1