【代码】一个1602液晶屏的小程序
电子礼品diy吧
全部回复
仅看楼主
level 6
ztook 楼主
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P1^0;
sbit EN=P1^2;
sbit RW=P1^1;
uchar code table[]="PEKING TIME: ";
uchar code table1[]="13-8-11-00-00-00";
uchar timecount=0,sec=0,min=0,hou=0;
void write_time(uchar,uchar);
void delay(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
void write_com(uchar com)
{
RS=0;
RW=0;
EN=0;
P0=com;
delay(1);
EN=1;
delay(1);
EN=0;
}
void write_date(uchar date)
{
RS=1;
RW=0;
EN=0;
P0=date;
delay(1);
EN=1;
delay(1);
EN=0;
}
void intint()
{
uchar q;
write_com(0x38);
write_com(0x01);
write_com(0x02);
write_com(0x06);
write_com(0x0c);
write_com(0x80);
for(q=0;q<16;q++)
{
write_date(*table);
delay(2);
table=table+1;
}
write_com(0xc0);
for(q=0;q<16;q++)
{
write_date(table1[q]);
delay(2);
}
}
void write_time(uchar set,uchar tim)
{
uchar tims,timg;
tims=tim/10;
timg=tim%10;
write_com(0xc0+set);
write_date(0x30+tims);
write_com(0xc1+set);
write_date(0x30+timg);
}
void timerrun()
{
if(timecount==20)
{
write_time(0x0e,sec);
timecount=0;sec++;
if(sec==60)
{
write_time(0x0b,min);
sec=0;min++;
if(min==60)
{
write_time(0x08,hou);
min=0;hou++;
if(hou==24)
hou=0;
}
}
}
}
void main()
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
intint();
while(1)
{
timerrun();
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
timecount++;
}
2014年03月12日 14点03分 1
1