51单片机C语言电子时钟程序设计程序.doc
文本预览下载声明
主程序:
#includeDS18B20_3.H
#define uint unsigned int
#define uchar unsigned char
uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;
#define yh 0x80
#define er 0x80+0x40
//液晶屏的与C51之间的引脚连接定义
sbit rs=P2^0;
sbit en=P2^2;
sbit rw=P2^1; //如果硬件上rw接地,就不用写这句和后面的rw=0了
sbit led=P2^6; //LCD背光开关
//DS1302时钟芯片与C51之间的引脚连接定义
sbit IO=P1^1;
sbit SCLK=P1^0;
sbit RST=P1^2;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
//校时按键与C51的引脚连接定义
sbit key1=P1^5; //设置键
sbit key2=P1^6; //加键
sbit key3=P1^7; //减键
sbit buzzer=P1^3; //蜂鸣器,通过三极管9012驱动,端口低电平响
/**************************************************************/
uchar code tab1[]={20 - - }; //年显示的固定字符
uchar code tab2[]={ : : }; //时间显示的固定字符
//延时函数,后面经常调用
void delay(uint xms) //延时函数,有参函数
{
uint x,y;
for(x=xms;x0;x--)
for(y=110;y0;y--);
}
/********液晶写入指令函数与写入数据函数,以后可调用**************/
write_1602com(uchar com) //****液晶写入指令函数****
{
rs=0; //数据/指令选择置为指令
rw=0; //读写选择置为写
P0=com; //送入数据
delay(1);
en=1; //拉高使能端,为制造有效的下降沿做准备
delay(1);
en=0; //en由高变低,产生下降沿,液晶执行命令
}
write_1602dat(uchar dat) //***液晶写入数据函数****
{
rs=1; //数据/指令选择置为数据
rw=0; //读写选择置为写
P0=dat; //送入数据
delay(1);
en=1; //en置高电平,为制造下降沿做准备
delay(1);
en=0; //en由高变低,产生下降沿,液晶执行命令
}
lcd_init() //***液晶初始化函数****
{
write_1602com(0x38); //设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据
write_1602com(0x0
显示全部