单片机数字钟PPT课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机数字钟PPT课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 PPT 课件
- 资源描述:
-
1、江江阴阴职职业业技技术术学学院院电电子子工工程程系系第第3章章 数字钟系统设计数字钟系统设计本章主要内容本章主要内容一一目的和要求目的和要求二设计原则二设计原则三三 各模块的设计各模块的设计四四 总调试和小结总调试和小结江阴职业技术学院电子工程系江阴职业技术学院电子工程系一一 设计目的和要求设计目的和要求1 目的:(1) 掌握单片机硬件资源的合理运用。(2) 掌握模块化程序设计的基本方法和设计过程。(3) 比较汇编语言程序与C语言程序的不同。江阴职业技术学院电子工程系江阴职业技术学院电子工程系n2 要求:n芯片:AT89C51;n功能:设计完成具有计时、调时、调闹多种功能的产品化的电子钟:上电
2、即开始计时,用S0实现设置/工作状态的转换;S1 实现闹钟设置/工作状态的转换,S2实现时、分、秒的+1调整。用LED0LED5实现时、分、秒的显示,修改“时”时,加到23后“清0”,再加1;修改“分”时,加到59后“清0”,再加1。 江阴职业技术学院电子工程系江阴职业技术学院电子工程系二设计原则二设计原则n 程序整体结构清晰、简洁、流程合理,主程序尽可能简单明了。n 各种功能的实现应采用模块化、子程序化,以便于编制、阅读、连接、移植、修改和调试。n 对各函数功能、参数及返回值类型等要明确,以便于分析调试。n 程序存储区、数据存储区、寄存器区、位寻址区、堆栈区应规划合理,做到既节约资源又不会发
3、生相互间的冲突。n 运行状态标志化管理,对各功能程序的运行结果、操作状态应设置状态标志,以便查询和实现运行控制。n* 运用软件或软硬件相结合等方法抑制干扰,提高系统的抗干扰能力。n* 必要时可结合硬件采取加密措施。 江阴职业技术学院电子工程系江阴职业技术学院电子工程系数字钟程序模块划分主模块显示函数键盘测试函数查键值函数时钟参数修改函数闹钟参数修改函数闹钟判断启动函数定时器中断函数增一键修改函数displaykeytestsearchftion0ftion1alarmclockcumLED江阴职业技术学院电子工程系江阴职业技术学院电子工程系 各模块对应的函数声明如下: void display
4、(unsigned char *p); / 6位LED扫描函数,指针p为显示数据区 首地址 unsigned char keytest( ); / 测试键盘有无键按下 unsigned char search( ); / 查键值函数 void alarm(); / 闹钟判断启动函数 void ftion0(); / 时钟修改函数 void ftion1(); / 闹钟修改程序 void cum(); / 增1程序 void clock() interrupt 1; / 中断函数,该函数无需声明 江阴职业技术学院电子工程系江阴职业技术学院电子工程系C51程序与汇编语言程序变量定义对应关系程序与汇
5、编语言程序变量定义对应关系 C51 程序中变量定义 汇编程序中 RAM 地址 意 义 bit secbit; 位地址:08H 时钟秒修改标志,secbit=1,允许修改时钟秒 bit minbit; 位地址:09H 时钟分修改标志,minbit=1,允许修改时钟分 bit hourbit; 位地址:0AH 时钟小时修改标志, hourbit=1, 允许修改时钟的小时 bit rminbit; 位地址:0BH 闹钟分修改标志,rminbit=1,允许修改闹 钟分 bit rhourbit; 位地址:0CH 闹钟小时修改标志,rhourbit=1,允许修改闹钟小时 bit rtimbit; 位地址
6、 0DH 闹钟是否启动标志,rtimbit=1,闹钟已启动,允许时钟开始 10 s 计时 bit armbit; 位地址:0EH 闹钟标志, armbit=0, 闹钟没有设定; armbit=1,闹钟已设定 江阴职业技术学院电子工程系江阴职业技术学院电子工程系C51程序与汇编语言程序变量定义对应关系程序与汇编语言程序变量定义对应关系 江阴职业技术学院电子工程系江阴职业技术学院电子工程系主程序框图江阴职业技术学院电子工程系江阴职业技术学院电子工程系C51程序源代码程序源代码#pragma SMALL#include REG51.H#include absacc.h/*函数声明*void disp
7、lay(unsigned char *p); / 6位LED扫描函数,指针p为显示数据区首地址unsigned char keytest(); / 测试键盘有无键按下unsigned char search(); / 键盘扫描程序void alarm(); / 闹钟程序void ftion0(); / 时钟修改程序void ftion1(); / 闹钟修改程序void cum(); / 增1程序江阴职业技术学院电子工程系江阴职业技术学院电子工程系/*全局变量定义*unsigned char clockbuf3=0,0,0; / 存放时、分、秒的十进制数unsigned char bellbuf
8、3=0,0,0; / 存放闹钟时、分、秒的十进制数unsigned char msec1,msec2; / msec1:10 ms中断次数, msec2:1 s循 环次 数unsigned char timdata,rtimdata; / 时钟和闹钟修改位置标志unsigned char count; / 闹钟启动后10 s计时单元unsigned char *dis_p; / 显示缓冲区指针unsigned char fcount; /闪烁计数单元bit armbit; / 闹钟标志, armbit=0, 闹钟没有设 定;armbit=1,闹钟已设定bit rtimbit; / 闹钟是否启动
9、标志,rtimbit=1,闹钟已启动 bit rhourbit; / 闹钟小时修改标志,rhourbit=1,正在修改闹钟小时bit rminbit; / 闹钟分修改标志,rminbit=1,正在修改闹钟分钟bit hourbit; / 时钟小时修改标志,hourbit=1,正在修改时钟小时bit minbit; / 时钟分修改标志,minbit=1,正在修改时钟分钟bit secbit; / 时钟秒修改标志bit flash; /闪烁标志位sbit P10=P10;sbit P27=P27;江阴职业技术学院电子工程系江阴职业技术学院电子工程系/*主函数*main( ) unsigned ch
10、ar a; armbit=0; / 清零闹钟标识位 bellbuf0=23; / 设置闹钟单元初值 bellbuf1=59; clockbuf0=23;/ 设置时钟单元初值 clockbuf1=59; clockbuf2=59; msec1=0; / 设置10 ms中断次数初值 msec2=0; / 设置1 s中断次数初值 timdata=0; / 时钟内容修改位置记忆单元清零 rtimdata=0; / 闹钟内容修改位置记忆单元清零 count=0; / 闹钟启动后保持10 s计时单元清零 fcount=0; /闪烁计数单元清零 flash=0; /闪烁标志位清零 江阴职业技术学院电子工程系
11、江阴职业技术学院电子工程系 TMOD=0 x12;/ 初始化定时器,定时器T0方式2,定时器T1方式1 TL0=0 x06; / 定时250 s初始值 TH0=0 x06; TH1=0X3C; TL1=0XB0; EA=1; / 中断允许控制断 ET0=1; / 定时器0开中断 TR0=1; / 启动定时器0 dis_p=clockbuf; / 将时钟值送入显示指针dis_p=1; 江阴职业技术学院电子工程系江阴职业技术学院电子工程系 while(1) a=keytest(); if(a=0 x07) / 调用判别键入测试程序 display(dis_p); / 无键输入调用显示程序 if(a
12、rmbit=1) alarm(); / 判别闹钟设定否,若设定了,则调闹 钟程序 else display(dis_p); / 调用显示程序作为延时去抖动 a=keytest(); if(a!=0 x07) / 没有抖动,则表示有键按下 a=search(); / 调用键号测试程序 switch (a) case 0 x00:ftion0();break; / 若是时钟参数修改功能键,则调用时 钟修改程序 case 0 x01:ftion1();break; / 若是闹钟参数修改功能键, 则调用闹钟设定程序 case 0 x02:cum();break; / 若是加1功能键,则调用加1修改程序
展开阅读全文