单片机时钟计时器课程设计.docx
《单片机时钟计时器课程设计.docx》由会员分享,可在线阅读,更多相关《单片机时钟计时器课程设计.docx(41页珍藏版)》请在冰点文库上搜索。
单片机时钟计时器课程设计
1 课程设计的目的和意义................................................................................................................2
1.1 设计目的.............................................................................................................................2
1.2 设计意义.............................................................................................................................2
2 系统方案设计及确定....................................................................................................................3
3 系统硬件设计................................................................................................................................4
3.1AT89S51 最小系统设计 .....................................................................................................4
3.1.1 时钟电路硬件设计..................................................................................................4
3.1.2 复位电路硬件设计..................................................................................................4
3.2 键盘电路硬件设计.............................................................................................................5
3.3 显示电路硬件设计.............................................................................................................6
3.4 蜂鸣器电路硬件设计.........................................................................................................6
4 系统软件设计................................................................................................................................7
4.1 系统主程序设计.................................................................................................................7
4.2 定时器设计.........................................................................................................................8
4.3 秒表设计.............................................................................................................................9
4.4 闹钟设计.............................................................................................................................9
4.5 其他主要子程序设计.......................................................................................................10
5 系统调试......................................................................................................................................11
6 总结..............................................................................................................................................12
参考文献.........................................................................................................................................13
附录.................................................................................................................................................14
附录一 程序清单...................................................................................................................14
附录二 系统硬件原理图.......................................................................................................14
1 课程设计的目的和意义
1.1 设计目的
灵活运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到
PCB 制版,再到软件编程及系统调试实现系统功能,完成课程设计,加深对单片机基础知
识的理解,并灵活运用,将各门知识综合应用。
能够上网查询器件资料,培养对新知识新技术的独立的学习能力和应用能力。
独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,
为日后的毕业设计及科研工作奠定良好的基础。
1.2 设计意义
单片机课程设计过程中,我们通过查阅资料、硬件设计、程序设计、安装调试等环节,
完成了一个涉及 89S51 单片机多种资源应用并具有综合功能的小系统目标板的设计与编程
应用。
使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电
路、电子元器件、原理图绘制等方面的知识进一步加深认识,同时在软件编程、排错调试、
焊接技术、相关软件及仪器设备的使用技能等方面得到较全面的锻炼和提高。
使我们增进
对单片机的感性认识,加深对单片机理论方面的理解。
使我们了解和掌握单片机应用系统
的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。
提高我们在单
片机应用方面的实践技能和科学作风;培育学生综合运用理论知识解决问题的能力,实现理
论结合实际,学以致用的原则。
2 系统方案设计及确定
本次课程设计,要求用单片机及 6 位 LED 数码管显示时、分、秒,以 24<小>时计时
方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,
秒表(或闹钟)/时钟功能转换,以及实现省电(关闭显示)功能。
1.时钟功能
利用单片机片内定时器(如 T0)产生 1s 计时,自行设定时钟计数单元地址,包括秒
单元、分单元、时单元,最大计数值为 23 时 59 分 59 秒。
用 6 位 LED 数码管显示时、分、
秒,以 24<小>时计时方式运行;
使用按键开关可实现时、分调整,可增加“熄灭符”用于时间调整时的闪烁功能;
能整点提醒(短蜂鸣,次数代表整点时间);
可通过按键使系统进入省电状态(数码管不亮,时钟不停)。
2.秒表功能
能通过按键实现秒表/时钟功能之间的转换;
利用单片机内部定时器(如 T1)实现秒表的计时,自行设定秒表计数单元地址,包括
10ms 单元、秒单元、分单元, 通过 6 位 LED 数码管显示,最大计数值为 99 分 59.99 秒。
可通过按键实现秒表的暂停、清零、启动。
3.闹钟功能
能通过按键实现闹钟/时钟功能之间的转换;
可通过按键设定闹钟时间,在定时闹铃时精确到分,可通过 6 位 LED 数码管显示闹钟
设定时间。
可通过按键实现闹铃有效、无效,以及在设定闹钟后取消闹时功能。
在闹铃时,可通过按键开关使蜂鸣停止。
4.系统设计方案框图如下:
电源
独立按键电路
数码管显示电路
时钟电路
AT89S51
单片机
蜂鸣器电路
复位电路
图 2-1 系统设计方案框图
3 系统硬件设计
3.1AT89S51 最小系统设计
单片机最小系统单片机,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的
系统.对 51 系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路.
下面给出一个 51 单片机的最小系统电路图:
图 3-1 51 单片机最小系统原理图
3.1.1 时钟电路硬件设计
时钟电路是计算机最核心的部分,它控制着计算机的工作。
AT 89 S51 单片机内部有一个
高增益反相放大器,用于构成振荡器。
反相放大器的输入端为 XTAL1,输出端为
XTAL2,分别是单片机的 19 脚和 18 脚。
在 XTAL1 和 XTAL2 两端跨接石英晶体及两个电
容就可以构成稳定的自激振荡器。
石英晶振起振后要能在 XTAL2 线上输出一个 3V 左右的
正弦波,使片内的 OCS 电路按石英晶振相同频率自激震荡。
通常,OCS 的输出时钟频率
fosc 为 0.5MHZ~16MHZ,典型值为 12MHZ 电容器 C1 和 C2 通常取 30pF 左右,对震荡频
率有微调作用。
调节它们可以达到微调震荡周期 fosc 的目的。
时钟电路如下:
图 3-2 时钟电路电路图
3.1.2 复位电路硬件设计
单片机的 RST 管脚为主机提供一个外部复位信号输入端口。
复位信
号是高电平有效,高电平有效的持续时间应为 2 个机器周期以上。
单片机的复位方式有上电自动复位和手工复位两种。
图 4-2 所示是
51 系列单片机常用的上电复位电路,只要 Vcc 上升时间不超过
1ms,它们都能很好地工作。
复位以后,单片机内各部件恢复到初始
状态。
电阻电容器件的参考值:
R1=200Ω,R2=1KΩ,C3=22μF。
RET 按键可
以选择专门的复位按键,也可以选择轻触开关。
复位电路如下
图 3-3 复位电路电路图
3.2 键盘电路硬件设计
单片机中常见的键盘有独立式键盘和矩阵式键盘,独立式键盘适
用于实现功能较少的场合、矩阵式键盘适用于功能复杂的场合。
本
次课程设计,采用独立式键盘即可。
键盘电路如下:
显示
字符
0
1
2
3
4
5
6
7
8
段码
C0H
F9H
A4H
B0H
99H
92H
82H
F8H
80H
显示
字符
9
A
B
C
D
E
F
全灭
全亮
段码
90H
88H
83H
C6H
A1H
86H
8EH
FFH
00H
图 3-4 键盘电路电路图
上拉电阻保证按键释放时,输入检测线上有稳定的高电平。
当某
一按键按下时,对应的检测线就变成了低电平,与其他按键相连的
检测线仍为高电平,只需读入 I/O 输入线的状态,判别哪一条 I/O
输入线为低电平,很容易识别哪个键被按下。
键的闭合与否,输出电压上就是呈现高电平或低电平。
高电平,
表示键断开,低电平则表示键闭合,通过对电平的高低状态的检测,
可确认按键按下以及按键释放与否。
为了确保对一次按键动作只确
认一次按键有效,必须消除抖动的影响,去抖有硬件去抖和软件去
抖,本次设计采用软件去抖。
3.3 显示电路硬件设计
本次课程设计,采用 LED 数码管作为显示装置。
LED 数码管有共阴极、共阳极两种结构,本次采用共阳极数码
管。
共阳极 LED 数码管的发光二极管的阳极连接在一起,公共阳极
接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点
亮,相应的段被显示。
8 段共阳极 LED 段码如下:
表 3-1 8 段共阳极 LED 段码表
LED 数码管有静态显示和动态显示两种显示方式。
静态显示方
式,数码管亮度高、软件编程简单,但是需要占用大量的 I/O 口,
一般在多位显示时不采用此种方法。
动态显示方式,数码管亮度稍
低、软件编程复杂,但是占用的 I/O 口少,在显示多位数字的时候
适合采用此种方法。
考虑到本次课程设计需要显示六位数字,故采
用动态显示方式。
LED 数码管段选、位选驱动电路均采用 DM74LS244 作为驱动芯
片。
3.4 蜂鸣器电路硬件设计
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广
泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子
设备、电话机、定时器等电子产品中作发声器件。
蜂鸣器的工作原理是,接通电源后,振荡器产生的音频信号电流
通过电磁线圈,使电磁线圈产生磁场。
振动膜片在电磁线圈和磁铁
的相互作用下,周期性地振动发声。
本次课程设计中,由于单片机
的 I/O 口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放
大驱动电流,从而可以让蜂鸣器发出声音。
蜂鸣器电路如下:
图 3-5 蜂鸣器电路电路图
4 系统软件设计
4.1 系统主程序设计
程序中,采用按键 1 作为主功能切换键,按键 2、按键 3、按键 4 作为子功能控制键。
在主程序中,开始即进入定时器子程序,显示当前时间,并同时对按键 1 进行扫描。
如果按键 1 第一次被按下,则进入调整时间子程序,并同时对按键 2 、按键 3、按键 4 进
行扫描,此时按键 2 、按键 3、按键 4 分别作为调整时、分、秒按钮使用;如果按键 1 第
二次被按下,则进入秒表子程序,并同时对按键 2 、按键 3、按键 4 进行扫描,按键 2 、
按键 3、按键 4 分作为秒表启动、暂停、停止并清理按钮使用;如果按键 1 第三次被按下,
则进入闹钟子程序,并同时对按键 2 、按键 3、按键 4 进行扫描,按键 2 、按键 3、按键
4 分作为闹钟的启动/关闭、调整时、调整分按钮使用;如果按键 1 第四次被按下,则进入
节能子程序,此时将不对按键 2 、按键 3、按键 4 分进行扫描;如果按键 1 第五次被按下,
则重新回到定时器子程序,如此循环。
开始
调用定时器函数
按键1被按下?
Y
调用时钟设置及显
示函数
按键1被按下?
Y
调用秒表控制及显
示函数
按键1被按下?
Y
调用闹钟控制及显
示函数
按键1被按下?
Y
调用节能函数
按键1被按下?
N
N
N
N
N
Y
主程序流程图
4.2 定时器设计
在定时器子程序当中,采用定时器 T0 产生定时中断。
定时器 T0 工作于方式 2,初值
为 TH0=0x9C,TL0=0x9C,时钟电路采用 12MHZ 晶振,所以每 0.1ms 产生一次中断,再
在中断中对时间进位进行判断处理,使之产生较为精准的定时。
定时器T0产生
0.1ms中断,num++
num==10000?
时钟秒++
秒==60?
时钟分钟++,秒清
零
分钟==60?
时钟小时++,分钟
清零
小时==24?
小时清零
定时器子程序
4.3 秒表设计
在秒表子程序当中,采用定时器 T1 产生定时中断。
定时器 T1 同意工作于方式 2,初
值为 TH0=0x9C,TL0=0x9C,时钟电路采用 12MHZ 晶振,所以每 0.1ms 产生一次中断,
再在中断中对时间进位进行判断处理,使之产生较为精准的定时。
开始
按键2被按下?
按键4被按下?
开始计时
计时暂停 计时停止并清零计
时值
秒表子程序
4.4 闹钟设计
在闹钟子程序里,按键 2 被按下奇数次时,闹钟打开并在第一位数码管上显示标志位;
按键 2 被按下偶数次时,闹钟关闭并熄灭第一位数码管上的标志位。
按下按键 3,则定时
时间的小时位加一;按下按键 4,则定时时间的分钟位加一。
开始
按键2被按下?
按键4被按下?
闹钟打开并点亮标志位/闹
钟关闭并熄灭标志位
定时小时++ 定时分钟++
闹钟子程序
4.5 其他主要子程序设计
在时钟设置子程序中,按键 2 被按下,则当前时间的小时位加一;按键 3 被按下,则
当前时间的分钟位加一;按键 4 被按下,则当前时间的秒位被清零。
开始
按键2被按下?
按键4被按下?
小时++
分钟++ 秒清零
时钟设置子程序
当进入节能子程序时,数码管将全部被熄灭,此时按键 2、按键 3、按键 4 即使被按下
也不采取任何操作。
开始
数码管全部熄灭
节能子程序
其他说明:
当时间的小时位进一时,蜂鸣器将响起,响的“嘀”次数等于当前时间小
时位的值。
当当前时间等于闹钟定时时间时,蜂鸣器将不断响起“嘀”声,按下按键 1 后,
“嘀”声停止。
5 系统调试
本次课程设计采用伟福仿真器进行程序的调试,下面介绍伟福仿
真器的调试及使用。
进入 WAVE 软件后,第一步要进行仿真器设置,在仿真器选项卡
中,仿真器为选择“E6000/S”,仿真头选择“POD-H8X5X”,CPU 选
择“89C51RX”; 在目标文件选项卡中,将所有选项前均打钩,;在
通讯设置选项卡中,将“使用伟福软件模拟器”的“√”勾掉,然
后选择“COM1”口,点击“测试串行口”,测试成功后,就完成了所
有的仿真器设置。
第二步,开始创建项目工程,在 C 盘根目录下创建“Project”文件
夹,双击打开,再创建“program . c”文件。
注意,这里
“Project”文件夹为工程项目所存放的文件夹,文件夹名必须是英
文,汉字不能用。
“program . c”文件为程序源文件,若是用汇
编语言,则相应的改为“program . asm”文件。
这里文件夹名和原
文件名可以是任意英文字符。
点击菜单栏“文件(F)”→“新建项目”
找到刚才创建的源文件(以 C 语言源文件为例),点击“打开”,然
后键入工程项目文件名字(以 project 为例,项目文件名可以任意),
并点击“保存”保存。
双击左侧源文件“program . c”,此时即可
开始编写程序了。
(WAVE6000 集成开发软件是基于 C 语言内核的,
仅支持“ /* */ ”注释方式,不支持“ // ”注释方式)。
最后介绍程序的编译及执行,点击菜单栏“项目”→“编译”,无语
法错误,编译通过。
点击菜单栏上“执行”→“全速执行”,进行硬
件仿真调试。
按停止按钮则退出调试状态。
本次课程设计,我主要是参考了郭天祥老师的一些例子程序,从
而逐步掌握了有关单片机数码管动态显示、按键的扫描及去抖、时
钟定时赋值等一些内容。
然后根据老师的原理图,参照例子程序,
利用 C 语言进行编程。
程序调试过程中难免出现各种各样的问题,
通过请教老师、网络查询、同学之间相互帮助,都逐一得到了解决。
6 总结
为期三周的课程设计就这样结束了,通过这次课程设计,我们不
仅对单片机的学习有了更多的认识和理解,而且又填补了很多以前
的知识漏洞。
本次课程设计,收获最多的当然是单片机方面,但是
同时我们又一次学习了 C 语言、Protel 制图等,熟悉掌握了
WAVE6000 的使用。
课程设计是培养我们综合运用所学知识,发现、提出、分析和解
决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具
体训练和考察过程.回顾起此次课程设计,至今我仍感慨颇多。
通
过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理
论知识是远远不够的,唯有把所学的理论知识与实践相结合起来,
从理论中得出结论,才能真正提高我们自己的实际动手能力和独立
思考的能力。
在设计的过程中,难免会遇到过各种各样的问题,同
时在设计的过程中发现了自己的很多的不足,自己知识的很多漏洞,
对以前所学过的知识理解得不够深刻,掌握得不够牢固,看到了自
己基础知识还是不够扎实,实践经验还是比较缺乏,理论联系实际
的能力还待急需提高。
通过这次课程设计之后,一定把以前所学过
的知识重新温故。
在这个过程中,我真切的感到了,我又知道了很
多,同时也掌握了很多以后在工作和生活中能真正用到的很多东西。
但是我不会因此而骄傲,相反以后我将会更加虚心,因为我知道这
只是个简单的开始,以后还有很多的路要走。
在此,再次感谢带领我们课程设计的王老师、杜老师、张老师
和蔡老师,正是有了老师们的细心教导、耐心指导、苦心监督,我
们才能够顺利完成各项学习任务、收获真知识、锻炼真本领。
参考文献
【1】《单片机原理与接口技术》[M].胡汉才.清华大学出版社
【2】《MCS-51 系列单片机原理及应用》[M]. 王瑾、杜波等.中国电
力出版社
【3】《新概念 51 单片机 C 语言教程》[M].郭天祥.电子工业出版社
【4】《跟我学用单片机》[M]. 肖洪兵. 北京航空航天大学出版社
【5】《单片机实验与实践教程》[M]. 夏继强. 北京航空航天大学出
版社,
【6】《Protel DXP 电路设计技术》[M]. 孙玉军. 冶金工业出版社
【7】《单片机应用设计 20