资源描述:
《单片机用数码管显示的ds1302的时钟C语言程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#defineucharunsignedchar#defineuintunsignedintucharcodetable[]="ME-8051-Gclock";ucharcodetable1[]="--:--:--";ucharcodetable2[]="ALL:00:00:--";ucharcodetable3[]="";ucharclk_time[3];//秒,分,时寄存器初始值sbitT_RST=P1^0;//ds1302-5sbitT_IO=P1^1;//ds1302-6sbitT_CLK=P1^2;//ds1302-7sbiten=P3^4;
2、sbitrw=P3^6;sbitrs=P3^5;sbitled=P2^5;sbitdula=P2^6;sbitwela=P2^7;sbitACC0=ACC^0;sbitACC7=ACC^7;sbitup=P3^0;sbitdown=P3^1;sbitset=P3^2;sbitdid=P2^3;sbitGND=P3^7;ucharnum,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg,b,clock_s,clock_g;charhour,mie,sei,c,nhour,nmie,shour,smie;/*************
3、*****DS1302:写入操作(上升沿)*********************/voidwrite_byte(ucharda){uchari;ACC=da;for(i=8;i>0;i--){T_IO=ACC0;T_CLK=0;T_CLK=1;ACC=ACC>>1;}}/******************DS1302:读取操作(下降沿)*****************/ucharread_byte(void){uchari;for(i=0;i<8;i++){ACC=ACC>>1;T_CLK=1;T_CLK=0;ACC7=T_IO;}return(ACC);}/*********
4、*********DS1302:写入数据(先送地址,再写数据)***************************/voidwrite_1302(ucharaddr,ucharda){T_RST=0;//停止工作T_CLK=0;T_RST=1;//重新工作write_byte(addr);//写入地址write_byte(da);T_RST=0;T_CLK=1;}/******************DS1302:读取数据(先送地址,再读数据)**************************/ucharread_1302(ucharaddr){uchartemp;T_RST=0;
5、//停止工作T_CLK=0;T_RST=1;//重新工作write_byte(addr);//写入地址temp=read_byte();T_RST=0;T_CLK=1;//停止工作return(temp);}/***********************延时程序=a*1ms**************************************/voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidfn(){did=0;delay(120);did=1;delay(120);did=0;delay(120
6、);did=1;delay(120);did=0;delay(120);did=1;delay(120);did=0;delay(320);did=1;delay(400);}voidwrite_com(ucharcom){rs=0;P0=com;delay(5);en=1;delay(5);en=0;}voidwrite_data(uchardate){rs=1;P0=date;delay(5);en=1;delay(5);en=0;}voidmorning(){shour=clock_ss*10+clock_sg;smie=clock_fs*10+clock_fg;if(b==0)
7、{if(nhour==shour){if(smie>=nmie){fn();}}}}voidinit(){b=0;nhour=0;nmie=0;led=0;//关ledrw=0;GND=0;en=0;write_com(0x38);//设置液晶write_com(0x0c);//设光标等write_com(0x06);//写一个字符地址指针加1且光标加1write_com(0x01);//清屏write_com(0x80);//设置s地址指针}