关键词不能为空

当前您在: 大学查询网 > 大学 >

从职高考大学课程设计定时打铃器

作者:高考题库网
来源:https://bjmy2z.cn/daxue
2020-12-12 21:54
tags:

-

2020年12月12日发(作者:阳友鹤)







课程设计—定时打铃器的设计













课程名称:

专业课程设计


学院名称:

南昌航空大学科技学院


专业

:

电子信息工程


班级:

1482052


学号:

148205216


姓名:

彭少锟


同组人:

刘晶晶



指导教师:



评分:










20

17

6

19









现代社会定时 打铃器已广泛用于各种私人和公众场合

,

成为我们生活、工作和学习中不可


缺少的好帮手,因此研究实用性更强的电子闹钟具有十分重要的意义。本设计是基于单片机


的电子钟设计,不仅具有时分秒的显示功能,还具有定时打铃和倒计时的功能,实用性非常< /p>


强。电子钟的计时部分采用

AT89S52

单片机内部定时 器实现,而显示功能是采用液晶模块


LCD1602

来实现,该定时打铃 器可以让使用者通过按键来轻松选择的功能菜单和调节时间,


具有非常良好地人机界面。



关键词:

定时打铃器;倒计 时;

AT89S52

;液晶

LCD1602

;按键






















1

设计要求

.

.. .................................................. ...

1



2

方案论证

.

................ .......................................

1


2.1

计时方案的选择

.

............. ...........................................

1


2.2

显示方案的选择

.

....................................... .................

1


2.3

按键功能方案设计

.

............ ..........................................

1


2.4

指示灯和响铃方案设计

< /p>

.

.................................... ..............

2



3

系统组成

.

................ .......................................

2


4

硬件设计

< /p>

.

.................................... ...................

2


4.1

单片机最小系统设计

.

........... .........................................

2


4.2

显示电路设计

.

................................................. .........

4


4.3

蜂鸣器电路设计

.

............. ...........................................

4


4.4

按键电路设计

< p>.

........................................ ..................

5



5

软件设计

.

.. .................................................. ...

5


5.1

走时部分

.

................ ..............................................

5


5.2

定时打铃检测部分

.

...................................... ................

6


5.3

键盘扫描部分

.

.............. ............................................

6


5.4

液晶部分

.

.......................................... ....................

7


5.5

流程图

.

................. ...............................................

7



6

仿真设计

.

................ ......................................

1

1


7

系统调试及结果

.

............. ...................................

1

1


7.1

软件调试

.

................................... ..........................

11


7.2

硬件调试

.

. .................................................. ..........

13


7.3

调试结果

.

................ .............................................

13



8

总结

.

.................. ........................................

1

3


参考文献

.

............................................. ............

1

4


.

................... ........................................

1

5







1

设计要求


1.

显示时钟格式:

**

* *

**

秒。




2.

可任意设定时间达到定时控制,定时点至少有两个

3.

可对设定的时间进行存取,实现掉


电保护功能。



3.

定时时间到,打铃一分钟,自动关闭打铃继续计时。



2

方案论证


2.1

计时方案的选择


1

、采用专门的时钟芯 片,例如美国

DALLAS

公司推出的

DS1302

实时时钟芯片,它的


工作电压为

2.5V-5.5V

, 采用三线接口与

CPU

进行同步通信,并可采用突发式一次传送多个


字节的时钟信号或

RAM

数据,优点是高性能、低功耗,可以对年、月 、日、周日、时、分、


秒进行计时,具有闰年补偿功能,但

DS1302

存在时钟精度不高,易受环境影响,出现时钟


混乱等缺点,并且会增加电 路硬件复杂性。


2

、采用

AT89S5 2

单片机内部定时器,

51

系列单片机内部有两个

16

位定时器

/

计数器,


简称定时器

0

和定时器

1

,简称

T0

T1

,设置

T0

工作在模式

0

状态下,每隔

50ms

中断一


下,中断< /p>

20

次正好是

1

秒。用此方法的优点是可节少硬件设 计,计时精度高,缺点是软件编


程略显复杂。


总结:综合两种方案的优缺点,以及此次课设的要求,选择第二种方案是用单片机内部


定 时器。因为使用该方案不但可以节省硬件成本,还可以更锻炼自己使用单片机内部定时器


C

语言编程的能力。


2.2

显示方案的选择


1

、使用

LED

数码管,由多个发光二极管封装在一起组成“

8

”字型的 器件,引线已在内


部连接完成,只需引出它们的各个笔划,公共电极。它能够在低电压、 小电流的条件下驱动


发光,发光响应时间极短,单色性好,亮度高,但是数码管显示内容 单一,引脚与单片机

I/0


连接复杂。


2

、使用液晶

LCD1602

,液晶显示的原理是利用液 晶的物理特性,通过电压对其显示区


域进行控制,

有电就有显示,

LCD1602

是字符型液晶显示模块,

它是一种专门用于显示字母、< /p>


数字、符号等点阵式

LCD

,并且显示质量高,功耗小。缺 点是较数码管成本高。


总结:数码管显示内容单一,液晶则比较丰富, 并且数码管消耗电力会比液晶更高,若


选择数码管硬件布线会较复杂,影响美观性,而选 择液晶也不会超过经费支持。综合两种方


案的优缺点,选择方案二液晶显示。

< p>


2.3

按键功能方案设计

根据题目设计要求,

定义

6

12*12mm

的按键来选择系统功能菜单和调节时间,

分别为


K1

K2

K3

K4< /p>

K5

K6




各个按键的具体功能如表

2.1


K1


K2


K3


选择调节时间菜单键及时增加键


选择调节闹铃

1

菜单键及分增加键


选择调节闹铃

2

菜单键及秒增加键



K4


K5


K6


选择倒计时菜单键


关闭闹铃响声键


确认键


2.1

按键功能表



2.4

指示灯和响铃方案设计


1

、指示灯:综 合设计要求和自我考虑,需要的指示灯个数为

4

个,分别为电源指示,程


序运行指示和两个闹铃指示。为了加以区分可使用不同颜色的

LED


2

、响铃选择:采用经济适用的蜂鸣器,它是一种 一体化结构的电子讯响器,采用直流电


压供电,广泛应用于计算机、报警器、电子玩具、 定时器等电子产品中作发声器件,而且驱


动电路简单,由单片机一个

I/ O

口外接一个三极管即可。


3

系统组成


经过以上的计时方案选择和显示方案选择,确 定本设计的电子闹钟的计时方案为单片机


内部定时,显示方案为液晶

LC D1602

。闹铃的响铃来源选择经济适用的蜂鸣器,并用按键来


选择功 能菜单和调节时间,用

4

个不同颜色的发光二极管作为两个闹铃指示灯,程序运行 指


示灯和电源指示灯。


因此系统组成框图如图

3.1












LCD1602






AT89S52

最小系统






键盘


3.1

系统框图


4

硬件设计


4.1

单片机最小系统设计


单片机最小系统的设计关键的就是时钟电路和复位电路的设计。


1

、时钟电路




在这里使用单片机内部振 荡电路,

管脚

XTAL1

XTAL2

< p>用来外接石英晶体和微调电容,


如图

4.1

所示。晶 体可在

1.2

12MHz

之间选择,电容可在< /p>

6

30pF

之间选择。



4.1

时钟电路



2

、复位电路


当振荡电路工作 ,并且在

RST

引脚加上一个至少保持两个机器周期的高电平时,就能完


成一次复位。这里我使用按钮复位方式,如图

4.2

,利用

RC

微分电路产生正脉冲来达到复位


目的,该正脉冲的持续时间 大于两个机器周期。


4.2

复位电路





4.2

显示电路设计


此设计的显示电路采用的是液晶模块

LCD1602

其为

5V

电压驱动,

只有并


行接口。其与单片机连接的硬件电路如图

4.3< /p>

,其中的

D0-D7

分别连接到单片机


的< /p>

P0.0-P0.7,VSS

接地,

VDD

+5V

电源,

VEE

10K

< p>电位器接地,用于调节


背光,

RS

端为向液晶控制器 写数据

/

写命令选择端,接单片机

P2.1

口,< /p>

RW

为读


/

写选择端,因为我们不从液晶读 取任何数据,故接地,

E

端为使能信号,接单


片机

P2.2

口。


4.3

液晶连接电路



4.3

蜂鸣器电路设计


电路设计如图

4.4< /p>

单片机的

P2.0

脚通过限流电阻

R

与三极管基极相接,


电极接蜂鸣器。当

P2.0

引脚电平为

0

是,三极管导通,蜂鸣器工作,引脚电平


1

时,

三极管截止,

蜂 鸣器不工作。

因为单片机口输出低电平时的驱动能力比


高电平强的多,故 三极管采用基极低电平导通

PNP

型的三极管。





4.4

蜂鸣器驱动电路



4.4

按键电路设计


此次按键电路设计可直接将按键一端接到 单片机的

I/O

口,

另一端直接接地。


通 过单片机检测低电平判断按键按下,

K1-K6

分别接至单片机的

P3.0-P3.5

。按


键电路如图

4.5



4.5

按键电路



5

软件设计


软件设计主要包含显示走时、闹铃检测和键盘扫描三部分。


5.1

走时部分


走时部分主 要有

3

个变量

hour

min< /p>

sec

deda

做为时钟的时、 分、秒和


定时标志位,通过单片机内部定时器定时

50ms

,定时标志位

deda

1

,此过程

< p>
在中断服务程序中完成,当加满

20

次时,

deda

清零并且时钟的秒

sec

1

,从


而到达计时目的。


代码如下:


void T0_srv(void) interrupt 1


{


TH0=0x3C;


TL0=0x0B0;


deda++;


}


void conv()


{




if(deda>=20){sec++;deda=0;}


if(sec==60){min++;sec=0;ok=1;}


if(min==60){hour++;min=0;}


if(hour==24){hour=0;}


}


5.2

定时打铃检测部分


定 时打铃检测部分主要的变量有

6

个,

hh1

mm1

flag1

做为定时

1

的时、


分和开关标志位,

hh2

mm2

flag2

做为定时

2

的时、分和开关标志位,当


hh1=hour,mm1=min

并且开关 标志

flag1=1

时,定时

1

便可以执行响铃程 序,当


hh2=hour,mm2=min

并且开关标志

flag2=1

时,定时

2

便可以执行响铃程序,在


这个子程序中为了不影响正常走时时间,故加上走时函数

time( )

。代码如下:


void alm_check1()


{


wh ile((alm_flag1==1)&&(hour==hh1)&&(min==mm1)&&(ok== 1))


{


time();





}



5.3

键盘扫描部分


键盘扫面部分是该软件设计中较复杂的部 分,

用单片机

I/O

口检测低电平来


判断 是否有键按下,

根据按下的键值来执行相应的子程序。

在此部分增加一个标


志变量

ok

做为子程序执行完毕的标志变量,

在 子程序执行过程中当

K6

键按下,


ok =1

,返回主程序。


while(1)


{


time();


alm_check1();


alm_check2();


if(k1==0)


set_time();



alm_led1=0;


beep=~beep;delay(40);


if(k5==0) {alm_led1=1;beep=1;ok=0;}


}






if(k2==0)


if(k3==0)


if(k4==0)


set_atime1();


set_atime2();


set_countdown();


}


5.4

液晶部分


液晶

LCD1602

做为本设计的显示元件,其初始化程 序如下:


void TS1602_INIT(void)


{







}


5.5

流程图


1

< p>、主程序流程图,如图

5.1



RS=0;


write_com(0x38);

//

设置

16*2

显示,

5*7

点阵,

8

位数据接口


write_com(0x0c);

//

设置开显示,不显示光标


write_com(0x06);

//

写一个字符后地址指针自动加

1


write_com(0x01);

//

清屏


开始


初始化


显示时间


闹铃检测


键盘扫描



5.1

主程序流程图



2

、中断服务流程图:

如图

5.2




开始

重装定时器初值


Deda

1


中断返回



5.2

中断服务流程图


2

、时间流程图,如图

5.3


开始


N


deda>=20?


Y


deda=0 ,

sec

1


sec> =60?


Y


N


Sec=0,

< p>分钟

min

1


min>=60?< /p>


Y


N


min=0,

小时< /p>

hour

1


返回主程序

< br>


5.3

时间流程图



3

、闹铃检测流程图,如图

5 .4




开始


闹铃

1

时 间到?


N


Y


闹铃

2

时间到?


N


Y


Y

< p>
闹铃


N


1

分钟到或

K5

摁下


返回主程序



5.4

闹铃检测流程图



4

、键盘扫描流程图,如图

5 .5




开始


Y


Y

< p>
hh2

1

K1

是否按下?


K1

是否按下?

设置走时时间


N


Y


mm2

1

K2

是否按下?


K1

是否按下?


Y


Hour

1


N


K2

是否按下?


N


Y


N


K3

是否按下?


Y


mi n

1


Flag2=1


N


K3

是否按下?


N


Y


Y


sec

1


N


K4

是否按下?


Flag2=0


N


K6

是否按下?


Y

< br>N


Y


N


K6

是否 按下?


确定

ok


确认

ok


返回主程序


Y


返回主程序

K2

是否按下?

设置闹铃

2


N


C_hour

1


Y

< br>Y


K1

是否按下?


K1

是 否按下?

hh1

1


Y

< br>N


C_min

1


设置闹 铃

2

K3

是否按下?


N

< br>Y


K2

是否按下?

mm1

1


Y


K2

是否按下?

< br>N


设置倒计时


N


Y


K3

是否按下?


Flag1=1

Flag=1


N


C_sec

1


Y


K3

是否按下?


N


Y


K4

是否按下?


Flag1=0

Flag=0


N


Y


N


K6

是否按下?

确认

ok


N


N


K6


K2

是否按 下?


Y


确定

ok


显示倒 计时


返回主程序


N


K5

是否按下?


Y


K4

是否按下?

< br>Y


返回主程序


N


返回主程序



5.5

键盘扫面流程图





6

仿真设计


仿真设计是设计一个系统十分重要的环节,< /p>

在实际电路做好之前系统软件调


试最好选择。此次仿真设计采用的是英国< /p>

Labcenter

electronics

公司出版的

EDA


工具软件

Protues

,在

PROTUES

绘制好原理图后,调入已编译好的目标代码文


件:

*.HEX

,可以在

PROTUES

的原理图中看到模 拟的实物运行状态和过程。


仿真电路图如下,图

6.1



6.1

仿真电路图



7

系统调试及结果


7.1

软件调试


此时设计的软件调试部分主要在仿真软件

Protues

中完成。


首先根据硬件设计 在

Protues

中完成原理图的设计,确定使用单片机的哪些

< br>I/O

口,然根据软件设计中的流程图编写单片机

C

语言程 序。结合题目要求模块


化地编写程序,首先编写走时程序,然后编写闹铃

1

、闹铃

2

、的程序,最后完


成倒计时设 计,

在分模块化编写过程中,

不断地根据仿真现象调试程序来修复软


件编写错误。


例如调试液晶的显示问题,写指令

< p>write_com(0x80)

将数据指针定位到第一





write_com(0x80+0x40)

< p>
再者,

在显示倒计时时出现走时时间不准确的问题,

故在倒计时变量 处理的


程序中要加上正计时走时时间变量处理,

C_sec

C_min

C_hour

是倒计时时间


变量,

sec

min

hour

是走时时间变量。程序如下:


void C_conv( )


{


if(deda>=20){C_sec--;sec++;deda=0;}


if(C_sec<0){C_sec=59; C_min--;}


if(sec==60){min++;sec=0;}


if(C_min<0){C_hour--;C_min=59;}


if(min==60){hour++;min=0;}


if(hour==24){hour=0;}


if(C_hour<0)


{


C_sec=0;C_min=0;C_hour=0;


for(i=0;i<10;i++)







{


routine_led=~routine_led;


beep=~beep;


delay(80);


}ok=1;


}


最后在显示时间问题上 ,

要将数字显示到液晶上,

采取的方法是将数字转化


为< /p>

< p>液

,< /p>

uchar

code


lcd_code[ ]=


void display_num(unsigned char num)


{







}


uchar ge,shi;


ge=num%10;


shi=num/10;


write_date(lcd_code[shi]);


write_date(lcd_code[ge]);




7.2

硬件调试


此次的硬件设计较为简单,

主 要的调试部分在于液晶对比度的调试,

期间遇


到的问题是液晶的对比度调 节引脚所接的

10k

电位器封装不正确,导致

VCC


GND

短路,还好及时发现问题,没有损坏器件。


7.3

调试结果


经过近两周的软件调试和硬件调试,对比设计要求,完成情况如下:

< /p>


1

、电路板大小

7cm*12cm


2

、电路接通电源后,蜂鸣器连续发出

2

次响声,同时工作指示灯闪动,液


晶第一行显示“

Time: 00:00:00

,代表时间,第二行显示“

00:00 F 00:00 F

,代


表两个闹铃,初始为关。


3

、可通过按键设定走时时间、两个闹铃响的时间和倒计时时间。

< p>


4

、可显示两个闹钟的时、分,并用

2

< p>个

LED

灯分别指示闹钟

1

、闹钟

< p>2


时间。



8

总结


1

、通过本次课程设计,实现了基于单片机的电子时钟设计,在这过程中,


我学到了很多,加深了对单片内部模块的理解,进一步学习了

C

语言的编写规


则。在设计的前期,我认真地复习了

51

单片机的相关资料, 掌握了单片机外部


电路的合理设计以及各个引脚的功能。

系统的进行电子 时钟的需求分析,

合理的


设计出了电路原理框图,

根据原 理框图设计出电路原理图,

然后设计软件流程图,


根据流程图对单片机使 用

C

语言编程。在此过程中,我学到了很多在书本上学


不 到的东西,尤其是在处理故障和解决问题方面的考虑,受益颇多。


2

、本次设计的题目为基于单片机的电子时钟设计,通过两周努力,可以顺


利实现的功能有:

在液晶上显示走时时间;

两个闹铃时间和是否开启以及倒计时< /p>


时间;并且能通过按键实现设置时间的暂停、启动、调节等控制。


3

、在完成设计后,发现有还可以改进的地方,例如增加一个省电模式,即


在不需要看时间的时候,将液晶显示关闭,这是设计前考虑不周的地方。

< /p>


最后,我深刻感受到要做好一个课程设计,就必须做到:在设计程序之前,


对所需资料的综合整理,有效的挑选资料;要明确目标,整理思路;合理设计出


系统所必须的流程图,

做好充分的心里准备。

这次设计是对我所学单片机一书的< /p>


综合考验,使我能查漏补缺,复习课本知识,加深理解记忆,所以每一步我都用

< p>
心去做。



-


-


-


-


-


-


-


-



本文更新与2020-12-12 21:54,由作者提供,不代表本网站立场,转载请注明出处:https://bjmy2z.cn/daxue/33723.html

课程设计定时打铃器的相关文章