电子时钟
2013-07-15 08:47
274 查看
lcd液晶屏,51单片机
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs = P2^4;
sbit lcdrw = P2^5;
sbit lcden = P2^6;
sbit dula = P3^6;
sbit wela = P3^7;
sbit key_1 = P3^1;
sbit key_2 = P3^2;
sbit key_3 = P3^3;
uchar code table[] = " 2013.7.14";
uchar code table_1[] = " 00:00:00";
uchar num,shi = 0,fen = 0,miao = 0,keynum = 0;
void T0_init()//定时器0初始化
{
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TR0 = 1;
ET0 = 1;
EA = 1;
}
void delay_Ms(uint x)//延时函数
{
uint i,j;
for(i = x;i > 0;i--)
for(j = 123;j > 0;j--);
}
void write_com(uchar com)//lcd写命令
{
lcdrs = 0;
lcdrw = 0;
P0 = com;
delay_Ms(5);
lcden = 1;
delay_Ms(5);
lcden = 0;
}
void write_date(uchar date)//lcd写数据
{
lcdrs = 1;
lcdrw = 0;
P0 = date;
delay_Ms(5);
lcden = 1;
delay_Ms(5);
lcden = 0;
}
void LCD_init()//lcd初始化
{
uint i;
lcden = 0;
dula = 0;
wela = 0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(i = 0;i < 13;i ++)
{
write_date(table[i]);
delay_Ms(5);
}
write_com(0x80+0x40);
for(i = 0;i < 12;i ++)
{
write_date(table_1[i]);
delay_Ms(5);
}
}
void hebing(uchar add,uchar date)
{
uchar qian,hou;
qian = date / 10;
hou = date %10;
write_com(0x80+0x40+add);
write_date(0x30+qian);
write_date(0x30+hou);
}
void keyscan()//按键扫描
{
if(key_1 == 0)
{
delay_Ms(5);
if(key_1 == 0)
{
keynum++;
while(!key_1);
if(keynum == 1)
{
TR0 = 0;
write_com(0x80+0x40+11);
write_com(0x0f);
}
if(keynum == 2)
{
write_com(0x80+0x40+8);
}
if(keynum == 3)
{
write_com(0x80+0x40+5);;
}
if(keynum == 4)
{
keynum = 0;
TR0 = 1;
write_com(0x0c);
}
}
}
if(keynum == 1)
{
if(key_2 == 0)
{
delay_Ms(5);
if(key_2 == 0)
{
while(!key_2);
miao ++;
if(miao == 60)
miao = 0;
hebing(10,miao);
write_com(0x80+0x40+11);
}
}
if(key_3 == 0)
{
delay_Ms(5);
if(key_3 == 0)
{
while(!key_3);
miao --;
if(miao == 0)
miao = 59;
hebing(10,miao);
write_com(0x80+0x40+11);
}
}
}
if(keynum == 2)
{
if(key_2 == 0)
{
delay_Ms(5);
if(key_2 == 0)
{
while(!key_2);
fen++;
if(miao == 60)
fen = 0;
hebing(7,fen);
write_com(0x80+0x40+8);
}
}
if(key_3 == 0)
{
delay_Ms(5);
if(key_3 == 0)
{
while(!key_3);
fen--;
if(fen == 0)
fen = 59;
hebing(7,fen);
write_com(0x80+0x40+8);
}
}
}
if(keynum ==3)
{
if(key_2 == 0)
{
delay_Ms(5);
if(key_2 == 0)
{
while(!key_2);
shi++;
if(shi ==24)
shi = 0;
hebing(4,shi);
write_com(0x80+0x40+5);
}
}
if(key_3 == 0)
{
delay_Ms(5);
if(key_3 == 0)
{
while(!key_3);
shi --;
if(shi == 0)
shi = 23;
hebing(4,shi);
write_com(0x80+0x40+5);
}
}
}
}
void count()
{
if(num == 20)
{
num = 0;
miao ++;
if(miao == 60)
{
miao = 0;
fen ++;
if(fen ==60)
{
fen = 0;
shi ++;
if(shi == 24)
{
shi = 0;
}
hebing(4,shi);
}
hebing(7,fen);
}
hebing(10,miao);
}
}
void main()
{
T0_init();
LCD_init();
hebing(4,shi);
hebing(7,fen);
hebing(10,miao);
while(1)
{
keyscan();
count();
}
}
void timer0()interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
num++;
}
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs = P2^4;
sbit lcdrw = P2^5;
sbit lcden = P2^6;
sbit dula = P3^6;
sbit wela = P3^7;
sbit key_1 = P3^1;
sbit key_2 = P3^2;
sbit key_3 = P3^3;
uchar code table[] = " 2013.7.14";
uchar code table_1[] = " 00:00:00";
uchar num,shi = 0,fen = 0,miao = 0,keynum = 0;
void T0_init()//定时器0初始化
{
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TR0 = 1;
ET0 = 1;
EA = 1;
}
void delay_Ms(uint x)//延时函数
{
uint i,j;
for(i = x;i > 0;i--)
for(j = 123;j > 0;j--);
}
void write_com(uchar com)//lcd写命令
{
lcdrs = 0;
lcdrw = 0;
P0 = com;
delay_Ms(5);
lcden = 1;
delay_Ms(5);
lcden = 0;
}
void write_date(uchar date)//lcd写数据
{
lcdrs = 1;
lcdrw = 0;
P0 = date;
delay_Ms(5);
lcden = 1;
delay_Ms(5);
lcden = 0;
}
void LCD_init()//lcd初始化
{
uint i;
lcden = 0;
dula = 0;
wela = 0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(i = 0;i < 13;i ++)
{
write_date(table[i]);
delay_Ms(5);
}
write_com(0x80+0x40);
for(i = 0;i < 12;i ++)
{
write_date(table_1[i]);
delay_Ms(5);
}
}
void hebing(uchar add,uchar date)
{
uchar qian,hou;
qian = date / 10;
hou = date %10;
write_com(0x80+0x40+add);
write_date(0x30+qian);
write_date(0x30+hou);
}
void keyscan()//按键扫描
{
if(key_1 == 0)
{
delay_Ms(5);
if(key_1 == 0)
{
keynum++;
while(!key_1);
if(keynum == 1)
{
TR0 = 0;
write_com(0x80+0x40+11);
write_com(0x0f);
}
if(keynum == 2)
{
write_com(0x80+0x40+8);
}
if(keynum == 3)
{
write_com(0x80+0x40+5);;
}
if(keynum == 4)
{
keynum = 0;
TR0 = 1;
write_com(0x0c);
}
}
}
if(keynum == 1)
{
if(key_2 == 0)
{
delay_Ms(5);
if(key_2 == 0)
{
while(!key_2);
miao ++;
if(miao == 60)
miao = 0;
hebing(10,miao);
write_com(0x80+0x40+11);
}
}
if(key_3 == 0)
{
delay_Ms(5);
if(key_3 == 0)
{
while(!key_3);
miao --;
if(miao == 0)
miao = 59;
hebing(10,miao);
write_com(0x80+0x40+11);
}
}
}
if(keynum == 2)
{
if(key_2 == 0)
{
delay_Ms(5);
if(key_2 == 0)
{
while(!key_2);
fen++;
if(miao == 60)
fen = 0;
hebing(7,fen);
write_com(0x80+0x40+8);
}
}
if(key_3 == 0)
{
delay_Ms(5);
if(key_3 == 0)
{
while(!key_3);
fen--;
if(fen == 0)
fen = 59;
hebing(7,fen);
write_com(0x80+0x40+8);
}
}
}
if(keynum ==3)
{
if(key_2 == 0)
{
delay_Ms(5);
if(key_2 == 0)
{
while(!key_2);
shi++;
if(shi ==24)
shi = 0;
hebing(4,shi);
write_com(0x80+0x40+5);
}
}
if(key_3 == 0)
{
delay_Ms(5);
if(key_3 == 0)
{
while(!key_3);
shi --;
if(shi == 0)
shi = 23;
hebing(4,shi);
write_com(0x80+0x40+5);
}
}
}
}
void count()
{
if(num == 20)
{
num = 0;
miao ++;
if(miao == 60)
{
miao = 0;
fen ++;
if(fen ==60)
{
fen = 0;
shi ++;
if(shi == 24)
{
shi = 0;
}
hebing(4,shi);
}
hebing(7,fen);
}
hebing(10,miao);
}
}
void main()
{
T0_init();
LCD_init();
hebing(4,shi);
hebing(7,fen);
hebing(10,miao);
while(1)
{
keyscan();
count();
}
}
void timer0()interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
num++;
}
相关文章推荐
- QT时间触发电子时钟
- 【运算符重载 && 单目运算符】SDUT 2711 - 4-2 电子时钟中的运算符重载
- 使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)
- JavaBean网页电子时钟
- C#上机 电子时钟
- js普通电子时钟
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
- PyQt5用QTimer编写电子时钟
- Qt - 与众不同的电子时钟
- Qt:电子时钟
- 电子时钟
- QT----电子时钟
- 自定义Android电子时钟控件
- [转贴]采用实时时钟芯片DS1302+AT89C2051的红外遥控LED电子钟
- VC++ 和EasyX=电子时钟
- 4-2电子时钟中的运算符重载
- C++时钟类 模拟电子时钟 设置时间后可自动更新时间
- [转载]YS18-3荧光管电子时钟100%开源放送(软件源工程及代码.硬件原理图)
- java多线程基础知识-电子时钟
- JavaScript电子时钟倒计时