内蒙古工业大学单片机工程实践报告Word格式.docx
《内蒙古工业大学单片机工程实践报告Word格式.docx》由会员分享,可在线阅读,更多相关《内蒙古工业大学单片机工程实践报告Word格式.docx(29页珍藏版)》请在冰点文库上搜索。
利用程序实现两种以上声音
、任务分工:
总体流程及流程图的设计(王维栋)
程序编写(张晶晶)
程序审核(宫振杰)
程序调试(王维栋、刘敏)
()七段显示器自检
确定显示器每一段均正确
、任务分工:
程序编写(张晶晶)
程序审核(宫振杰)
程序调试(刘敏、王维栋)
()键盘自检
确定键盘是好的
总体流程及流程图的设计(张晶晶)
程序编写(王维栋、刘敏)
延时子程序(宫振杰)
程序调试(王维栋、张晶晶)
()存储性能测试
功能:
①测试存储性能,并作出评价
②测试程序与自检程序通过拨盘连接起来。
硬件环境:
、显示器等
任务分工:
总体流程图及程序设计(王维栋)
主程序编写(刘敏)
三个自检子程序的整理(宫振杰)
查阅资料(张晶晶,王维栋)
主程序的编写(宫振杰)
读程序编写(张晶晶)
写程序编写(王维栋)
读写显示程序编写(刘敏)
程序整合(张晶晶、刘敏)
程序调试(王维栋,刘敏,张晶晶,宫振杰)
三、框图:
.硬件编程框图及相关说明
1)蜂鸣器自检硬件框图
硬件环境:
蜂鸣器、
说明:
执行指令后,为“0”,晶体管导通,蜂鸣器得电发声。
据此可以判断蜂鸣器电路是正确的。
注意:
如果蜂鸣器未带振荡器,要想让蜂鸣器产生声音必须要让晶体管按照一定的频率不断地导通、截止交互变化,即不断地输出“”、“1”,输出的频率不同时,声音也不同。
如果蜂鸣器带振荡器,则只需控制其通、断即可
。
2)键盘自检
245L、、
显示器由若干个发光二极管组成,它有共阴极和共阳极两种结构。
该图结构为共阳极,且是动态扫描显示(动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
),端为高电平时,显示器工作,反相驱动器的功能是使稳定的亮。
口控制显示什么字形的即字形口,、、、是选择字位的即哪位亮,的作用是泄流。
3)七段显示器自检
译码器、等
单片机上电复位时,口为高电平,有效及三态门状态为打开状态,此时可以采集键盘、拨盘信息了有效关闭三态门。
为仪表键盘(用户使用)拨盘(自检开关),通过上拉电阻使()闭合为“”打开为“”。
2、主程序框图、子程序框图及相关说明
主程序流程图:
子程序存储性能测试流程图:
子程序蜂鸣器自检流程图:
子程序自检流程图:
子程序键盘自检流程图:
3、程序清单:
;
关显示
口置
;
打开三态门
关闭三态门
0F;
屏蔽键盘
0F;
是否拨盘拨下
MAIN
:
MAIN
;
******************************蜂鸣器自检程序
*******************************
;
蜂鸣器响
延时
蜂鸣器不响
******************************自检程序
*******************************:
选中第一位
;
每一段循环点亮
选中第位
:
****************************
键盘自检程序
*****************************
读键盘
键盘是否按下?
第二次读键
第二次判断键盘按下否?
按下
按下
蜂鸣器响声
存储性能测试
引脚及控制指令码定
控制指令码定义
存储器的首地址
写入到的数据
;
读键
按下
;
读存储器
防连击,防止一直写存储单元
写存储器
MAIN
;
当按下时返回主程序
******************************
向串行写入位数据,入口参数:
数据
串行读出位数据,出口参数数据
向内部存储器串行写入一个字节数据
从内部存储器串行读出一个字节数据出口参数:
读出的数据送显示
0F
将要写的数据送显示
:
0F
0F
4、设计体会
这两周的实训可以用十六个字来概括“山穷水尽疑无路,柳暗花明又一村”。
首先第一天的自检程序我们的延时没调好,预想的多种声音没响出来,最终以令我们失望的成绩告终,但是这次没有打消掉我们的积极性,我们相互鼓励,“没关系,还有机会”。
这里面让我体会到了团队的力量。
第二天的,我们信心满满,想出新颖的动态循环左移的思路,验收时老师一往下坐“这个思路不好呀,而且程序又臭又长”,顿时,感觉我们的努力又白费了,这次的结果当然不言而喻了,老师走之后我们全体瘫软的坐在各自的位置,这次我们真的被打击的没有信心了,都不知道接下来该怎么走。
但是转机出现了,下午我们开会,第三次就朝着分做,不要高分了,结果打了。
这让我明白,要夯实基础,再构建其他新思路,之前都好高骛远了。
最后的大任务中让我认识到,每个人都有自己的优点,应该大胆的分配任务,相信对方。
年月日
张晶晶
在为期两周的单片机工程实践,我们成功完成了三项自检和一项大任务的编程、调试任务。
在蜂鸣器自检程序中,延迟时间的设计是使蜂鸣器发出不同声音的关键,在这之前,我们没有仔细验算时间,导致我们预计的种声音没有成功,最后都混在了一起,经过此次教训,在的有关蜂鸣器的子程序中,我们成功调试出理想的声响。
但是,在自检中,却没有调整好时间,导致预期的动态扫描显示不理想。
由于前三次自检程序的设计,使我们在大任务的设计编程中得心应手,在小组讨论一致的流程图决定后,我们很快的做出了主程序以及相应的调用子程序,并且完美的实现了预期结果,自检以及的存储新能的测试。
在这次工程实践中,从中我不仅对单片机硬件有了基本的了解,对单片机相应的汇编语言也有了一定的操作能力。
年月日
宫振杰
单片机工程实践已经结束了,至今仍旧回味无穷,老师为我们提供了至此来之不易的锻炼机会,我们也非常认真的对待了这次实践,并付出了最大的努力,刚开始我们认真的编写调试程序,在验收的时候并没有得到老师的肯定,成绩不是很理想,但是我们并没有气馁,愈挫愈勇,集合大家的力量,一起编写调试程序,经过大家的努力,最终取得了一定的进步。
自检编写程序时花了巨大努力,但是最后的程序结构不是很好,在以后的编写程序的时候,要注意程序结构的优化,在键盘自检中我们在完成键识别,键保护的基础上实现了键保护的功能,但是程序也存在一些应该优化的地方。
在大任务中我们在看门狗存储性能测试中遇到了点问题,就是的显示错误,经过调试终于成功了。
在大任务的各个子程序的衔接过程中也遇到了困难,最后经过组员的共同讨论,成功的实现了各个子程序的衔接,完成了任务。
可以说在这次单片机实训中我们的能力得到了巨大的提高,这与老师的努力是分不开的,如果我们大学的每一天都像单片机实践课程一样的话,相信在我们走向社会的时候,一定能够做出一番成就来。
年月日
王维栋
单片机工程实践真正考察了我们的编程能力和解决实际问题的能力。
第一个任务是蜂鸣器的自检,我们提前编好自检程序之后,信心满满的拿到实验室去调试,但是结果却没有想象中的那么顺利,要求实现两种声音,我们设计了六种,但是蜂鸣器的声音不好听,接着就开始一直调试延迟时间,延迟时间的调整比想象中复杂的多,经过一上午的实践,也令我学到了相关的知识,第二天的LED中,经过辛苦的编程以及验收之后,我们才意识到一个程序的结构和框架是很重要的,还有接下来的键盘自检,在刘老师的提问中,我们才发现许多问题我们并未考虑的到,比如程序执行时有优先顺序,我们就没有考虑到。
最后的大任务中,我们在组长的带领下,人人负责一部分内容,之后整合起来。
在这个过程中,我们发现整合大程序是一件很复杂的事情,不过还是经过全组人的努力,最终完成了大任务。
在这次实践中,除了学习到了单片机的相关指令,我们也认识到了程序框图的重要性,有了程序框图再编程序,思路是很清晰明了的。
同时,我还学习到了一件很重要的事情,那就是团队合作的力量是很强大的。
我希望自己能够在不断地努力与学习中,更加充实自己的头脑,把学到的理论性的知识,不断的应用到实践中去。
年月日
刘敏
七、参考资料
、《单片机系统综合设计与实践》教材主编:
裴岩刘利民内蒙古大学出版社。
、《89C实用教程》主编:
张晓乡
、看门狗芯片中文手册
、看门狗芯片的应用
、芯片中掉电保护资料
、单片机作者:
刘伟
附录:
的说明书
一、主要功能的说明书
:
片选
同步时钟输入;
串行输出;
串行输入
写保护;
地;
电源;
复位输出;
(一)的状态寄存器描述器件的当前状态,各位意义如下表所列:
其中,、是看门狗定时时间设置位;
、是存储单元写保护区设置位;
是只读标志,表明写使能开关打开;
也是只读标志,代表芯片内部正处于写周期。
电复位时,各位都被清零。
(二)芯片功能包括种(这里只选取一个作为介绍):
串行。
芯片内含字节存储单元,万次可靠写,数据保持时间年。
设计了种保护方式防止误写。
包括:
写保护引脚,当引脚被拉低时,内部存储单元状态寄存器都禁止写入;
存储区域写保护模式,通过对状态寄存器的、位的设置,可以选择对不同的存储区域进行写保护;
在进行任何写操作前都必须打开写使能开关,而且在上电初始化写操作完成时,写使能开关自动关闭。
显然,在几方面的保护之下,产生误写的可能性极小,下表是、组合的含义。
写保护的单元地址
没有保护
~
对的操作是通过根口线、、和进行同步串行通信来完成的。
是外部输入的同步时钟信号。
在对芯片改指令或数据时,时钟前沿将引脚信号输入;
在读数据时,时钟后沿将数据位输出到引脚上。
(三)芯片内部共有条指令,如下表所列:
命令名称
命令格式
内
容
打开写使能开关
关闭写使能开关
A
读状态寄存器
写状态寄存器
读存储单元
写存储单元
二、的时序
(一)的读时序
读存储器时,首先将置为低电平,选择该器件。
然后送一个指令(读存储器指令),并将位的地址送入,读指令中的第三位(),用来选择存储器的上半区或下半区。
在读存储器指令和地址送完之后,选中地址的存储单元的数据就通过线串行输出。
如果始终继续提供,下一地址单元的数据将会被按顺序读出,地址自动增加,到最高地址后回到单元。
读周期在变为高电平后终止。
(二)的写时序
写存储器时,将置为低电平,选择该器件。
首先送一个指令(允许写操作指令)。
接着将拉至高电平,然后再一次将置为低电平,写入指令(写存储指令),并将位的地址送入,写指令中的第三位(),用来选择存储器的上半区或是下半区。
紧跟着送入位要写入的数据。
在操作期间必须保持低电平。
写入结束后,必须将拉至高电平。
读出和写入时,串行的数据都是高位在先。
三、硬件电路:
向写入一个数,看是否可以从读出次数,如果读出与写入的数相同,则说明的是正常的
读写存储单元的子程序