ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:759.93KB ,
资源ID:6172303      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6172303.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字时钟实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字时钟实验报告.docx

1、数字时钟实验报告物理机电学院课程设计报告课程名称: 单片机数字时钟设计 专业班级: 学号: 学生姓名 指导教师: 完成时间: 2014.06.13 报告成绩: 评阅意见: 评阅教师 日期 数字时钟设计报告一、设计任务与要求1、用单片机设计一数字时钟:设计基本要求:(1)以24h(小时)计时方式;(2)分别用四位或六位LED数码管显示时、分、(秒);(3)使用按键开关可实现时、分调整;(4)能整点声光提示,能设置闹钟二、方案设计与论证 根据要求数码管能显示一天的时间和闹铃时分,调整时间和设置闹铃,当时间超过我们设置好的闹铃时间,闹铃铃声响起还有灯光闪烁。方案一我们可以用一个四位共阳数码管显示时钟

2、时、分、秒以及闹铃时、分、秒,在调整时间或设置闹铃时间时候数字会闪烁,调试某个时、分就闪烁两个数字。方案二我们可以设置四个按键来调整数字时钟。其中两个按键能实现时、分的加减,一个按键能选择时间显示或是闹铃时间,最后一个按键实现闹铃开启和关闭及查看设定的闹铃时间及监视闹铃是否开启。3、硬件电路设计3.1总体描述(1)单片机采用AT89C51型;(2)时间显示电路:采用4个共阳极数码管,P0口驱动显示数字位码控制数码管显示位,P1口作数字段码控制0到9数字的显示;(3)时间设置电路:P3.4、P3.5、P3.6、P3.7分别连接4个按键,实现调模式, 时间加和时间减;(4)闹钟:P1.5口接扬声器

3、。P0.7口小数点DP3.2系统总框架图4、软件设计4.1程序流程图 4-3时分秒计时流程图如下图4.2 函数模块及功能(1)int main() 主函数(2)void delay(int time) 延时(3)void init() 初始化程序 (4)void time0() interrupt 1定时器TO中断,实现时分秒的计时(5)void time1() interrupt 3定时器T1中断,实现时分调整时闪烁(6)void showshi()四位共阳数码管显示,显示小时、分钟(7)int GetKey()获取按键,设定三个按键,赋给第四个按键查看闹铃功能(8)void key(int

4、 KeyNum)按键调整时间功能,实现时间和闹铃时、分的加减(9)Int NaoZhong()闹铃,设定时间到就蜂鸣器报警五、仿真过程与仿真结果5.1Proteus仿真电路图5、安装与调试 在KeiluVision4软件中编写数字时钟源程序,进行修改然后进行编译,把编译好的程序通过STC_ISP软件下载进单片机开发板中的AT89C52RC芯片,换到实验焊接的简易单片机电路板中,进行最后调试。 在调试过程中,经常碰到数字时钟数码管没显示数字,原因可能是用了共阴数码管的显示代码,头次就碰到。其他情况大多是是在位码段码时候设置错位选,还有就是要注意消隐及PI=0XFF。 四个按键实现选择时间和闹铃、

5、加、减、闹铃开关查看设置闹铃。经常出现按键错乱或者不能用。主要是因为在设置按键口还有功能时候出现不匹配,还有闹铃没发时间到蜂鸣器报警,反而是灯亮,是因为定义XCLOCK初始化XCLOCK没等于0. 在修改程序时候常常出现修改错地方还有添加错位置,或者掉了一些符号数字。 调试后,实现实验要求: (1)以24h(小时)计时方式;(2)分别用四位或六位LED数码管显示时、分、(秒);(3)使用按键开关可实现时、分调整;(4)能整点声光提示,能设置闹钟 六、结论与心得 本学期的课程设计巩固了我们上学期单片机所学内容,而且让我们对生活中的常见的单片机开发板以及AT89C52芯片的结构、功能和性能有了更准

6、确地认识。将生活中的一些用品和书本知识联系在了一起,使我们的书本知识和生活常识方面都有了增长。 在 设 计 之 前 ,我 们 要 对 所 用 单 片 机 的 内 部 结 构 有 一 个 系 统 的 了 解 , 知 道 该 单 片 机 内 有 哪 些 资 源 ; 要 有 一 个 清 晰 的 思 路 和 一 个 完 整 的 的 软 件 流 程 图 ;在 设 计 程 序 时 ,不 能 妄 想 一 次 就 将 整 个 程 序 设 计 好,反 复 修 改、不 断 改 进 是 程 序 设 计 的 必 经 之 路 ;要 养 成 注 释 程 序 的 好 习 惯,一 个 程 序 的 完 美 与 否 不 仅 仅

7、是 实 现 功 能,而 应 该 让 人 一 看 就 能 明 白 你 的 思 路 ,这 样 也 为 资 料 的 保 存 和 交 流 提 供 了 方 便 ;在 实 习 过 程 中 遇 到 问 题 是 很 正 常 的 ,但 我 们 应 该 将 每 次 遇 到 的 问 题 记 录 下 来 ,并 分 析 清 楚 ,以 免 下 次 再 碰 到 同 样 的问 题。但是 从 中 学 到 的 知 识 会 让 我 受 益 终 身 。发 现 、提 出、分 析、解 决 问 题 和 实 践 能 力 提 高 都 会 受 益 于 我 在以 后 的 学 习 、 工 作 和 生 活 中 。七、参考文献 1、周润景.基于Prot

8、eus的电路及单片机设计以仿真M.北京.北京航空航天大学出版社,2006.2、谭浩强.C程序设计M.北京:清华大学出版社,1991.3、刘守义.单片机应用技术M西安:西安电子科技大学出版社,2002.4孙涵芳2.MCS-51/96系列单片机及应用M.北京.北京航空航天大学出版社,1988.551单片机原理与实践(C语言版)M.北京.北京航空航天大学出版社,2011.附:源程序代码/*课题:电子时钟设计(数码管) 数码管:段码为:P0接段 a-g 位码分别为:P1 蜂鸣器:P1.5*/#include#define duanma P0#define weima P1sbit smg1=P10;/

9、sbit smg2=P11;sbit smg3=P12;sbit smg4=P13;sbit dp=P07;sbit BEEP=P15;sbit key1=P37;sbit key2=P36;sbit key3=P35;sbit key4=P34;int ArgTimer6=0,0,0,0;int Argtable10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; / 09int SetTime;int miao,fen,shi;int Nmiao,Nfen,Nshi;int tt;int shan,tsshan;int nao; /li

10、ngint clockkg;int FZWnao;int xclock;int seeclock;int Dp;/* 延时*/void delay(int time) int x,y; for(x=time;x0;x-) for(y=110;y0;y-);/* 初始化*/void init() nao=0; clockkg=0; FZWnao = 0; seeclock = 0; xclock = 0; shan = 0;tsshan = 0; SetTime = 0; miao = 0; shi=13; fen=16; Nmiao = 0; Nshi=7; Nfen=30; Dp =0;tt

11、 = 0; EA = 1; ET0 = 1; /T0 TMOD = 0x11; TH0 = 0x03c; TL0 = 0x0b0; TR0 = 1; ET1 = 1; /T1 TH1 = 0x03c; TL1 = 0x0b0; TR1 = 0;/* 定时器T0中断 */void time0() interrupt 1 TH0 = 0x03c; TL0 = 0x0b0; tt+; /50ms*20=1s if(tt = 20) Dp=Dp; if(FZWnao != 0 & clockkg!=0) BEEP=BEEP; tt=0; miao+; if(miao=60) miao=0; fen+;

12、 if(fen=60) fen=0; shi+; if(shi=24) shi=0; /* 定时器T1中断 */void time1() interrupt 3 TH1 = 0x03c; TL1 = 0x0b0; tsshan+; if(tsshan = 10) shan=shan; tsshan = 0; void showshi() if(nao = 0) ArgTimer0 = shi/10; ArgTimer1 = shi%10; ArgTimer2 = fen/10; ArgTimer3 = fen%10; if(nao != 0|seeclock != 0) ArgTimer0 =

13、 Nshi/10; ArgTimer1 = Nshi%10; ArgTimer2 = Nfen/10; ArgTimer3 = Nfen%10; / weima = 0x01; /第一位 smg1=0;smg2=1;smg3=1;smg4=1; if(shan != 0 & (SetTime = 2|SetTime = 4) duanma = 0xff;/weima = 0; else duanma = ArgtableArgTimer0; delay(3); duanma=0xff;/ weima = 0x02; /第二位 smg1=1;smg2=0;smg3=1;smg4=1; if(sh

14、an != 0 & (SetTime = 2|SetTime = 4) duanma = 0xff;/weima = 0; else duanma = ArgtableArgTimer1; if(Dp!=0) dp = 0; delay(3); duanma=0xff;/ weima = 0x04; /第三位 smg1=1;smg2=1;smg3=0;smg4=1; if(shan != 0 & (SetTime = 1|SetTime = 3) duanma = 0xff;/weima = 0; else duanma = ArgtableArgTimer2; delay(3); duanm

15、a=0xff;/ weima = 0x08; /第四位 smg1=1;smg2=1;smg3=1;smg4=0; if(shan != 0 & (SetTime = 1|SetTime = 3) duanma = 0xff;/weima = 0; else duanma = ArgtableArgTimer3; if(clockkg!=0) dp= 0; delay(3); duanma=0xff;/*/int GetKey() if(key1=0) while(key1=0) showshi();/ if(key1=0) return 1; if(key2=0) while(key2=0)

16、showshi(); / if(key2=0) return 2; if(key3=0) while(key3=0) showshi(); / if(key3=0) return 3; if(key4=0) while(key4=0) seeclock = 1; showshi(); seeclock=0;/ if(key4=0) return 4; return 0;void key(int KeyNum) switch(KeyNum) case 0:break; case 1: SetTime+; switch(SetTime) case 1: /fen TR1 = 1; shan = 0

17、; break; case 2: / shi break; case 3: / Nfen nao=1; break; case 4: / Nshi break; case 5: / over SetTime=0;TR1 = 0;nao=0; break; break; case 2: switch(SetTime) /JIA case 0: break; case 1: fen+; if(fen = 60) fen=0; break; case 2: shi+; if(shi=24) shi = 0; break; case 3: Nfen+; if(Nfen = 60) Nfen=0; br

18、eak; case 4: Nshi+; if(Nshi=24) Nshi = 0; break; break; case 3: switch(SetTime) /JIAN case 0: break; case 1: fen-; if(fen = 0) fen=59; break; case 2: shi-; if(shi = 0) shi=23; break; case 3: Nfen-; if(Nfen = 0) Nfen=59; break; case 4: Nshi-; if(Nshi = 0) Nshi=23; break; break; case 4: clockkg =clockkg; break; /* 闹铃*/int NaoZhong() if(fen-Nfen=Nfen) return 1; else FZWnao = 0; return 0; /* 主函数*/int main() init(); while(1) key(GetKey(); if(clockkg != 0) if(NaoZhong()=1) FZWnao = 1; else FZWnao=0; else BEEP = 1; showshi(); return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1