logo资料库

用51单片机C语言实现电磁炉功能.pdf

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
用51单片机C语言实现电磁炉功能
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 用 51515151 单片机 CCCC 语言实现电磁炉功能 韩增值 2008 年 12 月 8 日 家里有一台电磁炉,用了三年多了,觉得质量不错,是“美的”牌的。大前天晚上吃晚 饭时看着桌上的电磁炉,突然想到厂家可能用的就是单片机来控制这个机器工作的(没把那 个电磁炉拆开过,不敢下定论)。我可以写一个单片机程序来实现它的功能,等以后这个电 磁炉退休后升级它。 这个电磁炉的型号是 MCEP201,功能不多,不过很实用。有火力调节、定时调节、炒 菜、火锅、煮粥、煲汤、蒸煮、炖奶。它的显示部分用的是发光二极管,用到了哪个功能就 点亮哪个发光二极管。 我写程序的重点为用 51 单片机 C 语言实现个控制系统。 编写程序时使用的目标板是“LY51-L2 单片机学习实验板”。针对这个电路板,先将它 的矩阵键盘的各个按键进行定义。 - 1 -
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 运行 Keil C51 编程集成环境,书写程序代码。 603 addfun.c 295 Beep.c 548 Braise.c 597 conjee.c 共有 21 个 C 源程序文件,每个源程序对应一个功能实现。 2008/12/08 09:54 2008/12/07 18:49 2008/12/08 10:15 2008/12/08 08:57 2008/12/08 14:34 2008/12/08 10:50 2008/12/08 10:08 2008/12/08 11:06 2008/12/08 09:32 2008/12/08 09:53 2008/12/08 10:04 2008/12/08 08:27 2008/12/08 09:31 2008/12/08 14:35 2008/12/08 14:36 2008/12/07 18:42 2008/12/08 09:57 2008/12/08 14:06 2008/12/08 09:41 2008/12/07 09:40 2008/12/07 18:49 1,005 Displayled.c 857 externident.c 564 Food.c 544 Fry.c 591 Hoti.c 563 Hotmilk.c 566 Huoguo.c 603 Initial.c 485 Kaiguanji.c 2,929 KeyPad.c 959 main.c 444 Selfcheck.c 564 Soup.c 706 subfun.c 3,624 T0_int.c 117 T1_int.c 331 timewait.c - 2 -
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 各个 C 源文件的内容如下。 #include "externident.c" extern bit fireortime;//0 火力或 1 定时 extern bit KGflag;//1 开 0 关机标记 extern uchar Huoli; //火力标记 extern uchar Dingshi; extern uchar Disbuf[8]; //事件工作时间定时 void addfun(void) { if(KGflag==1)//开机状态下 { } if(fireortime==0) if(++Huoli>10) Huoli=10; Disbuf[0]=20;//not display Disbuf[1]=15; Disbuf[2]=Huoli/10; Disbuf[3]=Huoli%10; if(Dingshi>=90) Dingshi=90; else Dingshi+=10; Disbuf[5]=16;//显示 t Disbuf[6]=Dingshi/10; Disbuf[7]=Dingshi%10; else { } { } } #include "externident.c" //#include "externident2.c" extern uint T0_count_max; extern extern bit T0using;//T0 使用标记 uchar T0_workfor; void Beep(uint t) { while(T0using); TH0=-1000/256; TL0=-1000%256; T0_workfor=1; - 3 -
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 T0_count_max=t; TR0=1; T0using=1; BSound=0; } //蒸 #include "externident.c" extern uchar Autotime,fire1,fire2,fire3,fire4; extern uchar Disbuf[8]; extern uchar Dingshi; extern bit T0using;//T0 使用标记 extern extern uchar Dingshimin,Autot1,Autot2,Autot3; uchar T0_workfor; //显示缓存 void Braise(void) { TR0=0; Dingshi=0;//定时清零 Disbuf[0]=9; Disbuf[4]=20;//清除定时显示 Disbuf[5]=20; Disbuf[6]=20; Disbuf[7]=20; T0_workfor=4; Dingshimin=0; Autotime=28; Autot1=20; fire1=10; Autot2=25; fire2=9; Autot3=28; fire3=7; fire4=4; T0using=1; TR0=1; }//煮粥的程序 #include "externident.c" extern uchar Autotime,fire1,fire2,fire3,fire4; extern uchar Disbuf[8]; extern uchar Dingshi; extern bit T0using;//T0 使用标记 extern uchar T0_workfor; //显示缓存 - 4 -
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 extern uchar Dingshimin,Autot1,Autot2,Autot3; void conjee(void) { TR0=0; Dingshi=0;//定时清零 Disbuf[0]=1;//显示功能 1,煮粥 Disbuf[4]=20;//清除定时显示 Disbuf[5]=20; Disbuf[6]=20; Disbuf[7]=20; T0_workfor=4;//煮粥用 Dingshimin=0; Autotime=30;//煮粥 30 分钟 Autot1=10; Autot2=20; Autot3=26; fire1=10; fire2=10; fire3=9; fire4=8; T0using=1; TR0=1; } #include "externident.c" //#include "externident2.c" extern uchar Digbit; extern uchar Disbuf[8]; //显示位选 //显示缓存 uchar getdiscode(uchar i)//获得共阳段选码 { uchar p; switch(i) { p=0x06;break; p=0x5b;break; case 0:p=0x3f;break; case 1: case 2: case 3: p=0x4f;break; case 4: p=0x66;break; case 5: p=0x6d;break; case 6: p=0x7d;break; case 7: p=0x07;break; - 5 -
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 case 8: p=0x7f;break; case 9: p=0x67;break; case 10: p=0x77;break; case 11: p=0x7c;break; case 12: p=0x39;break; case 13: p=0x5e;break; case 14: p=0x79;break; case 15: p=0x71;break;//显示 F case 16: p=0x78;break;//显示 t case 17: p=0x40;break;//显示- case 20: p=0x00;break;//灭显 default: break; } return(p); } void Displayled(void)//LED 显示函数 { uchar i,tmp; Digbit=0; for(i=0;i<=7;i++) { DIGPORT=Digbit; WORDPORT=getdiscode(Disbuf[i]);//显示字符 for(tmp=0;tmp<=50;tmp++);//延时 WORDPORT=0;//灭显 Digbit++; } } //all the data for test //easy for extern identifier //这类文件不能对 uchar ,uint 变量进行包括,否则引起编译时的空间重复错误 //可以对 sbit 类的声明包括,因为所有的 sbit 声明在最后地址空间上是一致的 #include #define uchar unsigned char #define uint unsigned int #define DIGPORT P1 #define WORDPORT P2 #define KEYBOARD P0 #define time1 2000 //T1 用于显示中断,2ms sbit BSound=P3^4; - 6 -
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 extern void Initial(); extern void Beep(uint t); extern void Selfcheck(); extern void Displayled(); extern void KeyPad(); extern void Kaiguanji(); extern void timewait(uint t); extern void addfun();//+功能 extern void subfun();//-功能 extern void conjee();//煮粥的程序 extern void Hoti(); extern void Hotmilk(); extern void Soup(); extern void Huoguo(); extern void Food(); extern void Fry(); extern void Braise(); extern void Out(); //做饭 #include "externident.c" extern uchar Autotime,fire1,fire2,fire3,fire4; extern uchar Disbuf[8]; extern uchar Dingshi; extern bit T0using;//T0 使用标记 extern extern uchar Dingshimin,Autot1,Autot2,Autot3; uchar T0_workfor; //显示缓存 void Food(void) { TR0=0; Dingshi=0;//定时清零 Disbuf[0]=5;//显示功能 2,热奶 Disbuf[4]=20;//清除定时显示 Disbuf[5]=20; Disbuf[6]=20; Disbuf[7]=20; T0_workfor=4; Dingshimin=0; Autotime=28; Autot1=15; fire1=10; Autot2=20; - 7 -
用 51 单片机 C 语言实现电磁炉功能 韩增值 tel:13282780310 fire2=9; Autot3=24; fire3=8; fire4=7; T0using=1; TR0=1; }//炒菜 #include "externident.c" extern uchar Autotime,fire1,fire2,fire3,fire4; extern uchar Disbuf[8]; extern uchar Dingshi; extern bit T0using;//T0 使用标记 extern extern uchar Dingshimin,Autot1,Autot2,Autot3; uchar T0_workfor; //显示缓存 void Fry(void) { TR0=0; Dingshi=0;//定时清零 Disbuf[0]=6; Disbuf[4]=20;//清除定时显示 Disbuf[5]=20; Disbuf[6]=20; Disbuf[7]=20; T0_workfor=4; Dingshimin=0; Autotime=10; Autot1=1; fire1=5; Autot2=5; fire2=8; Autot3=8; fire3=10; fire4=7; T0using=1; TR0=1; }//一分钟微热食品 #include "externident.c" extern uchar Autotime,fire1,fire2,fire3,fire4; extern uchar Disbuf[8]; extern uchar Dingshi; extern bit T0using;//T0 使用标记 extern extern uchar Dingshimin,Autot1,Autot2,Autot3; uchar T0_workfor; //显示缓存 - 8 -
分享到:
收藏