同学们大家好~
今天来给大家分享一下第十届蓝桥杯单片机省赛题。
试题要求点击我下载哦(第十届蓝桥杯 单片机设计与开发项目省赛-程序设计试题.pdf)~
本次赛题使用到开发板上的模块有led指示灯、数码管、独立按键、pcf8591以及NE555,赛题的难点主要在于使用NE555模块来采集频率,相较于第九届的彩灯控制器来说,按键的逻辑方面的难度有所下降,每个按键只有一个功能,嵌套起来也比较简单,只要稍微注意一下细节就可以了,led指示灯、数码管以及pcf8591都是我们一直在练习的,相信大家都能比较轻易的完成。
与以往相同的,第一步就是要我们对板子进行初始化(关掉蜂鸣器、继电器等),这些都是最基本的就不多说了。
先来看一下数码管和led指示灯部分:这里数码管有两个显示界面(频率显示界面、电压显示界面),我们可以直接写出两个数码管的显示函数,分别用来显示频率和电压,再通过按键和标志位来分别显示就可以了,要注意的是频率部分,要考虑数值的长度,数据大小没有到达一定值的时候,高位部分要熄灭,电压部分的小数点还是非常简单的就不多说了。
led指示灯部分跟随采集到达数值改变就可以,这里操控引脚比较方便。
然后来看一下按键部分:S4按键用来切换数码管的显示界面,这里使用一个标志位,可以用“bit”来定义,通过改变和判断标志位的值来改变数码管显示就可以了。S5按键用来切换电压的输出模式,与S4相同的,使用一个标志位来改变电压的取值(固定2V或者跟随AD读取R2电压值的变化)。S6按键与S7按键分别控制led指示灯与数码管的开关,相同的,分别使用一个标志位来控制就可以了,这里要注意一些小细节,比如S5按键的功能是否要只在数码管显示电压测量界面时起作用等。
最后就是NE555模块的使用了,因为在省赛中第一次用到这个模块,所以很多人都没有做出来,深入了解一下就会发现,它其实也很简单,题目说明此功能需将J3-SIGNAL引脚与P34短接,这就说明需要使定时计数器T1工作在定时模式、T0工作在计数模式来完成(不能使用外部中断的另外一个原因是会与按键冲突),因为短接了P34与J3-SIGNAL,NE555每产生一个脉冲就会使计数器数值+1,因此只要看1S内计数了多少次就可以得到频率了,定义一个全局变量在定时器中计时,每隔1S采集一次计数器的数值并清零就可以了。
以上就是我对题目的分析以及编程的大题思路,最后附上题目的代码,代码以及在蓝桥杯上测试过,欢迎大家批评指正。
----------------所有代码打包下载链接------------------