欢迎来到天天文库
浏览记录
ID:58910066
大小:124.00 KB
页数:10页
时间:2020-10-26
《SPI总线的DS1302实时钟控制.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四SPI总线的DS1302实时钟控制一、实验目的1、了解电子电路PROTEUS软件的在单片机方面的仿真应用2、掌握具有SPI总线DS1302、MAX7219芯片的应用及编程二、实验要求在PROTEUS环境下,利用DS1302实时钟芯片实现时间、日期的显示,并且具有调节时间、日期的功能,显示用共阴极LED显示。用串行芯片MAX7219驱动LED显示.实现此功能的电路原理图如下所示:1、显示“星期”的共阳极二极管接到单片机的P0口,P0口数据线接上拉电阻;2、显示“时间”或“日期”,是采用MAX7219控制共阴极LED来实现3、DS130
2、2的IO脚接单片机的P1.1,时钟信号SCLK接单片机P1.0,复位信号/RST接单片机P1.2。DS1302的晶振在这里可以不接,电源、地线都省略。4、MAX7219是用来驱动“时间”或“日期”的LED显示的。MAX7219的DIN信号脚接单片机的P2.0,/LOAD接单片机的P2.1,CLK接单片机的P2.2;5、时间/日期的调整:按下调整键,再分别按相应的“星期”、“年”、“月”、“日”,“时”、“分”、“秒“键,即可以调整时间/日期;6、在正常显示时,按下“时间/日期“切换键,即可以在显示时间或日期来回切换。三、PROTEUS环境
3、下的硬件设计1、打开PROTEUSISIS,在PROTEUSISIS编辑窗口中单击列表上的“P”按钮,添加下列元器件:元件名称所属类AT89C51MicroprocessorICSCRYSTAL晶振MisecllaneousCAP电容CapacitorRES电阻ResistorDS1302MicroprocessorICS7SEG-COM-ANODE共阳极OptoeletronicsBUTTON按键Switches&relaysMAX7129MicroprocessorICSRESPACK-7排阻Resistor7SEG-MPX-CA-B
4、LUE共阴极Optoeletronics表1在PROTEUS编辑窗口添加完元器件,连线。如附图1。四、软件设计在KEIL环境下编辑、编译程序,生成*.HEX文件后,装入单片机即可。五、实验程序源程序:#include//包含特殊功能寄存器库#include#include<7219.h>//该汉字库要求在你要显示的位置装入你要的汉字模(16*16)。voidmain(){Init7219();//初始化7219Set1302(time);//设置初始时间Get1302(Curtime);//读回DS1
5、302中的数据P0=CODE1[Curtime[5]-1];//显示星期Display1(num);//默认显示时间delay(255);//延时delay(255);while(1){Get1302(Curtime);//取数据if(TICK==0)//判断是否更改{t=~t;while(TICK==0){}}while(t==1){if(WEEK==0)//更改星期{w++;while(WEEK==0){};Get1302(Curtime);Curtime[5]=Curtime[5]+w;if(Curtime[5]==8)Curtim
6、e[5]=1;w=0;Set1302(Curtime);}elseif(YEAR==0)//更改年份{while(YEAR==0){};Get1302(Curtime);Curtime[6]=add5(Curtime[6]);Set1302(Curtime);}elseif(MONTH==0)//更改月份{while(MONTH==0){};Get1302(Curtime);Curtime[4]=add4(Curtime[4]);Set1302(Curtime);}elseif(DAY==0)//更改号数{while(DAY==0){};
7、Get1302(Curtime);Curtime[3]=add3(Curtime[3]);Set1302(Curtime);}elseif(HOUR==0)//更改时{while(HOUR==0){};Get1302(Curtime);Curtime[2]=add2(Curtime[2]);Set1302(Curtime);}elseif(MIN==0)//更改分{while(MIN==0){};Get1302(Curtime);Curtime[1]=add1(Curtime[1]);Set1302(Curtime);}elseif(SE
8、C==0)//更改秒{while(SEC==0){};Get1302(Curtime);Curtime[0]=0;Set1302(Curtime);}if(CHAN==0)//是否有显示切换{
此文档下载收益归作者所有