一、读者须知
程序设计赛题图片引自CSDN博主@川九-EveRYouNg,但程序为本人所写,能实现赛题99%的功能,程序于2024年一月完成,于2024年二月修补bug,由于本程序是作者从看完B站小蜜蜂老师的教学视频写的第一个程序,再加上作者是刚入门半年的小白,如有差错和不足请在评论区与我交流。作者默认读者会调用DS1302芯片,DS18B20温度传感器,继电器等外设。不在这些地方加以注释,如有不便,请谅解。
二、2022第十三届蓝桥杯单片机组省赛程序设计题
三、作者在编写程序时遇到的问题和解决方法
问题一:LED灯时不时闪烁的问题。
解决方法:所有对继电器操作之前,先对LED进行操作。原因是:查阅单片机原理图可知,让继电器工作要给高电平,让LED灯亮要给低电平,而LED灯和继电器共用同一IO口,即P0口,因此,所有对继电器操作之前,先对LED进行操作。如图所示
问题二:在时间控制模式整点时,切换温度控制模式再切换到时间控制模式,此时依然是整点且秒<5s,但L1仍然闪烁
解决方法:原本程序是这些写的,即当到分等于0,秒小于5,L1闪烁,由此产生了上述问题
if(Timer[1]==0&&Timer[0]<=5)
{
if(count<=5)
{
SelectHC573(4);P0=0xfe;
SelectHC573(5);P0=0x00;P0=0x10;
}
else if(count>5)
{
SelectHC573(4);P0=0xff;
SelectHC573(5);P0=0x00;P0=0x10;
}
}
之后作者设置了Timemodel变量,当在温控模式时,Timemodel=0.当在时控模式时,分等于0,秒等于0,Timemodel等于1,如果在时控模式,分等于0,秒大于5,并且Timemodel=1,Timemodel=0。只在时控模式,分=0,秒<=5,并且Timemodel=1,才让L1闪烁。如图所示
未解决的问题:按键消抖和数码管动态显示不用Delay延时函数,用单片机上的定时器进行消抖
问题描述:作者经过一天的写代码调试也未解决问题,还是Delay延时函数,更适合小白,如有大佬阅读此篇博客,请与我在评论区交流,如有解惑,感激不尽。
三、程序逻辑图
四、具体实现代码
通过百度网盘分享的文件:第十三届省赛题.…
链接:https://pan.baidu.com/s/19gkKKn78YgHBe7x29IJhtg?pwd=j21n
提取码:j21n
复制这段内容打开「百度网盘APP 即可获取」
五、结语
通过22年和23年省赛题发现,难的不是外设的使用,难的是LED,继电器使用的逻辑判断,因此作者写这些博客的目的是总结这些问题的处置经验,下次遇到这些问题,直接借鉴经验。