单片机数字钟PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
调加1
江 C51程序源代码
阴 #pragma SMALL
职 业 技
#include "REG51.H" #include "absacc.h"
术 //********************函数声明************************
学 void display(unsigned char *p);
江 第3章 数字钟系统设计
阴
职
业 技
本章主要内容
术
学
Fra Baidu bibliotek
一目的和要求
院
电 子
二设计原则
工 程
三 各模块的设计
系
四 总调试和小结
江 阴
一 设计目的和要求
职
业 技
1 目的:
术
学
(1) 掌握单片机硬件资源的合理运用。
院
电
子
(2) 掌握模块化程序设计的基本方法和设计过
工
程
程。
系
(3) 比较汇编语言程序与C语言程序的不同。
院 电
显示数据
// 6位LED扫描函数,指针p为 区首地址
子 unsigned char keytest();
// 测试键盘有无键按下
工 unsigned char search();
程 系
void alarm(); // 闹钟程序
// 键盘扫描程序
void ftion0(); // 时钟修改程序
void ftion1(); // 闹钟修改程序
程
系
bit rtimbit;
位地址:0AH 位地址:0BH 位地址:0CH 位地址 0DH
时钟小时修改标志,hourbit=1,允许修改时钟 的小时
闹钟分修改标志,rminbit=1,允许修改闹 钟分
闹钟小时修改标志,rhourbit=1,允许修改闹 钟小时
闹钟是否启动标志,rtimbit=1,闹钟已启动, 允许时钟开始 10 s 计时
// 查键值函数
子
工
void alarm();
// 闹钟判断启动函数
程 系
void ftion0();
// 时钟修改函数
void ftion1();
// 闹钟修改程序
void cum();
// 增1程序
void clock() interrupt 1; // 中断函数,该函数无需声明
江
C51程序与汇编语言程序变量定义对应关系
阴
职
业
C51 程序中变量定义
汇编程序中 RAM 地址
意义
技
bit secbit;
位地址:08H
时钟秒修改标志,secbit=1,允许修改时钟秒
术
bit minbit;
位地址:09H
时钟分修改标志,minbit=1,允许修改时钟分
学
bit hourbit;
院
电
bit rminbit;
子
工
bit rhourbit;
RAM 地址:3AH
闹钟启动后保持 10 s 定时单元
unsigned char *dis_p; 寄存器 B
显示缓冲区指针
主程序框图 开始
初始化
江
阴
调键盘检测
职
业
N
技
有无键按下
术
Y
学
延时消抖
调显示
院
电 子
N 有无键按下
Y
N
闹钟设N定否
Y
工
程
求键值
调闹钟设定
系
键值=0
键值=1
键值=2
调时钟修改
调闹钟修改
程 系
时 , 加 到 23 后 “ 清 0” , 再 加 1 ; 修 改 “分”时,加到59后“清0”,再加1。
二设计原则
江
阴
职
业 ① 程序整体结构清晰、简洁、流程合理,主程序尽可能简单明了。
技 术 学
② 各种功能的实现应采用模块化、子程序化,以便于编制、阅读、 连接、移植、修改和调试。
院 ③ 对各函数功能、参数及返回值类型等要明确,以便于分析调试。
2 要求:
江 芯片:AT89C51;
阴 职
功能:设计完成具有计时、调时、调闹
业 多种功能的产品化的电子钟:上电即开
技 术
始计时,用S0实现设置/工作状态的转换;
学 院
S1 实现闹钟设置/工作状态的转换,S2
电 实 现 时 、 分 、 秒 的 +1 调 整 。 用 LED0—
子 工
LED5实现时、分、秒的显示,修改“时”
定时 1 s 循环次数
工 程
unsigned char clockbuf[3]={0,0,0};
RAM 地址:34H~36H
存放时钟显示缓冲区时、分、秒
系
unsigned char
bellbuf[3]={0,0,0};
RAM 地址:37H~39H
存放闹钟显示缓冲区时、分、秒
unsigned char count;
bit armbit;
位地址:0EH
闹钟标志,armbit=0,闹钟没有设定;armbit=1, 闹钟已设定
C51程序与汇编语言程序变量定义对应关系 江
阴
职
业
技
unsigned char timdata;
术
RAM 地址:30H
时钟参数修改位置标志,为 1 时修改秒,为 2 时修改分,为 3 时修改小时
数字钟程序模块划分
江
阴
主模块
职
业
技
术
时
闹
学 院 电显 子示 工函 程数
LED
键 盘 测 试 函 数
查 键 值 函 数
钟 参 数 修 改 函
钟 参 数 修 改 函
系
数
数
display keytest search ftion0 ftion1
闹 钟 判 断 启 动 函 数
alarm
定 时 器 中 断 函 数
void cum(); // 增1程序
//******************全局变量定义*******************
unsigned char clockbuf[3]={0,0,0}; // 存放时、分、秒的十进制数
学
unsigned char rtimdata;
RAM 地址:31H
院
电
unsigned char msec1;
RAM 地址:32H
闹钟参数修改位置标志,为 1 时修改分,为 2 时修改小时
定时 10 ms 中断次数,定时器每 250us 中断一 次
子
unsigned char msec2;
RAM 地址:33H
clock
增 一 键 修 改 函 数
cum
各模块对应的函数声明如下:
江 阴
void display(unsigned char *p); // 6位LED扫描函数,指针p
职为显示数据区
业
技
首地址
术
学
unsigned char keytest( );
// 测试键盘有无键按下
院
电
unsigned char search( );
电 ④ 程序存储区、数据存储区、寄存器区、位寻址区、堆栈区应规划
子
合理,做到既节约资源又不会发生相互间的冲突。
工 ⑤ 运行状态标志化管理,对各功能程序的运行结果、操作状态应设
程
置状态标志,以便查询和实现运行控制。
系 *⑥ 运用软件或软硬件相结合等方法抑制干扰,提高系统的抗干扰能
力。
*⑦ 必要时可结合硬件采取加密措施。