Proteus与Keil C课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
题目:数字钟课程设计
院系:机电工程学院
专业:应用电子技术
班级:零九一班
姓名:
学号:20090615
指导老师:杨志邦
日期:2011.11.17
1 引言
单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。
在我国,单片机的开发应用已有15年左右,已经形成一支庞大的技术开发队伍,为我国单片机应用积累了丰富的
经验
班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验
。随着电子技术、计算机芯片技术和微电子技术的飞速发展促进了单片机技术一日千里的变化。
随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。
2 1 整体设计思路
这部分主要介绍工作安排和整体设计的思想。工作过程规划如下:
图2.1 整体设计思路
针对要实现的功能,拟采用STC89C51单片机进行设计,STC89C51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
MCS- 51指令系统及STC80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。本电子钟设计主要是依照图2.1中的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
做出来的,时间分配比较均匀。首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。
2 主要元件的使用
下面就本次设计中用到的主要元件的所有功能进行简单的介绍,包括STC89C51单片机、74LS07芯片、以及数码管的特性和用法。
3 STC89C51单片机:
该单片机功能强大,不仅能满足设计的需要,也可以在设计要求的基础上进行一些扩展。单片机的结构如下:
图3.1.1 单片机引脚图
在使用时VCC接电源电压,GND接地。P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。XTAL1和XTAL2接复位电路。这些可以在硬件设计部分体现出来。
4 电路设计
4.1整体设计
此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:显示电路用六个数码管分别显示小时(年份)、分钟(月份)和秒(日),通过动态扫描进行显示,从而避免了译码器的使用,使电路更加简单。单片机采用AT89C51系列,这种单片机应用简单,适合电子钟设计。
电路的总体设计框架如下:
图4.1.1 电路模块图
4.2 分块设计
这部分介绍各模块电路的设计方法和成果,主要分为:输入部分、输出部分、复位和晶振电路。
4.2.1 输入部分
在电子钟的输入部分,设置相应的置数功能,通过外部设备的输入,如按键,实现时间的修改。除此之外,调整闹铃、定时、日期时也需要按键进行输入。在选用输入端口时,将P3引脚与按键相连进行输入。
设计的输入部分如下:
图4.2.1 输入部分
4.2.2 输出部分(显示电路)
该部分电路图如下所示:
图4.2.2 显示部分
在实际电路中采用LCD 显示屏相连进行显示,先把LCD 显示屏的7、8、9、10、11、12、13、14与RP8对应2~9相连,然后把LCD 显示屏的2和15引脚各自相连电源,1接地,3,15分别连接热敏电阻及晶体管的集电极。
4.2.3 晶振与复位电路:
图4.2.3 晶振与复位电路
5 程序设计 5.1程序思路
图5.1.1 程序设计思路
结合电路,程序的总体思路是:
1、点复位键后,进行时间显示,从0时0分0秒开始。
2、按下按键1时,进行调时,此时按下4调整时,按下5调整分,若2秒钟未按键,则不再等待,恢复走时,持续按键时大约0.3秒步进1,下同。
3、按下2键时进行闹铃调整,用4、5键分别调时和分,此时只有前四位进行显示,即闹铃功能精确到分,2秒钟无按键则返回时间显示,时间到达闹铃所定时间时P0.7输出高电平,蜂鸣器响,按下按键2或3时蜂鸣器停止。
4、按3键时进行定时的设定,同样,分别通过4、5调整分和秒,若两秒未按键则不进行定时,设定之后再次按下3键则进行倒计时,倒计时时间未到时若按下1键则进行时间显示;若倒计时时间到则P0.7为高电平,蜂鸣器响。定时的最大值为59分59秒。
在程序设计时,尽量改进算法,算法的改进可以使相对误差减小,或者可以使占用空间减小。另外,分块的设计思想要贯穿始终,整个程序较为繁杂,某些程序段会反复用到,因此采取的方法是写出多个程序段,通过跳转指令进行调用。
5.2程序设计步骤
在程序设计过程中,我遇到了很多困难,这部分也是让我学到很多东西的地方。
首先,我学习了定时器的相关知识,计数器的使用是很重要的组成部分,在这个设计中选择计数器T0。T0的工作方式有:
方式0:不推荐
方式1:16位计数器,常用
方式2:自动重装初值的8位定时/计数器
方式3:T0相当于两个独立的8位定时/计数器
此程序采用方式1,方式1的定时时间t为t=(216-M)*12/fosc。其中M为定时器初值,fosc为12MHz,若M为0则t=65536*12/2*106=65.536ms。因此可取50ms为计时单位,初值M应为50*10-3*106=216-M。M=15536=11110010110000=3CB0。即定时器初值为TH0=03CH,TL0=0B0H。定时器中断20次为一秒,这部分在中断程序中用到。
5.3程序的主要模块
5.3.1延迟程序
在动态扫描时,必然用到延迟程序,这里使用延迟1ms的程序,此程序需要反复调用。此段程序是很简单的,但就是在这段简单的程序上,也会出现问题,
5.3.2 中断服务子程序:
中断服务程序中,总体思路是:由于初值是3CB0H,所以装满定时器需要50ms的时间,从而20次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。包括日期显示的功能也是如此。另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存器,需要时将其进行显示。基于以上考虑,以R3为倒计时中的秒,R4为倒计时的分,当秒加1时R3减一,减到0之后,秒赋值为59,分减一,直到分为0。
流程框图如下:
图5.3.1 中断程序思路
6.1 软件介绍
在这部分工作中用到了keil C和Proteus两个软件,其中Keil C用来编译程序并生成hex文件,装入Proteus仿真图的芯片中,通过仿真结果一步步进行调整最后达到预期的功能。
9 电子钟设计中遇到的问题及其解决方法
在电子钟设计中程序比较长,遇到了各种各样的问题,比如跳转距离过长出现语法错误。因此修改程序的时间很长,有语法错误,也有仿真时功能无法实现的问题,在此不能一一说明,只能对个别问题加以阐述。
由于在走时调整、闹铃调整及定时设定时,按下键时每0.2秒步进1,这就需要每0.2秒对按键输入进行一次扫描,因此开始时,我用的是延迟0.2秒再返回按键扫描程序的方法,但是可以想到,进行单纯的延迟时,不会有显示,在仿真时功能没有实现。后来我采用的是反复调用若干次显示程序以实现延迟,较好地解决了这个问题。虽然现在回过头来发现这个问题很简单,但当时是百思不得其解。我从中学到:任何简单的事情都会有出错的可能,有些时候人的思路中的一些错误是自己难以发现的,在工作和生活中要多对自己的想法提出质疑。
不光是这种明显的问题很多,有些细微的问题也一样出现了,但解决起来并不容易。
在最后的硬件实现阶段发现蜂鸣器不响,此时连接方法是蜂鸣器直接连接在了P0.7引脚。考虑到单片机的输出电流比较小,虽然P0.7引脚的电平已经达到2V以上,也无法驱动蜂鸣器。于是我设想加上驱动电路。
作此修改之后,蜂鸣器发出响声,但是又遇到了新的问题:蜂鸣器无法停止响声!看上去这个问题很简单,只要有停止闹铃的按键输入时,在程序中加一句将P0.7置零的语句就可以了。但事实并不是这么简单。通过苦思冥想,发现在主程序中,对“定时时间是否已到”是不断进行扫描的,而倒计时是在中断服务子程序中进行的,当倒计时为0分0秒时,主程序判断出来后会不停地调用声音程序:
结论
本文介绍的是利用AT89C51单片机设计的有调时、定时、闹铃功能的电子钟。并详细说明了软件和硬件设计方法及仿真、硬件实现。在设计过程中可以看出,汇编语言有着其独特的魅力,它简单易学,语法错误容易纠正;用单片机实现电子钟的设计是比较方便和易于实现的。
通过电子钟的设计和制作,加深了对单片机的理解,能够更熟练地应用单片机实现预期的功能,对今后的工作有很大的帮助。电子钟各项功能的实现,为自动控制的实现打下了理论基础,获得了实现方法。
当然,该电子钟还有很多不足之处,比如闹钟不能关闭,且只能定一个闹钟。在今后的工作中还要对此加以研究,尽量实现更多的功能。
在今后的其他工作中,也可以把这次设计中的收获运用进去,这是我此次毕业设计得到的最大财富。
1 潘永雄.新编单片机原理与应用. 第2版.西安:西安电子科技大学出版社。
2 何立民.我国单片机应用技术发展趋势及展望.自动化与仪表。
3 向继文,廖立新.基于AT89S51 的电子钟系统设计.机电产品开发与创新,
4 张静.基于单片机数字钟的设计.办公自动化杂志。
5 樊金荣,谢智文.数字倒计时秒表的设计与实现.中南民族大学计算机科学学院院报。
附录:
数字钟原理图
PCB面板
原件清单:
万用板
1
DC电源插座
1
USB电源线
1
自锁开关
1
4.7K电阻
3
AT89C52单片机
1
40脚IC座
1
DS1302芯片
1
钮扣电池
1
电池座
1
8脚IC座
1
LCD1602液晶显示屏
1
10K可调电阻
1
DS18B20温度传感器
1
1K排阻
1
10K电阻
1
10uF电容
1
按键
4
12M晶振
1
22P电容
2
8550三极管
1
蜂鸣器
1