版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青岛农业大学海都学院单片机课程设计实习报告院系 工程系 专业 2014级电气Z1班 学号 201471019 姓名 隋永博 实习时间 第11周 实习课程 单片机应用课程设计 2015年11月6日按键控制数码管加减显示目录一、前言3二、设计要求3三、系统硬件设计与说明43.1系统组成及总体框图43.2 AT89C514四、系统软件设计与说明54.1 软件部分的程序流程图54.2 源程序5五、仿真过程描述7六、总结8一、前言随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。 基于当前市场上的智能数字市场需求量大,其中
2、数码管显示技术就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现数码管准确显示各种数码。以液晶显示技术的发展为背景,选择了比较常用的T6963C内置控制器型图形LCD(液晶显示嚣)模块,从应用角度介绍了该控制器的特点和基本功能,并描述了单片机控制T6963CLCD模块的显示机理。在此前提下以C51硬件开发语言为基础,给出了8051单片机与T6963C的接口电路框图,并以字符、图形的具体显示方法为例简要介绍了软件的设计流程及实现。二、设计要求名称:K1-K4 控制数码管移位显示说明:按下K1时加1计数并增加显示位,按下K2时减1计数并减少显示位,按下K3时清零。三、系统硬件设计
3、与说明3.1系统组成及总体框图图1 系统硬件总图3.2 AT89C51该课程设计中我们选用的芯片是AT89C51。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚
4、相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。 &
5、#160;AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。四、系统软件设计与说明4.1 软件部分的程序流程图4.2 源程序#include<reg51.h>#define uchar unsigned char#define uint unsigned int/段码uchar code DSY_CODE=0xc
6、0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/位码uchar code DSY_Index=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;/待显示到各数码管的数字缓冲(开始仅在 0 位显示 0,其他黑屏)uchar Display_Buffer=0,10,10,10,10,10,10,10;/延时void DelayMS(uint x)uchar i;while(x-) for(i=0;i<120;i+);void Show_Count_ON_DSY()uchar i;for(i=0;i<
7、8;i+)P0=0xff;P0=DSY_CODEDisplay_Bufferi;P2=DSY_Indexi;DelayMS(2); /主程序void main()uchar i,Key_NO,Key_Counts=0; P0=0xff;P1=0xff;P2=0x00;while(1)Show_Count_ON_DSY();P1=0xff;Key_NO=P1;/P1 口按键状态分别为 K1-0xfe,K2-0xfd,K3-0xfb switch(Key_NO) case 0xfe: Key_Counts+;if(Key_Counts>8) Key_Counts=8;Display
8、_BufferKey_Counts-1=Key_Counts;break; case 0xfd: if(Key_Counts>0)Display_Buffer-Key_Counts=10;break; case 0xfb: Display_Buffer0=0;for(i=1;i<8;i+) Display_Bufferi=10;Key_Counts=0; /若键未释放则仅刷新显示,不进行键扫描while(P1!=0xff) Show_Count_ON_DSY();五、仿真过程描述1、在protel99se环境下,根据电路图依次从库中调出元器件,然后将各元器件按照电路图连接起来。
9、160;2、打开keil uvision,然后新建一个工程,新建一个文件,将新建的文件添加到工程里面去,在新建的文件里面编写C语言程序。 3、当程序可以运行无误后,在target中的OUTPUT里面打钩,生成.HEX文件。 4、在protel99se里面的at89c51芯片上面双击,在Program File选项里面选取刚生成的.HEX文件,然后进行仿真。 5、第一次仿真时没有看到理想的结果,分析原因是由于延时太短,于是更改程序中的延时,再次进行以上操作,结果成功。六、总结作为一名电气工程及其自动化专业的大四学生,我觉得做这次课程设计是十分有意义的,而且
10、是十分必要的。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我们发现效率很高,这是我们做这次课程设计的又一收获。然后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我们受益终身。 本次课程设计是大学学习阶段一次非常难得的理论与实践相结合的机会,通过这次比较系统的项目设计提高了我们运用所学的专业基础知识来解决面临实际
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论