#include #include #define uchar unsigned char #define uint unsigned int uchar count_10ms; //定义10ms 计数器 sbit K1 = P3^2; //定义K1 键 sbit K2 = P3^3; //定义K2 键 sbit K3 = P3^4; //定义K3 键 sbit K4 = P3^5; //定义K4 键 sbit BEEP=P3^7; //定义蜂鸣器 sbit reset = P1^2; sbit sclk = P1^0; sbit io = P1^1; sbit LCD_RS=P2^0; sbit LCD_RW=P2^1 ; sbit LCD_EN=P2^2; bit K1_FLAG=0; //定义按键标志位,当按下K1 键时,该位置1,K1 键未按下时,该位为0。 uchar code line1_data[] = {"---LCD Clcok---"}; //定义第1 行显示的字符 uchar code line2_data[] = {"****"}; //定义第2 行显示的字符 uchar disp_buf[8] ={0x00}; //定义显示缓冲区 uchar time_buf[7] ={0,0,0x12,0,0,0,0}; //DS1302 时间缓冲区,存放秒、分、时、日、月、星期、年 uchar temp [2]={0}; //用来存放设置时的小时、分钟的中间值 /********以下是函数声明********/ void Delay_ms(uint xms) ; bit lcd_busy(); void lcd_wcmd(uchar cmd); void lcd_wdat(uchar dat) ; void lcd_clr() ; void lcd_init() ; void write_byte(uchar inbyte); //写一字节数据函数声明 uchar read_byte(); //读一字节数据函数声明 void write_ds1302(uchar cmd,uchar indata); //写 DS1302 函数声明 uchar read_ds1302(uchar addr); //读 DS1302 函数声明 void set_ds1302(uchar addr,uchar *p,uchar n); //设置DS1302 初始时间函数声明 void get_ds1302(uchar addr,uchar *p,uchar n); //读当前时间函数声明 void init_ds1302(); //DS1302 初始化函数声明 /********以下是延时函数********/ void Delay_ms(uint xms) { uint i,j; for(i=xms;i>0;i--) //i=xms 即延时约xms 毫秒 for(j=110;j>0;j--); } /********以下是 LCD 忙碌检查函数********/ bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); LCD_EN = 0; return result; } /********以下是写指令寄存器 IR 函数********/ void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW =...