基于单片机高精度数字可调闹钟源程序基于单片机高精度数字可调闹钟源程序
这里给大家分享了一个基于单片机高精度数字可调闹钟源程序。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P2^5;
sbit rw=P2^6;
sbit en=P2^7;
sbit s1=P1^4;
sbit s2=P1^5;
sbit s3=P1^6;
//sbit s4=P1^7;
sbit s4=P3^2;
sbit s5=P3^3;
sbit s6=P3^4;
sbit key1=P1^0;
sbit beep=P2^3;
sbit dscs=P2^0;
sbit dsas=P2^1;
sbit dsrw=P2^2;
sbit dsds=P2^4;
sbit dsirq=P3^2;
uchar code table[]=" 20 - - ";
uchar code table1[]=" : : ";
uchar miao,shi,fen,day,month,year,week,s1num,flag,flag1;
void delay(uint z);
void set_time();
void set_alarm(uchar,uchar,uchar);
void write_ds(uchar,uchar);
uchar read_ds(uchar);
void write_com(uchar com)
{
rs=0;
rw=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
void write_data(uchar date)
{
rs=1;
rw=0;
P0=date;
delay(5);
en=1;
delay(5);
en=0;
}
void init()
{
uchar num;
en=0;
EA=1;
EX0=1;
IT0=1;
set_time();
set_alarm(18,50,0);
write_ds(0x0B,0x26);
read_ds(0x0c);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<12;num++)
{
write_data(table1[num]);
delay(5);