资源简介
基于51单片机1602显示 实时时钟 利用单片机内部定时器做时钟,带有按键控制,具有停止时间,加减时间显示的功能。闰年补偿
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^5;
sbit lcdrw=P2^6;
sbit lcden=P2^7;
sbit s1=P3^2;
sbit s2=P3^3;
sbit s3=P3^4;
uchar code table[]={“2012 00 00“};
uchar code table1[]={“00:00:00“};
uchar numflags1num;
int miaofenshiriyuenian;
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
{
for(y=147;y>0;y--);
}
}
void write_control(uchar con)//写控制字
{
P0=con;
lcdrs=0;//rs=0控制
lcdrw=0;
lcden=0;
delay(5);
lcden=1;
delay(5);
}
void write_data(uchar dt)//写数据
{
P0=dt;
lcdrs=1;//rs=1数据
lcdrw=0;
lcden=0;
delay(5);
lcden=1;
delay(5);
}
void init()//初始化 屏幕显示 定时器初值
{
nian=2012;
write_control(0x01);//控制初始 1602
write_control(0x38);
write_control(0x0c);
write_control(0x06);
write_control(0xd0);
write_control(0x80);//初始化显示内容 2012 3 28
for(num=0;num<10;num++)
write_data(table[num]);
write_control(0x80+0x40);// 00:00:00
for(num=0;num<8;num++)
write_data(table1[num]);
TMOD=0x01;
TH0=(65536-5000)/256;//5ms
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
}
void write_sfm(uchar adduchar date)//写入 时分秒 的数值
{
uchar shige;
shi=date/10;
ge=date%10;
write_control(0x80+0x40+add);
write_data(0x30+shi);//求 个位 十位的ASCIIA码 进而显示
write_data(0x30+ge);
}
void write_yr(uchar add1uchar date1)//写入 月日 的数值
{
uchar shige;
shi=date1/10;
ge=date1%10;
write_control(0x80+add1);
write_data(0x30+shi);//求 个位 十位的ASCIIA码 进而显示
write_data(0x30+ge);
}
void write_nian(uchar add2uint date2)//写入 年 的数值
{
uchar qianbaishige;
qian=date2/1000;
bai=date2/100%10;
shi=date2/10%10;
ge=date2%10;
write_control(0x80+add2);//求 千百十个位 的ASCIIA码 进而显示
write_data(0x30+qian);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
}
void timer0() interrupt 1//定时器中断程序 计时显示
{
TH0=(65536-5000)/256;//5ms 5.42534722222222222
TL0=(65536-5000)%256;
flag++;
if(flag==184)//1秒
{
flag=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
ri++;
if((ri>31)&&((yue==1)||(yue==3)||(yue==5)||(yue==7)||(yue==8)||(yue==10)||(yue==12)))
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
write_nian(0nian);
}
write_yr(5yue);
}
if((ri==31)&&((yue==4)||(yue==6)||(yue==9)||(yue==11)))
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
write_nian(0nian);
}
write_yr(5yue);
}
if((ri==30)&&(yue==2))
{
if(nian%4==0)
{
if(nian%100==0)
{
if(nian%400==0)
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
write_nian(0nian);
}
writ
相关资源
- 51单片机宠物喂食器代码、仿真、电路
- 单片机电子温度计
- 基于51单片机的时钟汇编程序
- 基于51单片机的数字频率计课程设计
- 51单片机汇编语言将片外ram30-50H中数据
- 51单片机控制sim808
- 基于51单片机的三路电磁传感器自动循
- LCD1602封装LCD1602封装
- 51单片机读写flash
- 89c51单片机电子琴设计
- 基于51单片机信号发生器
- 51单片机驱动WiFi模块ESP8266模块的代码
- SCCM-1602-1606-1610-1702-1706-1710-1802-1806-安
- c51单片机的经典密码锁keil c
- LCD1602最好最详细的中文资料带字库
- 51单片机超声测距汇编
- 基于51单片机12864画点画线画圆的程序
- 倒车雷达超声波测距系统
- 波形发生器 Proteus
- NRF24l01收发程序带LCD1602液晶及串口通
- LCD1602液晶完整中文资料
- 基于msp430f149的FFT算法,结果在1602液晶
- 单片机和LCD1602实现的简易计算器
- 51单片机热敏电阻测温查表程序
- 基于AT89C51单片机的电子计时牌设计
- 用51单片机设计的GPS定位系统论文
- 基于89c51的等精度频率计lcd1602显示
- 基于51单片机的CC1100CC1101发送和接收的
- 基于C51单片机的简单控制灯光的程序
- 51单片机 经典4位数码管显示,带闪烁
评论
共有 条评论