×

DS1302 DS18B20 LCD1602电子时钟 (1)

消耗积分:2 | 格式:zip | 大小:5KB | 2014-05-24

纪鹏专属

分享资料个

单片机用于电子时钟的设计,实现闹钟、温度等等功能的程序

/*******************************************************************************

*标题: 可调的DS1302时钟在LCD1602上显示 *

* *

********************************************************************************

*接线:JP8接JP5、蜂鸣器短路帽的左端接到P2^1(用一根杜邦线) *

*用杜邦线把P2^0连到led灯上(任意一个) *

*说明:本实验是在普中科技单片机开发板HC6800EM3上实现的 *

********************************************************************************/

#include《reg52.h》

#include 《intrins.h》

#define uchar unsigned char

#define uint unsigned int

sbit SCK=P3^6; //时钟

sbit SDA=P3^4; //数据

sbit RST=P3^5; // DS1302复位

sbit lcdrs=P2^7;

sbit lcdrw=P2^6;

sbit lcden=P2^5;

sbit key1=P1^0; //开调时键

sbit key2=P1^1; //调时加键

sbit key3=P1^2; //调时减键

sbit key4=P1^3; //开设定闹铃键

sbit key5=P1^4; //返回正常显示键

sbit key6=P1^5; //闹铃开关键

sbit DQ=P3^7; //温度传感器数据通信位

sbit beep = P2^1; //蜂鸣器控制IO口

sbit led1 = P2^0; //led灯,闹铃响标志

bit ReadRTC_Flag,Display_Flag,Alarm_Flag,flag; //定义标志位

uchar miao,fen,shi,ri,yue,week,nian,T,C=0,k=0,m=0,n=0;

uchar set_miao,set_fen,set_shi,set_ri,set_yue,set_nian,TempBuffer[5],temp_value;

char l_tmpdate[7]={0x50,0x08,0x011,0x07,0x10,0x01,0x12};//设置初始时间,秒分时日月周年12-10-07 01:08:50

uchar code write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年 最低位写位

uchar code read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; //秒分时日月周年 最低位读位

uchar code table1[]=“SUN”; //星期字表

uchar code table2[]=“MON”;

uchar code table3[]=“TUE”;

uchar code table4[]=“WED”;

uchar code table5[]=“THU”;

uchar code table6[]=“FRI”;

uchar code table7[]=“SAT”;

uchar code tab1[]=“20 - - ”;

uchar code tab2[]=“ : :”;

uchar code tab3[14]=“ Set Alarm! ”;

char tab4[]={0,0,12};

/******************************************************************/

/* 函数声明 */

/******************************************************************/

void Init_DS18B20(void);

unsigned char ReadOneChar(void);

void WriteOneChar(uchar dat);

void ReadTemp(void);

void temp_to_str(); //温度数据转换成液晶字符显示

void Write_Ds1302_byte(uchar temp);

void Write_Ds1302( uchar address,uchar dat );

uchar Read_Ds1302 ( uchar address );

void Read_RTC(void);

void Set_RTC(void);

void delay(uchar a);

void delay1(uchar a);

void di();

void lcd_mang();

void write_lcd1602(uchar cmd,uchar i);

void ini_lcd1602();

void write_week(uchar xq);

void write_nyr(uchar add,uchar dat);

void write_sfm(uchar add,uchar dat);

void display();

void keyscan();

void alarm();

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(1)
发评论
Abenl 2018-01-27
0 回复 举报
很好的资料 收起回复

下载排行榜

全部1条评论

快来发表一下你的评论吧 !