本帖最后由 ohy3686 于 2018-2-24 14:01 编辑
【经典51懒人5步速成法-05】应用程序设计入门一例通
广东职业技术学院 欧浩源
再高级的单片机也是解决问题的一个工具,如何灵活运用已掌握的外设模块来满足功能需求以解决实际问题,是我们学习单片机开发的目标。你的程序写得很快,每个外设用得很溜,并不能代表你解决问题的能力就很好。这需要通过实际开发的磨练与经验的积累。
实际上每个工程师在不断的开发过程中,多多少少都会形成自己的思维模式和开发习惯。因此,在这一节我们所阐述的也只是本人的思维模式与设计习惯,可以抛砖引玉,作为参考。
1、题目需求
2、基本思路
我的设计模式是自上而下,从整体到局部。所以,在编写代码之前,我的脑子里面基本上已经有了比较完整的轮廓,包括应该定义那些变量,应该安排那些函数,程序框架大致如何。
从本题的需求分析中,我们可以获得以下的信息:
<1> 秒闪功能,需要使用定时器0,得安排一个初始化函数Init_Timer0()和一个中断服务函数SeviceTimer0()。
<2> 定时器0使用16位模式,在12MHz晶振情况下,最大的定时值也只有65.535ms,因此要定时500ms不能够直接实现,那么就需要多次定时进行累加。把定时器0的间隔定时确定为50ms比较方便,累计10次就是500ms了,那么就需要一个定时累计变量t_count。
<3> 按键功能,首先要定义一个按键扫描函数ScanKeys(),在扫描过程中需要做去抖动处理,那么就要安排一个简易的延时函数Delay()。
<4> 再检查思考一下,还有什么吗?没有了。
3、程序框架
严格来说,在开始编写代码之前,应该将程序的流程图和数据定义表做出来。
不过,对于简单的功能,可以通过编写代码搭建整体框架的方式来体现。这就跟建设框架结构的房子一样,先把毛坯建好,再去做个单元进行装修。我比较喜欢这做。
本题在基本思路分析指导下,可以搭建出程序框架结构。
4、逐个填充
<1> 定时器初始化函数:这个代码是可以重用的,直接拷贝过来就行了。
<2> 定时器中断服务函数。
<3> 按键扫描函数。
就这样,一个简单的51单片机应用程序开发就完成了。
5、小结
作为入门学习,本系列教材到这里就结束了。实际上51单片机的内容也差不多就这么多了。至于那些上千页的书在讲述51单片机开发的,里面很多内容都是各种功能外设,与51内核无关,只是用51单片机操作那些外设而已。对于这部分的内容,你学习的不是51单片机了,而是那么功能外设。在实际的应用中,更多的是要应用各种外设来解决各种问题。所以,一个单片机的高手并不是把51单片机本身玩得有多溜,而是他心中掌握了多少功能模块的应用,设计了多少应用的代码,积累了多少项目的经验。
入门教程结束了,而你们的征途才刚刚开始,加油!!!
---------------懒人系列教程相关链接--------------
01-经典51内核资源全览浓缩图
02-重要外设特殊功功能寄存器概览
03-程序开发流程与设计要点
04-三大外设的开发与可重用代码
------------------------------------------------
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
适合实际项目开发
对初学者来说,有难度,不易理解。
写得不错!顶!
初学者总应该理解这种方法。不要让初学者走弯路。
一周热门 更多>