完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
//=========================================/ #include #include #include //--------------------------------------------------------- #define PORT P2 #define NEGAtiVE 10 #define POSITIVE 11 #define Y 0XFF #define N 0x00 #define LOW 0X00 #define HI 0x01 //读端口数据----------------------------------------------- #define POWERON ((P1&(1<<0))>>0) //p1.0 #define POWEROFF ((P1&(1<<1))>>1) //p1.1 #define MODEL ((P1&(1<<2))>>2) //p1.2 #define ADD ((P1&(1<<3))>>3) //P1.3 #define DEC ((P1&(1<<4))>>4) //P1.4 #define OK ((P1&(1<<5))>>5) //P1.5 //写端口数据------------------------------------------------ ***it HOT =P3^0; ***it workingled =P3^1; ***it timerled =P3^2; ***it baowenled =P3^3; ***it baotangled =P3^4; ***it zhufanled =P3^5; ***it RS =P0^0; ***it RW =P0^1; ***it EN =P0^2; ***it DQ =P1^7; //------------------------------------------------------ unsigned char code shuzidaima[]= {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2d,0x2b}; unsigned char temp_lowbyte_unprocess; unsigned char temp_hibyte_unprocess; unsigned char temp_xiao; unsigned char temp_ge; unsigned char temp_shi; unsigned char temp_bai; unsigned char temp_fuhao; //------------------------------------------------------- unsigned char poweron=N; unsigned char model=0; unsigned char dest_temp=0; unsigned char now_temp=255; signed int min_num=0; unsigned char timersetting_state=0; unsigned char timing_state=N; unsigned int loop=0; unsigned char loop1=0; unsigned char loop2=0; unsigned int loop3=0; /*=======子程序=======*/ //---------------------------------------------------------------- //函数名:delay() //----------------------------------------------------------------- void delay() { unsigned int i; for(i=0;i<=800;i++) {;} } //---------------------------------------------------------------- //---------------------------------------------------------------- //函数名:lcd_wcomd() //----------------------------------------------------------------- void lcd_wcomd(unsigned char command) { RS=0; RW=0; PORT=command; delay(); EN=1; _nop_(); EN=0; delay(); } //---------------------------------------------------------------- //函数名:lcd_wdata() //----------------------------------------------------------------- void lcd_wdata(unsigned char dat) { RS=1; RW=0; PORT=dat; delay(); EN=1; _nop_(); EN=0; delay(); } //---------------------------------------------------------------- //函数名:lcd_ini() //----------------------------------------------------------------- void lcd_ini() { lcd_wcomd(0x01); lcd_wcomd(0x06); lcd_wcomd(0x0c); lcd_wcomd(0x38); } //---------------------------------------------------------------- //函数名:printchar() //----------------------------------------------------------------- void printchar(unsigned char zifu[]) { unsigned char j,k; k=strlen(zifu); for(j=0;j<=k-1;j++) { lcd_wdata(zifu[j]); } } //---------------------------------------------------------------- //函数名:display_num() //----------------------------------------------------------------- void display_num(unsigned char shuzi_in) { lcd_wdata(shuzidaima[shuzi_in]); } //---------------------------------------------------------------- //函数名:display_1602() //----------------------------------------------------------------- void display_1602() { lcd_wcomd(0x80+0x00); printchar("Model:"); lcd_wcomd(0x80+0x07); if(timersetting_state>=1) { printchar("TimerSet "); } else { if(model==0) { printchar("-- -- "); } if(model==1) { printchar("KeepWarm"); } if(model==2) { printchar("PotSoup "); } if(model==3) { printchar("CookRice"); } } } //---------------------------------------------------------------- //函数名:delay1() //----------------------------------------------------------------- void delay1(unsigned int n) { for(n;n>0;n--) {;} } //---------------------------------------------------------------- //函数名:rest_1820() //----------------------------------------------------------------- void rest_1820() { DQ=0; DQ=1; delay1(77); } //---------------------------------------------------------------- //函数名:write_18b20(unsigned char xiecan) //----------------------------------------------------------------- void write_18b20(unsigned char xiecan) { unsigned char xie_i; for(xie_i=1;xie_i<=8;xie_i++) { DQ=0; delay1(1); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_(); _nop_();DQ=1; DQ=0x01&xiecan; delay1(6); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); DQ=1; _nop_();_nop_();_nop_(); _nop_();_nop_(); xiecan=xiecan>>1; } } //---------------------------------------------------------------- //函数名:read_18b20() //----------------------------------------------------------------- unsigned char read_18b20() { unsigned char du_i; unsigned char outdata_1820=0x00; unsigned char tmp_du=0x00; for(du_i=1;du_i<=8;du_i++) { DQ=1; DQ=0; _nop_(); _nop_(); DQ=1; _nop_(); tmp_du=P1&0x80; tmp_du=tmp_du<<0; outdata_1820=outdata_1820|tmp_du; delay1(8); if(du_i==8)break; outdata_1820=outdata_1820>>1; } return(outdata_1820); } //---------------------------------------------------------------- //函数名: readtemp_conver() //----------------------------------------------------------------- void readtemp_conver() { rest_1820(); write_18b20(0xcc); write_18b20(0x44); } //---------------------------------------------------------------- //函数名: readtemp_readdata() //----------------------------------------------------------------- void readtemp_readdata() { rest_1820(); write_18b20(0xcc); write_18b20(0xbe); temp_lowbyte_unprocess=read_18b20(); temp_hibyte_unprocess=read_18b20(); } //--------------------------------- //函数名: chazhi() //----------------------------------- unsigned char chazhi(unsigned char h_data) { if(h_data<=0x05) { if(h_data==0x00)return(0); if(h_data==0x01)return(1); if(h_data==0x02)return(2); if(h_data==0x03)return(3); if(h_data==0x04)return(4); if(h_data==0x05)return(5); } else if(h_data<=0x0a) { if(h_data==0x06)return(6); if(h_data==0x07)return(7); if(h_data==0x08)return(8); if(h_data==0x09)return(9); if(h_data==0x0a)return(10); } else { if(h_data==0x0b)return(11); if(h_data==0x0c)return(12); if(h_data==0x0d)return(13); if(h_data==0x0e)return(14); if(h_data==0x0f)return(15); else return(0); } } //---------------------------------------------------------------- //函数名:readtemp_process() //----------------------------------------------------------------- unsigned int readtemp_process() { unsigned char hex_canshu; unsigned int dec_jieguo; unsigned char hex_gao,hex_di; hex_di=hex_canshu&0x0f; hex_gao=hex_canshu>>4; hex_di=chazhi(hex_di); hex_gao=chazhi(hex_gao); dec_jieguo=hex_gao*16+hex_di; return(dec_jieguo); } //--------------- //函数名:Init_DS18B20() //------------------ void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 delay1(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delay1(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay1(4); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay1(20); } //---------------------------------------------------------------- //函数名:key() //----------------------------------------------------------------- void key() { if(POWERON==LOW) { poweron=Y; workingled=0; model=0; } if(POWEROFF==LOW) { poweron=N; workingled=1; model=0; } if(poweron==Y) { if(model>1&&now_temp>dest_temp) { model=1; } if(MODEL==LOW&&loop>3) { model++; if(model==4) { model=1; } loop=0; } if(ADD==LOW&&timersetting_state>=1&&loop>3) { if(timersetting_state==1) { min_num=min_num+60; if(min_num>720) { min_num=0; } } if(timersetting_state==2) { min_num=min_num+1; if(min_num>720) { min_num=0; } } loop=0; } if(DEC==LOW&&timersetting_state>=1&&loop>3) { if(timersetting_state==1) { min_num=min_num-60; if(min_num<=0) { min_num=0; } } if(timersetting_state==2) { min_num=min_num-1; if(min_num<=0) { min_num=0; } } loop=0; } if(OK==LOW&&loop>3) { timersetting_state++; if(timersetting_state>=3) { timersetting_state=0; timing_state=Y; } loop=0; } } } //---------------------------------------------------------------- //函数名:model_process() //----------------------------------------------------------------- void model_process() { switch(model) { case 1: timerled=1; baowenled=0; baotangled=1; zhufanled=1; dest_temp=65; break; case 2: timerled=1; baowenled=1; baotangled=0; zhufanled=1; dest_temp=98; break; case 3: timerled=1; baowenled=1; baotangled=1; zhufanled=0; dest_temp=110; break; default: timerled=1; baowenled=1; baotangled=1; zhufanled=1; dest_temp=0; } } //---------------------------------------------------------------- //函数名:hot_ctrl() //----------------------------------------------------------------- void hot_ctrl() { if((now_temp HOT=1; } if((now_temp>=dest_temp)||(timing_state==Y)) { HOT=0; } } /*===============MAIN()函数==============*/ void main() { HOT=0; Init_DS18B20(); lcd_ini(); while(1) { if(loop2==0){readtemp_conver();} if(loop2==1){readtemp_readdata();} if(loop2==2){readtemp_process();} display_1602(); key(); model_process(); hot_ctrl(); //------------------------ loop++; if(loop>=20) { loop=20; } loop1++; if(loop1>=6) { loop1=0; } loop2++; if(loop2>=3) { loop2=0; } loop3++; if(loop3>=100) { loop3=0; if((timing_state==Y)&&(min_num>0)) { min_num--; if(min_num==0) { timing_state=N; } } } //------------------------------------------------ if(((timing_state==Y)||(timersetting_state>0))&&(poweron==Y)) { timerled=0; } else { timerled=1; } } }
|
|
相关推荐
2个回答
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
182 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1207 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
493 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之开发板测试
420 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
957 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11733 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 16:53 , Processed in 0.553710 second(s), Total 77, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号