当前位置:文档之家› 单片机花样走马灯课程设计

单片机花样走马灯课程设计

单片机花样走马灯课程设计
以下是为大家整理的单片机花样走马灯课程设计的相关范文,本文关键词为单片机,花样,走马灯,课程,设计,花样,走马灯,设计,目的,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。

花样走马灯
一设计目的
1.掌握单片机系统设计思路和基本步骤。

2.熟悉Keilc51高级语言集成开发环境。

3.熟练使用基于proteus的单片机系统仿真软件。

4.学会在IsIs7professional下绘制电路原理图。

5.学会proteusVsm与uvision3IDe 的联调过程。

二设计要求
实现单片机8051设计控制p1口的8个LeD灯成花样走马灯。

连续实现以下四种效果:
1.单灯左移2.单灯右移
3.单灯逐个点亮接着逐个熄灭
4.两边向中间逐个点亮接着中间向两边逐个熄灭
三总体设计
单片机应用系统的研制步骤一般分为:总体设计、硬件电路的构思设计、软件的编制和仿真调试四个阶段。

1.硬件电路设计根据设计要求所需的元器件为AT89c51单片机和LeD灯。

该硬件部分由朱艳兵完成,故不再做详细介绍。

2.系统软件分析
设计原理:规定灯亮时控制该灯的位设置为低电平,灯灭时该位设置为高电平,为了清楚的看到灯亮时的效果,要设置相应的延时函数,通过数组的引用和函数的调用来实现花样走马灯的设计。

(1)要使走马灯实现单灯左移、单灯右移、单灯逐个点亮接着逐个熄灭、两边向中间逐个点亮接着中间向两边逐个熄灭这四种效果。

(2)可根据上述的规定来设置控制8个LeD灯的p1口各个引脚的电平来控制LeD灯亮的效果。

①单灯左移:可将p1.0~p1.7各个引脚逐个设置为低电平,即该
引脚控制的灯亮时该位就为低电平,即可设置一个数组名为table的数组来存放灯亮时的p1口各个引脚的电平。

②单灯右移:即p1.7先亮,按照p1.7~p1.0的顺序向右移,即该灯亮的时候该位就设置为低电平,反之为高电平,各引脚的电平在数组aa中存放,引用数组
1
aa就可实现单灯右移。

③单灯逐个点亮接着逐个熄灭:可按照p1.0~p1.7的顺序点亮再按照p1.7~p1.0的顺序熄灭,实现原理同单灯左移和单灯右移,各个引脚的电平在数组bb,cc中存放。

④两边向中间逐个点亮接着中间向两边逐个熄灭:即先将p1.0和p1.7同时设置为低电平,全部点亮后再将p1.3和p1.4设置为高电平,依次直至全部熄灭,各个引脚的电平在数组dd中存放。

程序流程图如图1所示:
开始初始化单灯左移单灯右移单灯逐个点亮单灯逐个熄灭灯由两边向中间点亮再向两边逐渐熄灭图1花样走马灯程序流程图
3.软件设计的实现
(1)初始化实现单灯左移、单灯右移、单灯逐个点亮接着逐个熄灭、两边向中间逐个点亮接着中间向两边逐个熄灭这四种效果的数组。

(2)设置延时函数以便清楚地观察到灯亮的效果。

(3)设置显
示函数,用for循环语句实现8个LeD灯依次显示上述四种效果。

(4)用while语句来实现这四种效果无限循环下去。

4.实现proteusVsm与uVIsion3IDe的联调
2
四详细步骤
1.硬件电路
硬件电路图如图2所示:
图2硬件电路图
2.软件程序设计
(1)安装keiluVision3IDe软件。

(2)双击桌面“uVision3”运行图标或点击“开始”→“程序”→“keiluVision3”进入IDe环境,uVision3IDe软件由菜单栏、可以快速选择命令按钮的工具栏、一些源代码文件窗口、对话框窗口和信息显示窗口组成。

uVision3IDe界面如图3所示:
图3uVision3IDe界面
(3)点击【project】→【newproject】选项。

(4)在弹出的“createnewproject”对话框中选择要保存项目文件的路径,例如保存到“我的文档”中,在“文件名”文本框中输入项目名work,然后单击“保存”按钮。

3
(5)这时弹出一个对话框,要求选择单片机的型号。

选择ATmeL 公司,再选择AT89c51,然后单击“确定”按钮,弹出将8051初始化代码复制到项目中的询问对话框,单击“是”按钮。

如果需要重命名“Target1”和“sourcegroup1”,在左侧projectworkspace区用鼠标左键选中Target1,再用鼠标左键点击一次Target1,再用鼠标左键点击一次Target1,则可重新命名Target1。

用同样的方法修改sourcegroup1。

这里对此不做修改,使用默认名称。

(6)点击【File】→【new】新建一个c语言源程序文件。

(7)在弹出的程序文本框中输入编写好的花样走马灯源程序。

(8)单击【File】→【saveAs】选项,或者单击工具栏按钮,保存文件。

在弹出的对话框中,选择要保存的路径,在“文件名”文本框中输入文件名。

注意一定要输入扩展名,c程序文件的扩展名为.c,单击“保存”按钮。

(9)然后把保存的文件加入到项目中,用鼠标右键点击左边项目窗口中的“sourcegroup1”,在弹出的菜单中选择“AddFiletogroup‘sourcegroup1’”,选择刚才建立的文件,文件类型选择csourcefile(*.c)。

最后单击“Add”按钮,添加完毕后单击“close”按钮,关闭该窗口。

(10)这时在sourcegroup1里就有添加的文件和事先建立项目时已经加入的文件sTARTup.51.
(11)接下来要对目标进行一些设置。

用鼠标右键单击“Target1”,在弹出的菜单中选择“optionforTarget‘Target1’”选项。

(12)弹出“optionsforTarget‘Target1’”对话框,其中有10个选项卡。

将xtal(mhz)设置为11.0592mhz。

(13)设置output选项卡。

选中“createhexFile”,编译后会生成hex 文件。

其效果如图4所示:
图4选中createhexFile
(14)设置Listing选项卡。

此处不做改动,使用默认。

(15)设置Debug 选项卡。

这里先选中“usesimulator”,进行纯软件仿真。

(16)点击【project】→【Rebuildalltargetfiles】,编译连接程序。

如果没有错误,则编译连接成功,开发环境下会显示编译连接成功的信息。

(17)编译完毕之后,单击【Debug】→【start/stopDebugsession】选项,
4
即进入Debug调试环境。

(18)装载代码之后,开发环境outputwindow显示装载成功信息。

调试运行效果如图5所示:
图5调试运行界面窗口
3.调试过程
调试程序时,出现了一些的错误导致不能正常编译生成hex文件,所以需要改正再次编译直至没有错误,才能进行编译生成hex文件,从而实现proteus和uVision3IDe的联调。

调试时出现的错误如下:
(1)次数的计算失误导致了LeD灯没有按照预期的效果实现相应的闪烁。

(2)A:单灯左移和b:单灯右移两个流程弄反了,导致是不符合设计要求。

(3)到右依次点亮时,用了两个for循环语句,导致语句的冗余,第一个for循环语句没有起到作用。

(4)变量i,不能正确编译程序,导致相应的错误,如图6所示:
图6错误信息
(5)调用延时函数时延时较短,导致看不清灯的闪烁效果,以为程序出错了。

4.解决方案
(1)将循环次数减少依次,就不会使循环多执行一次,让灯多亮一个。

(2)把A:单灯左移和b:单灯右移的两段程序换一下位置,在把相应的数据改一下。

(3)将第一个for循环语句去掉。

(4)在主函数中定义一个unsignedchari,重新编译错误消失。

(5)在相应的延时基础上增加延时,让LeD灯能多亮会,肉眼清楚看到效果。

源程序代码如下:
#include\//片内寄存器定义#include\//c51内部函数库
5
最后,小编希望文章对您有所帮助,如果有不周到的地方请多谅解,更多相关的文章正在创作中,希望您定期关注。

谢谢支持!。

相关主题