安个窝,进入码农的世界,一个月学习51单片机的结晶 按键液晶显示代码
来源:互联网 发布:阿里云的开源应用软件 编辑:程序博客网 时间:2024/05/16 23:59
/********按键控制液晶显示时钟*****/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="WEIFA 2015";
uchar code table1[]="00:00:00:00:00";
uchar nian1,nian2,yue,tian,shi,fen,miao,num,key,num1,com,add,date;
sbit s1=P3^4;
sbit s2=P3^5;
sbit s3=P3^6;
sbit rs=P1^0;
sbit rw=P1^1;
sbit en=P2^5;
sbit du=P2^6;
sbit we=P2^7;
void delay(uchar xms)
{
uchar x,y;
for(x=xms;x>0;x--)
for(y=112;y>0;y--);
}
void write_com(com)
{
rs=0;
en=0;
rw=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
void write_date(date)
{
rs=1;
en=0;
rw=0;
P0=date;
delay(5);
en=1;
delay(5);
en=0;
}
void write_time(add,date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
delay(2);
}
void write_nian(add,date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_date(0x30+shi);
write_date(0x30+ge);
delay(2);
}
void init()
{
du=0;
we=0;
rs=0;
rw=0;
en=0;
write_com(0x38);//设置显示屏模式为2行16字符
write_com(0x0c);//
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<10;num++)
{
write_date(table[num]);
delay(2);
}
write_com(0x80+0x40);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delay(2);
}
TMOD=0x01;
EA=1;
TR0=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void timer() interrupt 1
{
TMOD=0x01;
EA=1;
TR0=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
if(num1==18)
{
num1=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
tian++;
if(tian==30)
{
tian=0;
yue++;
if(yue==12)
{
yue=0;
nian1++;
if(nian1==10)
{
nian1=0;
nian2++;
if(nian2==10)
{
nian2=0;
}
write_nian(8,nian1);
}
write_nian(6,nian2);
}
write_time(0,yue);
}
write_time(3,tian);
}
write_time(6,shi);
}
write_time(9,fen);
}
write_time(12,miao);
}
}
void anjian()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
while(!s1);
key++;
if(key==1)
{
TR0=0;
write_com(0x0f);
write_com(0x80+0x40+12);
}
if(key==2)
{
write_com(0x80+0x40+9);
}
if(key==3)
{
write_com(0x80+0x40+6);
}
if(key==4)
{
write_com(0x80+0x40+3);
}
if(key==5)
{
write_com(0x80+0x40+0);
}
if(key==6)
{
write_com(0x80+8);
}
if(key==7)
{
write_com(0x80+6);
}
if(key==8)
{
key=0;
write_com(0x0c);
TR0=1;
}
}
}
if(key!=0)
{
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2);
if(key==1)
{ miao++;
if(miao==60)
{
miao=0;
}
write_time(12,miao);
write_com(0x80+0x40+13);
}
if(key==2)
{
fen++;
if(fen==60)
{
fen=0;
}
write_time(9,fen);
write_com(0x80+0x40+10);
}
if(key==3)
{
shi++;
if(shi==24)
{
shi=0;
}
write_time(6,shi);
write_com(0x80+0x40+7);
}
if(key==4)
{
tian++;
if(tian==30)
{
tian=0;
}
write_time(3,tian);
write_com(0x80+0x40+4);
}
if(key==5)
{
yue++;
if(yue==12)
{
yue=0;
}
write_time(0,yue);
write_com(0x80+0x40+0);
}
if(key==6)
{
nian1++;
if(nian1==100)
{
nian1=0;
}
write_nian(8,nian1);
write_com(0x80+8);
}
if(key==7)
{
nian2++;
if(nian2==100)
{
nian2=0;
}
write_nian(6,nian2);
write_com(0x80+6);
}
}
}
if(s3==0)
{
delay(10);
if(s3==0)
{
while(!s3);
if(key==1)
{
miao--;
if(miao==-1)
{
miao=59;
}
write_time(12,miao);
write_com(0x80+0x40+13);
}
if(key==2)
{
fen--;
if(fen==-1)
{
fen=59;
}
write_time(9,fen);
write_com(0x80+0x40+10);
}
if(key==3)
{
shi--;
if(shi==-1)
{
shi=23;
}
write_time(6,shi);
write_com(0x80+0x40+7);
}
if(key==4)
{
tian--;
if(tian==-1)
{
tian=29;
}
write_time(3,tian);
write_com(0x80+0x40+4);
}
if(key==5)
{
yue--;
if(yue==-1);
{
yue=11;
}
write_time(0,yue);
write_com(0x80+0x40+0);
}
if(key==6)
{
nian1--;
if(nian1==-1)
{
nian1=99;
}
write_nian(8,nian1);
write_com(0x80+8);
}
if(key==7)
{
nian2--;
if(nian2==-1)
{
nian2=99;
}
write_nian(6,nian2);
write_com(0x80+6);
}
}
}
}
}
void main()
{
init();
while(1)
{
anjian();
}
}
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="WEIFA 2015";
uchar code table1[]="00:00:00:00:00";
uchar nian1,nian2,yue,tian,shi,fen,miao,num,key,num1,com,add,date;
sbit s1=P3^4;
sbit s2=P3^5;
sbit s3=P3^6;
sbit rs=P1^0;
sbit rw=P1^1;
sbit en=P2^5;
sbit du=P2^6;
sbit we=P2^7;
void delay(uchar xms)
{
uchar x,y;
for(x=xms;x>0;x--)
for(y=112;y>0;y--);
}
void write_com(com)
{
rs=0;
en=0;
rw=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
void write_date(date)
{
rs=1;
en=0;
rw=0;
P0=date;
delay(5);
en=1;
delay(5);
en=0;
}
void write_time(add,date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
delay(2);
}
void write_nian(add,date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_date(0x30+shi);
write_date(0x30+ge);
delay(2);
}
void init()
{
du=0;
we=0;
rs=0;
rw=0;
en=0;
write_com(0x38);//设置显示屏模式为2行16字符
write_com(0x0c);//
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<10;num++)
{
write_date(table[num]);
delay(2);
}
write_com(0x80+0x40);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delay(2);
}
TMOD=0x01;
EA=1;
TR0=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void timer() interrupt 1
{
TMOD=0x01;
EA=1;
TR0=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
if(num1==18)
{
num1=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
tian++;
if(tian==30)
{
tian=0;
yue++;
if(yue==12)
{
yue=0;
nian1++;
if(nian1==10)
{
nian1=0;
nian2++;
if(nian2==10)
{
nian2=0;
}
write_nian(8,nian1);
}
write_nian(6,nian2);
}
write_time(0,yue);
}
write_time(3,tian);
}
write_time(6,shi);
}
write_time(9,fen);
}
write_time(12,miao);
}
}
void anjian()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
while(!s1);
key++;
if(key==1)
{
TR0=0;
write_com(0x0f);
write_com(0x80+0x40+12);
}
if(key==2)
{
write_com(0x80+0x40+9);
}
if(key==3)
{
write_com(0x80+0x40+6);
}
if(key==4)
{
write_com(0x80+0x40+3);
}
if(key==5)
{
write_com(0x80+0x40+0);
}
if(key==6)
{
write_com(0x80+8);
}
if(key==7)
{
write_com(0x80+6);
}
if(key==8)
{
key=0;
write_com(0x0c);
TR0=1;
}
}
}
if(key!=0)
{
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2);
if(key==1)
{ miao++;
if(miao==60)
{
miao=0;
}
write_time(12,miao);
write_com(0x80+0x40+13);
}
if(key==2)
{
fen++;
if(fen==60)
{
fen=0;
}
write_time(9,fen);
write_com(0x80+0x40+10);
}
if(key==3)
{
shi++;
if(shi==24)
{
shi=0;
}
write_time(6,shi);
write_com(0x80+0x40+7);
}
if(key==4)
{
tian++;
if(tian==30)
{
tian=0;
}
write_time(3,tian);
write_com(0x80+0x40+4);
}
if(key==5)
{
yue++;
if(yue==12)
{
yue=0;
}
write_time(0,yue);
write_com(0x80+0x40+0);
}
if(key==6)
{
nian1++;
if(nian1==100)
{
nian1=0;
}
write_nian(8,nian1);
write_com(0x80+8);
}
if(key==7)
{
nian2++;
if(nian2==100)
{
nian2=0;
}
write_nian(6,nian2);
write_com(0x80+6);
}
}
}
if(s3==0)
{
delay(10);
if(s3==0)
{
while(!s3);
if(key==1)
{
miao--;
if(miao==-1)
{
miao=59;
}
write_time(12,miao);
write_com(0x80+0x40+13);
}
if(key==2)
{
fen--;
if(fen==-1)
{
fen=59;
}
write_time(9,fen);
write_com(0x80+0x40+10);
}
if(key==3)
{
shi--;
if(shi==-1)
{
shi=23;
}
write_time(6,shi);
write_com(0x80+0x40+7);
}
if(key==4)
{
tian--;
if(tian==-1)
{
tian=29;
}
write_time(3,tian);
write_com(0x80+0x40+4);
}
if(key==5)
{
yue--;
if(yue==-1);
{
yue=11;
}
write_time(0,yue);
write_com(0x80+0x40+0);
}
if(key==6)
{
nian1--;
if(nian1==-1)
{
nian1=99;
}
write_nian(8,nian1);
write_com(0x80+8);
}
if(key==7)
{
nian2--;
if(nian2==-1)
{
nian2=99;
}
write_nian(6,nian2);
write_com(0x80+6);
}
}
}
}
}
void main()
{
init();
while(1)
{
anjian();
}
}
0 0
- 安个窝,进入码农的世界,一个月学习51单片机的结晶 按键液晶显示代码
- 51单片机-1602液晶显示的时钟代码
- 单片机的1602液晶显示
- 51单片机液晶显示计时器
- 51单片机 1602液晶显示
- 基于 51单片机、74HC154/595的液晶显示、ADC驱动以及电压采集。
- 用C语言来编写51单片机液晶显示屏幕的修改密码功能
- 单片机+DS18B20+12864液晶显示温度及温度变化的波形
- 基于8051单片机的1602液晶显示温度和时间
- 关于独立按键与矩阵按键的程序(51单片机)
- 进入erlang的世界
- 进入Erlang的世界
- 进入Erlang的世界
- 进入Java的世界
- 进入Django的世界
- 进入linux的世界
- 进入php的世界
- 进入数据库的世界
- 数组的一些操作
- error: Error parsing XML: not well-formed (invalid token) 报错解决
- 推荐获取屏幕分辨率的写法
- 设计模式 适配器模式 以手机充电器为例
- [Leetcode 190, Easy] Reverse Bits
- 安个窝,进入码农的世界,一个月学习51单片机的结晶 按键液晶显示代码
- BMP位图文件格式
- vim高亮显示nginx配置文件的语法结构
- maven ArtifactTransferException: Failure to transfer
- Unique Binary Search Trees [动态规划]
- spring mvc 简单讲解
- 在线ppt文件格式转换pdf文档文件
- 论组织行为中的人性理论
- 设计模式 外观模式 一键电影模式