基于PIC16F877A的数字钟设计_第1页
基于PIC16F877A的数字钟设计_第2页
基于PIC16F877A的数字钟设计_第3页
基于PIC16F877A的数字钟设计_第4页
基于PIC16F877A的数字钟设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子工程系项目考核电子工程系项目考核 报告 报告 项目名称项目名称 数字时钟项目数字时钟项目 姓 名 班 级 学 号 课程名称 一 一 项目要求 项目要求 数码管默认显示 00 00 数码管 1 2 表示小时 数码管 3 4 表示分钟 如此 实现时钟功能 要求能够整点报时 闹钟提示 并附带有秒表功能 按键可以调整时钟时间 切换显示页面和设定 闹钟时间等 二 二 项目原理分析项目原理分析 在项目用的单片机开发板上单片机的 IO 口接四位数码管的各 段 同时开发板共阴数码管的阴极由 138 译码器的输出端控制 在 该项目中我采用了数码管的动态显示 即每位数码管点亮 2ms 时间 左右 由于人的视觉暂留现象及发光二极管的余辉效应 只要扫描 的速度足够快 给人的印象就是一组稳定的显示数据 不会有闪烁 感 动态显示的效果和静态显示是一样的 能够节省大量的 I O 端 口 而且功耗更低 在实现了数码管的动态显示的基础上在主程序 中通过计算定时器 1 的中断次数 从而得到计时时间和秒表时间的 基准时间 同时在主程序中添加按键处理程序 实现时钟的开始 中断和校时 同时实现闹钟定时和切换显示等功能 还有秒表计时 功能 三 三 硬件电路图以及原理硬件电路图以及原理 3 1 硬件电路图如下 硬件电路图如下 3 2 硬件原理 硬件原理 该项目中 主要的功能模块有 数码管显示模块 按键模块 蜂鸣器模块 数码管显示模块主要是由芯片 PIC16F877A 内部的定时 器 1 的定时中断实现数码管的动态显示 按键模块主要利用矩阵式按 键实现多按键功能 矩阵式按键原理是在一端加高电平 然后检测另 一端是否为高电平来判断按键是否按下 通过不同的定义可以让按键 实现不同的功能 蜂鸣器模块通过三极管的开关作用和驱动作用由芯 片控鸣叫与否 四 程序说明以及程序流程图四 程序说明以及程序流程图 该时钟默认显示页面为时钟计时页面 按键 SW1 控制时钟 秒表的开始和中断 按按键 SW1 一次 如果数码管在显示秒表 则 开始计秒功能 否则 开始正常计时 再按一次 SW1 则实现中断功 能 按键 SW2 实现是数码管的选位 从第一个数码管开始 按一次 就选中下一位数码管 循环选择 SW3 实现的是加 1 功能 每按一 次就在 SW2 选中的位上加 1 SW4 是实现数码管切换显示功能 按 一次就进入闹钟调时的显示页面 再按一次就进入秒表显示页面 实现数码管显示在时钟计时 闹钟定时和秒表计时这三个不同页面 的循环切换显示 图 1 是时钟 秒表计时开始和中断 以及闹钟提 醒的流程图 图 2 是显示页面的却换流程图 图 3 是校时和定时流 程图 下面就是程序的流程图 h 1 上电 h 3 时钟 计时 秒表 计时 SW1 按下 SW1 再 按下 h 3 是 时钟计 时中断 秒表计时 中断 时 钟正常计 时 是 否 否 SW4 每按一次 h 加 1 1 3 上电 h 1h 2h 3 显示时钟 页面 显示时钟 页面 显示秒表 页面 SW2 每按一次 a 加 1 1 4 上电 a 1a 2a 3a 4 SW3 按下SW3 按下SW3 按下SW3 按下 h 1h 2h 1h 2h 1h 2h 1h 2 时钟 小时 十位 加 1 闹钟 小时 十位 加 1 时钟 小时 个位 加 1 闹钟 小时 个位 加 1 时钟 分钟 十位 加 1 时钟 分钟 个位 加 1 闹钟 分钟 个位 加 1 闹钟 分钟 十位 加 1 整点报时 闹钟提醒 图 1图 2 图 3 闹 钟 五 程序清单 要求有详尽的注释 五 程序清单 要求有详尽的注释 main 主函数 int a 1 b z h 1 定义一个标志位 a b ints1 0 s2 0 s3 0 s4 0 时钟小时分钟的十位和个位 int n1 0 n2 0 n3 0 n4 0 闹钟小时分钟的十位和个位 int m1 0 m2 0 m3 0 m4 0 秒表的标志位 static bit biaozhi 0 时钟的静态标志位 static bit mbz 0 秒表的静态标志位 ADCON1 0X06 初始化 TRISA 0X00 TRISB 0X01 外部中断输入 PORTB 0X00 TRISD 0X01 设置 RD0 输入 PORTD 0X01 设置 RD0 输入 TRISE 0X00 timer1init 定时器 1 初始化 INTE 1 外部中断使能 INTEDG 1 外部中断上升沿 RA1 1 使能 138 译码器 LED1 0 LED2 0 LED3 0 LED4 0 数码管 1 显示 4 while 1 RD4 1 按键 SW1 一端高电 平 if RD0 1 判断按键是否 按下 delay 10 延时 10mS 去 键抖 if RD0 1 再次确认按键 是否按下 RD2 1 delay 30 RD2 0 蜂鸣器响 30mS if h 3 判断是否是秒 表显示页面 mbz mbz t 0 秒表标志位取反 开始计时或中断 else biaozhi biaozhi time 0 时钟标 志位取反 开始计时或中断 while RD0 1 等待放手 RD4 0 RD5 1 按键 SW2 一端高 电平 if RD0 1 判断按键 SW2 是否按下 delay 10 延时 10mS 去键抖 if RD0 1 再次确认按键 SW2 是否按下 RD2 1 delay 30 RD2 0 蜂鸣器 响 30mS a 位选标志位加 1 if a 5 a 1 if a 1 b LED1 先关闭数码 管 300 毫秒 然后再点亮 LED1 10 delay 300 延时 300 毫 秒 LED1 b if a 2 b LED2 先关闭数码 管 300 毫秒 然后再点亮 LED2 10 delay 300 延时 300 毫 秒 LED2 b if a 3 b LED3 先关闭数码 管 300 毫秒 然后再点亮 LED3 10 delay 300 延时 300 毫 秒 LED3 b if a 4 b LED4 先关闭数码管 300 毫秒 然后再点亮 LED4 10 delay 300 延时 300 毫秒 LED4 b while RD0 1 等待放 手 RD5 0 RD6 1 按键 SW3 一端高 电平 if RD0 1 判断按键 SW3 是否按下 delay 10 延时 10mS 去键抖 if RD0 1 再次 确认按键 SW3 是否按下 RD2 1 delay 30 RD2 0 蜂鸣器 响 30mS if h 1 判断显示标志 位 LED1 s1 LED2 s2 LED3 s3 LED4 s 4 数码管显示时钟页面 if a 1 s1 如果位选标 志位 a 1 则小时十位加 1 if a 2 s2 如果位选 标志位 a 2 则小时个位加 1 if a 3 s3 如果位选 标志位 a 3 则分钟十位加 1 if a 4 s4 如果位选 标志位 a 4 则分钟十位加 1 if s1 3 s1 0 使时钟在校 时时也能按计时规则进行 if s1 2 if s2 10 s2 0 if s1 2 if s2 4 s2 0 if s3 6 s3 0 if s4 10 s4 0 if h 2 判断显示标志位 LED1 n1 LED2 n2 LED3 n3 LED4 n4 数码管显示闹钟定时页面 if a 1 n1 如果位选标志位 a 1 则小时十位加 1 if a 2 n2 如果位选 标志位 a 2 则小时个位加 1 if a 3 n3 如果位选 标志位 a 3 则分钟十位加 1 if a 4 n4 如果位选标志位 a 4 则分钟十位加 1 if s1 3 s1 0 使闹钟在定时时也能按计时规则进行 if s1 400 time 为定时器 1 的中断次数 利用定 时器 1 提供的 2 5mS 的基准时间计时 time 0 z 1 秒计算 if z 60 s4 z 0 时钟计时 if s4 10 s3 s4 0 if s3 6 s2 s3 0 if s1 40 RD2 0 if s3 0 蜂鸣器响 if time 40 RD2 0 if mbz 判断秒表标志位 if t 40 实现秒表 0 1 秒精度 t 0 秒表计时 m4 if m4 10 m3 m4 0 if m3 10 m2 m3 0 if m2 6 m1 m2 0 if m1 10 m1 0 六 心得体会六 心得体会 在这次的时钟项目中 我根据一些电子钟的功能要求 在这个时钟项目中集 成了较多的功能 包括常用的时钟 闹钟 整点报时 校时和定时功能 另外我 还新增了一个秒表的功能 所以这个时钟的功能还是比较强大的 但对于我的设 计来说却是一个挑战 因为我还没有编写过多显示页面的程序 后来我通过定义 标志位来实现数码管显示页面的切换 但这种方法原理虽然

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论