多功能视力保护器毕业设计内容摘要:

、公司竟相推出自己的四 相 比较器,如IR233 ANI33 SF339等,它们的参数基本一致,可互换使用。 定时 报警电路 报警电路分为单片机控制电路和报警发声电路。 它主要通过单片机的定时计数功能完成定时 45分钟并使报警电路发出报警声,用以提醒学生休息。 89c52 单片机内有两个可编程的定时器 /计数器,满足诸如对外部脉冲进行记数,产生精确的定时时间,作串行口的波特发生器等功能的需要。 它们具有两种工作模式 (计数器模式和定时器模式 )及 4 种工作方式 (方式 0,方式 1,方式 2,方式 3)。 其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编制,可以方便的选择 适当的工作模式和图 24 LM339 的结构图 10 工作方式。 当定时器 /计数器为定时工作方式时,计数器的加 1信号由振荡器的 12分频信号产生,即每过一个机器周期,计数器加 1,直至计 数 满溢出为止。 显然,定时器的定时时间与系统的振荡频率有关。 因一个机器周期等于 12个振荡周期,所以计数频率 fcount=1/12osc。 如果晶振为 12MHz,则计数周期为: T=1/( 12106 ) Hz1/12=1μs 这是最短的定时周期。 若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度 (如 8位、 13位、 16位等 )。 当定时器 /计数器为计数工作方式 时,通过引脚 T0 和 T1 对外部信号计数,外部脉冲的下降沿将触发计数。 计数器在每个机器周期的 S5P2期间采样引脚输入电平。 若一个机器周期采样值为 1, 下一个机器周期采样值为 0,则计数器加 1。 此后的机器周期 S3P1期间,新的计数值装入计数器。 所以检测一个由 1至 0的跳变需要两个机器周期,故外部事年的最高计数频率为振荡频率的 1/24。 例如,如果选用 12MHz 晶振,则最高计数频率为。 虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次 ,外部计数脉冲的高电平与低电平保持时间均需在一个 机器周期以上。 工作方式控制寄存器 TMOD用于控制定时器 /计数器的工作模式及工作方式,它的字节地址为 89H。 定时器 /计数器的两个作用是用来精确的模拟一段时间间隔 (作定时器用 )或累计外部输入的脉冲个数 (作计数器用 )。 当作定时器用时,在其输入端输入周期固定的脉冲个数,即可计算出所定时间的长度。 当 89c52 内部的定时器 /计数器被选定为定时器工作模式时,记数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增 1,因此,定时器 /计数器的输入脉冲和机器周期一样,为时钟频率的 1/12。 本设计采用的时钟周期为 6MHz,记数速度为 500KHz,输入脉冲的时间间隔为。 [10] 单片机控制电路 单片机控制电路由 89c52单片机的 T0和 T1定时 /计数器通过单片机的汇编语言来实现。 定时时间为 50分钟,其计时初值可计算如下: 50*60=3000s=30000*100ms 100ms用 T0定时设置 T0工作方式 1, 30000次用 T2计数,设 T2工作方式为 11。 T0的定时初值为: 2^16100ms/2us=15536=C3B0H; T1的计数初值为 6553630000=35536=8AD0H 其中 T0为定时器, T1为计数器,定时器 T0定时 100ms后,计数器 T1计数一次,此时, 11 定时器 T0 进行中断服务程序 ZDT0 进行定时器 T0 循环定时进入下一个定时周期,当满足又一次定时满 100ms 时,再由计数器 T1 计数一次,如此循环下去,直到满足计数器 T1 计数30000次,计数器 T1进入中断服务程序 ZDT1,其功能是使单片机的 触发定时报警发声电路,由定时报警发声电路发出报警信号,使学生意识到已经学习了 45分钟了,需要休息一下,进而达到保护学生视力的目的。 此时,学生应关闭视力保护器电源 ,休息后在开启电源以进行节能。 开启电源后,定时器 T0和计数器 T1进行到下一循环,对定时器进行赋值, T0定时, T计数,再进行报警。 定时用的 c语言程序见附录。 蜂鸣器 报警发声电路 图 25 蜂鸣器 报警发声 电路 如图 25 所示, 三极管主要是做驱动用的。 因为单片机的 IO 口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音, 利用单片机的定时功能通过 , 输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止, 没有电流流过蜂鸣器,所以就不会发出声音。 3 开发系统软件设计 由于简单的程序可以用汇编明显提高执行速度,但在大型程序开发时,需要考虑多方面因素,工程开发周期等需要合理选择编程语言,所以本文主要采用单片机 c语言来完成软件设计和程序代码的编写,程序简单易懂,可执行性强。 系统软件设计 软件采用 Keil Software,使用单片机汇编语言。 因为汇编可以完成有些 C语言完成不 12 了的操作。 程序中对时间要求苛刻的部分可以用内嵌汇编来重写,以 促进 速度上的显著提高。 但是,开发和测试汇编代码是一件辛苦的工作,它将花费更长的时间,因而要慎重选择要用汇编的部分。 一个 合格 的程序员应该是写出 高质量标准化 程序。 主程序的流程采用模块的方法设计,先规划出各功能子模块,然后各个击破,这也是软件开发的方式,可以由简入难,比较符合人的思维习惯。 图 32使定时器 T0的中断程序流程图,图 33使计数器 T1终端服务流程图,其程序设计原理如下: 单片机控制电路由 89c52单片机的 T0和 T1定时 /计数器通过单片机的汇编语言来实现。 定时时间为 45分钟,其计时 初值可计算如下: 50*60=3000s=30000*100ms 100ms用 T0定时设置 T0工作方式 1, 30000次用 T2计数,设 T2工作方式为 11。 T0的定时初值为: 2^16100ms/2us=15536=C3B0H; T1的计数初值为 6553630000=35536=8AD0H 其中 T0为定时器, T1为计数器,定时器 T0定时 100ms后,计数器 T1计数一次,此时,定时器 T0 进行中断服务程序 ZDT0 进行定时器 T0 循环定时进入下一个定时周期,当满足又一次定时满 100ms 时,再由计数器 T1 计数一次,如 此循环下去,直到满足计数器 T1 计数30000次,计数器 T1进入中断服务程序 ZDT1,其功能是使单片机的 触发定时报警发声电路,由定时报警发声电路发出报警信号,使学生意识到已经学习了 45分钟了,需要休息一下,进而达到保护学生视力的目的。 此时,学生应关闭视力保护器电源,休息后在开启电源以进行节能。 开启电源后,定时器 T0和计数器 T1进行到下一循环,对定时器进行赋值, T0定时, T计数,再进行报警。 13 图 31 程序流程 图 开始定时器初始化开中断 , 启动定时器检测 P 1 . 0 是否为高电平等 T 0 , T 1 中断请求 P 1 . 0 是高。 向 P 1 . 1 发送 2 秒的高电平脉冲, 进行报警否是 14 开始到 000 BH 执行中断服务程序定时器 T 0 初始化定时 100 ms到。 T 0 赋初值 , 向T 1 的计数端P 3 . 5 发送脉冲开中断 , 启动定时器 T 0硬件定时等中断 TF 0是否图 32 T0中断程序流程图 15 主要程序介绍 本设计采用 c语言编写。 c语言是一种 计算机程序设计语言。 它既有高级语言的特点,又具有 汇编语言 的特点。 它可以作为系统设计语言,编写工作系 统 应用程序 ,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。 因此,它的应用范围广泛。 各个主要程序段介绍如下: 1.设计要求满足定时 50 分钟后报警,其初值计算如下: 开始到 0013 H 执行中断服务程序定时器 T 1 初始化计数 30000 次是否到。 P 3 . 3 发出一个脉冲触发报警电路开中断 , 启动定时器 T 1硬件计数等中断 TF 1是否图 33 T1中断程序 流程图 16 50min*60=3000s=30000*100ms 100ms用 T0定时设置 T0工作方式 1, 30000次用。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。