完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是我的程序,我要实现电蒸锅,预约,定时,延时,4位数码管显示
#include ***it dshuru=P2^7; ***it yshuru=P3^0; ***it ashuru=P3^1; ***it pshuru=P3^2; ***it kaishi=P3^3; ***it redlightand=P2^0; ***it redlight=P2^1; ***it redlightpuss=P2^2; ***it yellowlight=P2^5; ***it greenlight=P2^3; ***it relay=P3^4; unsigned int k=0; unsigned int duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char t; typedef unsigned char INT8U; bit dtime; bit ytime; bit timejian; bit timejia; INT8U Exmod_time; INT8U Exnod_numt; void show(unsigned int k) { if(k>=1000) { P1=duanma[k/1000]; P0=0x01; P0=0x00; P1=duanma[(k%1000)/100]; P0=0x02; P0=0x00; P1=duanma[(k%100)/10]; P0=0x04; P0=0x00; P1=duanma[k%10]; P0=0x08; P0=0x00; } else if(k>=100) { P1=duanma[(k%1000)/100]; P0=0x02; P0=0x00; P1=duanma[(k%100)/10]; P0=0x04; P0=0x00; P1=duanma[k%10]; P0=0x08; P0=0x00; } else if(k>=10) { P1=duanma[(k%100)/10]; P0=0x04; P0=0x00; P1=duanma[k%10]; P0=0x08; P0=0x00; } else { P1=duanma[k]; P0=0x08; P0=0x00; } } void dtimetest()//定时旋钮函数 { if(dshuru==1) { dtime=1; } else { dtime=0; } } void ytimetest()//预约按钮函数 { if(yshuru==1) { redlight=1; } else { redlight=0; } } void timejiatest()//时间加按钮函数 { if(ashuru==1) { redlightand=1; k++; show(k); } else { redlightpuss=0; } } void timejiantest()//时间减按钮函数 { if(pshuru==1) { redlightpuss=1; k--; show(k); } else { redlightpuss=0; } } void jiaretest()//加热函数 { if(kaishi==1&&k>0) { greenlight=1; relay=1; } else { greenlight=0; relay=0; } if(k==0) { yellowlight=1; P0 = 0xFF; P1 = 0xFF; P2 = 0xFF; P3 = 0xFF; TMOD = 0x01; TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; ET0 = 1; TR0 = 1; EA = 1; } else { P0 = 0xFF; P1 = 0xFF; P2 = 0xFF; P3 = 0xFF; TMOD = 0x10; TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; ET0 = 1; TR0 = 1; EA = 1; if(t==20) //每1s减1 { t=0; k--; } show(k); } } void main() //主函数 { while(1) { ytimetest(); timejiatest(); jiaretest(); dtimetest(); timejiantest(); jiaretest(); } } void Timer0_IRQ(void) interrupt 1// T0定时器中断服务程序 { TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; Exmod_time++; if(Exmod_time == 20) { Exmod_time = 0; Exnod_numt++; if(Exnod_numt == 180) //180秒刚好3分钟 { relay=0; // 输出高电平驱动继电器 if(Exnod_numt==300) relay=1; Exnod_numt=0; } } } void Timer1_IRQ(void) interrupt 0 //T1 { TH0=(65536-50000)/256; TL0=(65535-50000)%256; t++; }
|
|
相关推荐
1 个讨论
|
|
解决问题可以付点报酬
|
|
|
|
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
6178 浏览 3 评论
7445 浏览 1 评论
7685 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9477 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1277 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 11:33 , Processed in 0.380158 second(s), Total 38, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号