- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《基于PIC16F887和1307的数字万年历c程序代码》.pdf
#includepic.h
__CONFIG (0x20F1);
__CONFIG (0x3FFF); //调试用
#define LCD_E RD6 //LCDE 读写使能控制
#define LCD_RW RD5//LCD 读(1)/写(0)控制线
#define LCD_RS RD4//LCD 寄存器选择 数据(1)指令(0)
//RD4-RD7分别接DB4-DB7,RD7为忙标志
#defineCOM 0 //在LCD_WRITE()中的第2参数为0表示写命令
#defineDAT 1 //在LCD_WRITE()中的第2参数为1表示写数据
#definemodRB3//模式选择(时间、闹钟、温度、秒表)
#definesetRB0//选择按键
#defineaddRB1//加按键
#definemiuRB2//减按键
#defineRTR 0//TC74的读温度命令
#defineTC74_ADD 0b1001101 //TC74的7位地址
#defineLINE1 0
#defineLINE2 0
signedchar hourt,mint,sect;//闹钟设置位
intf;//闹钟显示清零判断
charflag=0;//按键标志位
char WW,QW,BW,SW,GW,M;
chartable[]=MonTueWedThuFri SatSun ;//星期
signedcharyear,month,day,week,hour,min,sec,a,T;
bank1charDD[16]; //一行LCD 显示数据暂存
charA[7];//DS1307读数
//====LCD 程序
voidCSH(void); //初始化
voidLCD_CSH(void); //LCD初始化
voidLCD_BUSY(void); //检测LCD 是否忙
charLCD_READ(void); //读LCD,忙检测用
voidLCD_WRITE(char,char); //LCD写1字节,命令或数据
voidLCD_WRITE_4(char,char); //LCD写半字节
voidDISP_C(char); //在指定行中显示字符,字符在数组DD中
voidDISP_MENU(constchar*); //由常数数组显示整屏字符
voidDELAY_US(char);
voidDELAY(unsignedint);
voiddelaynms(unsigned int);
//===DS1307
voidIIC_SEND(char);
voidIIC_CSH(void);
voidREAD_DS1307(charaddr,charn);
voidwrite_DS1307(charaddr,chardata);
voidDS1307_CSH(void);//DS1307初始化
voidMENU_DS1307(void);
//==温度
voidDISP_T(signed charR1); //温度在R1
signedcharREAD_T(void);
voidclock();//闹钟
voidset_time(void);//按键
voidbcd_dec(charadr,charR);
chardec_bcd(chardec);
voidBCD(unsignedintR1);
voidguangbiao(void);//光标
//========主程序
voidmain()
{
CSH();
READ_DS1307(0,7);//读DS1307
if(A[0]0x80)
DS1307_CSH();//判断是否初始化
while(1)
{
clock();
set_time(
文档评论(0)