单片机实习日记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今天早上,我打开电脑,发现同学们都在讨论今年的单片机实习任务。我仔细看了下实习任务的每一条要求,发现这个任务整体上来说是比较简单的,但是中间的一些细节性问题可能不好解决。我整理了一下思路,根据老师给的时间安排了自己单片机课设的具体计划。我决定今天的主要任务就是查找资料,安装软件,做好十足的准备工作。于是我去了东院图书馆去借了此课设所需的参考书籍,并且在网上下载相关软件,为了提高自己的能力,不准备将软件汉化。在装好需要用的软件以后,根据借来的参考书籍,熟悉了这些软件的基础用法,并且通过向同学请教相关的问题,使我更熟练的掌握了单片机相关知识。我对接下来十四天的实习期做了一个初步的规划,我相信通过自己得努力,一定可以顺利完成此次单片机课程设计。
今天主要的任务就是通过查找资料和阅读参考书把这次课程设计的各个模块的方案选择出来,首先我需要弄清各个模块的基本原理,根据原理才能来进行方案选择,然而方案选择真不是一件轻松的事情,根据要求,通过从图书馆借的参考书籍和在网上找到的期刊文献等,我选出一些可以实现并且能满足课程设计要求的多种方案,并且要在这多种方案的基础上,优中选优,选出一个更适合实际的方案
经过查阅相关资料,相互对比,我最终确定单片机选择STC公司生产的STC89C52RC 这款单片机,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。选定好芯片后,再了解该芯片的基础上,就开始设计该单片机的最小系统,经过查阅相关资料,单片机的最小系统需要再单片机上加复位电路、晶振电路、P0口上拉电阻等。设计完最小系统,经过查阅相关资料,我选定美信公司的MAX232这款芯片,用这款芯片来实现ISP下载程序。今天我计划完成最小系统的设计,并且开始进行外部扩展电路的设计。今天需要设计通信接口部分。单片机使用的是TTL电平,而计算机使用的是RS-232电平,实现RS-232电平与TTL电平之间的转换。
实习日记2013 年 1 月 1 日
今天主要的任务仍旧是硬件电路的设计,主要包括是供电模块、按键模块、数码管显示模块、串口通信模块。
设计供电模块时,我直接使用的USB接口,因为USB口本身就带有VCC和GND,使用也比较方便,而且目前很多手机充电机,电脑的USB端口输出电压都在5V左右,所以采用外接USB供电线来给系统供电是十分合适的。同时,对于按键模块,由于系统要求的功能比较多,所以若是每个按键都占一个IO口,那就显得太浪费单片机资源了。故我选择了矩阵键盘。
同时,在设计数码管模块时,我认真了解了共阳数码管和共阴数码管的区别,并做了对比,发现两者区别不是很大,由于我以前使用过共阳数码管,我决定使用共阳数码管。考虑单片机驱动能力并不强,需添加锁存器给数码管供电。
对于串口,由于前面已经对51单片机有一定了解,知道此时可以选择一块主机,一块从机,通过主机的串口TXD与从机RXD相连,以单工通信的方式即可实现老师的要求。
实习日记2013 年 1 月 2 日
今天上午,我将昨天设计的电路重新检查了一遍,发现没有什么大的问题,于是准备开始进行软件设计。
虽然说之前对51单片机软件编程有过基础,但是,时间长了,许多编程的思想与方式都有些淡忘了。所以今天,我又重新的打开了keil 软件,翻开了C语言书以及原来看过的郭天祥编的一本讲授51单片机的书。花了2个小时熟悉了51单片机的编程语言和编程环境。下午,则根据实习要求,开始构思各个功能,各个模块的编程思想、软件流程图等。
虽说整个过程有些艰难的,有很多地方自己还是不是很清楚,但是经过查阅资料,与班上同学讨论,到晚上时候,总算把大致架构搭建出来了。
实习日记2013 年 1 月 3 日
昨天进行了软件的流程设计,今天就要正式开始编写程序代码了。今天主要是编写单独一些模块代码。具体如下:
首先是设计了系统软件编程了经常会用到的一些函数,如延时函数,键盘扫描、数码管显示等。在这些基础上,我开始设计数据输入和数据显示的实现函数。在编程前,我经过详细思考,对于这些功能,我应该设什么样的变量,什么地方设全局变量,什么时候设局部变量,变量的类型是什么。最后,以key这个全局变量来存储按键值,以一个全局变量的数组来实现功能一中的键盘输入的序号以及序号所对应的数字。然后功能二则是在这个数组中取出相应存储的数字。并且,程序中也详细定义了每个按键所赋予的意义,以及一些情况的处理等
由于数据储存部分逻辑较为复杂,需要考虑的东西很多,思维经常出现短路的情况,但我还是通过请教学长渐渐解决了这些问题。
实习日记2013 年 1 月 6 日
今天我的任务是完成串口通信的代码编写,由于对单片机的串口寄存器配置不是很熟,我花了2个小时重新复习了单片机教科书中的串口部分。
在编写程序时,我将串口配置为工作模式1,波特率配置为4800,定时器1的工作方式配置为方式2,功夫不负有心人,很快我就实现了串口通信功能,再接再厉地完成了功能三程序的设计。
以上相应各自的功能基本实现了,但是,系统是整体工作的,还需要将各个功能结合起来。经过实践,我确定以键盘的输入来实现功能的转换,并在整体上逐渐形成相互联系、相互制约这种关系。逐渐的完善整体程序
经过这几天的辛苦努力,程序终于写完全了,这个过程中,遇到了不少bug,但是身边的学长帮助了寻清了问题,最终解决了。所以我很感谢他们的帮助,同时也希望后面的仿真以及实物调试能顺利完成。
实习日记2013 年 1 月7 日
今天,我将对系统进行整体的仿真测试。由于并不知道程序是否完全正确,所以心里还是有些许的忐忑之感。
开始仿真后,我发现仿真的过程出奇的顺利,那也就是证明我所编写的程序并没有出现很大的错误。只是有的时候会出现数码管莫名其妙闪动的情况和退出功能时依然会有数字留在数码管上。经过仔细的排查和思考,我发现出第一种错误的原因是在显示数据时没有把上一次的数据清除,导致上一次的数据还留有残留,当程序循环执行时就会显示出来。至于第二个错误呢,其实也是编程的时候思维不够严谨,在退出程序时忘了关闭显示。加上这些代码时,程序运行就不再出错了。
经过今天的仿真测试,我明白了测试的重要性,许多错误在编写的时候难以发现,但是一仿真就马上暴露出来了,这样可以增加所写程序的严谨性。