|
带日历时钟及温度显示的电子万年历 附件里面的程序不全 但是hex好使
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):
单片机源程序如下:
- //-----------------------------------------------------------------
- // 名称: 带日历时钟及温度显示的电子万年历
- //-----------------------------------------------------------------
- // 说明: 本例使用了DS1302读取日期时间,用TC72获取温度数据
- // 通过74HC595驱动数码管显示.
- //
- //-----------------------------------------------------------------
- #include <reg51.h>
- #include <intrins.h>
- #include <stdio.h>
- #include <string.h>
- #define INT8U unsigned char
- #define INT16U unsigned int
- const INT8U SEG_CODE[]= //0~9的段码,摄氏度段码(2字节),黑屏段码,负号段码
- { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0xC6,0x9C,0xFF,0xBF};
- INT8U DateTime[7] = {5,4,3,2,1,5,12}; //假定时间12年1月2日,3点,4分5秒
- sbit DS = P3^0; //串行数据输入
- sbit SH_CP = P3^1; //移位时钟脉冲
- sbit ST_CP = P3^2; //输出锁存器控制脉冲
- extern void Init_DS1302();
- extern void GetDateTime();
- extern void SetDateTime();
- extern INT8U CurrDateTime[];
- extern void Config_TC72();
- extern float Read_TC72_Temperature();
- //所有数码管的显示缓冲(年有高2位固定为20),最后2位固定为摄氏度段码索引
- INT8U disp_buff[21] = {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,10};
- //-----------------------------------------------------------------
- // 延时函数
- //-----------------------------------------------------------------
- void delay_ms(INT16U x) { INT8U t; while(x--) for(t = 0; t<120; t++);}
- //-----------------------------------------------------------------
- // 1字节数据串行输入595子程序
- //-----------------------------------------------------------------
- void Serial_Input_595(INT8U d)
- {
- }
- //-----------------------------------------------------------------
- // 595并行输出子程序
- //-----------------------------------------------------------------
- void Parallel_Output_595()
- {
- }
- //------------------------------------------------------------------
- // 主程序
- //------------------------------------------------------------------
- void main()
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
01 带日历时钟及温度显示的电子万年历.rar
(38.43 KB, 下载次数: 32)
|
|