- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)
您可能关注的文档
- 《产电LG PLC MASTER K 编程手册中文高清版 》.pdf
- 《人教(新版)英语六下《Unit5 Save our planet》(第二课时)ppt课件 》.ppt
- 《从 PIC18F移植至 PIC24F:概述》.pdf
- 《以太网PIC18F97J60》.pdf
- 《传感器与PLC编程技术基础》.ppt
- 《使用photoshop软件进行绘画》.doc
- 《使用新规范与pkpm系列软件时设计人员常遇问题及对策》.ppt
- 《信息化管理指南-从 PLM 解决方案谈制造业知识管理》.doc
- 《光学级聚酯薄膜(PET)薄膜项目可行性研究报告》.ppt
- 《克里切利《大陆哲学》(Continental Philosophy)》.pdf
文档评论(0)