1602时钟
来源:互联网 发布:朗伽病理软件 编辑:程序博客网 时间:2024/05/23 17:30
#include<reg52.h>
sbit duan=P2^2;
sbit wei=P2^3;
sbit rs=P2^4;
sbit rw=P2^5;
sbit en=P2^6;
char Time[16]="0123456789";//用于显示
int sz1,sz2,fz1,fz2,mz1,mz2;
int flag,mon,day,count;
void delay(int a) //延时
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<125;j++)
;
}
void cmd(char com) //命令函数
{
rs=0;
rw=0;
P0=com;
en=1;
delay(5);
en=0;
}
void dat(char date) //写一个数据
{
rs=1;
rw=0;
P0=date;
en=1;
delay(5);
en=0 ;
}
void string(char n,char m,char *str) //写一串数据
//n:写在第几行 m:写在第几个位置 *a:字符串或数组
{
if(n==0)
cmd(0x80+m);
else
cmd(0x80+0x40+m);
while(*str)
dat(*str++);
}
void init() //初始化
{
duan=0;
wei=0;
rs=0;
rw=0;
en=0;
cmd(0x38);//设置16*2显示 5*7点阵 8位数据接口
cmd(0x0c); //开显示 不显示光标
cmd(0x06); //每写一个数指针加一
cmd(0x01); //指针至0
//cmd(0x18); //左移
}
void display() //显示函数
{
string(0,4,"wqiaoccc");
cmd(0x80+14);
dat(Time[mz1]);
dat(Time[mz2]);
cmd(0x80+0x40);
dat(Time[2]);
dat(Time[0]);
dat(Time[1]);
dat(Time[4]);
dat('-');
dat(Time[mon/10]);
dat(Time[mon%10]);
dat('-');
dat(Time[day/10]);
dat(Time[day%10]);
dat(' ');
dat(Time[sz1]);
dat(Time[sz2]);
dat(':');
dat(Time[fz1]);
dat(Time[fz2]);
dat(':');
}
void calc() //计算日期,最多值只累积月,想累计到年,可多定义几个变量,同样多写几行就行
{
if(flag!=mz2)
{
flag=mz2;
if(mz2>9)
{mz2=0;mz1++;}
if(mz1>5)
{fz2++;mz1=0;}
if(fz2>9)
{fz1++; fz2=0;}
if(fz1>5)
{sz2++;fz1=0;}
if(sz2>9)
{sz1++;sz2=0;}
if(sz1==2&&sz2>4)
{sz1=0;day++;}
if(day>31)
{day=0;mon++;} ;
}
}
void main()
{
//int i;
init();
mon=7;//时间初始化,可随意更改,sz:时钟 fz:分钟......
day=7;
sz1=1;
sz2=5;
fz1=3;
fz2=7;
mz1=mz2=0;
flag=mz2; //flag用于判断秒钟(mz)是否加了一
TMOD=0x01; //设置定时器0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
//string( 0,16,"wo yao go left!");
//string(1,16,"I want go left!");
while(1)
{
calc();
display();
}
/* for(i=0;i<15;i++)
{
cmd(0x18);
delay(300);
} */
// while(1);
}
void tim() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
mz2++;
calc();
}
}
- 1602时钟
- 1602时钟
- STC89C51时钟 1602显示
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 时钟
- 通过CMD来打开一个C#程序,并传入参数
- 两种方式建立Vsftpd虚拟用户
- 平衡二叉树SBT||线段树区间维护poj2892
- UIApplication详解
- 堆
- 1602时钟
- 求素数
- Javascript OOP Basics
- edward_mj退役经验帖(浙大2届Final队员陈伟杰的退役贴)
- 正则表达式匹配/
- linux之sort用法
- POJ 1061 青蛙的约会
- Better IO through byte-addressable,persistent memory 论文笔记~
- Java内部类的自我理解