单片机课程设计报告-电子计时器综合系统设计.doc

上传人:scccc 文档编号:11219284 上传时间:2021-07-15 格式:DOC 页数:22 大小:202KB
返回 下载 相关 举报
单片机课程设计报告-电子计时器综合系统设计.doc_第1页
第1页 / 共22页
单片机课程设计报告-电子计时器综合系统设计.doc_第2页
第2页 / 共22页
单片机课程设计报告-电子计时器综合系统设计.doc_第3页
第3页 / 共22页
单片机课程设计报告-电子计时器综合系统设计.doc_第4页
第4页 / 共22页
单片机课程设计报告-电子计时器综合系统设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机课程设计报告-电子计时器综合系统设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告-电子计时器综合系统设计.doc(22页珍藏版)》请在三一文库上搜索。

1、单片机课程设计报告吉林建筑工程学院电气与电子信息工程学院单片机课程设计报告设计题目: 电子计时器综合系统设计 专业班级: 学生姓名: 学 号: 指导教师: 设计时间: 2011.08.222011.09.02 教师评语:成绩 评阅教师 日期 目录第1章 绪论3 11 课程设计目的31.2 课程设计内容31.3 课程设计要求31.4 电子时钟的简单介绍31.5 单片机的相关知识3 1.5.1 单片机简介3 1.5.2 单片机的发展史4第2章 控制系统的硬件设计52.1 单片机型号的选择52.1 89C51单片机介绍52.3 振荡电路62.4 复位电路72.5 键盘电路72.6 数码管显示工作原理

2、72.7 整个电路原理图82.8 PCB板图9第3章 控制系统的软件设计103.1 程序流程图103.2 程序设计12第4章 软件仿真13 4.1 Proteus软件介绍13 4.2 仿真结果13 4.3 结果分析13第5章 心得体会14参考文献14附录15 第1章 绪论1.1 课程设计目的:通过单片机原理与应用课程设计,掌握单片机及其扩展系统设计的方法和设计原则及相应的硬件调试的方法。进一步加深单片机及其扩展系统设计和应用的理解。1.2 课程设计内容:1)电子计时器综合系统设计有4位数码管显示,能按照分秒进制显示时间; 能正确手动复位;有上电指示灯;1.3 课程设计要求:1)独立设计原理图及

3、相应的硬件电路。2)针对选择的设计题目,设计系统软件。软件要做到:操作方便,实用性强,稳定可靠。3)设计说明书格式规范,层次合理,重点突出。并附上设计原理图及相应的源程序。1.4 电子时钟的简单介绍 1957年,Ventura发明了世界第一台电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现在的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时清零。从而达到及时的功能,是人们日常生活中不可缺少的工具。现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石

4、英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,这种表具有时分秒显示时间的功能,还可以进行时和分的校队,片选的灵活性好。 该电子钟由AT89C51,BUTTON,八段数码管等构成,采用晶振电路作为驱动电路,有延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。有两个按键分别控制小时和分钟,当按下控制分钟的按键时,分钟加一,同理按控制小时的按键时,小时加一。1.5 单片机的相关知识1.5.1 单片机简介 单片机就是在一片半导体硅片上集成了中央处理器(CPU)、存储器(RAMROM)

5、、并行I/O口、定时器/计数器、中断系统系统时钟电路及系统总线的微型计算机。这样一块集成电路芯片具有一台微型计算机的属性,因而被称为单片微型计算机,简称单片机。从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。单片机按照其用途可分为通用型和专用型两大类。1.5.2 单片机的发展史 第一阶段(1974年1976年):单片机初级阶段。因工艺限制,单片机采用双片的形式而且功能比较简单。1974年12月,仙童公司推出了8位的F8单片机,实际上只包括了8位CPU,64B RAM

6、和2个并行口。第二阶段(1976年1978年):低性能单片机阶段。1976年,Intel公司推出的MCS-48单片机(8位单片机)极大地促进了单片机的变革和发展;1977年,GI公司推出了PIC1650,但这个阶段的单片机仍然处于低性能阶段。第三阶段(1978年1983年):高性能单片机阶段。1978年,Zilog公司推出了Z8单片机;1980年,Intel公司在MCS-48的基础上推出了MCS-51系列,Mortorola公司推出了6801单片机,这些产品使单片机的性能及应用跃上了一个新的台阶。此后各公司的8位单片机迅速发展起来。这个阶段推出的单片机普遍带有串行I/O口、多级中断系统、16位

7、定时器/计时器、片内ROM、RAM容量增大,且寻址范围可达64KB,有的片内还带有A/D转换器。由于这类单片机的性能价格比高,是目前应用数量最高的单片机。第四阶段(1983年现在):8位单片机巩固、发展及16位单片机、32位单片机推出阶段。16位单片机的典型产品为Intel公司生产的MCS-96系列单片机。而32位单片机除了具有更高的集成度,其数据处理速度比16位单片机提高许多,性能比8位、16位单片机更加优越。20世纪90年代是单片机制造业大发展的时期,这个时期的Mortorola、Intel、ATMEL、德州仪器(TI)、三菱、日立、Philips、LG等公司也开发了一大批性能优越的单片机

8、,极大地推动了单片机的应用。近年来,又有不少新型的高集成度单片机产品涌现出来,出现了单片机产品丰富多彩的局面。目前,除了8位单片机得到广泛应用之外,16位单片机、32位单片机也得到广大用户的青睐。第2章 控制系统的硬件设计2.1 单片机型号的选择 通过对多种单片机性能的分析,最终认为AT89C51时最理想的电子时钟开发芯片。89C51时一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的NCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微

9、控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。2.2 89C51单片机介绍 图1 AT89C51VCC:电源GND:接地P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定能够以为数据/地址的第八位。在FLASH编程时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部上

10、拉为低电平时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的原因。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高8位。在给出地址1时,它利用内部上拉优势,当对外部8位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TT

11、L门电流。当P3口写入1时,它们被内部上拉位高电平,并用作输入。作为输入,由于外部上拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一特殊功能口,如下所示: P3.0 RXD(串行数据输入口) P3.1 TXD(串行数据输出口) P3.2 /INT0(外部中断0输入) P3.3 /INT1(外部中断1输入) P3.4 T0(定时器0外部计数输入) P3.5 T1(定时器1外部计数输入) P3.6 /WR(外部数据存储器写选通输出)P3.7 /RD(外部数据存储器读选通输出) P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位

12、器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时 ,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,次引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出可在SFR8EH地址上置0.此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置为无效。/PSEN:外部程序存储器的读选通信号,低电平有效。

13、在由外部程序存储器取值期间,每个机器两次/PSEN有效,但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:/EA为该引脚的第一功能,即外部程序存储器访问控制允许端。当/EA为高电平时,在PC值不超过0FFFFH时,单片机读片内程序存储器(4KB)中的程序;当PC值超出时,将自动转向片外60KB程序存储器空间中的程序。当/EA引脚为低电平时,只读取外部程序存储器中的内容。VPP为该引脚的第二功能,即在对片内FLASH进行编程时,VPP引脚接入编程电压。2.3 振荡电路 本次设计采用内部振荡电路,瓷片电容采用22pf,晶振采用12MHZ。电路连接如图3所示 图2 震荡电

14、路2.4 复位电路 单片机系统的复位电路在这里采用的是上电复位电路的形式,其中电阻R1采用10K的阻值,电容采用电容值为22pf的电容。电路连接如图4所示 图3 复位电路2.5 键盘电路 该设计使用了两个键盘。该键盘可以实现小时和分钟的调节,当按下控制分钟的按键时,可以实现分钟的加一,每加一次分钟加一;同样按下控制小时的按键时,也实现同样的功能。达到调节时间的目的。 图4 键盘电路2.6 数码管显示工作原理 数码管是一个把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在

15、一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便设计的,称为A、B、C、D、E、F、G、DP,其中DP是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是最实际的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码

16、管公共端加有效信号,早同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。 图5 共阴数码管 2.7 整个电路原理图图6 电路原理图2.8 PCB板图图7 PCB板图第3章 控制系统的软件设计3.1 程序流程图 本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。主程序流程图:SECOND加1SECOND=60吗?显示数据处理开始 秒按键识别成功否开中断,并允许T0中断TH0,TL0装入初值计数单元清零SECOND=0分按键识别成功否显示数据处理MINIT=0MINITE=60吗?MINITE加1时按键识别成功否HOUR加1

17、HOUR=24吗?HOUR=0中断子程序流程图3.2 程序设计 见附录第4章 软件仿真4.1 Proteus软件介绍 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件,是目前最好的模拟单片机外围器件的工具。可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、AD/DA,部分SPI器件,部分IIC器件等)。Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围设备协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件PCB设计软件和虚拟模

18、型仿真软件三合一的设计平台。Proteus具有原理布图、PCB自动或人工布线、SPICE电路仿真的功能。4.2 仿真结果4.3 仿真结果分析 功能太过单调,只能实现时分秒的显示,设计比较简单。电路图的设计过于简单,用的器件太少,实现调节时间的按钮太少,不能很好的调节时间。在此时过程中,六位数码显示管只显示五位数字,有一位数字不亮,通过多次的修改程序并在proteus软件环境中进行仿真,最终解决了这个问题,也透漏出我在单片机电路设计和程序设计方面的不足。不过最后的仿真效果非常好,实现了预期的效果,比较令人满意。第5章 心得体会心得体会 随着日子一天天的流逝,课程设计也接近了尾声。经过两周的奋战,

19、我的课程设计终于完成了。在没有做课程设计以前觉得课程设计只是对这学期所学单片机知识的单纯总结。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我明白了自己原来的知识还比较欠缺,自己要学习的知识还很多;以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作,生活中应该不断不得学习,努力提高自己知识和综合素质。这次对数字钟的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字钟的原理与设计理念。在此次的数字钟设计过程中,更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和具体的使用方法

20、。通过自己画原理图和PCB板图,掌握了proteus软件的使用方法,增强了自己的动手能力。感谢这两周来同学间的相互帮助和老师的指导。两周的锻炼,14天的不同感受,我有过对知识的掌握不足时的迷茫,也有过思路不清是的懊恼,但一路走来,我却收获了知识,收获的希望和努力后的成果。通过这次的课程设计加深了我对理论知识的理解,同时增强了我的逻辑思维能力,另一方面也是对课堂所学理论知识作一个总结和补充。在此我要感谢老师的孜孜教诲和同学的帮助,我相信这十几天的不懈努力回给我未来的学习带来很多的启发,我会在以后的工作生活中更好的理论联系实际,证明自己的能力参考文献1单片机原理及应用/张毅刚 彭喜元 彭宇主编.高

21、等教育出版社,2010年5月第二版2单片机原理及应用/张毅刚高等教育出版社,20043MCS-51系列单片机实用接口技术/李华主编北京:北京航空航天大学出版社,1993.8附录#include#include#define uchar unsigned char #define uint unsigned intuchar code DSY_CODE = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff ;uchar DSY_BUFFER = 0,0,0xBF,0,0,0xBF,0,0;uchar Scan_BIT;uchar DSY

22、_IDX;uchar Key_State;uchar h,m,s,s100;void DelayMS(uchar x) uchar i; while(x-) for( i = 0; i 23) h = 0; DSY_BUFFER0 = DSY_CODEh / 10; DSY_BUFFER1 = DSY_CODEh % 10;void Increase_Minute() if(+m 59) m = 0; Increase_Hour(); DSY_BUFFER3 = DSY_CODEm / 10; DSY_BUFFER4 = DSY_CODEm % 10;void Increase_Second(

23、) if(+s 59) s = 0; Increase_Minute(); DSY_BUFFER6 = DSY_CODEs / 10; DSY_BUFFER7 = DSY_CODEs % 10;void T0_INT() interrupt 1 TH0 = (65536 - 1000) / 256; TL0 = (65536 - 1000) % 256; P3 = Scan_BIT; P0 = DSY_BUFFERDSY_IDX; Scan_BIT = _crol_(Scan_BIT,1); DSY_IDX = (DSY_IDX + 1) % 8;void T1_INT() interrupt

24、 3 TH1 = (65536 - 50000) / 256; TL1 = (65536 - 50000) % 256;if( +s100 = 20) s100 = 0; Increase_Second(); void main() P0 = P3 = 0xFF; TMOD = 0x11; TH0 = (65536 - 1000) / 256; TL0 = (65536 - 1000) % 256; TH1 = 0xDC; TL1 = 0; TCON = 0x01; EA = 1; ET0 = 1; ET1 = 1; h = 0; m = s = s100 = 0; DSY_BUFFER0 =

25、 DSY_CODEh / 10; DSY_BUFFER1 = DSY_CODEh % 10; DSY_BUFFER3 = DSY_CODEm / 10; DSY_BUFFER4 = DSY_CODEm % 10; DSY_BUFFER6 = DSY_CODEs / 10; DSY_BUFFER7 = DSY_CODEs % 10; Scan_BIT = 0xFE; DSY_IDX = 0; TR0 = TR1 = 1; Key_State = 0XFF; while(1) if ( P1 Key_State) DelayMS(10); if ( P1 Key_State) Key_State

26、= P1; EA = 0;if(Key_State & 0x01) =0) Increase_Hour();else if(Key_State & 0x02) =0) m = (m + 1) % 60; DSY_BUFFER3 = DSY_CODEm / 10; DSY_BUFFER4 = DSY_CODEm % 10;EA = 1; C51 COMPILER V9.00 时_? 07/29/2011 15:38:04 PAGE 1 C51 COMPILER V9.00, COMPILATION OF MODULE 时_?OBJECT MODULE PLACED IN 时钟.OBJCOMPIL

27、ER INVOKED BY: E:C51BINC51.EXE 时钟.c BROWSE DEBUG OBJECTEXTENDline level source 1 #include 2 #include 3 #define uchar unsigned char 4 #define uint unsigned int 5 uchar code DSY_CODE = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff ; 6 uchar DSY_BUFFER = 0,0,0xBF,0,0,0xBF,0,0; 7 uchar Scan_BIT

28、; 8 uchar DSY_IDX; 9 uchar Key_State; 10 uchar h,m,s,s100; 11 void DelayMS(uchar x) 12 13 1 uchar i; 14 1 while(x-) for( i = 0; i 23) h = 0; 19 1 DSY_BUFFER0 = DSY_CODEh / 10; 20 1 DSY_BUFFER1 = DSY_CODEh % 10; 21 1 22 void Increase_Minute() 23 24 1 if(+m 59) 25 1 26 2 m = 0; Increase_Hour(); 27 2 2

29、8 1 DSY_BUFFER3 = DSY_CODEm / 10; 29 1 DSY_BUFFER4 = DSY_CODEm % 10; 30 1 31 void Increase_Second() 32 33 1 if(+s 59) 34 1 35 2 s = 0; Increase_Minute(); 36 2 37 1 DSY_BUFFER6 = DSY_CODEs / 10; 38 1 DSY_BUFFER7 = DSY_CODEs % 10; 39 1 40 void T0_INT() interrupt 1 41 42 1 TH0 = (65536 - 1000) / 256; 4

30、3 1 TL0 = (65536 - 1000) % 256; 44 1 P3 = Scan_BIT; 45 1 P0 = DSY_BUFFERDSY_IDX; 46 1 Scan_BIT = _crol_(Scan_BIT,1); 47 1 DSY_IDX = (DSY_IDX + 1) % 8; 48 1 49 void T1_INT() interrupt 3 50 51 1 TH1 = (65536 - 50000) / 256; 52 1 TL1 = (65536 - 50000) % 256; 53 1 if( +s100 = 20) 54 1 55 2 s100 = 0; Inc

31、rease_Second();C51 COMPILER V9.00 时_? 07/29/2011 15:38:04 PAGE 2 56 2 57 1 58 void main() 59 60 1 P0 = P3 = 0xFF; 61 1 TMOD = 0x11; 62 1 TH0 = (65536 - 1000) / 256; 63 1 TL0 = (65536 - 1000) % 256; 64 1 TH1 = 0xDC; 65 1 TL1 = 0; 66 1 TCON = 0x01; 67 1 EA = 1; 68 1 ET0 = 1; 69 1 ET1 = 1; 70 1 h = 0;

32、m = s = s100 = 0; 71 1 DSY_BUFFER0 = DSY_CODEh / 10; 72 1 DSY_BUFFER1 = DSY_CODEh % 10; 73 1 DSY_BUFFER3 = DSY_CODEm / 10; 74 1 DSY_BUFFER4 = DSY_CODEm % 10; 75 1 DSY_BUFFER6 = DSY_CODEs / 10; 76 1 DSY_BUFFER7 = DSY_CODEs % 10; 77 1 Scan_BIT = 0xFE; 78 1 DSY_IDX = 0; 79 1 TR0 = TR1 = 1; 80 1 Key_Sta

33、te = 0XFF; 81 1 while(1) 82 1 83 2 if ( P1 Key_State) 84 2 85 3 DelayMS(10); 86 3 if ( P1 Key_State) 87 3 88 4 Key_State = P1; EA = 0; 89 4 if(Key_State & 0x01) =0) Increase_Hour(); 90 4 else if(Key_State & 0x02) =0) 91 4 92 5 m = (m + 1) % 60; 93 5 DSY_BUFFER3 = DSY_CODEm / 10; 94 5 DSY_BUFFER4 = D

34、SY_CODEm % 10; 95 5 96 4 EA = 1; 97 4 98 3 99 2 100 1 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 425 - CONSTANT SIZE = 11 - XDATA SIZE = - - PDATA SIZE = - - DATA SIZE = 15 - IDATA SIZE = - - BIT SIZE = - -END OF MODULE INFORMATION.C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)礦ision Build LogProject:G:时钟时钟.uvprojProject File Date: 07/28/2011Output:22

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1