单片机设计期末作业.docx
《单片机设计期末作业.docx》由会员分享,可在线阅读,更多相关《单片机设计期末作业.docx(9页珍藏版)》请在冰豆网上搜索。
![单片机设计期末作业.docx](https://file1.bdocx.com/fileroot1/2023-1/8/a5e052b8-45a6-4641-9e1a-f8643b59d81d/a5e052b8-45a6-4641-9e1a-f8643b59d81d1.gif)
单片机设计期末作业
《单片机原理》课程期末作业
(C)西安电子科技大学测控专业
一、作业形式
通过本次作业,考查对8051单片机原理的掌握,以及程序设计和调试基本能力。
要求独立设计并调试完成一个具有完整功能的小型单片机系统,并写一份简短的设计报告,对自己所设计的系统进行描述和测试。
本次作业完成情况将作为平时成绩部分,计入期末总分。
二、作业内容
1、参考课程光盘内\学习板说明书\C51StartKit学习板.pdf的说明,自行购买电子元件,组装一套51单片机学习板。
2、从7道作业题中任选一题,独立完成程序设计,并在学习板上调试成功。
3、撰写一份简短的设计报告。
(主要说明设计思路、方法以及结果)
三、作业提交方式
将作业打包压缩(rar文件),按照“学号_姓名_题目.rar”的文件名作为附件,发邮件至*******************。
提交截止时间:
课程期末考试前。
提交内容:
1、源程序。
(整个工程所在文件夹)
2、设计报告。
(Word文档)
3、(如果有)相关演示视频、图片等。
四、作业题目(任选一题,多做不限)
本次作业题难度分为ABC三档,A题较难,B题中等,C题较为简单。
根据自己能力和兴趣选择合适的题目。
1、彩灯控制器(难度B)
学习板的P1口上接有8只LED,假设它们是一串彩灯。
设计一个简易的控制系统,控制其流水或闪烁花样和速度。
设计要求:
1)具有至少4种花样,可以参考下图,也可以自行设计或增添其他花样。
2)具有4个控制键,按下时蜂鸣器要有“滴”提示音,按键功能如下:
按1键,速度加快
按2键,速度减慢
按3键,切换下一种花样
按4键,暂停,再按一次恢复运行
3)其他功能,可自由发挥。
设计提示(仅供参考):
花样的设计可以利用查表(数组)来完成,每一种花色就对应一个数组,从中循环读取赋值给P1口即可实现滚动效果。
利用定时器产生固定的节拍,当节拍计数至N时切换下一个数组元素,改变N值即可调节速度。
键盘可以利用程序库中的代码。
2、简易温度记录仪(难度B)
利用学习板上的DS18B20数字温度传感器,设计一个简易温度记录系统。
设计要求:
1)实时显示温度(大约1~2秒更新一次)
2)1分钟记录一次温度。
3)具有2个按键,按下时蜂鸣器要有“滴”提示音,按键功能如下:
按键1按下时,清除已存储的数据,重新开始记录。
按键2按下时,从串口向超级终端打印记录信息,格式如下:
序号,温度值
1,xx.x,
2,xx.x
3,xx.x
……
4)用自己设计的温度记录系统,记录一次温度变化曲线,附在报告中。
例如:
室温下记录5分钟,然后置于暖气片上加热放置10分钟(升温),再回到室温冷却10分钟(降温)。
5)其他功能或测量实验,可自由发挥。
设计提示(仅供参考):
温度的测量可以利用程序库内DS18B20代码完成,1分钟计时可以通过定时器累计实现,每次1分钟定时到达时,将温度值顺序保存于一个数组中。
建议利用STC单片机256字节外部RAM(xdata)存储温度记录,可以记录128个温度值(约2小时),程序简单但缺点是实验过程不能断电。
也可以保存在STC单片机的Flash中(参考程序库),优点是断电也不会丢失。
通过串口向超级终端打印字符,所显示的内容可以拷贝后粘贴在Excel表格里,用Excel生成曲线。
注意:
学习板上的温度传感器可以用导线延长出来,可以做一些其他有趣的实验(例如测一测一壶开水的水温下降的规律是怎样的?
)。
3、“节奏感”游戏机(难度A)
“节奏感”是人与生俱来的一种感觉,有的人节奏感好,有的人差。
本题将利用单片机设计一个有趣的装置,对你的节奏感进行测试和评分。
原理如下图:
蜂鸣器发出两次“滴~滴”蜂鸣声,之间的间隔是随机产生的(0.3秒~2秒范围内随机选取)。
参与游戏者听到蜂鸣声后,根据鸣响节奏,估测第三次鸣响应该发生的时刻,按下按键。
单片机根据按键时刻的误差Et(单位:
ms),给出相应评分(分数显示在数码管上)。
本次测试得分=100分(误差Et<20ms以内)
100-Et/4(误差Et>20ms)
0(误差Et>400ms)
每轮游戏测试10次(每次的时间间隔都是随机的),取平均分作为最后得分。
设计要求:
1)完成上述设计
2)对同宿舍同学进行节奏感测试,得分情况附于报告中。
3)其他功能,可自由发挥。
设计提示(仅供参考):
随机数的产生可以利用math.h库中的rand函数产生。
可以用定时器产生1ms定时节拍,对蜂鸣及按键进行计时。
显示函数可以调用程序库内的代码。
注意,每次测试开始前1秒左右,应该有准备提示(例如LED闪烁一下,提示测试即将开始)。
4、
电子骰子(难度B)
利用单片机学习板上的键盘和数码管显示,设计一款电子骰子,能够产生随机骰子点数,最多能够模拟4个骰子同时扔出时的效果。
设计要求:
1)有4个按键,功能如下:
按键1按下,投出1颗骰子
按键2按下,同时投出2颗骰子
按键3按下,同时投出3颗骰子
按键4按下,同时投出4颗骰子
2)4位数码管显示值分别代表4个骰子的点数(1~6)。
3)按下按钮后,相应的数字位开始闪烁(1~6快速变化),松手后变化速度慢慢减缓,一段时间后才停下,蜂鸣器提示。
要求每次点数都是随机的。
4)其他功能,可自由发挥。
设计提示(仅供参考):
随机数的产生可以利用math.h中的rand函数来产生,但是该函数每次生成的序列是一样的(因为每次复位或上电后,随机数种子是一样的)。
解决方法之一是用按键时间长短来产生随机数种子,例如当按键按下时,开启定时器,松手时读取计数值n,作为种子,调用srand(n)函数将n设置为随机种子,然后再调用rand函数可以获取不重复的随机数序列。
也可以开机后将外部RAM中的数据求和(上电过程不清除外部RAM,是随机数),作为随机数种子。
注意rand函数产生的是0~32767内的随机数,通过取余操作(%6)获得0~5,再加1得到1~6之间的随机数。
显示函数可以调用程序库内的代码。
5、
简易电子秒表(难度C)
利用单片机学习板上的键盘和数码管显示,设计一款秒表。
要求如下:
1)四位显示,分辨率0.01秒,即显示SS.XX秒。
XX=00~99,SS=00~60
2)有2个按键,按键时有“滴”提示音,按键功能如下
按键1按下时,秒表开始计时;再次按时暂停计时;再按恢复计时…
当秒表处于暂停状态,按键2按下时,计时值清零。
3)计满1分钟(60s)后,点亮1只发光管,2分钟后点亮两只,依此类推。
4)其他功能,可自由发挥。
6、记忆力测试游戏机(难度A)
据科学研究,人类的记忆分为长期记忆与短期记忆两类(有点类似于计算机的ROM和RAM)。
短期记忆信息保持的时间很短,通常在5~20秒,最长不超过1分钟。
短期记忆有时也被称为电话号码式记忆,如同人们查到电话号码后立刻拨号,通完了话,号码也就随即忘掉。
短期记忆能力反映了大脑信息处理过程中的信息暂存能力。
本题将设计一款简单有趣的游戏装置,可以用来测试和提高你的短期记忆能力。
原理如下图,按照随机的排列顺序在4位数码管上,随机位置显示数字1~4,然后要求用按键1~4重复输入刚才看到的序列。
随着序列逐渐变长,记忆的难度也随之加大,直到记忆出错时为止游戏结束,此前的序列长度就代表了记忆能力。
游戏过程:
1)系统中具有4位数码管显示,4个按键。
2)复位后,数码管提示LV-X,X表示难度等级,可以在数字1~5范围设置;
按1键难度等级增加1
按2键难度等级减少1
按3键确认,游戏正式开始
3)蜂鸣器“滴”短鸣后,开始显示数字,数字1~4在随机位置出现(其他位消隐不显示),停留一段时间后,在下一个随机位置显示。
难度等级越高,停留时间越短。
4)显示完毕后,数字全部消失,用按键1~4输入刚才看到的序列。
5)若输入序列正确,显示“PASS”1秒钟,序列长度增加1(相当于下一关),跳回步骤3,然后开始下一轮游戏。
6)若输入序列错误,在输错的那一次按键时,提示“FAIL”1秒钟,然后显示得分,游戏结束。
此后所有按键失效,必须按复位键重新开始游戏。
步骤2)中的难度等级定义:
LV-1难度:
每个数字显示停留2秒,
LV-2难度:
每个数字显示停留1.5秒,
LV-3难度:
每个数字显示停留1秒,
LV-4难度:
每个数字显示停留0.5秒,
LV-5难度:
每个数字显示停留0.3秒,
步骤6)中的得分=[闯关数(失败前一关的序列长度)*10+本关(失败那一关)正确的个数]*难度等级:
设计要求:
1)完成上述设计
2)对同宿舍同学进行记忆力测试,将宿舍同学得分(最好有不同难度等级的得分)贴在报告中。
3)其他功能,可自由发挥。
设计提示(仅供参考):
随机数的产生方法参考第4题。
随机位置也可以用相同的方法产生。
在任意位置显示数字和字母的功能可以通过显示程序库来实现。
用定时器产生10ms左右的定时节拍,计数产生0.3~2秒的显示停留时间。
键盘输入可以调用程序库实现。
所产生的随机数字序列,可以先一次生成整个序列,保存在一个数组中,按照时间间隔依次显示完毕后与输入序列逐一进行对比。
7、简易定时提醒器(难度C)
利用单片机学习板上的键盘和数码管显示,设计一款定时提醒器。
要求如下:
1)四位倒计时显示,即显示MM.SS。
MM=99~00分钟,SS=59~00秒
2)有4个按键,按键时有“滴”提示音,其中按键1和按键2用来设定倒计时时间,按键3和按键4用来控制。
具体按键功能如下:
按键1按下时,调整分钟值加1,最大可设定99分钟
按键1长按不放时,分钟值加10。
按键2按下时,调整分钟值减1,最小可设定01分钟
按键2长按不放时,分钟值减10,
按键3按下时,倒计时开始,秒钟值每秒减1,减到0后分钟减1,同时秒钟值变为59。
倒计时过程中,再按一次按键3,倒计时暂停。
再按恢复,依此类推。
按键4按下时,取消本次定时,计时值清零,此后可以用按键1/2重新设定新的定时值。
3)倒计时计至00.00时,蜂鸣器响。
4)其他功能,可自由发挥。
8、自选题目
鼓励在上述5个题目之外自由发挥选题,利用51单片机学习板,设计并实现一个小型但完整的单片机系统(允许并鼓励扩展),完成某些特定的功能。
以下是可供参考的选题方向。
1.解决生活中实际问题的小电子装置。
2.实用美观的电子礼品、电子装饰品等。
3.出于个人兴趣爱好的开发和研究。
4.尝试一些别人没有过的设计,特别是“看起来”不可思议的事。
6.用单片机自动完成某些实验的测量工作。
7.设计一些有趣的小游戏。
8.为单片机学习板编写一个模块化程序。
9.设计新的人机交互方法、或新的人机交互体验
10.以上未列出的一切富有创意以及能完整实现的作品。
五、报告攥写范例
《XXXX》(所选题目名称)设计报告
学号__________班级__________姓名____________
一、摘要
用几句话简单明了的概述你做了什么东西,比如利用了51单片机的哪些模块,通过什么方法,实现了什么功能,达到了什么指标,做了什么实验,结果如何等信息(并非严格格式,自己发挥,但要简明扼要突出重点)。
是报告的“浓缩精髓”,也是作品的第一印象。
二、硬件设计
简单介绍你所用到的硬件电路的原理,说明他们和单片机之间的连接关系,工作过程等关键问题即可,切忌长篇大论摘抄,应当简洁明了的介绍。
附上你所用到的电路原理图(或框图),不要将整个学习板的电路都贴上来(没意义)。
如果你只用到了学习板的一部分,可以画框图表示;如果你在学习板的基础上扩展了某些电路,要把你扩展的部分详细画出来。
如果不会用绘图软件,可以手绘然后拍照贴图。
三、程序设计
简洁扼要地介绍你的软件实现了什么功能,这些功能是怎么实现的(设计思路)。
画出主要功能的流程图。
关键部分作必要的说明,切忌过多地纠缠于细节问题。
四、测试结果
拍一张作品的照片放在这一部分,最好它是正在工作时候的照片。
必要时可以帖多张对比。
简单地描述你是怎么验证题目中所要求的功能?
如何进行的测试,步骤和方法是什么?
测试结果如何?
(通过测试,说明你完成了题目中要求的功能,且功能是正确的)
如果有实验部分,附一些典型的实验数据,例如题2和题3、题7可以贴上实验数据,第4题可以附上100次骰子的统计分析,看看1~6点的概率是不是均等的?
第5题可以和一只标准秒表对比,看看计时有没有误差?
五、总结
可以参考下面的几个方面来写(不要求面面俱到,有针对的选择几个方面,根据实际情况写),但是要简明扼要,总结部分不宜再铺开。
1)在设计过程中,遇到哪些困难怎么解决的?
2)总结出哪些经验?
(包括成功的和失败的经验)
3)你在设计过程中,有什么新方法、新思路值得分享?
4)通过实际动手,学到了哪些东西?
5)如何进一步改进?
有什么思路?
6)有没有什么有趣的新发现?
(比如第6题,男生和女生的记忆力有区别么?
第2题,试试宿舍里哪种开水瓶保温性能最好?
)
7)其他值得总结的内容。