ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:66.50KB ,
资源ID:7010295      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7010295.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(液晶显示电冰箱温控器源程序.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

液晶显示电冰箱温控器源程序.doc

1、液晶显示电冰箱温控器源程序 #include //器件配置文件 #include sbit LCM_RS=P3^3; //引脚定义 sbit LCM_RW=P3^4; //引脚定义 sbit LCM_EN=P3^5; //引脚定义 sbit OUT=P3^6; //控制继电器 sbit TSOR=P3^7; //温度测试端 #define Busy 0x80 //常量定义 #define uchar unsigned char #define uint unsigned

2、int #define DATAPORT P1 #define reset() {WDT=0x1e;WDT=0xe1;}//看门狗启动/复位宏定义 sfr WDT=0xa6;//看门狗寄存器定义 bit ON_OFF; bit outflag; //============================================== uchar temp1,temp2; uchar cnt; uchar deda,sec; //时间变量 char min,hour; char set,T; uchar data buff[10]; uchar ReadSt

3、atusLCM(void);//读数据到MCU子函数声明 uchar code str0[]={"--- : : --- "};//待显字符串 uchar code str1[]={"SET: C SA: . C"}; uchar code str2[]={" "};//待显空字符串 //====================函数声明======================= void fun0(void); void fun1(void); void fun2(void); void fun3(void); void set_

4、adj(void); void inc_key(void); void dec_key(void); void key(void); void gettempTS(void); void initTS(void); uchar readBTS(void); void writeBTS(uchar byte); void resetTS(void); bit readTS(void); void write1TS(void); void write0TS(void); void delay15us(void); void delay60us(void); //**

5、延时K*1mS,12.000MHz********* void delay(uint k)//函数名为delay的延时子函数。定义k为无符号整型变量 { //delay函数开始 uint i,j; //定义i、j为无符号整型变量 for(i=0;i

6、 /*-----------------------------写指令到LCM子函数-------------------------------*/ void WriteCommandLCM(uchar WCLCM, uchar BusyC) /*函数名为WriteCommandLCM 的写指令到LCM子函数。定义WCLCM、BusyC 为无符号字符型变量*/ { //WriteCommandLCM函数开始 if(BusyC)ReadStatusLCM(); /*若BusyC为"1",则调用ReadStatus

7、LCM子函数进行忙检测*/ DATAPORT=WCLCM; //将变量WCLCM中的指令传送至P1口 LCM_RS=0; //选中指令寄存器 LCM_RW=0; //写模式 LCM_EN=0; //置LCM_EN端为低电平 LCM_EN=0; //置LCM_EN端为低电平,延时一会儿 LCM_EN=1; //置LCM_EN端为高电平,写入使能 } // WriteCommandLCM函数结束 /*

8、写数据到LCM子函数-------------------------------*/ void WriteDataLCM(uchar WDLCM) /*函数名为WriteDataLCM 的写数据到LCM子函数。定义WDLCM 为无符号字符型变量*/ { // WriteDataLCM函数开始 ReadStatusLCM(); //调用ReadStatusLCM子函数检测忙信号 DATAPORT=WDLCM; //将变量WDLCM中数据传送至P

9、1口 LCM_RS=1; //选中数据寄存器 LCM_RW=0; //写模式 LCM_EN=0; //置LCM_EN端为低电平 LCM_EN=0; //置LCM_EN端为低电平,延时一会儿 LCM_EN=1; //置LCM_EN端为高电平,写入使能 } // WriteDataLCM函数结束 /*--------------------------------读数据到MCU子函数--------------

10、/ /*uchar ReadDataLCM(void) //函数名为ReadDataLCM的读数据到MCU子函数 { // ReadDataLCM函数开始 LCM_RS=1; //选中数据寄存器 LCM_RW=1; //读模式 LCM_EN=0; //置LCM_EN端为低电平 LCM_EN=0; //置LCM_EN端为低电平,延时一会儿 LCM_EN=1; //置LCM_EN端为

11、高电平,读使能 return(DATAPORT); //返回P1口的内容 }*/ // ReadDataLCM函数结束 /*--------------------------------读状态到MCU子函数-----------------------------*/ uchar ReadStatusLCM(void) //函数名为ReadStatusLCM的读状态到MCU子函数 { //ReadStatusLCM函数开始 DATAPORT=0xFF;

12、 //置P1口为全1 LCM_RS=0; //选中指令寄存器 LCM_RW=1; //读模式 LCM_EN=0; //置LCM_EN端为低电平 LCM_EN=0; //置LCM_EN端为低电平,延时一会儿 LCM_EN=1; //置LCM_EN端为高电平,读使能 while(P1&Busy); /*检测忙信号。当P1口内容与Busy(80H)相与后不为零时,程序原地踏步*/ return(DATAPORT);

13、 //返回P1口的内容 } // ReadStatusLCM函数结束 /*--------------------------LCM初始化子函数----------------------------*/ void InitLcd() //函数名为InitLcd 的LCM初始化子函数 { // InitLcd函数开始 WriteCommandLCM(0x38,1);//8位数据传送,2行显示,5*7字形,检测忙信号 WriteCommand

14、LCM(0x08,1);//关闭显示,检测忙信号 WriteCommandLCM(0x01,1);//清屏,检测忙信号 WriteCommandLCM(0x06,1);//显示光标右移设置,检测忙信号 WriteCommandLCM(0x0c,1);//显示屏打开,光标不显示、不闪烁,检测忙信号 } // InitLcd函数结束 /*-------------------显示指定座标的一个字符子函数---------------------------*/ /*显示指定座标的一个字符(X=0~15,Y=0~1)子函数,函数名为Displa

15、yOneChar,定义X、Y、DData为无符号字符型变量*/ void DisplayOneChar(uchar X,uchar Y,uchar DData) { // DisplayOneChar 函数开始 Y&=1; //Y的变化范围0~1 X&=15; // X的变化范围0~15 if(Y)X|=0x40; //若Y为1(显示第二行),地址码+0x40 X|=0x80; //指令码为地址码+0x80 WriteC

16、ommandLCM(X,0); //将指令X写入LCM,忽略忙信号检测 WriteDataLCM(DData); //再将数据Ddata写入LCM } // DisplayOneChar 函数结束 /*--------------------显示指定座标的一串字符子函数----------------------*/ /*显示指定座标的一串字符(X=0~15,Y=0~1)子函数,函数名为DisplayListChar ,定义X、Y为无符号字符型变量,DData 为指向code区的无符号字符型指针变量*/ void DisplayLi

17、stChar(uchar X,uchar Y,uchar code *DData) { // DisplayListChar 函数开始 uchar ListLength=0; //定义ListLength 为无符号字符型变量,并赋初值为0 Y&=0x1; // Y的变化范围0~1 X&=0xF; // X的变化范围0~15 while(X<=15) //X<=15时进入while语句循环 { //while语句开

18、始 DisplayOneChar(X,Y,DData[ListLength]);//显示单个字符 ListLength++; //数组指针递增 X++; //X轴座标递增 } //while语句结束 } //DisplayListChar 函数结束 //================================================= void init_timer0(void) //定时器T0初始化 { TMOD=0

19、x01; TH0=-(50235/256); TL0=-(50235%256); TR0=1; ET0=1;EA=1; } //================================================== void time_zd0(void) interrupt 1 using 1 //定时器T0中断子函数 { TH0=-(50235/256); TL0=-(50235%256); deda++;cnt++; if(deda>=20){sec++;deda=0;} if(sec>=60){min++;sec=0;} if(min>=60)

20、{hour++;min=0;} if(hour>=24){hour=0;} if(cnt>=6)cnt=0; key(); //扫描键盘 } //================================== void fun0(void) //液晶显示子函数0 { WriteCommandLCM(0x0c,1);//显示屏打开,光标不显示、不闪烁,检测忙信号 DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); //=============================== Disp

21、layOneChar(3,0,hour/10+0x30); DisplayOneChar(4,0,hour%10+0x30); //========================= DisplayOneChar(6,0,min/10+0x30); DisplayOneChar(7,0,min%10+0x30); //============================== DisplayOneChar(9,0,sec/10+0x30); DisplayOneChar(10,0,sec%10+0x30); //================================

22、 DisplayOneChar(4,1,T/10+0x30); DisplayOneChar(5,1,T%10+0x30); //================================= DisplayOneChar(11,1,temp1/10+0x30); DisplayOneChar(12,1,temp1%10+0x30); DisplayOneChar(14,1,temp2+0x30); //================================ if(ON_OFF==0) { DisplayOneChar(14,0,0x4f); Di

23、splayOneChar(15,0,0x46); } else { DisplayOneChar(14,0,0x4f); DisplayOneChar(15,0,0x4e); if(outflag==1)DisplayOneChar(0,0,0x7c); else DisplayOneChar(0,0,0xef); } //============================ } /*******************************************/ void fun1(void) //液晶显示子函数1 { Wr

24、iteCommandLCM(0x0c,1);//显示屏打开,光标不显示、不闪烁,检测忙信号 DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); //========================= DisplayOneChar(6,0,min/10+0x30); DisplayOneChar(7,0,min%10+0x30); //============================== DisplayOneChar(9,0,sec/10+0x30); DisplayOneChar(10,0,sec%10+0x30)

25、 //================================= DisplayOneChar(4,1,T/10+0x30); DisplayOneChar(5,1,T%10+0x30); //================================= DisplayOneChar(11,1,temp1/10+0x30); DisplayOneChar(12,1,temp1%10+0x30); DisplayOneChar(14,1,temp2+0x30); //================================= WriteCommandLC

26、M(0x0f,1);//显示屏打开,光标显示、闪烁,检测忙信号 DisplayOneChar(3,0,hour/10+0x30); DisplayOneChar(4,0,hour%10+0x30); } /********************************************/ void fun2(void) //液晶显示子函数2 { WriteCommandLCM(0x0c,1);//显示屏打开,光标不显示、不闪烁,检测忙信号 DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); //=

27、 DisplayOneChar(3,0,hour/10+0x30); DisplayOneChar(4,0,hour%10+0x30); //================================= DisplayOneChar(9,0,sec/10+0x30); DisplayOneChar(10,0,sec%10+0x30); //================================= DisplayOneChar(4,1,T/10+0x30); DisplayOneChar(5,1,T%10+0x30)

28、 //================================= DisplayOneChar(11,1,temp1/10+0x30); DisplayOneChar(12,1,temp1%10+0x30); DisplayOneChar(14,1,temp2+0x30); //=================================== WriteCommandLCM(0x0f,1);//显示屏打开,光标显示、闪烁,检测忙信号 DisplayOneChar(6,0,min/10+0x30); DisplayOneChar(7,0,min%10+0x30);

29、 } /***************************************/ void fun3(void) //液晶显示子函数3 { WriteCommandLCM(0x0c,1);//显示屏打开,光标不显示、不闪烁,检测忙信号 DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); //========================= DisplayOneChar(3,0,hour/10+0x30); DisplayOneChar(4,0,hour%10+0x30); //=========

30、 DisplayOneChar(6,0,min/10+0x30); DisplayOneChar(7,0,min%10+0x30); //================================= DisplayOneChar(9,0,sec/10+0x30); DisplayOneChar(10,0,sec%10+0x30); //================================= DisplayOneChar(11,1,temp1/10+0x30); DisplayOneChar(12,1,temp1%10

31、0x30); DisplayOneChar(14,1,temp2+0x30); //================================= WriteCommandLCM(0x0f,1);//显示屏打开,光标显示、闪烁,检测忙信号 DisplayOneChar(4,1,T/10+0x30); DisplayOneChar(5,1,T%10+0x30); } /************************************/ void key(void) //扫描键盘 {uchar xx; P2=0xff; if(P2!=0xff)

32、{delay(10); if(P2!=0xff) {xx=P2; switch(xx) { case 0xfe:set_adj();break; case 0xfd:inc_key();break; case 0xfb:dec_key();break; case 0xf7:ON_OFF=!ON_OFF;break; default:break; } } } } /************************************/ void set_adj(void) //设定工作模式子函

33、数 { if(cnt==5) {set++; if(set>=4)set=0; } } /***************************************/ void inc_key(void) //按键加法子函数 { if(cnt==5) { switch(set) { case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break; case 1:hour++;if(hour>=23)hour=23;break; case 2:min++;if(min>=59)min=59;break;

34、 case 3:T++;if(T>=99)T=99; break; default:break; } } } /***************************************/ void dec_key(void) //按键减法子函数 { if(cnt==5) { switch(set) { case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break; case 1:hour--;if(hour<=0)hour=0;break; case 2:min--;if(min<=0)min=

35、0;break; case 3:T--;if(T<=1)T=1;break; default:break; } } } /***************************************/ /*****************************************/ void delay15us(void) //延时15微秒子函数 { uchar i; for(i=0;i<4;i++); } //************************************************* void delay60

36、us(void) 延时60微秒子函数 { uchar i; for(i=0;i<15;i++); } //*************************************************** void write0TS(void) //write bit0 { TSOR=1; TSOR=0; delay15us();delay15us();delay15us();delay15us(); TSOR=1; _nop_(); _nop_(); } //****************************************

37、 void write1TS(void) //write bit1 { TSOR=1; TSOR=0; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); TSOR=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); delay15us();delay15us();delay15us(); } //****************************** bit readTS(void) /

38、/read databit { bit b; TSOR=1; TSOR=0; _nop_();_nop_();_nop_();_nop_(); TSOR=1; _nop_();_nop_();_nop_();_nop_();_nop_(); b=TSOR; delay15us();delay15us();delay15us(); _nop_();_nop_(); return b; } //************************************* void resetTS(void) //reset databit {uchar i;

39、 TSOR=1; TSOR=0; for(i=0;i<8;i++)delay60us(); TSOR=1; while(TSOR); for(i=0;i<8;i++)delay60us(); } //*************************************** void writeBTS(uchar byte) //write one byte {uchar i; for(i=0;i<8;i++) { if(byte&0x01) write1TS(); else write0TS(); byte=byte>>1; } } //*

40、 uchar readBTS(void) //read one byte {uchar i,j; bit b; j=0; for(i=0;i<8;i++) { b=readTS(); if(b)j+=1; j=_cror_(j,1); } return j; } //************************************************ void initTS(void) //初始化DS18B20 { resetTS(); writeBTS

41、0xcc); writeBTS(0x4e); writeBTS(0x64); writeBTS(0x8a); writeBTS(0x1f); } //****************************************************** void gettempTS(void) //读取测得的环境温度 { resetTS(); writeBTS(0xcc); writeBTS(0x44); delay(200); resetTS(); writeBTS(0xcc); writeBTS(0xbe); temp2=readBTS();

42、 temp1=readBTS(); readBTS();readBTS();readBTS();readBTS(); readBTS();readBTS();readBTS(); temp1=temp1<<4; temp1+=(temp2&0xf0)>>4; temp2=(temp2&0x0f)?5:0; } //********主函数********* void main(void) { delay(500); //延时500ms,等电源稳定 InitLcd(); //LCM初

43、始化 init_timer0(); DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); initTS(); reset() for(;;) { //======================== switch(set) //LCD根据工作模式进行显示 { case 0:fun0();break; case 1:fun1();break; case 2:fun2();break; case 3:fun3();break; default:break; } delay(300); gettempTS(); //读取测得的环境温度 if(ON_OFF==1) //控制压缩机动作 { if(temp1>=T+1){delay(1000); if(temp1>=T+1){outflag=1;OUT=0;} } if(temp1

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服