《基于PIC16F877A单片机的温度,时间显示》.doc

《基于PIC16F877A单片机的温度,时间显示》.doc

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《基于PIC16F877A单片机的温度,时间显示》.doc

基于PIC16F877A单片机的温度,时间显示 #includepic.h __CONFIG(0x3B31); #define rs RD0 #define rw RD1 #define en RD2 #define BEEP RD3 #define s1 RA0 #define s2 RA1 #define s3 RA2 #define s4 RA3 #define uint unsigned int #define uchar unsigned char signed char set_time[7]={0,58,23,6,1,5,12};//秒 分 时 星期 日 月 年 signed char read_time[7]={0,0,0,0,0,0,0}; signed char shi=7,fen=15,alarm_time=1,reapeat_fen=2,cent;//闹钟时,闹钟分,闹铃响分钟,闹铃响间隔 uchar s1_num,s2_num; const uchar alarm[]={ALARM TIME:}; const uchar mode[]={MODE:}; const uchar rpt[]={RPT:}; const uchar min[]={min}; void PORT_INIT() { TRISA=0xff;//A口设置为输入 ADCON1=0x06;//RA口上电复位为模拟输入口 TRISC3=1;//SCL和SDA设置为输入 TRISC4=1; TRISD=0x00;//D口设置为输出 } void IIC_INIT() { SSPCON=0x28; STAT_SMP=0; SSPADD=4; } void delayms(uint z)//延时 函数 { uint x,y; for(x=z;x0;x--) for(y=110;y0;y--); } void delayus(uint k) { while(k--); } void write_byte_low(uchar R1,uchar flag0)//写一个字节的低4位,flag0为指令/数据选择位 { //,0为写指令,1为写数据 uchar low; rs=flag0; low=R10x0f; low=low4; PORTD=0x0f;NOP(); PORTD|=low;NOP();//写指令的低4位 en=1;delayus(20);en=0; } void lcd_write(uchar dat,uchar flag1)//写指令/数据到1602 { uchar dat_high,dat_low; dat_high=dat4; write_byte_low(dat_high,flag1); dat_low=dat0x0f; write_byte_low(dat_low,flag1); NOP(); } void write_string(uchar address,uchar const *str)//往指定的地址写字符串 { uchar i=0; lcd_write(address,0); while(str[i]!=\0) { lcd_write(str[i],1); delayus(5); i++; } } void LCD_INIT()//初始化函数 { rw=0; en=0; delayms(20); write_byte_low(0b0011,0); delayms(1); write_byte_low(0b0011,0); delayus(10); write_byte_low(0b0011,0); delayus(10); write_byte_low(0b0010,0); delayms(1); lcd_write(0x28,0); delayms(5); lcd_write(0x0c,0); delayms(5); lcd_write(0x01,0); delayms(5); lcd_write(0x06,0); delayms(5); } void naoling() { uchar i; for(i=0;i20;i++) { BEEP=1; delayus(5); BEEP=0; delayus(5); } } void IIC_SEND(uchar num) { SSPBUF=num; while(STAT_RW==1);//等待发送结束 while(SSPIF==0); while(ACKSTAT==1)

文档评论(0)

wgvi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档