单片机原理及其应用课程设计

课 题: 基于AT89C51单片机的LED数字倒计时器设计

专 业: 电工程及其自动化

班 级: 2013 级 4班

学 号:

姓 名:

设计日期: 2015年6月6日——2015年6月19日

成 绩:

AT89C51单片机LED数字倒计时器设计报告

一、设计目的作用

1、掌握51单片机最小系统的设计;

2、掌握按键电路设计、LED数码管的使用;

3、掌握C51的编程方式。

4、培养我们的团结合作能力。

5、锻炼我们的动手实践能力。

二、设计要求

基于AT89C51单片机的LED数字倒计时器主要具有如下功能,具体要求如下:

(1)LED数码管显示倒计时时间。

(2)倒计时过程中能设置多个闹钟,当倒计时值倒计到设定值时会发出2s的报警声音。(K1设置小时,K2设置分钟,K3设置秒钟,K4完成退出)

(3)通过按键可以对倒计时设定处置。倒计时初值范围在24:00:00~00:00:60之间,用户可根据需要对其进行设置,设置成功后复位初始值为成功设定值。

三、设计的具体实现

1、设计原理

(1)LED数字倒计时器主要由AT89C51单片机、晶振电路、复位电路、按键电路、数码管电路、蜂鸣电路组成(如图1.1)。

数码管电路

晶振电路

AT89C51

复位电路

蜂鸣电路

按键电路

图1.1 LED数字倒计时器系统设计框图

(2)手绘草图

2、系统设计

(1)晶振电路的分析

a.晶振电路原理:

晶振是通过电激励来产生固定频率的机械振动,而振动又会产生电流反馈给电路,电路接到反馈 后进行信号放大,再次用放大的电信号来激励晶振机械振动,晶振再将振动产生的电流反馈给电路,如此这般。当电路中的激励电信号和晶振的标称频率相同时,电 路就能输出信号强大,频率稳定的正弦波。整形电路再将正弦波变成方波送到数字电路中供其使用。

b.晶振电路的特点:

晶振是石英振荡器的简称,英文名为Crystal,晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。它是时钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。由于制造工艺不断提高,现在晶振的频率偏差、温度稳定性、老化率、密封性等重要技术指标都很好,已不容易出现故障,但在选用时仍可留意一下晶振的质量。

图1.2晶振电路原理图

(2)复位电路的分析

a.复位电路原理

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。RC复位电路可以实现上述基本功能,但解决不了电源毛刺和电源缓慢下降(电池电压不足)等问题,而且调整 RC 常数改变延时会令驱动能力变差。左边的电路为高电平复位有效,右边为低电平有效, 复位按键为手动复位开关,电容可避免高频谐波对电路的干扰。

b.复位电路的作用:

复位电路是为确保微机系统中电路稳定可靠工作必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。

图1.3 复位电路原理图

(3)按键电路的分析

a.按键电路的原理:

按键B1/B2/B3/B4断开时,P1.0/P1.1/P1.2/P1.3输入为高电平;按键

B1/B2/B3/B4闭合后,P1.0/P1.1/P1.2/P1.3输入为低电平。每按一次按键,就会有一次低电平,单片机就会对低电平计数,从而来调节定时时间。由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动,这种抖动对于计算机来说,是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级。你只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了,所以必须运用延时程序消除按键的抖动。

b.按键电路的作用:

每次复位之后,三个两位数码管全部都会显示为0,而与P1.0相接的按钮B1,每次按下一次,就会产生一次低电平,单片机就会计数一次,从而调节倒计时的小时时间,B2则调节分钟,B3则调节秒钟,与这三个按键分别控制数码管的显示倒计时的小时、分钟、秒。与这三个按键不同的是,按键B3的作用是开始倒计时。这些按键的功能都是通过编程来控制的。

图1.4按键电路原理图

(4)数码管电路的分析

a.数码管电路的组成:

1>六位数码管:分别显示小时,分钟和秒钟。

2>含有八个电阻带电源的排阻:分别与三个数字显示的数码管并联,电源给数码管提供电压,电阻的作用是保护数码管不被烧坏。

3>将PO口的八位与数码管和排阻连载一起的导线,将P2口的六位分别与六位数码管的六个位选引脚接在一起。

b.数码管电路的原理:

7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管。

(5)蜂鸣电路的分析

a.蜂鸣电路的组成:

两个阻值为一千欧姆的电阻,一个阻值为100欧姆的电阻,一个蜂鸣器,一个三极管,一个接地,以及导线。

b.蜂鸣电路的原理:

蜂鸣电路是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。在程序上,可以使用TIMER0 来定时,将TIMER0 的预分频设置为/1,选择TIMER0 的始终为系统时钟(主振荡器时钟/4),通过按键可以在TIMER0 的载入/计数寄存器内调节设置时间,就能将TIMER0 的中断设置设置为倒计时时间,当需要I/O 口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0 中断的时候对该 I/O 口的电平进行翻转一次,直到蜂鸣器不需要鸣叫的时候,将I/O 口的电平设置为低电平即可。不鸣叫时将I/O 口的输出电平设置为低电平是为了防止漏电。

图1.5蜂鸣电路原理图

3、系统实现

(1)LED数字倒计时器的程序流程图

(2)LED数字倒计时器的C语言程序编码

#includesbit kh=P1^0;

sbit km=P1^1;

sbit ks=P1^2;

sbit st=P1^3;

sbit b=P3^7;

unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,

0x83,0xc6,0xa1,0x86,0x8e};

unsigned char i=0,hour=0,minute=0,second=0;

void delayms(unsigned int x)

{ unsigned char a=160;

while(x--) { while(a--); a=160; } }

main() { TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TMOD=1;

TR0=0;

ET0=1;

EA=1;

while(1) {

P0=table[hour/10];

P2=0x20;

delayms(1);

P2=0xff;

P0=table[hour%10];

P2=0x10;

delayms(1);

P2=0xff;

P0=table[minute/10];

P2=0x08;

delayms(1);

P2=0xff;

P0=table[minute%10];

P2=0x04;

delayms(1);

P2=0xff;

P0=table[second/10];

P2=0x02;

delayms(1);

P2=0xff;

P0=table[second%10];

P2=0x01;

delayms(1);

P2=0xff;

if(!kh)

{ delayms(200);

hour++;

if(hour>23)

hour=23; }

else if(!km)

{ delayms(200);

minute++;

if(minute>59)

minute=59; }

else if(!ks)

{ delayms(200);

second++;

if(second>59)

second=59; }

if(!st)

{ delayms(200);

TR0=1; }

if(TR0==1&&hour==0&&minute==0&&second<3)

b=!b; delayms(1); } }

void t0() interrupt 1 { TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

i++;

if(i>=20)

{ i=0; second--;

if(second>59)

{ second=59;

minute--;

if(minute>59)

{ minute=59;

hour--;

if(hour>23)

{hour=0; minute=0; second=0; TR0=0; } } } } }

(4)LED数字倒计时器仿真图

(5)焊接好的实物图

四、总结

关于这次课程设计,我们花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等。在这次实验中遇到的具体的问题:在proteus中设计好原理图,并运行后发现,数字倒计时器的复位功能无效,经过与组员之间的反复讨论和检验,终于发现问题的症结所在:复位电路的线路连接错误,其中两条线路交叉,中间少一个节点。

除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。

从这课程设计中,我学会了怎样用你c语言编程来控制单片机,这是以前没学到的东西,此外,还要查阅许多的资料来填补知识的空缺,比如说软件的使用等。最后老师的提问让我们对单片机有了更为深入、更加清晰的了解。

五、附录

元件清单;

元件名称

型号

数量

单片机最小开发板

STC89C52

1

电阻

10K

1

按键

5

数码管2位一体

共阳

3

集成块

74LS245

3

三极管

9015

1

蜂鸣器

1

电阻

1K

2

电阻

100Ω

1

电阻

2.7K

4

电阻

330Ω

8

集成块

74LS07

1

AC/DC(5V/1A)电源

1

单排插针 40

2

双排插针 40

2

9X15cm万用板(3连孔)

1

杜邦线

15

六、参考文献

9787115256652·张毅刚·单片机原理及接口技术(C51编程)·人民邮电出版社·2011.08

9787811242362·李朝青·单片机原理及串行外设接口技术·北京航空航天大学出版社·2008.04

ISBN978-7-121-14990-0·李群芳,肖看,张士军·单片微型计算机与接口技术·电子工业出版社·2012.01

展开阅读全文

基于at89c51单片机的led数字倒计时器设计c语言,基于AT89C51单片机的LED数字倒计时器设计.docx...相关推荐

  1. 基于单片机控制的数字温度计课程设计c语言,基于单片机的数字温度计课程设计.doc...

    基于单片机的数字温度计课程设计.doc 目录1 绪论 .11.1 设计背景 .11.2 设计要求 .11.3 设计思路 .12 系统硬件设计 12.1 设计总框图 12.2 各模块功能 .22.3 设 ...

  2. 基于单片机的数字电压表设计c语言,基于单片机的数字电压表设计(.doc

    基于单片机的数字电压表设计( 成绩 西南科技大学城市学院 City College of Southwest University Of Science and Technology 基于单片机的数字 ...

  3. 单片机里程计量设计c语言,基于单片机的出租车计价器的里程计算设计

    社会发展的越快,人们的生活质量越好,从以前的走路.骑自行车,再到坐公交车地铁等,到了现在出门"打的",出租车已经成为人们出门的重要代步工具了.因此出租车计价器系统也显得尤为重要.计 ...

  4. 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序).doc...

    51单片机秒表计时器课程设计报告(含C语言程序) XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计 ...

  5. 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序)详细分解.doc...

    XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下 ...

  6. 定时闹钟课程设计c语言,基于单片机89c52定时闹钟的课程设计.pdf

    前 言 20 世纪末,电子技术获得了飞速的发展.在其推动下,现代电子产品几乎渗透了 社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高.同时也 使现代电子产品性能进一步提高,产品更新换 ...

  7. 基于at89c51单片机的led数字倒计时器设计c语言,基于AT89C51单片机的LED数字倒计时器设计1.docx...

    基于AT89C51单片机的LED数字倒计时器设计1 单片机原理及其应用课程设计课 题: 基于AT89C51单片机的LED数字倒计时器设计专 业: 电工程及其自动化班 级: 2013 级 4班学 号: ...

  8. 60秒倒计时器 秒表 c语言程序,用单片机设计一个两位LED显示的秒表,按下计时键时,进行60s倒计时显示...

    满意答案 w86586tk3y 2017.09.25 采纳率:57%    等级:8 已帮助:214人 #include sbit P3_5 =P3^5; unsigned char code dis ...

  9. 单片机16个灯四种花样c语言,基于Proteus的MSP430单片机仿真实例5-16个花样灯控制...

    一.任务要求 利用MSP430F247单片机的P1和P4端口控制16个发光二极管D1~D16,发光二极管有8种花样显示,显示速度可调,由P2端口的三个按键控制,分别是模式按键.加速按键.减速按键.模式 ...

  10. 单片机简易电子钟设计c语言,基于51单片机的简易电子钟设计

    单片机实现电子钟主要有两种方案.一种是利用单片机内部的定时/计数器产生标准秒信号,并根据时间系统的进位原则进行加1调整.另一种方法是为单片机配置一片可独立走时的实时钟(RTC)芯片,单片机通过串行信号 ...

最新文章

  1. UNIX文件mode_t详解
  2. Ethernet/IP 学习笔记六
  3. 图像处理——基于深度学习HED实现目标边缘检测
  4. 【Linux】虚拟机 Ubuntu sudo指令实现Gparted安装和 dsv/sda1 内存扩展
  5. 对 COM 组件的调用返回了错误 HRESULT E_FAIL
  6. SpringMVC 实例 --非注解【过时的,留作回忆】
  7. Java核心(二)深入理解线程池ThreadPool
  8. Docker学习七:使用docker搭建Hadoop集群
  9. 【补丁分析】CVE-2016-8610:对导致拒绝服务的“SSL Death Alert”漏洞补丁分析
  10. Kudu :Service unavailable: Soft memory limit exceeded at xxx% of capacity
  11. 【Node】—nodemon的简单使用
  12. 利用Python白玩steam游戏,我是专业的
  13. mysql启动的errmsg.sys文件路径问题
  14. 为啥Hibernate的HQL查询要使用别名呢?
  15. Java面试知识点(零)Java零碎知识点
  16. 传感器怎么获取障碍物的宽度信息_基于多传感器信息融合的机器人障碍物检测...
  17. 大话中国骨干网(下)
  18. CentOS 修改系统时区和更新时间
  19. 使用python代码表白_用Python代码花式表白小姐姐,她会不会生气啊
  20. 基于5G技术的低轨卫星物联网技术

热门文章

  1. 附近的人实现原理详细剖析!
  2. css特效滑动导航栏,教你做个可爱的css滑动导航条
  3. vr电力作业安全培训覆盖三大板块,为学员提供高仿真的技能培训
  4. 宽带拨号连接显示被远程计算机终止
  5. 债券收益率预测模型_利率预测模型系列之一:简单的N-S模型运用
  6. win10双显卡怎么切换amd和英特尔_手把手给你细说win10系统双显卡设置只使用独立显卡的流程...
  7. 文档翻译免费工具(网页版)PDF翻译,word翻译
  8. Datawhale组队学习周报(第042周)
  9. 工作网络计算机显示不完全,win10网络共享,计算机显示不全?
  10. 史上最牛的Linux视频教程—兄弟连 学习笔记1