您的当前位置:首页正文

单片机时钟闹钟课程设计(DOC)

2020-04-29 来源:步旅网


单片机课程设计

说明书

单片机时钟设计

学生姓名:刘芳学号: 1105044105

学 院: 计算机与控制工程学院

专 业: 电气工程及其自动化 指导教师: 余红英

2014年 6 月

中北大学

课程设计任务书

13/14 学年第 二 学期

学 院: 专 业: 学 生 姓 名: 课程设计题目: 起 迄 日 期: 课程设计地点: 指 导 教 师: 负责人:

刘芳

计算机与控制工程学院 电气工程及其自动化

学 号: 单片机时钟 6月2日 ~ 6月13日 电气工程系综合实验室

余红英 刘天野

1105044105

下达任务书日期: 2014年 6月2日

课 程 设 计 任 务 书

1.设计目的: 本设计包括确定控制任务、系统总体方案设计、硬件系统设计、软件程序的设计等,以便使学生掌握有关单片机控制的设计思想和设计方法。为学生今后从事单片机控制系统开发工作打下基础。学习proteus仿真软件实现电路的仿真。 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等): 本课程设计的基本要求是使学生全面掌握单片机控制系统设计的基本理论,熟悉掌握单片机的编程方法,用89C52系列单片机及六位数码管显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可以实现时分调整、秒表/时钟功能转换、省电(关闭显示)、定时设定提醒(蜂鸣器)等功能。 3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕: 1.根据题目要求的指标,通过查阅有关资料,确定系统设计方案,并设计其硬件电路图。 2.画出电路原理图,分析主要模块的功能及他们之间的数据传输和控制关系。 3. 用Proteus软件绘制硬件电路图并仿真。 4. 软件设计包括流程图、用汇编语言或C语言对软件进行编译,并能通过调试。

课 程 设 计 任 务 书

4.主要参考文献: 1.孙涵芳.MCS-51/96系列 单片机原理及应用(修订版).北京航空航天大学出版社.1994 2.李朝青.单片机原理及接口技术(第3版).北京航空航天大学出版社.2005 5.设计成果形式及要求: 1. 硬件电路图 2. 软件流程图和程序清单 3. 编写课程设计报告。 6.工作计划及进度: 2014 6月2日~ 6月5日 查找资料,确定方案 6月 6日~ 6月 8 日 设计硬件电路,绘制电路原理图 6月 9 日~ 6月11日 软件设计,并调试通过 6月12日~6月13日 编写课程设计报告,答辩或成绩考核 负责人审查意见: 签字: 年 月 日

单片机课程设计说明书

目 录

1 引言.............................................................. 1

1.1设计目的..................................................... 1 1.2设计内容和要求............................................... 1 2 系统总体方案及硬件设计............................................ 2 2.1总体设计 .................................................... 2

2.2硬件材料..................................................... 2 2.3 系统时钟电路设计 ......................................... 3 2.4系统复位电路的设计 ......................................... 3 2.5 闹钟指示电路设计 ......................................... 4 2.6 电子闹钟的显示电路设计 ................................... 5 2.7按键电路..................................................... 5 3软件设计 .......................................................... 7 3.1 主程序流程图................................................ 7

3.2数码管显示更新流程图......................................... 8 3.3 外部中断1服务函数流程图 .................................... 9 3.4外部中断0服务函数流程图.................................... 10 3.5定时器溢出流程图............................................ 11 4.Proteus软件仿真 ............................................... 12 5设计过程中遇到的问题及解决方法 ................................. 13 6课程设计体会 ..................................................... 14 参考文献........................................................... 15 附1:源程序代码 ................................................... 16 附2:系统原理图 ................................................... 30 附3:PCB图........................................................ 29 附4:实物图 ....................................................... 30

单片机课程设计说明书

1 引言

本设计是定时闹钟的设计,由单片机AT89C52芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子定时闹钟。

设计中采用单片机利用AT89C52,它是低功耗、高性能的CMOS型8位单片机。片内带有8KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, AT89C52单片机结合七段显示器设计的简易定时闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响,进—步可以扩充控制电器的启停。

设计内容包括了秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分的设计。

课设准备中我们根据具体的要求,查找资料,然后按要求根据已学过的时钟程序编写定时闹钟的程序,依据程序利用proteus软件进行了仿真试验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。

设计完成的定时闹钟达到课程设计的要求,在到达定时的时间便立即发出蜂鸣声音,持续一定时间。显示采用的六位数码管电路,显示实际时间和闹钟设置。 1.1设计目的

本设计包括确定控制任务、系统总体方案设计、硬件系统设计、软件程序的设计等,以便使学生掌握有关单片机控制的设计思想和设计方法。为学生今后从事单片机控制系统开发工作打下基础。学习proteus仿真软件实现电路的仿真。 1.2设计内容和要求

本课程设计要求学生掌握单片机控制系统设计的基本理论,掌握单片机的编程方法,用89C52系列单片机及六位数码管显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可以实现时分调整、秒表/时钟功能转换、省电(关闭显示)、定时设定提醒(蜂鸣器)等功能。

第 1 页 共 30 页

单片机课程设计说明书

2 系统总体方案及硬件设计

2.1总体设计

单片机时钟应包括秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。电子时钟的系统框图如2-1所示:

图2-1 电子时钟的系统框图

2.2硬件材料

硬件材料如表2-1所示:

表2-1 硬件材料

第 2 页 共 30 页

单片机课程设计说明书

2.3 系统时钟电路设计

对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于原理图中的C2、C3电容起着系统时钟频率微调和稳定的作用,因此,在本闹钟系统的实际应用中一定要注意正确选择参数(30±10 PF),并保证对称性(尽可能匹配),选用正牌厂家生产的瓷片或云母电容,如果可能的话,温度系数要尽可能低。实验表明,这2个电容元件对闹钟的走时误差有较大关系。

图2-2 系统时钟电路

2.4系统复位电路的设计

智能系统一般应有手动或上电复位电路。复位电路的实现通常有两种方式:1)RC复位电路;2)专用µP监控电路。前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。 本次课程设计采用了上电按钮电平复位电路。

第 3 页 共 30 页

单片机课程设计说明书

图2-3 系统复位电路

2.5 闹钟指示电路设计

闹铃指示可以有声或光两种形式。本系统采用声音指示。关键元件是蜂鸣器。蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状态下即起振发声。市场上的有源蜂鸣器分为3V、5V、6V等系列,以适应不同的应用需要。闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。其电路设计参见系统原理图。

图2-4 闹钟指示电路

第 4 页 共 30 页

单片机课程设计说明书

2.6 电子闹钟的显示电路设计

本次课程设计采用了6位数码管显示电路。在6位LED显示时,为了简化电路,降低成本,采用动态显示的方式, 6个LED显示器共用一个8位的I/O, 6位LED数码管的位选线分别由相应的P2. 0~P2. 5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过6位LED七段显示器显示出来。到达定时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现闹铃。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。

图2-5 数码管显示电路

2.7按键电路

图2-6 按键电路

第 5 页 共 30 页

单片机课程设计说明书 表2-2 按键功能表

S2 S3 S4 S6 S7 S8 S9 S10

打开/关闭闹钟 闹钟时间/实时切换 秒表/实时切换 打开/关闭节能 时加1/秒表开始暂停 时减1/秒表复位 分加1 分减1

第 6 页 共 30 页

单片机课程设计说明书

3软件设计

3.1 主程序流程图

程序通过入口使系统初始化,再由数码管显示更新,形成时钟显示。如图3-1所示。

图3-1 主程序流程图

7 页 共 30 页

单片机课程设计说明书

3.2数码管显示更新流程图

在实时模式下,数码管显示实时;在秒表模式下,数码管显示秒表时间;在闹钟设定模式下,数码管显示闹钟设定。模式可由按键选择。如图3-2所示。

图3-2 数码管显示更新流程图

8 页 共 30 页

单片机课程设计说明书

3.3 外部中断1服务函数流程图

CPU响应外部中断1后,启动现场保护。通过按键选择不同模式。按键5可使节能模式打开、关闭;按键6可进行秒表、实时切换;按键7可进行闹钟、实时切换;按键8可使闹钟模式打开、关闭。如图3-3所示。

图3-3 外部中断1服务函数流程图

第 9 页 共 30 页

单片机课程设计说明书

3.4外部中断0服务函数流程图

CPU响应外部中断0,现场保护启动。在定时模式下,按键1用于时加1,按键2用于时减1,按键3用于分加1,按键4用于分减1;在秒表模式下,按键1用于秒表开始、暂停功能的实现,按键2用于秒表复位;在闹钟设定模式下,按键1用于时加1,按键2用于时减1,按键3用于分加1,按键4用于分减1。如图3-4所示。

图3-4 外部中断0服务函数流程图

第 10 页 共 30 页

单片机课程设计说明书

3.5定时器溢出流程图

秒每次自加1,到60分加1;分到60,时加1;时到24,清零重新开始。如图3-5所示。

图3-5 定时器溢出流程图

11 页 共 30 页

单片机课程设计说明书

4 Proteus软件仿真

本次课程设计所采用的程序调试软件为keil uvision4集成调试软件,所采用的仿真软件为proteus pro 7.8 SP2软件。

本次试验的效果图如下所示:

图4-1 实验效果图

第 12 页 共 30 页

单片机课程设计说明书

5设计过程中遇到的问题及解决方法

在设计的过程中遇到问题是不可避免的,我遇到了很多问题,如下所示; 1.做实物时无法驱动数码管显示,后来了解到可以加锁存器,如74LS253,74LS573等等,还可以加三极管用来加大电流。当然如果换成液晶显示屏的话就不需要考虑驱动不了的问题了。

2.烧程序时没发烧进去,需要改变最高和最低波特率,才能按照步骤把程序烧进去。

3.仿真时没问题的电路,在做好实物时发现无法运行。原因可能是程序出现问题,或者在连实物时线路连接错误等等都有可能。这是很难的一部分,需要查找出原因。在做实物的过程中我进行的很多检查,有很多连接错误,最终又重新焊接的。

第 13 页 共 30 页

单片机课程设计说明书

6 课程设计体会

本次课程设计我们做了单片机时钟,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可以实现时分调整、秒表/时钟功能转换、省电(关闭显示)、定时设定提醒(蜂鸣器)等功能。

这次课程设计让我受益匪浅,无论从知识上还是其他的各个方面。上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。在这次课程设计中又让我体会到了合作与团结的力量。团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。

此外,使我对这们功课有了更深刻的认识和了解。首先对于硬件电路的工作原理有了进一步系统的学习,同样就有了进一步的认识,使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。

课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。

第 14 页 共 30 页

单片机课程设计说明书

参考文献

[1] 孙涵芳.MCS-51/96系列 单片机原理及应用(修订版).北京航空航天大学出版社.1994

[2] 李朝青.单片机原理及接口技术(第3版).北京航空航天大学出版社.2005

第 15 页 共 30 页

单片机课程设计说明书

附1:源程序代码

MAIN

/******************************************

Description :数字钟主程序,首先初始化变量、I/O口、外设,

然后单片机进入无条件循环,若中断触发,则进行实时处理。 ******************************************/ // Start

/*包含头文件*/ #include #include

#include #include #include

/************************ 主程序

入口参数:无;返回值:无 ************************/ void main(void) { Timer_Init( ); //定时器初始化 Keyboard_Init( ); //按键初始化 Display_Init( ); //数码管显示初始化 EN_Bell = 1; //关闭蜂鸣器 while(1)

//无条件循环 { Display_Updata( );

//数码管显示更新

}

}

DELAY

/****************************************** Description :数字钟简单延时函数

******************************************/ // Start

/*包含头文件*/ #include #include #include

16 页 共 30 页

单片机课程设计说明书

#include #include

/*大致延时2uS*/

void DelayUs(unsigned char t) { while(--t);

}

/*大致延时1mS*/

void DelayMs(unsigned char t) {

while(t--) {

DelayUs(245); DelayUs(245); }

}

KEYBOARD

/****************************************** Description :数字钟按键处理函数 ******************************************/ // Start

/*包含头文件*/ #include #include #include #include #include

/************************ 按键初始化程序

入口参数:无;返回值:无 ************************/ void Keyboard_Init(void) {

EA = 1; IE0 = 0; //外部中断0清零 IT0 = 1; //下降沿触发

EX0 = 1;

//外部中断0允许

17 页 共 30 页

单片机课程设计说明书

IE1 = 0; //外部中断1清零 IT1 = 1;

//下降沿触发 EX1 = 1;

//外部中断1允许

}

void Open_Stopwatch(void)

//秒表开始或暂停工作 {

ET1 = ~ET1; //开定时器1中断 TR1 = ~TR1; //允许定时器1工作

TF1 = 0;

//定时器1溢出标志清零 }

void Res_Stopwatch(void)

//秒表复位

{ ET1 = 0; //关定时器1中断 TR1 = 0; //禁止定时器1工作 TF1 = 0;

//定时器1溢出标志清零

s_1 = 0; m_1 = 0; h_1 = 0;

}

/*外部中断0中断服务程序*/ void Int_0(void) interrupt 0 { DelayMs(15);

//延时去抖

if(EN_Play == 0x00) { //实时 switch(P1&0xf0) { case 0xe0:{if(h < 23) h++;} break; //时加1 case 0xd0:{if(h > 0) h--;} break; //时减1 case 0xb0:{if(m < 60) m++;} break; //分加1 case 0x70:{if(m > 0) m--;} break;

//分减1

default: ; break;

}

}

if(EN_Play == 0x01) {

//秒表

switch(P1&0xf0)

18 页 共 30 页

单片机课程设计说明书

{ case 0xe0:{Open_Stopwatch( );} break; //秒表开始或暂停工case 0xd0:{Res_Stopwatch( );} break;

//秒表复位

作 default: ; break;

}

}

if(EN_Play == 0x02)

//闹钟设定

{ switch(P1&0xf0) { case 0xe0:{if(h_2 < 23) h_2++;} break; //时加1 case 0xd0:{if(h_2 > 0) h_2--;} break; //时减1 case 0xb0:{if(m_2 < 60) m_2++;} break; //分加1 case 0x70:{if(m_2 > 0) m_2--;} break; //分减1 default: ; break;

}

}

IE0 = 0; //中断清零

}

void EN_Stopwatch(void)

//秒表/实时切换

{

if(EN_Play == 0x01) EN_Play = 0x00; else EN_Play = 0x01; }

void EN_Alarm(void) //闹钟/实时切换

{

if(EN_Play == 0x02) EN_Play = 0x00; else EN_Play = 0x02;

}

void Sel_Alarm(void) //闹钟/实时切换

{

Open_Alarm = ~Open_Alarm; if(Open_Alarm)

19 页 共 30 页

单片机课程设计说明书

s_2 = 0x01;

else { s_2 = 0x00;

//关闭蜂鸣器

EN_Bell = 1;

} }

void Int_1(void) interrupt 2 { }

DelayMs(15); switch(P1&0x0f) { }

//延时去抖

case 0x0e:{EN_Dis = ~EN_Dis;} break; //打开或关闭节能模式 case 0x0d:{EN_Stopwatch( );} break; //秒表/实时切换 case 0x0b:{EN_Alarm( );} case 0x07:{Sel_Alarm( );} default: ; break;

break; //闹钟/实时切换 break; //打开或关闭闹钟

IE1 = 0; //中断清零

KEYBOARD..H

/******************************************

Description :数字钟头文件,申明keyboard.c中的全局函数、全局变量 ******************************************/ // Start

#ifndef __KEYBOARD_H__ #define __KEYBOARD_H__

//作用:防止keyboard.h被重复引用

/*按键初始化程序*/

extern void Keyboard_Init(void); //全局函数申明 #endif // No more Display.c

/******************************************

Description :数字钟数码管显示程序,通过两个74HC573和两个片选信号, 分时输出段码和位码。

******************************************/ // Start

第 20 页 共 30 页

单片机课程设计说明书

/*包含头文件*/ #include #include #include #include #include

/*定义常量*/ unsigned char code

={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

Table_Duan[10]

//显示段码值0~9

unsigned char code Table_Wei[6] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //分别对应相应的数码管点亮,即位码 /*定义变量*/

unsigned char Table_Dis[6] = {0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char j,EN_Play; //数码管位计数、显示模式标志 bit EN_Dis; //节能模式标志 bit Open_Alarm; //闹钟打开标志 /************************ 数码管显示初始化程序 入口参数:无;返回值:无 ************************/ void Display_Init(void) {

j = 0; s = 0; m = 0; h = 0;

s_1 = 0; m_1 = 0;

h_1 = 0; s_2 = 0; m_2 = 0; h_2 = 0; Open_Alarm = 0; EN_Dis = 1;

第 21 页 共 30 页

单片机课程设计说明书

EN_Play = 0x00;

Count_Bell = 0; }

/************************ 数码管段码计算程序 入口参数:无;返回值:无 ************************/ void Display_Actual(void) //实时 {

Table_Dis[5] = s%10; Table_Dis[4] = s/10; Table_Dis[3] = m%10; Table_Dis[2] = m/10; Table_Dis[1] = h%10; Table_Dis[0] = h/10;

}

void Display_Stopwatch(void) //秒表 {

Table_Dis[5] = s_1%10; Table_Dis[4] = s_1/10; Table_Dis[3] = m_1%10; Table_Dis[2] = m_1/10; Table_Dis[1] = h_1%10; Table_Dis[0] = h_1/10;

}

void Display_Alarm(void) //闹钟 {

Table_Dis[5] = s_2%10; Table_Dis[4] = s_2/10; Table_Dis[3] = m_2%10; Table_Dis[2] = m_2/10; Table_Dis[1] = h_2%10; Table_Dis[0] = h_2/10; }

/************************ 数码管显示更新程序

入口参数:无;返回值:无 ************************/

22 页 共 30 页

单片机课程设计说明书

void Display_Updata(void) { if(EN_Dis) { switch(EN_Play)

//显示模式选择

{ case 0x00:Display_Actual( ); break; //实时 case 0x01:Display_Stopwatch( ); break; //秒表 case 0x02:Display_Alarm( ); break; //闹钟

default: ; break;

}

for(j = 0;j < 6;j++) { P2 = Table_Wei[j]; LATCH2=1;

LATCH2=0; if((j == 1)||(j == 3)) P2 = Table_Duan[Table_Dis[j]]|0x80; //取段码

else

P2 = Table_Duan[Table_Dis[j]]; //取段码 LATCH1=1; //段锁存 LATCH1=0; DelayMs(2); } } else { P2 = 0xff; LATCH1 = 1;

LATCH2 = 1; }

}

//取位码 //位锁存

23 页 共 30 页

单片机课程设计说明书

Keyboard.h

/******************************************

Description :数字钟头文件,申明display.c中的全局函数、全局变量 ******************************************/ // Start

#ifndef __DISPLAY_H__ #define __DISPLAY_H__

sbit LATCH1 = P0^7;

//作用:防止display.h被重复引用

//数码管段锁存

sbit LATCH2 = P0^6; //数码管位锁存 extern bit EN_Dis,Open_Alarm; //全局变量申明 extern unsigned char EN_Play;

/*数码管显示初始化程序*/

extern void Display_Init(void); //全局函数申明 /*数码管显示更新程序*/

extern void Display_Updata(void);//全局函数申明 #endif // No more

Timer.c

/****************************************** Description :数字钟定时器程序,

******************************************/ // Start

/*包含头文件*/ #include #include #include #include #include

/*定义变量*/

unsigned char s,m,h,Count_Bell,i,k; //秒、分、时、蜂鸣次数、定时器溢出次数 unsigned char s_1,m_1,h_1; //秒表秒、分、时 unsigned char s_2,m_2,h_2; //闹钟秒、分、时 /************************ 定时器初始化程序

入口参数:无;返回值:无

第 24 页 共 30 页

单片机课程设计说明书

************************/ void Timer_Init(void) {

i = 0; TMOD = 0x11;

//定时器0、1工作于16位定时器模式

TH0 = 0x3c; //初值高八位 TL0 = 0xb0; //初值低八位 EA = 1; //开总中断 ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0工作

TF0 = 0;

//定时器0溢出标志清零 ET1 = 0; //关定时器1中断 TR1 = 0; //禁止定时器1工作 TF1 = 0;

//定时器1溢出标志清零 TH1 = 0x3c; //初值高八位 TL1 = 0xb0;

//初值低八位

}

/*定时器0中断服务程序*/ void Timer_0(void) interrupt 1 {

TF0 = 0; //定时器0溢出标志清零 TH0 = 0x3c; //初值高八位 TL0 = 0xb0;

//初值低八位

i++;

if(i == 20) { s++; i = 0; if(s == 60) //秒溢出

{ s = 0; m++;

if(m == 60) //分溢出 { m = 0; h++; Count_Bell = h<<1; //整点报时次数赋值

if(Count_Bell > 24)

25 页 共 30 页

单片机课程设计说明书

Count_Bell = Count_Bell - 24;

if(h == 24) //时溢出 { h = 0;

}

}

}

if(Count_Bell) //整点报时 { EN_Bell = ~EN_Bell; Count_Bell--;

}

if(Open_Alarm) //打开闹钟 { if((h == h_2)&&(m == m_2)) EN_Bell = 0; } } }

/*定时器0中断服务程序*/ void Timer_1(void) interrupt 3 {

TF1 = 0; //定时器1溢出标志清零 TH1 = 0x3c; //初值高八位 TL1 = 0xb0;

//初值低八位

k++;

if(k == 20) { s_1++; k = 0; if(s_1 == 60)

//秒溢出

{ s_1 = 0; m_1++; if(m_1 == 60) //分溢出

{

26 页 共 30 页

单片机课程设计说明书

}

}

}

}

m_1 = 0; h_1++; if(h_1 == 24) { h_1 = 0; }

//时溢出

timer.h

/******************************************

Description :数字钟头文件,申明timer.c中的全局函数、全局变量 ******************************************/ // Start

#ifndef __TIMER_H__ //作用:防止timer.h被重复引用 #define __TIMER_H__

sbit EN_Bell = P3^5; //蜂鸣器控制端口 /*定时器初始化程序*/

extern void Timer_Init(void); extern unsigned char s,m,h,Count_Bell; extern unsigned char s_1,m_1,h_1; extern unsigned char s_2,m_2,h_2; #endif // No more

//全局函数申明

//全局变量申明

第 27 页 共 30 页

单片机课程设计说明书

附2:系统原理图

第 28 页 共 30 页

单片机课程设计说明书

附3:PCB图

第 29 页 共 30 页

单片机课程设计说明书

附4:实物图

第 30 页 共 30 页

因篇幅问题不能全部显示,请点此查看更多更全内容