河北工程大学毕业设计
3.2.5 按键模块
74LS21芯片为两组 4 输入与门(正逻辑)。本设计中的四个按键分别接到74LS21芯片的1A,1B,1C,1D,即4输入与门的4个输入。而74LS21的输出1Y则接到STC89C52芯片的P3.2(INT0)引脚,由于该引脚为低电平有效,当警报发生时按下四个按键中任意一个都会使输出1Y变为低电平,则芯片发生中断,报警停止。同时,四个按键key1-key4也接到STC89C52芯片的P1.0-P1.3起到调节时间日期等功能。四个按键中S1为切换键,S2为设定键,S3为上调键,S4下调键。
按键模块电路如图3-23所示。
图3-23 按键电路
3.2.6 蜂鸣器报警模块
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 ;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。
蜂鸣器报警在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
PORTC.3/T0 作为I/O 口通过三极管Q2 来驱动蜂鸣器LS1,而PORTC.2/PWM0 则作为PWM 输出口通过三极管Q1 来驱动蜂鸣器LS2。另外在PORTA.3 和PORTA.2 分别接了两个按键,一个是PWM 按键,是用来控制PWM 输出口驱动蜂鸣器使用的;另一个是PORT 按键,是用来控制I/O 口驱动蜂鸣器使用的。连接按键的I/O 口开内部上拉电阻。
软件设计方法
先分析一下蜂鸣器。所使用的蜂鸣器的工作频率是2000Hz,也就是说蜂鸣器的驱动信号波形周期是500μs,由于是1/2duty 的信号,所以一个周期内的高电平和低电平的时间宽度都为250μs。软件设计上,我们将根据两种驱动方式来进行说明。
24
河北工程大学毕业设计
a) PWM 输出口直接驱动蜂鸣器方式
由于PWM 只控制固定频率的蜂鸣器,所以可以在程序的系统初始化时就对PWM 的输出波形进行设置。
首先根据SH69P43 的PWM 输出的周期宽度是10 位数据来选择PWM 时钟。系统使用4MHz 的晶振作为主振荡器,一个tosc 的时间就是0.25μs,若是将PWM 的时钟设置为tosc 的话, 则蜂鸣器要求的波形周期500μs 的计数值为500μs/0.25μs=(2000)10=(7D0)16,7D0H 为11 位的数据,而SH69P43 的PWM
输出周期宽度只是10 位数据,所以选择PWM 的时钟为tosc 是不能实现蜂鸣器所要的驱动波形的。
这里我们将PWM 的时钟设置为4tosc,这样一个PWM 的时钟周期就是1μs 了,由此可以算出500μs 对应的计数值为500μs/1μs=(500)10=(1F4)16,即分别在周期寄存器的高2 位、中4 位和低4 位三个寄存器中填入1、F 和4,就完成了对输出周期的设置。再来设置占空比寄存器,在PWM 输出中占空比的实现是
通过设定一个周期内电平的宽度来实现的。当输出模式选择为普通模式时,占空比寄存器是用来设置高电平的宽度。250μs 的宽度计数值为250μs/1μs=(250)10=(0FA)16。只需要在占空比寄存器的高2 位、中4 位和低4 位中分别填入0、F 和A 就可以完成对占空比的设置了,设置占空比为1/2duty。
以后只需要打开PWM 输出,PWM 输出口自然就能输出频率为2000Hz、占空比为1/2duty 的方波。
b) I/O 口定时翻转电平驱动蜂鸣器方式
使用I/O 口定时翻转电平驱动蜂鸣器方式的设置比较简单,只需要对波形分析一下。由于驱动的信号刚好为周期500μs,占空比为1/2duty 的方波,只需要每250μs 进行一次电平翻转,就可以得到驱动蜂鸣器的方波信号。在程序上,可以使用TIMER0 来定时,将TIMER0 的预分频设置为/1,选择TIMER0 的始终为系统时钟(主振荡器时钟/4),在TIMER0 的载入/计数寄存器的高4 位和低4 位分别写入00H 和06H,就能将TIMER0 的中断设置为250μs。当需要I/O 口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0 中断的时候对该I/O 口的电平进行翻转一次,直到蜂鸣器不需要鸣叫的时候,将I/O 口的电平设置为低电平即可。不鸣叫时将I/O 口的输出电平设置为低电平是为了防止漏电。
模块的作用:当定时闹钟时间到时,蜂鸣器发出预设的声音,而发光二极管则会随着音乐闪烁。本模块采用PNP三极管为蜂鸣器放大电流,基极通过4.7k电阻与单片机STC89C52的闲置引脚P3.5相连接,集电极直接接地,发射极接发光二极管和蜂鸣器。报
25
河北工程大学毕业设计
警模块电路如图3-24所示。
图3-24 报警模块
3.3 本章小结
本章主要对芯片作了介绍,对其内存单元作了详细说明,并对系统硬件的结构框图和各功能电路作了说明,以及这些电路在本设计中的用途。
26
河北工程大学毕业设计
第四章 软件设计
4.1 软件设计总体说明
本系统的程序采用C语言编写,为了便于修改和调试,系统软件采用模块化设计,程序的编写编译在WAVE6000软件中完成。
秒计数器的计数时钟信号为1Hz的标准信号,可以由CPLD板上提供的20MHZ的信号通过分频得到。秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号.设计一个同时显示时、分、秒6个数字的数字钟,则需要6个七段显示器。若同时点亮这6个七段显示器,则电路中会产生一个比较大的电流,很容易造成电路烧坏,我们通过扫描电路来解决这一问题,通过产生一个扫描信号LT(0)一LT(5)来控制6个七段显示器,依次点亮6个七段显示器,也就是每次只点亮一个七段显示器。只要扫描信号的频率超过人的眼睛视觉暂留频率24Hz以上,就可以达到尽管每次点亮单个七段显示器,却能具有6个同时显示的视觉效果,而目显示也不致闪烁抖动。其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。控制电路用来将控制时钟的一些功能加入到整个正常计数的显示电路中,通过最终的显示来验证控制电路的正确性。图4.1为整体系统设计标图
首先对STC89C52、DS12887、AMPIRE128X64、DS18B20进行初始化,日历和温度信息通过AMPIRE128X64显示出来,当当前时间与设定的闹钟时间相同后,AMPIRE128X64上显示的时间停止,但,实际上芯片内部的时间仍然在走。时钟芯片向单片机发出中断请求,单片机通过报警模块进行警报,此时,若按下四个按键中的任意一个,报警停止,AMPIRE128X64显示的时间继续精确显示。[20]
系统中有四个按键,即:设置键S1,确定键S2、上调键S3、下调键S4。 (1)进入系统看到有3个选择项,分布是贪吃蛇、俄罗斯方块、万年历等内容。 (2)按下退出键会将当前的时间恢复到程序中设定的默认时间。 (3)同时按下S3键和S4键可对闹钟进行开启和关闭的操作。
4.2 主程序软件实现
4.2.1主程序流程图
27
河北工程大学毕业设计
图4-1 主程序流程图
4.2.2 定时器初值计算
因定时器工作于方式1,需要50ms的中断,所以计数初值:
χ=216 - t×fosc/12=65536 - 50×10-3×11.0592×106/12=19456
表示成十六进制为χ=4C00H,故(TH0)=4CH,(TL0)=00H。 4.4.2 程序初始化
程序初始化时,清相应内存单元(20H~4FH共48个单元),送时间(00时00分00秒)、日期(07年10月01日)初值,送定时器T0、T1初值,TH0= TH1=4CH,TL0= TL1=00H,特殊寄存器(SP=50H、TMOD=11H)值等。
28
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库万年历电子时钟温度毕业设计(6)在线全文阅读。
相关推荐: