51控制的可调电子时钟,1602液晶显示
#include 《reg51.h》
#include 《intrins.h》
#define uchar unsigned char
#define uint unsigned int
uchar count_10ms; //定义10ms计数器
sbit K1 = P3^7; //定义K1键
sbit K2 = P3^4; //定义K2键
sbit K3 = P3^5; //定义K3键
sbit K4 = P3^6; //P1^3定义K4键
sbit K5 = P3^3;
sbit BEEP=P2^2; //定义蜂鸣器
sbit reset = P1^6; //P2^5;
sbit sclk = P1^7; //P2^6;
sbit io = P2^6; //P2^7;
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1 ;
sbit LCD_EN=P1^2;
bit K1_FLAG=0; //定义按键标志位,当按下K1键时,该位置1,K1键未按下时,该位为0。
uchar disp_buf[16] ={0x00}; //定义显示缓冲区
uchar time_buf[7] ={0,0,0x12,0,0,0,0}; //DS1302时间缓冲区,存放秒、分、时、日、月、星期、年
uchar temp [2]={0}; //用来存放设置时的小时、分钟的中间值
uint m=0,n=0,r=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=70;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;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !