51单片机实训

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《单片机应用实训》设计报告-1-摘要本设计是基于AT89S52的智能跑秒表,此跑秒表能够实现0~60共一分钟时间的精确显示,以及在人为干预条件下快速暂停显示,并具有再次快速启动和重启功能.该表利用12KHz晶振可最小精确到10ms,有较高可信度.秒表制作中用到了硬件仿真,和软件编程方法.初步掌握了单片机系统的开发流程.硬件设计是基础,后面的软件设计完全依据它而改变.连接器件时要注意原件正负极的区分,如二极管的焊接等.核心程序用keil工具编写,编程语言是标准c语言,语法主要是c语言规则以及与单片机相关的附加规则.为了实现显示,分块设计了延时程序,数码管显示程序,定时器程序,和中断程序.其中延时是利用了人的视觉暂留效应,使得四个数码管能同时显示.数码管显示用到了数据的分离方法.定时器的初始化和开中断用到了中断源的设置方法.最后要在protues上进行软件仿真,进行检测.最后的步骤是下载调试。根据预期效果编写程序,在单片机上检验,根据现象分析程序出错处,再修改,在下载调试。反复修改直到成功。在开发过程中,学到许多。一,加深了理论联系实践。在电路板焊接中,掌握了基本操作方法,识别了一些元器件,如按键,二极管,数码管,晶振等。二,初步学会了开发流程,即硬件设计,软件编程,下载调试,功能实现。此过程中掌握了keil软件,protues软件,程序下载软件的使用方法。三,初步了解了AT89S52系列内部结构和接口,了解到完整最小系统由复位电路,电源电路,单片机芯片,时钟电路构成,加上外围电路可实现各种功能。四,掌握了c语言编程方法,c语言分两部分,一为有硬件相关,一为软件相关。因而具有高效的可移植性,可修改性。养成了良好的程序设计风格.如大小写的使用,首行所缩进的使,宏定义的使用。五,实现了自己的想法,作出了几个程序,体会到编程的快乐。通过由最简单的点亮一个led灯开始,到做出流水灯,再到中断0/1的使用,使得单片机的功能得到充分使用。最后到定时器,中断源的调用。最后在作品制作中加深了硬件理论理解,锻炼了动手能力,发现问题和解决问题的能力.,培养了对51单片机深厚的兴趣,相信以后会走的更远。《单片机应用实训》设计报告-2-目录1概述………………………………………………………………………………1.1:秒表设计的目的1.2:秒表设计过程中软硬件资源1.3:秒表设计过程中利用到的原理,方法,及基本思想2系统总体方案及硬件设计2.1单片机最小系统的构建2.2keil工程的建立,c语言文件的添加,以及编译,生成hex文件2.3硬件设计原理图3软件设计3.1初始化3.2定时器中断服务程序3.3显示服务程序3.4延时程序4实验仿真4.1protues仿真图5设计体会参考文献附1:源程序代码附2:系统原理图《单片机应用实训》设计报告-3-1概述1.1秒表设计的目的该作品由硬件和软件构成,作品的完成既说明了基于AT89S52单片机一个完整小系统的开发流程的成功实现。在硬件方面,练习焊接技术,和按照原理图正确焊接的锻炼。软件方面,熟悉基于C语言的51编程,和keil编程环境,protues仿真环境。1.2秒表设计过程中软硬件资源硬件资源:AT89S52单片机芯片,电路板,下载线,数码管,按键,导线若干软件资源:keil软件,protues软件,下载软件。1.3秒表设计过程中利用到的原理,方法,及基本思想(1)数码管显示中人眼的视觉暂留效应先赋给第一位数码管要显示的数字对应段码,继而将该位共阴极的接口拉低至低电平;然后延时20ms;然后同样的方法赋给第二位要显示的段码,延时,依次赋给,由于20ms的时间特别短以至于人眼无法瞬间分辨,给人的感觉既是各个数字同时显示。(2)数字位的分离利用%10对一个两位数字取余,利用/10对一个两位数字取整数部分。(3)单片机的中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。数码管显示中用到了定时器中断。《单片机应用实训》设计报告-4-2.1单片机最小系统的构建2.12.2keil工程的建立,c语言文件的添加,以及编译,生成hex文件2.2硬件设计原理图《单片机应用实训》设计报告-5-《单片机应用实训》设计报告-6-3.1初始化51头文件#includeAT89X52;宏定义#defineucharunsignedchar#defineuintunsignedint数码管编码共阴型ucharcode[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};ucharsec=0;//定义秒数变量uintmsec=0;//定义毫秒变量定时器0中断初始化:TOMD=0x01;//开启16位装数TH0=55536/256;//高四位装初值TL0=55536%256;//低四位装初值总中断开关打开:EA=1;定时器0中断开关ET0=1;3.2定时器中断服务程序voidtimer0(void)interrupt1{TH0=55536/256;TL0=55536%256;msec++;if(msec==99){msec=0;sec++;if(sec==60){sec=0;msec=0;}}}3.3显示服务程序Voiddisplay(void){《单片机应用实训》设计报告-7-P2=0xef,P1=a[msec%10];delay(20);//延时20msP2=0xdf,P1=a[msec/10];delay(20);//延时20msP2=0xbf,P1=a[sec%10];delay(20);//延时20msP2=0x7f,P1=a[/sec/10];delay(20);//延时20ms}3.4延时程序voiddelay(uintt)//延时0.1*n毫秒0{uinti;do{for(i=0;i10;i++);}while(t--);}《单片机应用实训》设计报告-8-4.1protues仿真原理图《单片机应用实训》设计报告-9-5.1设计体会(1)秒表的设计完全是靠自己实践和老师的帮助,自己收获很多。要完全完成基于单片机的作品必须能够看懂硬件原理图,有必要的C语言编程功底,较强的依照原理图焊接能力,和根据硬件连接修改设置编程初始化的能力。最后还要懂得一些关于功能实现的必要原理。如数码管动态显示原理,和共阴型四位一体数码管的显示原理等。(2)要有耐心和热情。调试是一个根据现象不断修改的过程。这时要细心,耐心。(3)掌握了开发单片机的系统工具,keil和protues软件,掌握了单片机系统设计的思想和方法。(4)这只是开始,基于单片机的功能还有很多,但基本流程都大同小异。相信有了这次的经验,其他的功能也一定能够设计出来。参考文献期刊论文:[序号][1]陈享成,耿长青。基于单片机的LCD显示终端设计。电力自动化设备,2007,27(9),11-27.书、专著:[1]贺哲荣,黄金波.AT89S51单片机硬件设计与编程实例.北京:中国电力出版社,2012,16-32.[2]郭天祥。新概念51单片机c语言教程。北京:电子工业出版社,2009,22-50.电子文献:[1]吉鹤.MCS-51单片机内部资源的应用扩展.吉林,电脑学习,2011(2),3-5.《单片机应用实训》设计报告-10-附1源程序代码#includeat89X52.h#defineuintunsignedint#defineucharunsignedcharucharcodea[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//段码组合,共阴极ucharsec=0;uintmsec=0;uintk=0;voiddisplay(void);voiddelay(uintt)//延时0.1*n毫秒0{uinti;do{for(i=0;i10;i++);}while(t--);}voidmain(void){TMOD=0x01;TH0=0xd8;TL0=0xf0;ET0=1;EA=1;while(1){display();if(!P3_2)《单片机应用实训》设计报告-11-{delay(60);while(!P3_2);TR0=~TR0;}if(!P3_3){delay(60);TR0=0;}}}voidtimer0(void)interrupt1{TH0=55536/256;TL0=55536%256;msec++;if(msec==99){msec=0;sec++;if(sec==60){sec=0;msec=0;}}}voiddisplay(void){P2=0xef,P1=a[msec%10];《单片机应用实训》设计报告-12-delay(20);P2=0xdf,P1=a[msec/10];delay(20);P2=0xbf,P1=a[sec%10];delay(20);P2=0x7f,P1=a[sec/10];delay(20);}《单片机应用实训》设计报告-13-附2系统原理图《单片机应用实训》设计报告-14-《单片机应用实训》设计报告-15-3.仿真原理图

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功