- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电热水器自动控温完整系统下位机
电热水器自动控温系统的设计与实现
———下位机
电路图
源程序代
#include math.h
#include reg51.h
#include INTRINS.H
#define N 4
sbit adcstartale =P3^6 ;
sbit adc_con=P2^7;
sbit adcoe=P3^7 ;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit int_0=P3^2;
sbit int_1=P3^3;
sbit P15=P1^5;
sbit P16=P1^6;
void delay();
void delay1();
void inituart(void);
unsigned char gettemper();
void fillbuff();
void showbuff();
void led();
void keyprocess() ;
void filter();
void send_char();
code unsigned char ledtable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//段码 0--9,-
code unsigned char ledtable1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//段码 0.--9.
unsigned char video_buff[6]= ;// 显示缓冲区
unsigned char level; //键值
unsigned char levelflag; //是否按键按下
unsigned char temperflag; // 温度是否相同
unsigned char temper; //温度
//主函数
void main()
{
EX1=1; // 允许INT1中断
EA=1; // 中断总允许
IT1=1; // INT1边沿触发方式
level=0; // 初始键值
levelflag=0;// 无键按下标志
temperflag=0; //键值
temper=0; //adc初始值
P16=0;
inituart();//串口初始化
while(1)
{
filter();
delay1();
showbuff(); // 显示温度值
led();
if(levelflag||temperflag)
{
send_char();//如果有按键按下或者采集到的值与前一刻不相同时,将//温度或档位发给上位机
}
}
}
//延时函数
void delay()
{
int i,j;
for(i=0;i50;i++)
for(j=0;j1;j++);
}
void delay1()
{
int i,j;
for(i=0;i150;i++)
for(j=0;j25;j++);
}
//检测
void led()
{
if(level==1)
if((video_buff[3]==level)||((video_buff[3]==level+1)(video_buff[4]==0))) P16=0;
else P16=1;//如果有按键按下或者采集到的值与前一刻不相同时,将温度或档位发给上位机
else
if(((video_buff[3]==level)(video_buff[4]!=0))||((video_buff[3]==level+1)(video_buff[4]==0))) P16=0;
else P16=1; //如果有按键按下或者采集到的值与前一刻不相同时,将温度或档位发给上位机
}
//得到采样值
unsigned char gettemper()
{
unsigned char adcdata;
EA=0; //采样时关闭所有中断
adc_con=0;
adcstartale=0; _nop_();_nop_();
adcstartale=1; //启动A/D转换,下降沿有效
P0=0xff;
while(int_0==0); //等待转换完成
adcoe=0; //允许读ADC0808
adcdata=P0; //将转换后的数据送单片机的P0口
adcoe=1; // 不允许读ADC0808
您可能关注的文档
最近下载
- 糖尿病视网膜病变的诊断与治疗.ppt VIP
- 劳动课洗衣服教案.pdf VIP
- 2022年版中小学义务教育《语文新课程标准》第一学段“表达与交流”课程要求解读.pptx VIP
- 体验中国传统手工艺.pptx VIP
- 子藏 笔记 后山谈丛-宋-陈师道.docx VIP
- 胎心监护(共70张课件).pptx VIP
- 2022版语文新课标:第一学段“表达与交流”课程要求解读.pdf VIP
- 2025人教版八年级上册英语 Unit 4 Amazing Plants and Animals 第1课时教案 .docx
- 《局域网组建实例教程》课件第10章.pptx VIP
- 精编李佳行政法讲义资料.pdf VIP
文档评论(0)