桂林电子科技大学课程设计说明书
按键扫描采用行扫描法,先输出全零行,再读看是否有按键按下,如有按键,则先消抖动,然后再次确认是否有按键,如果确有按键,再逐行置低电平扫描按下的键的行列位置,最后将按键对应位置的8位二进制码(即低四位表示行号,高四位表示列号)返回;若无按键,则返回0。
获取键值函数为Switch结构的散转程序,根据按键的行与列得到按键的键值,这里预先定义按键的键值为字符‘0’~‘F’。以字符形式表示键值利于数码管直接显示。
5.3 系统初始化程序设计
系统初始化程序包括定时器初始化、串口初始化、发送数据初始化和全局变量初始化。初始化步骤如下:
定时器初始化使定时器一工作在方式二,波特率设置为9600b/s,并开中断。串口初始化使串口工作在方式三,9位数据位。发送与接收数据区的开始地址被已经被指定,用指针常量表示。发送数据初始化在发送数据区存放待发送的数据串,以空字符作为结束符。全局变量初始化只需根据需要设置即可。
液晶显示程序只许根据需要调用液晶模块内的函数即可,显示以字符形式输出。输出字符的ASCII码,液晶显示对应的字符。用指向code区的指针访问待显示的字符数据串来显示。
6 Keil和Proteus介绍和联调
6.1 Proteus的介绍
1、Proteus是一种低投资的电子设计自动化软件,提供Schematic Drawing、SPICE仿真与PCB设计功能,这一点Proteus 与 multisim比较类似,只不过它可以仿真单片机和周边设备,可以仿真51系列、AVR,PIC等常用的MCU,与keil和MPLAB不同的是它还提供了周边设备的仿真,只要给出电路图就可以仿真,例如373,led,示波器,
第 21 页
桂林电子科技大学课程设计说明书
Proteus提供了大量的元件库,有RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件,编译方面支持Keil和MPLAB,里面有大量的例子参考.
2、Proteus可提供仿真元件资源 ,Proteus软件提供了可仿真数字和模拟、交流和直流等数千种元器件达30多个元件库。
3、Proteus可提供的仿真仪表资源包括拟仪器仪表的数量、类型和质量,是衡量仿真软件实验室是否合格的一个关键因素。在Proteus软件中,理论上同一种仪器可以在一个电路中随意的调用。
除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。
4、Proteus可提供的调试手段
Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。
Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。
6.2 Keil的介绍
Keil是德国开发的一个51单片机开发软件平台,最开始只是一个支持C语言和汇编语言的编译器软件。后来随着开发人员的不断努力以及版本的不断升级,使它已经成为了一个重要的单片机开发平台,不过KEIL的界面并不是非常复杂,操作也不是非常困难,很多工程师的开发的优秀程序都是在KEIL的平台上编写出来的。可以说它是一个比较重要的软件,熟悉他的人很多很多,用户群极为庞大,要远远超过伟福等厂家软件用户群,操作有不懂的地方只要找相关的书看看,到相关的单片机技术论坛问问,很快就可以掌握它的基本使用了。
1、Keil的μVision2可以进行纯粹的软件仿真(仿真软件程序,不接硬件电路);也可以利用硬件仿真器,搭接上单片机硬件系统,在仿真器中载入项目程序后进行实时仿真;还可以使用μVision2的内嵌模块Keil Monitor-51,在不需要额外的硬件仿真器的条件下,搭接单片机硬件系统对项目程序进行实时仿真。
2、uVision2调试器具备所有常规源极调试,符号调试特性以及历史跟踪,代码覆盖,复杂断点等功能。DDE界面和shift语言支持自动程序测试。
第 22 页
桂林电子科技大学课程设计说明书
3、虚拟实验的构建及调试;单片机的理论教学和实验中,内容一般包括了四方面,即单片机系统资源;硬件电路的设计、组装、调试;应用软件的编制、调试;总调,即应用软件的链接调试,程序固化,软、硬件结合的应用系统。因此教师在进行教学时,应该充分考虑课程的特点并作合理的模块划分,在每次实验课程前作适当的准备工作,以使教学任务能集中和突出。
(1)系统资源的实验教学
任何一种单片机均提供了一定的系统资源。对于51系列单片机来讲,其所提供的资源是以寄存器和存储器的方式体现出来的。对于寄存器内容的查看,可以采用多种可以模拟仿真51单片机的软件来实现。对于Keil软件来讲,C51编译器可以实现对51系列单片机所有资源的操作。
(2)硬件电路的设计、组装、调试
硬件电路的设计包含两部分内容:一是系统扩展,即单片机自身的功能单元如ROM、RAM、I/O口、定时器/计数器等容量不能满足应用系统的需要时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统配置,即按照系统的要求配置外围设备,如键盘、显示器、打印机、A/D转换器、D/A转换器等,要设计合适的接口电路。
很多常用的硬件电路的设计可在Proteus软件中实现,学生通过Proteus软件的使用,不当可以实现教材上的大部分实验。而且可以学到硬件电路设计的方法。
(3)应用软件的编制、调试;
使用Keil 软件工具时,项目开发流程和其它软件开发项目的流程极其相似。 ①创建一个项目,从器件库中选择目标器件,配置工具设置。 ②用C语言或汇编语言创建源程序。
③用项目管理器生成应用。 ④修改源程序中的错误。 ⑤测试,连接应用。
通过使用Keil 软件工具编制、调试应用软件,可以学到单片机各种指令,也可以学到单片机软件开发的步骤、方法和技巧。
(4)总调,即应用软件的链接调试,程序固化,软、硬件结合的应用系统 软硬件联合仿真系统由一个硬件执行环境和一个软件执行环境组成,通常软件环境和硬件环境都有自己的除错和控制界面,Keil与Proteus的整合调试可以实现系统的总调,在该系统中,Keil作为软件调试界面,Proteus作为硬件仿真和调试界面,下面说一下如何在keil中调用proteus进行MCU外围器件的仿真。
第 23 页
桂林电子科技大学课程设计说明书
7 结论
为期1个月的课程设计,我很好的完成了设计任务。期间,我学到了很多宝贵的经验和相关的通信技术知识。在这次的多机通信系统设计中,C语言程序的编写以及原理图的设计占了很重要的部分。对于零散的芯片,通过编程、仿真、硬件电路搭建,才能形成一个完整的系统。我必须深入到工程实践中,毕竟实践出真知。同时,在本次课程设计中,我将书本中的知识很好的应用到实践中去。
经过课程设计,在查阅资料的过程中,学习了基于单片机的C语言程序设计,了解了单片机串行通信的基本知识,对于以后的学习和工作都有很大的益处。在学习的过程中,也遇到了一些困难,比如开始的时候,由于发送端和接收端的通信协议没有做好,导致数据不能正确的传输,在解决问题的过程中,对于通信协议的实现有了深刻的认识。
现在课程设计已经结束,但它的影响却留存长久,它让我自己动手,品尝成功的喜悦,激发了我对实践的兴趣和热情,在很大程度上鼓舞了我的学习决心,增强了我的自信心,让我以更大的勇气面对以后的学习和人生他,它给了我开拓进取的动力。
通过这次的课程设计我深刻的认识到了,理论知识和实践相结合是教学环节中相当重要的一个环节,只有这样才能提高自己的实际操作能力,并且从中培养自己独立思考、解决问题、勇于挑战困难的精神。在做完这课程设计,我真的学到了很多东西,protel、proteus 、keil软件的使用是关乎到以后工作的实践,这次课程设计,我很好地学会了这3款软件的使用,对解决实际电路的问题和软件设计问题有了很好的思维模式,这是最宝贵的经验。
致 谢
持续紧张和忙碌一个月的课程设计终于完了,在此我特别感谢带我的指导老师——武小年老师,在这次设计中对我的的耐心指导和帮助。还有各位同学在此期间对我的帮助和鼓励,使我在设计的时候信心十足。感谢学校给我这次课程设计的机会和其它的帮助。还有一同讨论、帮助我设计的同学表示感谢。
在这次课程设计中,老师的教导和同学们的协作,使我受益匪浅。没有老师和他们的帮助、查找资料。对于我一个对单片机知识理解不是很深入的人来说要想在短短的几周的时间里学习到网络知识并完成课程论文是很困难的事情。所以,谢谢指导老师和几位同学,谢谢你们!
最后,特别感谢我的父母和家人,是他们多年来无私的奉献、鼓励和支持才能助我顺利完成学业,谢谢他们!
第 24 页