基于c51单片机的数字可调时钟

基于c51单片机的数字可调时钟

ID:15126301

大小:83.50 KB

页数:9页

时间:2018-08-01

基于c51单片机的数字可调时钟_第1页
基于c51单片机的数字可调时钟_第2页
基于c51单片机的数字可调时钟_第3页
基于c51单片机的数字可调时钟_第4页
基于c51单片机的数字可调时钟_第5页
资源描述:

《基于c51单片机的数字可调时钟》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、河南机电高等专科学校《C51程序设计》大作业设计题目:数字可调时钟班级:通技091学号:090413128姓名:成绩:2011年11月1设计任务制作数字可调时钟,要求可以分开调节分、时、年、月、日,能够显示温度。2电路原理图以下为protel99se画的的原理图3系统流程图数字可调时钟分以下四个部分构成:显示部分:此次显示采用了动态扫描显示,采用74ls573进行数据锁存。温度采集:温度采集采用了18b20采集的,18b20转化温度较快,精度高。时钟:采用普通的ds1302芯片。数据运算:单片机

2、用普通的8051单片机(12M晶振)。数码管显示模块单片机键盘温度采集模块时钟模块4源程序/*******************************数字可调时钟*********************************//*******************************by:lhc****************************************/#include#defineDataPortP0voiddelayms(unsigned

3、chari);sbitDQ=P1^3;sbitsclk=P1^4;sbitdate=P1^5;sbitrst=P1^6;sbitLATCH1=P2^2;//定义锁存使能端口段锁存sbitLATCH2=P2^3;//位锁存unsignedchartime[8]={20,11,11,27,11,30,00,7};//年月日时分秒周unsignedchartime1[8],readtemflag;unsignedcharcodeDuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,

4、0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值0~9unsignedcharcodeWeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsignedcharcodepingnian[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年的月份天数unsignedcharcodeyunnian[13]={0,31,29,31,30,31,30,31,

5、31,30,31,30,31};//闰年的月份天数unsignedcharTempData[8];//存储显示值的全局变量voiddelay(unsignedchari){while(--i);//us延时函数}voiddelayms(unsignedchari)//ms延时函数{while(i--){delay(245);delay(245);}}bitrest(void)//18b20重启函数{bitk=0;DQ=1;delay(5);DQ=0;delay(150);delay(200);D

6、Q=1;delay(40);k=DQ;delay(25);return(k);}unsignedcharread()//18b20读数据函数{unsignedchari=0;unsignedchardat=0;for(i=0;i<8;i++){DQ=0;dat>>=1;DQ=1;if(DQ)dat

7、=0x80;delay(25);}return(dat);}voidwrite(unsignedchardat)//18b20写数据函数{unsignedchari=0;for(i=0;i<8;i++

8、){DQ=0;DQ=dat&0x01;delay(25);DQ=1;dat>>=1;}delay(25);}unsignedintReadTemperature(void)//读取温度函数{unsignedchara=0;unsignedintkk=0,b=0;LOOP:if(rest()==0){write(0xCC);//跳过ROMwrite(0x44);//初始化温度转换delayms(20);rest();TH1=0XFa;TL1=0Xff;write(0xCC);write(0xBE)

9、;//读取温度a=read();b=read();b<<=8;kk=a+b;return(kk);}elsegotoLOOP;}voidrestds1302(void){sclk=0;rst=0;//ds1302重启}voidwritebyte(unsignedcharaddr,unsignedcharbyte)//写入ds1302一个字节数据{unsignedchari;rst=1;addr=addr&0xfe;for(i=0;i<8;i++){date=addr&0x01;sclk=1;sc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。