数字时钟实验报告

物理机电学院课程设计报告

课程名称: 单片机数字时钟设计 专业班级: 学号: 学生姓名

指导教师:

完成时间: 2014.06.13 报告成绩:

数字时钟设计报告

一、设计任务与要求

1、用单片机设计一数字时钟: 设计基本要求:

(1)以24h (小时)计时方式;

(2)分别用四位或六位LED 数码管显示时、分、(秒); (3)使用按键开关可实现时、分调整; (4)能整点声光提示,能设置闹钟

二、方案设计与论证

根据要求数码管能显示一天的时间和闹铃时分,调整时间和设置闹铃,当时

间超过我们设置好的闹铃时间,闹铃铃声响起还有灯光闪烁。 方案一

我们可以用一个四位共阳数码管显示时钟时、分、秒以及闹铃时、分、秒,在调整时间或设置闹铃时间时候数字会闪烁,调试某个时、分就闪烁两个数字。 方案二

我们可以设置四个按键来调整数字时钟。其中两个按键能实现时、分的加减,一个按键能选择时间显示或是闹铃时间,最后一个按键实现闹铃开启和关闭及查看设定的闹铃时间及监视闹铃是否开启。

三、硬件电路设计

3.1总体描述

(1)单片机采用AT89C51型;

(2)时间显示电路:采用4个共阳极数码管,P0口驱动显示数字位码控制数码管显示位,P1口作数字段码控制0到9数字的显示;

(3)时间设置电路:P3.4、P3.5、P3.6、P3.7分别连接4个按键,实现调模式, 时间加和时间减;

(4)闹钟:P1.5口接扬声器。P0.7口小数点DP 3.2系统总框架图

四、软件设计

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 KeyNum)

按键调整时间功能,实现时间和闹铃时、分的加减 (9)Int NaoZhong()

闹铃,设定时间到就蜂鸣器报警

五、仿真过程与仿真结果

5.1Proteus

仿真电路图

五、安装与调试

在KeiluVision4软件中编写数字时钟源程序,进行修改然后进行编译,把

编译好的程序通过STC_ISP软件下载进单片机开发板中的AT89C52RC 芯片,换到实验焊接的简易单片机电路板中,进行最后调试。

在调试过程中,经常碰到数字时钟数码管没显示数字,原因可能是用了共阴数码管的显示代码,头次就碰到。其他情况大多是是在位码段码时候设置错位选,还有就是要注意消隐及PI=0XFF。

四个按键实现选择时间和闹铃、加、减、闹铃开关查看设置闹铃。经常出现按键错乱或者不能用。主要是因为在设置按键口还有功能时候出现不匹配,还有闹铃没发时间到蜂鸣器报警,反而是灯亮,是因为定义XCLOCK 初始化XCLOCK 没等于0.

在修改程序时候常常出现修改错地方还有添加错位置,或者掉了一些符号数字。

调试后,实现实验要求: (1)以24h (小时)计时方式; (2)分别用四位或六位LED 数码管显示时、分、(秒); (3)使用按键开关可实现时、分调整; (4)能整点声光提示,能设置闹钟

六、结论与心得

本学期的课程设计巩固了我们上学期单片机所学内容,而且让我们对生活中的常见的单片机开发板以及AT89C52芯片的结构、功能和性能有了更准确地认识。将生活中的一些用品和书本知识联系在了一起,使我们的书本知识和生活常识方面都有了增长。

在 设 计 之 前 ,我 们 要 对 所 用 单 片 机 的 内 部 结 构 有 一 个 系 统 的 了 解 , 知 道 该 单 片 机 内 有 哪 些 资 源 ; 要 有 一 个 清 晰 的 思 路 和 一 个 完 整 的 的 软 件 流 程 图 ;在 设 计 程 序 时 ,不 能 妄 想 一 次 就 将 整 个 程 序 设 计 好,反 复 修 改、不 断 改 进 是 程 序 设 计 的 必 经 之 路 ;要 养 成 注 释 程 序 的 好 习 惯,一 个 程 序 的 完 美 与 否 不 仅 仅 是 实 现 功 能,而 应 该 让 人 一 看 就 能 明 白 你 的 思 路 ,这 样 也 为 资 料 的 保 存 和 交 流 提 供 了 方 便 ;在 实 习 过 程 中 遇 到 问 题 是 很 正 常 的 ,但 我 们 应 该 将 每 次 遇 到 的 问 题 记 录 下 来 ,并 分 析 清 楚 ,以 免 下 次 再 碰 到 同 样 的问 题。但是 从 中 学 到 的 知 识 会 让 我 受 益 终 身 。发 现 、提 出、分 析、解 决 问 题 和 实 践 能 力 提 高 都 会 受 益 于 我 在以 后 的 学 习 、 工 作 和 生 活 中 。

七、参考文献

[1]、周润景. 基于Proteus 的电路及单片机设计以仿真[M].北京. 北京航空航天大学出版社,2006.

[2]、谭浩强.C 程序设计[M].北京:清华大学出版社,1991.

[3]、刘守义. 单片机应用技术[M]西安:西安电子科技大学出版社,2002.

[4]孙涵芳2.MCS-51/96系列单片机及应用[M].北京. 北京航空航天大学出版社,1988. [5]51单片机原理与实践(C 语言版)[M].北京. 北京航空航天大学出版社,2011.

附:源程序代码

/*************************************** 课题:电子时钟设计(数码管)

数码管:段码为:P0接段 a-g 位码分别为:P1 蜂鸣器:P1.5

***************************************/ #include #define duanma P0 #define weima P1

sbit smg1=P1^0;/sbit smg2=P1^1; sbit smg3=P1^2; sbit smg4=P1^3; sbit dp=P0^7; sbit BEEP=P1^5; sbit key1=P3^7; sbit key2=P3^6; sbit key3=P3^5; sbit key4=P3^4;

int ArgTimer[6]={0,0,0,0};

int Argtable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // 0~9 int SetTime;

int miao,fen,shi; int Nmiao,Nfen,Nshi; int tt;

int shan,tsshan; int nao; //ling int clockkg; int FZWnao; int xclock; int seeclock; int Dp;

/*********************************************************** 延时

***********************************************************/ void delay(int time) { int x,y;

for(x=time;x>0;x--) for(y=110;y>0;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 = 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++;

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)

{ ArgTimer[0] = shi/10; ArgTimer[1] = shi%10; ArgTimer[2] = fen/10; ArgTimer[3] = fen%10; } if(nao != 0||seeclock != 0) {

ArgTimer[0] = Nshi/10; ArgTimer[1] = Nshi%10;

ArgTimer[2] = Nfen/10; ArgTimer[3] = 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 = Argtable[ArgTimer[0]]; delay(3); duanma=0xff;

// weima = 0x02; //第二位 smg1=1;smg2=0;smg3=1;smg4=1;

if(shan != 0 && (SetTime == 2||SetTime == 4)) duanma = 0xff;//weima = 0;

else

duanma = Argtable[ArgTimer[1]]; 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 = Argtable[ArgTimer[2]]; delay(3); duanma=0xff;

// weima = 0x08; //第四位 smg1=1;smg2=1;smg3=1;smg4=0;

if(shan != 0 && (SetTime == 1||SetTime == 3)) duanma = 0xff;//weima = 0; else

duanma = Argtable[ArgTimer[3]]; 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) showshi(); // if(key2==0) return 2; }

if(key3==0) {

while(key3==0) showshi(); // if(key3==0) return 3; }

物理机电学院课程设计报告

课程名称: 单片机数字时钟设计 专业班级: 学号: 学生姓名

指导教师:

完成时间: 2014.06.13 报告成绩:

数字时钟设计报告

一、设计任务与要求

1、用单片机设计一数字时钟: 设计基本要求:

(1)以24h (小时)计时方式;

(2)分别用四位或六位LED 数码管显示时、分、(秒); (3)使用按键开关可实现时、分调整; (4)能整点声光提示,能设置闹钟

二、方案设计与论证

根据要求数码管能显示一天的时间和闹铃时分,调整时间和设置闹铃,当时

间超过我们设置好的闹铃时间,闹铃铃声响起还有灯光闪烁。 方案一

我们可以用一个四位共阳数码管显示时钟时、分、秒以及闹铃时、分、秒,在调整时间或设置闹铃时间时候数字会闪烁,调试某个时、分就闪烁两个数字。 方案二

我们可以设置四个按键来调整数字时钟。其中两个按键能实现时、分的加减,一个按键能选择时间显示或是闹铃时间,最后一个按键实现闹铃开启和关闭及查看设定的闹铃时间及监视闹铃是否开启。

三、硬件电路设计

3.1总体描述

(1)单片机采用AT89C51型;

(2)时间显示电路:采用4个共阳极数码管,P0口驱动显示数字位码控制数码管显示位,P1口作数字段码控制0到9数字的显示;

(3)时间设置电路:P3.4、P3.5、P3.6、P3.7分别连接4个按键,实现调模式, 时间加和时间减;

(4)闹钟:P1.5口接扬声器。P0.7口小数点DP 3.2系统总框架图

四、软件设计

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 KeyNum)

按键调整时间功能,实现时间和闹铃时、分的加减 (9)Int NaoZhong()

闹铃,设定时间到就蜂鸣器报警

五、仿真过程与仿真结果

5.1Proteus

仿真电路图

五、安装与调试

在KeiluVision4软件中编写数字时钟源程序,进行修改然后进行编译,把

编译好的程序通过STC_ISP软件下载进单片机开发板中的AT89C52RC 芯片,换到实验焊接的简易单片机电路板中,进行最后调试。

在调试过程中,经常碰到数字时钟数码管没显示数字,原因可能是用了共阴数码管的显示代码,头次就碰到。其他情况大多是是在位码段码时候设置错位选,还有就是要注意消隐及PI=0XFF。

四个按键实现选择时间和闹铃、加、减、闹铃开关查看设置闹铃。经常出现按键错乱或者不能用。主要是因为在设置按键口还有功能时候出现不匹配,还有闹铃没发时间到蜂鸣器报警,反而是灯亮,是因为定义XCLOCK 初始化XCLOCK 没等于0.

在修改程序时候常常出现修改错地方还有添加错位置,或者掉了一些符号数字。

调试后,实现实验要求: (1)以24h (小时)计时方式; (2)分别用四位或六位LED 数码管显示时、分、(秒); (3)使用按键开关可实现时、分调整; (4)能整点声光提示,能设置闹钟

六、结论与心得

本学期的课程设计巩固了我们上学期单片机所学内容,而且让我们对生活中的常见的单片机开发板以及AT89C52芯片的结构、功能和性能有了更准确地认识。将生活中的一些用品和书本知识联系在了一起,使我们的书本知识和生活常识方面都有了增长。

在 设 计 之 前 ,我 们 要 对 所 用 单 片 机 的 内 部 结 构 有 一 个 系 统 的 了 解 , 知 道 该 单 片 机 内 有 哪 些 资 源 ; 要 有 一 个 清 晰 的 思 路 和 一 个 完 整 的 的 软 件 流 程 图 ;在 设 计 程 序 时 ,不 能 妄 想 一 次 就 将 整 个 程 序 设 计 好,反 复 修 改、不 断 改 进 是 程 序 设 计 的 必 经 之 路 ;要 养 成 注 释 程 序 的 好 习 惯,一 个 程 序 的 完 美 与 否 不 仅 仅 是 实 现 功 能,而 应 该 让 人 一 看 就 能 明 白 你 的 思 路 ,这 样 也 为 资 料 的 保 存 和 交 流 提 供 了 方 便 ;在 实 习 过 程 中 遇 到 问 题 是 很 正 常 的 ,但 我 们 应 该 将 每 次 遇 到 的 问 题 记 录 下 来 ,并 分 析 清 楚 ,以 免 下 次 再 碰 到 同 样 的问 题。但是 从 中 学 到 的 知 识 会 让 我 受 益 终 身 。发 现 、提 出、分 析、解 决 问 题 和 实 践 能 力 提 高 都 会 受 益 于 我 在以 后 的 学 习 、 工 作 和 生 活 中 。

七、参考文献

[1]、周润景. 基于Proteus 的电路及单片机设计以仿真[M].北京. 北京航空航天大学出版社,2006.

[2]、谭浩强.C 程序设计[M].北京:清华大学出版社,1991.

[3]、刘守义. 单片机应用技术[M]西安:西安电子科技大学出版社,2002.

[4]孙涵芳2.MCS-51/96系列单片机及应用[M].北京. 北京航空航天大学出版社,1988. [5]51单片机原理与实践(C 语言版)[M].北京. 北京航空航天大学出版社,2011.

附:源程序代码

/*************************************** 课题:电子时钟设计(数码管)

数码管:段码为:P0接段 a-g 位码分别为:P1 蜂鸣器:P1.5

***************************************/ #include #define duanma P0 #define weima P1

sbit smg1=P1^0;/sbit smg2=P1^1; sbit smg3=P1^2; sbit smg4=P1^3; sbit dp=P0^7; sbit BEEP=P1^5; sbit key1=P3^7; sbit key2=P3^6; sbit key3=P3^5; sbit key4=P3^4;

int ArgTimer[6]={0,0,0,0};

int Argtable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // 0~9 int SetTime;

int miao,fen,shi; int Nmiao,Nfen,Nshi; int tt;

int shan,tsshan; int nao; //ling int clockkg; int FZWnao; int xclock; int seeclock; int Dp;

/*********************************************************** 延时

***********************************************************/ void delay(int time) { int x,y;

for(x=time;x>0;x--) for(y=110;y>0;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 = 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++;

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)

{ ArgTimer[0] = shi/10; ArgTimer[1] = shi%10; ArgTimer[2] = fen/10; ArgTimer[3] = fen%10; } if(nao != 0||seeclock != 0) {

ArgTimer[0] = Nshi/10; ArgTimer[1] = Nshi%10;

ArgTimer[2] = Nfen/10; ArgTimer[3] = 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 = Argtable[ArgTimer[0]]; delay(3); duanma=0xff;

// weima = 0x02; //第二位 smg1=1;smg2=0;smg3=1;smg4=1;

if(shan != 0 && (SetTime == 2||SetTime == 4)) duanma = 0xff;//weima = 0;

else

duanma = Argtable[ArgTimer[1]]; 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 = Argtable[ArgTimer[2]]; delay(3); duanma=0xff;

// weima = 0x08; //第四位 smg1=1;smg2=1;smg3=1;smg4=0;

if(shan != 0 && (SetTime == 1||SetTime == 3)) duanma = 0xff;//weima = 0; else

duanma = Argtable[ArgTimer[3]]; 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) showshi(); // if(key2==0) return 2; }

if(key3==0) {

while(key3==0) showshi(); // if(key3==0) return 3; }


相关内容

  • 数字时钟实训报告
  • 课程实训报告 课程名称: 实训题目: 专 业: <数字设备设计与生产实训> 24/12小时制数字时钟 通信技术 班 级: 学 号: 15级 1503534 1503535 刘旭飞 电子信息工程学院 职 称: 讲师 学生姓名: 叶之梦 陈杰 指导教师: 部 门: 起止日期: 2016年 1 ...

  • 13级[数字逻辑]实验指导书
  • <数字逻辑> 实 验 指 导 书 计算机科学系硬件教研室二○一三年九月 实验一 基本逻辑门和逻辑电路 一.实验目的 1.掌握TTL 与非门.或非门和异或门的输入与输出之间的逻辑关系: 2.掌握组合逻辑电路的基本分析方法: 3.熟悉TTL 小规模数字集成电路的外型.引脚和使用方法: 4.初 ...

  • 多功能数字钟实验报告
  • 电子系统设计创新实 验报告 题 目 多功能数字钟的设计 学生姓名 严娅 叶帅 殷玉杰 学生学号 101234153 101234158 101234161 专业名称 电子信息工程 指导教师 肖 永 军 2012年 12 月 18 日 设计要求: 1. 设计一个数字钟,要求准确计时,以数字形式显示时. ...

  • 数字电子钟实验报告
  • <开放创新实践1>报告 题 目 学 年2014-2015 学 期: 1 专 业:电子信息工程 班 级 学 号姓 名 学 号姓 名陈锦锋 指导教师: 王 阳 时 间: 2014年 12 月 21日- 2015年 1 月 4 日 浙江万里学院电子信息学院 一.设计要求和指标 1.用24小时小 ...

  • 数字逻辑电路设计实验指导书
  • 数字逻辑电路设计实验指导书 实验一 半加器和全加器I 实验平台 实验要求 使用TTL 小规模集成电路芯片74LS00搭建半加器电路和全加器电路,电路的输入接实验平台开关,电路输出接实验平台的发光管.希望同学们能够通过实验掌握使用基本门电路设计实现数字电路的方法. 实验原理 在数字电路中,门电路就是用 ...

  • 基带传输系统实验报告
  • 数字基带传输系统 实验名称:数字基带传输系统systemview 仿真 实验条件:systemview 仿真软件破解版, 电脑 实验原则:力求条理清晰, 结构分明, 层次紧致, 尽量将应有的模块打包放入子 系统, 方便以后的模块修改, 每个模块对其余模块全部是透明的, 定义每个模块的需要设置的参数, ...

  • 说明书模板
  • 苏 州 市 职 业 大 学 实习(实训)报告 名称 2013年 1 月 7 日至 2013 年 1 月 11 日共 1 周 院 系 计算机工程系 班 级姓 名 系 主 任 教研室主任 指导教师 目 录 一.课程设计的目的与要求..................................... ...

  • 电子技术课程设计讲义(1)(1)
  • 电子技术课程设计讲义 工电子实验教学中心 电 目 录 第一部分:电子技术课程设计概述 ......................... 1 一.电子技术课程设计的必要性与目的 .......................... 1 二.电子技术课程设计的基本要求 ................ ...

  • AMI码型变换实验报告
  • 实验一 AMI码型变换实验 一.实验目的 1. 了解几种常用的数字基带信号的特征和作用. 2. 掌握AMI码的编译规则. 3. 了解滤波法位同步在的码变换过程中的作用. 二.实验器材 1. 主控&信号源.2号.8号.13号模块各一块 2. 双踪示波器一台 3. 连接线若干 三.实验原理 1. ...