




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 电子闹钟毕业设计电子闹钟毕业设计 摘要:摘要:本设计是以 89c51 单片机作为控制核心的闹铃系统。 本文大致可以分为三个章节, 第一章节讲了用单片机来制作电子闹钟所带来的优势,还有电子闹钟在电子产品中未来的 趋势以及本次设计所要实现的课题目标。第二章节讲了设计的一些思路和该产品包含的一 些硬件电路组成。第三章节讲了各个软件模块之间的设计以及该产品的程序代码。最后是 一些结论体会部分和附录图。 关键词:关键词:pc 机;单片机 89c51;串行通信;数码显示 ii 目目 录录 第一章 绪论1 1.1 引言 1 1.2 闹钟的发展趋势 1 1.3 本次设计所要实现的目标 1 第二章 系统总体设计2 2.1 系统总体设计思路 2 2.2 总体硬件组成框图 2 2.3 at89c51 的简介.3 2.4 系统功能的确定 4 2.5 时钟电路 5 2.6 复位电路 5 2.7 键盘电路 6 2.8 数码显示电路 7 第三章 系统软件设计8 3.1 数据单元分配 8 3.2 时钟程序设计步骤 8 3.3 计时子程序模块的实现 9 3.4 时钟设定子程序模块的实现 .10 3.5 程序说明 .11 3.6 实现方式 .12 3.7 源程序设计 .12 结论与体会.20 主要参考材料:.21 附录 1:系统原理图 .22 附录 2:pcb 图23 1 第一章第一章 绪论绪论 1.11.1 引言引言 电子闹钟是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越 来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使 用,壁挂式 led 数码管显示的日历钟逐渐受到人们的欢迎。 单片机电子闹钟是 集电子技术、数字显示技术为一体的高产品,具有按时闹铃,显示清晰直观、 走时准确等优点。 首先介绍设计电子闹钟所涉及的主要硬件和特性,然后说明 软件设计的思路,程序结构及流程,并在测试软件上进行调试和修改,以完成 电子闹钟的基本要求,即可以随意设定起始时间,有秒显示功能,有 12/24 世 制选择,可以设定闹钟,停电时由电池供电等功能。 现代社会电子闹钟发挥着 很大的作用,也是它存在和发展的一个重要方面,尤其是在代表集成电路技术 的发展方面,通过不断提高电子闹钟的计时的精确度可以极大促进定时技术芯 片的发展。同时电子闹钟与其他嵌入式电子产品一样是微处理器的应用,通过 电子闹钟的设计可以很好的掌握电子设计技术。 1.21.2 闹钟的发展趋势闹钟的发展趋势 随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设 备都有自己的控制器,使用起来很不方便。这些具有人们所需要的智能化特性 的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。基 于单片机的电子闹钟就是新一代的产品,能够实现远程控制等功能。它功能强 大、体积小、质量轻、灵活好用。 1.31.3 本次设计所要实现的目标本次设计所要实现的目标 设计一个电子闹钟 1)能随意设定走时起始时间 2)螚指示秒节奏,即秒指示 3)能通过 pc 机实现远程控制 4)时间预设,定时关机的功能 2 第二章第二章 系统总体设计系统总体设计 2.12.1 系统总体设计思路系统总体设计思路 先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要 求,进行各个模块的实物设计并逐个调试,待全部通过后,进行整个系统的联 调,最终实现一个完整的系统,并制成印刷线路板。 整个系统的设计步骤如下: 在单片机最小系统的基础上,完成按键电路和复位电路的设计。 完成显示电 路、数字按键、复位电路。 具有 3 个功能按键: 1)在复位后的待机状态下,用于启动设定时间参数(对时或定闹) ; 2)在设定时间参数状态而且不是设定最低位(即分个位)的状态下,用于 结束当前位的设定,当前设定位下移; 3)在设定最低位(分个位)的状态下,用于结束本次时间设定。 2)键, 用于对当前设定位(编辑位)进行加 1 操作,根据正在编辑的当前位的含义 (时十位、时个位、分十位、分个位)自动进行数据的上限和下限判断。例如, 对 12 小时制,小时的十位只能是 0、1,如果当前值为 0,则按1 键后为 1, 再按1 键则又回复到 0。 把以上各个模块联结起来,整体调试功能。 2.22.2 总体硬件组成框图总体硬件组成框图 整个系统的原理框图如图 2.1 所示 图 2.1 系统原理框图 3 2.32.3 at89c51at89c51 的简介的简介 2.3.12.3.1 at89c51at89c51 简介简介 at89c51 是一个低功耗,高性能 cmos 8 位单片机,片内含 4k bytes isp(in-system programmable)的可反复擦写 1000 次的 flash 只读程序存储器, 器件采用 atmel 公司的高密度、非易失性存储技术制造,兼容标准 mcs-51 指令 系统及 80c51 引脚结构,芯片内集成了通用 8 位中央处理器和 isp flash 存储 单元,功能强大的微型计算机的 at89c51 可为许多嵌入式控制应用系统提供高 性价比的解决方案。 2.3.22.3.2 引脚介绍引脚介绍 at89c51 具有如下特点:40 个引脚,4k bytes flash 片内程序存储器, 128 bytes 的随机存取数据存储器(ram) ,32 个外部双向输入/输出口,5 个中 断优先级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信 口,看门狗(wdt)电路,片内时钟振荡器。 图 2.2 为 at89c51 引脚图 图 2.2 at89c51 引脚图 此外,at89c51 设计和配置了振荡频率可为 0hz 并可通过软件设置省电模 式。空闲模式下,cpu 暂停工作,而 ram 定时计数器,串行口,外中断系统可 继续工作,掉电模式冻结振荡器而保存 ram 的数据,停止芯片其它功能直至外 中断激活或硬件复位。同时该芯片还具有 pdip、tqfp 和 plcc 等三种封装形式, 以适应不同产品的需求。 4 主要功能特性: 兼容 mcs-51 指令系统 32 个双向 i/o 口 2 个 16 位可编程定时/计数器 全双工 uart 串行中断口线 2 个外部中断源 中断唤醒省电模式 看门狗(wdt)电路 灵活的 isp 字节和分页编程 4k 可反复擦写(1000 次)isp flash rom 4.5-5.5v 工作电压 时钟频率 0-33mhz 128x8bit 内部 ram 低功耗空闲和省电模式 3 级加密位 软件设置空闲和省电功能 双数据寄存器指针 2.42.4 系统功能的确定系统功能的确定 2.4.12.4.1 基本功能基本功能 系统具有时间、日期、三路定时功能,并可以对时间、日期、定时进行设 定,有定时提示音。要求计时精度尽量提高。显示格式为: 时间:“时” (第 1、2 位) 、 “分” (第 3、4 位) 、 “秒” (第 5、6 位) ; 日期:“年” (第 1、2 位,如 2007 年显示为 07) 、 “月” (第 3、4 位) 、 “日” (第 5、6 位) ; 定时:“时” (第 1、2 位) 、 “分” (第 3、4 位) 、 “状态标志” (第 5、6 位) 。 键盘及数码管排列如图 2.3 所示。 2.4.22.4.2 扩展功能扩展功能 该系统可以增加温度传感器,实现温度测量,以实时显示温度,用 1、2 位 5 数码管显示;还可以增加湿度传感器,实现湿度测量,以实时显示湿度,用 5、6 位数码管显示。 多路定时器功能也可扩展为对多种家电等电气产品的自动控制,比如电饭 煲等;也可利用温度对某些电气产品进行自动控制,比如空调等;还可利用湿 度传感器对湿度进行调节。如图 2.3 所示。 图 2.3 系统功能图 2.52.5 时钟电路时钟电路 实验板的时钟振荡源电路如图 2.4 所示。其中 jt 为 11.0592mhz 的晶振, 改变两电容 cb 的值即可对此晶振频率进行调节。该电路提供单片机工作所需的 振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以 对波特率进行计算。 图 2.4 时钟电路 2.62.6 复位电路复位电路 如图 2.5 所示为实验板的复位电路,当 reset 信号为低电平时,实验板为 6 工作状态,当 reset 信号为高电平时,实验板为复位或下载程序状态。由于 at89s52 具有 isp 的功能,即可以通过并口线直接将程序下载到单片机内,因 此, at89s52 具有两种状态,下载程序状态和运行状态。该复位电路能实现上 电自动复位,也能手动复位,一般复位时 reset 应保持 20 毫秒以上高电平,此 复位时间由接地电容控制。 图 2.5 复位电路 2.72.7 键盘电路键盘电路 如图 2.6 所示为阵列按键电路,各设置及转换信号由此电路输入,实验板 提供了 16 个按键,由 p1 口经 sn74f244(驱动芯片)输出扩展成 44 的阵列 按键,p1.0p1.3 为行线,p1.4p1.7 为列线。sn74f244 有一片选信号线,g 当此口线为低电平时,a1a4 与 y1y4 接通,反之,a1a4 与 y1y4 断开。 此键盘用扫描工作方式,若有键按下,则相应位端口被拉低为低电平,由 于本系统只用了 4 个按键,所以只需对 4 个按键进行扫描。扫描时,先置 p3.3 口为高电平,向 p1 口送 0efh(mov p1,#0efh) ,再置 p3.3 口为低电平,读 p1 口(mov a,p1) ,最后判断 p1 口低 4 位哪位是低电平,若某位为低电平, 则相应按键被按下,如 p1.0 为低电平(acc.0=0) ,则 k1 键被按下。 7 图 2.6 阵列按键 2.82.8 数码显示电路数码显示电路 如图 2.7 所示为数码显示电路,实验板使用了 6 个共阳数码管,p0 口为段 码信号线,b1b6 为位控线,是 p1 口经 sn74f573(反向驱动芯片,即输入为 高电平,则输出为低电平,反之则输出为高电平,该芯片也有一片选信号 c, 当此信号为高电平时有效)反向得到,再由 b1b6 控制晶体管 q1q6,以达 到控制每位数码管的目的。 系统采用动态显示,先向 p0 口送第一位数码管需要显示的段码值,再给 p1 口送 0feh,延时 1 毫秒使第一位数码管显示,又向 p0 口送第二位数码管需 要显示的段码值,p1 口送 0fdh,延时 1 毫秒,使第二位数码管显示。依次递推, 直到最后一位数码管,然后再循环。改变延时时长可以调节数码管显示的亮度, 由于单片机执行速度很快(微秒级) ,所以看上去数码管一直亮着。 图 2.7 数码显示电路 8 第三章第三章 系统软件设计系统软件设计 3.13.1 数据单元分配数据单元分配 数据存储单元分配如表 3.1 所示: 表 3.1 数据存储单元分配 项目秒分时日月年 存储单 元 30h31h32h33h34h35h 项目定时 1: 开关 定时 1: 分 定时 1: 时 定时 2:开 关 定时 2: 分 定时 2: 时 存储单 元 36h37h38h39h3ah3bh 项目定时 3: 开关 定时 3: 分 定时 3: 时 存显示首地址堆栈起始单元 存储单 元 3ch3dh3eh3fh50h 标志位单元(20h)分配如表 3.2 所示: 表 3.2 标志位单元(20h)分配 位单元项目位单元项目 01h08h 定时 1 显示标志位 02h 1、2 位数码管闪烁标志位 09h 定时 2 显示标志位 03h0ah 定时 3 显示标志位 04h 3、4 位数码管闪烁标志位 0bh 定时 1 响铃标志位 05h0ch 定时 2 响铃标志位 06h 5、6 位数码管显示标志位 0dh 定时 3 响铃标志位 07h 日期显示标志位 0eh 总响铃标志位 3.23.2 时钟程序设计步骤时钟程序设计步骤 系统采用模块化结构,主程序只需调用各个子程序模块即可实现相应功能。 其模块结构图如图 3.1 所示。 9 图 3.1 模块结构图 3.33.3 计时子程序模块的实现计时子程序模块的实现 当 t0 中断时,执行本程序,因 t0 设为 50 毫秒中断,故中断 20 次为 1 秒。 中断程序分别有 20 次计数(1 秒) ,60 次计数(1 分) ,60 次计数(1 小时) , 24 次计数(1 天) ,28、29、30、31 次计数(1 个月) ,12 次计数(1 年) 。当前 位到设定数值时写 0 或 1,下一位加 1。由于本世纪是 21 世纪,年位前两位是 4 的倍数,故判断闰年时只需对年的后两位进行计算,能被 4 整除为闰年,否 则为平年,年位只进行加 1,大于 99 时又重新开始。计时中断流程图如图 3.2 所示。 10 图 3.2 计时子程序流程图 图 3.3 显示子程序流程图 3.43.4 时钟设定子程序模块的实现时钟设定子程序模块的实现 当设定时间时,断开 t0 中断,秒单元清 0,进入时、分单元设定。设定好 后重装 t0 初值,开 t0 中断。流程图如图 3.4 所示。 11 图 3.4 时钟设定子程序流程图 3.53.5 程序说明程序说明 3.5.13.5.1 定时器初值计算定时器初值计算 因定时器工作于方式 1,需要 50ms 的中断,所以计数初值: =216 - tfosc12=65536 - 5010-311.059210612=19456 表示成十六进制为 =4c00h,故(th0)=4ch, (tl0)=00h。 3.5.23.5.2 程序初始化程序初始化 程序初始化时,清相应内存单元(20h4fh 共 48 个单元) ,送时间(00 时 00 分 00 秒) 、日期(07 年 10 月 01 日)初值,送定时器 t0、t1 初值,th0= th1=4ch,tl0= tl1=00h,特殊寄存器(sp=50h、tmod=11h)值等。 3.5.33.5.3 误差分析及校正误差分析及校正 当 t0 中断时,需重装定时初值,且要加上从断开 t0 中断到允许 t0 中断共 有 13 个周期,以减小误差,故理论重装定时初值为(th0)=4ch, (tl0) =13h。但该外接晶振电路的晶振频率可调,可能出现误差,所以实际不是这个 值。 经调试,当定时初值为(th0)=4ch, (tl0)=06h 时,24 小时约慢 2 秒, 所以每当计时 24 小时之后,给秒单元(30h)送 02h,使秒累加时从 2 加起, 24 小时就少加 2 秒,即可使时间得到校正。 3.5.43.5.4 实现闪动设定实现闪动设定 闪动可选用段码送 00h 实现,也可禁止当前位显示,选通位送 0 实现。本 设计选用后者实现闪动,用定时器 t1 进行控制。 12 3.5.53.5.5 实现连续加实现连续加 1 1 先判断键是否松开,若松开,则只执行一次加 1 程序段,进行单次加 1; 若未松开则连续执行加 1 程序段,实现连续加 1。每执行一次加 1 程序段就调 用显示子程序进行延时,以对调节速度进行控制。本系统以 5hz 的速度连续加 1,这样能快速对时间、日期、定时进行设定。 3.63.6 实现方式实现方式 该时钟程序的功能模块先后实现的顺序为: 主程序时间模块显示模块键盘模块时间设定及其显示模块日期 及其显示模块日期设定及其显示模块定时及其显示模块定时设定及其显 示模块定时提示音及与显示相冲突的协调模块。 每完成一个模块就与前一个已完成的模块结合起来调试,直至实现相应功 能,再编写下一模块程序。在与主程序衔接时,主程序和各子程序也需作相应 的改动,以便与子程序更好的衔接,特别是显示子程序需作较大改动,以便对 不同内容进行显示。 3.73.7 源程序设计源程序设计 #include #include #define uchar unsigned char #define uint unsigned int sbit dula=p10; sbit wela=p11; sbit key1=p20; sbit key2=p21; sbit key3=p23; sbit key4=p23; sbit key5=p24; uchar temp,tt,sec,min,hour; 13 uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; void init(); void keyscan(); void counter(); void delay(uint z); void main() init(); wela=1; p0=0xfe; temp=p0; wela=0; dula=1; p0=0x3f; dula=0; while(1) wela=1; p0=temp; wela=0; if(temp=0xfe)/1111 1110 dula=1; p0=tablesec%10; dula=0; 14 if(temp=0xfd)/1111 1101 dula=1; p0=tablesec/10; dula=0; if(temp=0xfb)/1111 1011 dula=1; p0=0x40; dula=0; if(temp=0xf7)/1111 0111 dula=1; p0=tablemin%10; dula=0; if(temp=0xef)/1110 1111 dula=1; p0=tablemin/10; dula=0; 15 if(temp=0xdf)/1101 1111 dula=1; p0=0x40; dula=0; if(temp=0xbf)/1011 1111 dula=1; p0=tablehour%10; dula=0; if(temp=0x7f)/0111 1111 dula=1; p0=tablehour/10; dula=0; delay(2); temp=_crol_(temp,1); if(temp=0xff) temp=0xfe; keyscan(); counter(); 16 void delay(uint z) /延时子函数 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void init()/系统初始化 tt=0; wela=0; dula=0; ea=1; et0=1; tr0=1; tmod=0x01; th0=(65536-50000)/256; tl0=(65536-50000)%256; void timer0() interrupt 1 /定时器 0 中断 th0=(65536-50000)/256; tl0=(65536-50000)%256; tt+; void counter() /计时子函数 17 if(tt=20) tt=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hour+; if(hour=24) hour=0; void keyscan()/键盘扫描 if(key1=1) delay(5); if(key1=1) 18 tr0=0; while(key1); delay(5); while(key1); if(key2=1) delay(5); if(key2=1) sec+; while(key2); delay(5); while(key2); if(key3=1) delay(5); if(key3=1) min+; while(key3); delay(5); while(key3); if(key4=1) 19 delay(5); if(key4=1) hour+; while(key4); delay(5); while(key4); if(key5=1) delay(5); if(key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业管道的定期检查与维护措施
- 工作室文化建设的培训方法和其成功因素的分析探讨
- 工业自动化发展趋势及市场机遇分析
- 工业设计创新与技术突破
- 工作效率提升的现代科技手段分析
- 工作场所中的多元化管理与包容性实践
- 工厂企业消防安全措施
- 工程机械零件的强度与耐久性分析
- 工程钻探技术在复杂地形的应用
- 工程成本控制与成本分析
- 乳腺癌患者术后心理护理
- 国家开放大学《Python语言基础》形考任务4参考答案
- 中学生心理健康诊断测验(MHT)
- 人力资源薪酬专员个人月工作计划
- 期末考试(试题)-2023-2024学年五年级下册数学人教版
- 乳腺癌病人的心理护理课件
- 2024年茶叶加工工(高级)理论考试题库大全(附答案)
- 大连公交集团管理制度
- ABAQUS在隧道及地下工程中的应用
- 林业和草原建设项目初步设计编制实施细则
- 医疗安全不良事件培训
评论
0/150
提交评论