基于单片机DS1302的时钟万年历(带闹钟)_第1页
基于单片机DS1302的时钟万年历(带闹钟)_第2页
基于单片机DS1302的时钟万年历(带闹钟)_第3页
基于单片机DS1302的时钟万年历(带闹钟)_第4页
基于单片机DS1302的时钟万年历(带闹钟)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include#define uchar unsigned char #define uint unsigned intsbit lcdws=P21; /1602管脚定义sbit lcden=P20;sbit lcdrs=P22;sbit key1=P23; /闹钟设置键 sbit key2=P24; sbit key3=P15;/功能键定义sbit key4=P16;/增大键定义sbit key5=P17;/减小键定义uchar shi,fen,miao,ashi,afen,amiao,year,month,day,week;uchar s1num=0,s1num2=0,temp;bit

2、flag; float f_temp;uint i,d;uchar code table2=0x20,0x20,0x2e,0x20,0xdf,0x43;uchar code table=20 - - ;uchar code table1= : : ;sbit ds=P10;/ds18b20信号线sbit beep=P14; /蜂鸣器管脚定义sbit ACC_7 = ACC7; /位寻址寄存器定义sbit SCLK = P12; / DS1302时钟信号 sbit DIO= P11; / DS1302数据信号 sbit CE = P13;/地址、数据发送子程序 /void delay2(uint

3、 ms)/ / uchar t;/ while(ms-); for(t=0;t120;t+); / void playmusic()/ / uint i2=0,j2,k2;/ while(jiepaii2!=0|songi2!=0)/ / for(j2=0;j2jiepaii2*20;j2+)/ / beep=beep;/ for(k2=0;k20; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr = 1; /右移一位 SCLK = 1; /发送数据 for ( i=8; i0; i- ) SC

4、LK = 0; temp = dat; DIO = (bit)(temp&0x01); dat = 1; SCLK = 1; CE = 0; /数据读取子程序 uchar Read1302 ( uchar addr ) unsigned char i,temp,dat1,dat2; CE=0; SCLK=0; CE = 1; /发送地址 for ( i=8; i0; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr = 1; /右移一位 SCLK = 1; /读取数据 for ( i=8; i0;

5、 i- ) ACC_7=DIO; SCLK = 1; ACC=1; SCLK = 0; CE=0; dat1=ACC; dat2=dat1/16; /数据进制转换 /十六进制转十进制 dat1=dat1%16; dat1=dat1+dat2*10; return (dat1); /初始化 DS1302 void Initial(void) /初始化1302 2010年09月30日23点58分56秒 星期一 write_1302 (0x8e,0x00); /允许写保护 write_1302 (0x80,0x56); /秒位初始化 write_1302 (0x82,0x58); /分钟初始化 wr

6、ite_1302 (0x84,0x23); /小时初始化 write_1302 (0x86,0x30); /日初始化 write_1302 (0x88,0x09); /月初始化 write_1302 (0x8c,0x10); /年初始化 write_1302 (0x8a,0x01); /日期始化 write_1302 (0x8e,0x80); /禁止写保护void delay(uint z)/延时1msuint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/1602写命令lcdrs=0;lcden=0;P0=com;d

7、elay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)/1602写数据lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void dsreset(void) /DS18B20,初始化函数uint i;ds=0;i=103;while(i0)i-;ds=1;i=4;while(i0)i-;bit tempreadbit(void)/读1位数据函数uint i;bit dat;ds=0;i+;ds=1;i+;i+;/i+起到延时作用dat=ds;i=8;while(i

8、0)i-;return(dat);uchar tempread(void) /读一个字节数据函数uchar i,j,dat;dat=0;for(i=1;i=8;i+)j=tempreadbit();dat=(j1);return(dat);void tempwritebyte(uchar dat) /向DS18B20写一个字节数据函数uint i;uchar j;bit testb;for(j=1;j1;if(testb)/写1ds=0;i+;i+;ds=1;i=8;while(i0)i-;elseds=0; /写0i=8;while(i0)i-;ds=1;i+;i+;void tempcha

9、nge(void) /DS18B20开始获取温度并转换dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0x44);uint get_temp() /获取温度uchar a,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread(); /读高8位b=tempread(); /读低8位temp=b;temp=8; /两个字节组合成1个字节temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;f_temp=f_

10、temp+0.05; /温度在寄存器中为12位,分辨率为0.0625return temp;void display(uchar addr,uchar dat)write_com(0x80+0x40+addr);write_data(0x30+dat);delay(5);void dis_temp(uint t)uchar i;i=t/100;display(10,i);i=t%100/10;display(11,i);i=t%100%10;display(13,i);void init()/初始化程序uchar num;flag=1;lcden=0;write_com(0x38);write

11、_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num15;num+)write_data(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num8;num+)write_data(table1num);delay(5);write_com(0x80+0x40+10);for(num=0;num0;i-) dis_temp(get_temp(); while(1)keyscan();/按键扫描/while(key1&key2&key3&key4&key5)&(fen=afen)&(shi=ashi)/ / beep=0;/ delay(500);/beep=1;/ if(flag=1)miao=Read1302(0x81);/显示秒write_sfm(6,miao);fen=Read1302(0x83);/显示分write_sfm(3,fen);shi=Read1302(0x85);/显示小时write_sfm(0,shi);day=Read1302(0x87);/显示日 write_nyrz(8,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论