《单片机原理及应用课程设计(电子时钟).doc》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计(电子时钟).doc(19页珍藏版)》请在三一办公上搜索。
1、燕山大学课 程 设 计 说 明 书题目:单片机原理及应用课程设计(电子时钟)学院(系): 电气工程学院 年级专业: 09级仪表XXX班 学 号: 0XXXXXXXXX 学生姓名: XXXXXXXXXXX 指导教师: 张 淑 清 教师职称: 教 授 燕山大学课程设计(论文)任务书院(系):电气工程学院 基层教学单位:自动化仪表系学 号XXXXXXXXXXX学生姓名XXXXXXX专业(班级)仪表XXXX)班设计题目电子时钟设计技术参数1. 独立完成设计任务2. 编程,上机调试3. 连接硬件实验电路,实现所要求的功能4. 完场设计,提交课程设计报告设计要求 利用CPU的定时器和实验仪上提供的数码显示
2、电路,设计一个电子时钟。格式如下:XX XX XX 由左向右分别为:时, 分, 秒工作量软件此案城与硬件调试相结合,绘制设计流程图,并编成进行硬件实现。参考资料1)单片机原理及应用技术 张淑清,国防工业出版社(教材)2)过程控制系统及仪表 邵裕森 巴筱云 编(教材)3)单片机及应用 李大友,高等教育出版社(教材)4)机械量测量 机械工业出版社(教材)指导教师签字张淑清基层教学单位主任签字谢平说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。2012年 7 月 1 日 摘 要本次设计时钟电路,利用CPU的定时器和实验仪上提供的数码显示电路,设计一个电子时钟。格式如下:XX XX XX
3、 由左向右分别为:时, 分, 秒。并拓展功能闹钟。关键字:数码管 蜂鸣器 8031目 录第1章 绪论 5第2章 设计要求 5第3章 设计方案(包括原程序及其拓展功能) 5第4章 硬件部分 64.1 8031 单片机 64.2 复位电路 64.3 时钟电路 64.4 显示电路 74.5 蜂鸣器电路8第5章 软件部分9 5.1主程序模块95.2 100us 定时中断服务程序 115.3 程序(C语言)12心得体会 18参考文献 18第一章 绪论单片机是将CPU、RAMROM定时器/计数器以及输入输出(I/O)接口等计算机的主要部件集成在一块的集成电路芯片,作为微机系统它还可以实现模/数转换、脉宽调
4、制、计数器捕获/比较逻辑、高速I/O口和WDT各种控制功能。通过在MCS-51系列的单片机中增设了全双工串行口I/O、片内数据存储器采用寻址范围为256kb的8位地址、均有四种工作方式的2个16位的定时/计数器、增加了中断系统、增设了颇具特色的布尔处理机、让单片机具有较强的指令寻址和运算功能这些技术,使单片机拥有了完善的外部并行总线(AB、DB、CB)具有多机识别功能的串行通信接口,规范了功能单元的特殊功能寄存器控制模式及适应控制器特点的布尔处理系统和指令系统,位发展具有良好兼容性的新一代单片机奠定了良好的基础。单片机被广泛地应用在各种领域。例如用来作家用电器中如洗衣机、电冰箱、微波炉、电饭煲
5、、电视机、录像机以及其他视频音像设备的控制器;在办公室中用作大量通信、信息的承载体,比如磁盘驱动、打印机、复印机、电话等;它还可以来构成电子秤、收款机、仓储安全检测系统、空气调节系统等冷冻保鲜系统等的专用系统;在工业中,像工业过程控制、过程监制以及机电一体化控制等系统都是以单片机为核心火多网络系统;它还可以构成一些智能仪表与集成智能传感器传统的控制电路,实现一些像存储、数据处理、查找、判断、联网和语音功能等智能化功能,还可以构成一些电子系统中的集中显示系统、动力检测控制系统、自动驾驶系统、通信系统以及运行监视器等的冗余网络系统。第二章 设计要求1、准确计时,以数字形式显示时、分、秒的时间。2、
6、小时以24小时计时形式,分秒计时为60进位。 拓展功能:3、闹钟功能,一旦走时到该时间,能以蜂鸣器蜂鸣的形式告警提示 第三章 设计方案(包括原程序及其拓展功能)本次设计时钟电路,使用了8031单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用数码管来显示时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示。通过三个模块:芯片、蜂鸣器、数码管显示即可满足设计要求。第四章 硬件部分4.1 8031 单片机4.2 复位电路4.3 时钟电路4.4 显示电路本设计晶振电路采用12M的晶振。晶振的作用是给单片机正常工作提供稳定的时钟信号。单片机
7、的晶振并不是只能用12M,只要不超过20M就行,在准许的范围内,晶振越大,单片机运行越快,还有用12M的就是好算时间,因为一个机器周期为1/12时钟周期,所以这样用12M的话,一个时钟周期为12us,那么定时器计一次数就是1us了,电容范围在20-40pF之间,这里连接的是30pF的电容。机器周期=10*晶振周期=12*系统时钟周期4.5 蜂鸣器电路电路接法:三极管选定PNP型,基极B连接5V电压,发射极E连接一个1K左右的电阻后接I/O口,集电极C连接蜂鸣器后接地。单片机在复位后的个I/O口是高电平,此时三极管是截止的,编写程序使选定的I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连
8、通,构成一个工作回路,从而发出滴滴的响声。其中电阻R1在电路里起分压限流的作用,PNP三极管起到模拟开关的作用。第5章 软件部分定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒,然后再对秒计数得到分和小时值,并送入显示缓冲区。5.1主程序模块:主程序主要用于系统初始化:设置计时缓冲区的位置及初值,设置8031的工作方式、定时器的工作方式和计数初值等参数。主程序流程如下图所示。5.2 100us 定时中断服务程序5.3 程序(C语言)#include #define LEDLen 6#define PB1 2 / 164 时钟位#define
9、PB0 1 / 164 数据位xdata unsigned char OUTBIT _at_ 0x8002; / 位控制口xdata unsigned char OUTSEG _at_ 0x8004; / 段控制口unsigned char LEDBufLEDLen; / 显示缓冲code unsigned char LEDMAP = / 八段管显示码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;void Delay(unsigned char CN
10、T) unsigned char i; while (CNT- !=0) for (i=100; i !=0; i-);void DisplayLED() unsigned char i, j; unsigned char Pos; unsigned char LED; Pos = 0x20; / 从左边开始显示 for (i = 0; i = 1; / 显示下一位 / =#define Tick 10000 / 10000 x 100us = 1s#define T100us (256-50) / 100us时间常数(6M)unsigned char Hour, Minute, Second
11、;unsigned int C100us; / 100us记数单元void T0Int() interrupt 1 C100us-; if (C100us = 0) C100us = Tick; / 100us 记数器为0, 重置记数器 Second+; if (Second = 60) Second = 0; Minute+; if (Minute = 60) Minute = 0; Hour+; if (Hour = 24) Hour = 0; void main() TMOD = 0x02; / 方式2, 定时器 TH0 = T100us; TL0 = T100us; IE = 0x82
12、; / EA=1, IT0 = 1 Hour = 0; Minute = 0; Second = 0; C100us = Tick; TR0 = 1; / 启动定时器0 while (1) LEDBuf0 = LEDMAPHour/10; LEDBuf1 = LEDMAPHour%10 | 0x80; LEDBuf2 = LEDMAPMinute/10; LEDBuf3 = LEDMAPMinute%10 | 0x80; LEDBuf4 = LEDMAPSecond/10; LEDBuf5 = LEDMAPSecond%10; DisplayLED(); 5.4 拓展功能程序(闹钟)闹钟时间为
13、7时10分15秒,当电子时钟走到7时10分15秒时,蜂鸣器蜂鸣。#include /.添加部分sbit Speaker = P11;/.#define LEDLen 6#define PB1 2 / 164 时钟位#define PB0 1 / 164 数据位/.添加部分void Delay1();/.xdata unsigned char OUTBIT _at_ 0x8002; / 位控制口xdata unsigned char OUTSEG _at_ 0x8004; / 段控制口unsigned char LEDBufLEDLen; / 显示缓冲code unsigned char LED
14、MAP = / 八段管显示码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;/.添加部分void beep() int k=10; while(k!=0) Speaker = 0; Delay1(); Speaker = 1; Delay1(); k-; /.void Delay(unsigned char CNT) unsigned char i; while (CNT- !=0) for (i=100; i !=0; i-);void Displa
15、yLED() unsigned char i, j; unsigned char Pos; unsigned char LED; Pos = 0x20; / 从左边开始显示 for (i = 0; i = 1; / 显示下一位 / =#define Tick 10000 / 10000 x 100us = 1s#define T100us (256-50) / 100us时间常数(6M)unsigned char Hour, Minute, Second;unsigned int C100us; / 100us记数单元void T0Int() interrupt 1 C100us-; if (
16、C100us = 0) C100us = Tick; / 100us 记数器为0, 重置记数器 Second+; if (Second = 60) Second = 0; Minute+; if (Minute = 60) Minute = 0; Hour+; if (Hour = 24) Hour = 0; /.添加部分void Delay1() unsigned char i; for (i=0; i50; i+);/.void main() TMOD = 0x02; / 方式2, 定时器 TH0 = T100us; TL0 = T100us; IE = 0x82; / EA=1, IT0
17、 = 1 Hour = 0; Minute = 0; Second = 0; C100us = Tick; TR0 = 1; / 启动定时器0 while (1) LEDBuf0 = LEDMAPHour/10; LEDBuf1 = LEDMAPHour%10 | 0x80; LEDBuf2 = LEDMAPMinute/10; LEDBuf3 = LEDMAPMinute%10 | 0x80; LEDBuf4 = LEDMAPSecond/10; LEDBuf5 = LEDMAPSecond%10; DisplayLED();/.添加部分 if( Hour = 7&Minute = 10&S
18、econd = 15) beep(); /. 心得体会通过本次实验,使我对Proteus 7 Professional软件的使用方法有了初步的了解,还认识了8031单片机的结构及各个端口的功能。 虽然在本次试验中遇到了的问题,都在同学的帮助下解决了,同时还进一步了解了单片机方面的有关知识。该课程设计中应用到了蜂鸣器、数码管,并且要求在一个电路板上将各个功能集成在一起,数码管计时以及蜂鸣器发生。以前我们做试验都是一个功能一个功能的完成,从来没有一起实现过。经过老师的讲解和分析,我们可以用扫描的程序来解决,将各个功能设置在不同的模块作为子程序一一调试,这样就可以实现全部功能并互不干扰。最后完成调试和下载,终于正常工作,但是还是有一些问题没有解决,但是整体上还是成功的,这些问题下去还会继续研究,直到将它消除。参考文献1)单片机原理及应用技术 张淑清,国防工业出版社(教材)2)过程控制系统及仪表 邵裕森 巴筱云 编(教材)3)单片机及应用 李大友,高等教育出版社(教材)4)机械量测量 机械工业出版社(教材)燕山大学课程设计评审意见表指导教师评语:成绩: 指导教师: 2011年 6月 25 日答辩小组评语: 成绩: 评阅人: 2011年 6月 25 日课程设计总成绩:答辩小组成员签字: 赵彦涛、程淑红、林洪斌2011年 6月 25 日