课程设计.docx

上传人:b****2 文档编号:17022709 上传时间:2023-07-21 格式:DOCX 页数:19 大小:260.23KB
下载 相关 举报
课程设计.docx_第1页
第1页 / 共19页
课程设计.docx_第2页
第2页 / 共19页
课程设计.docx_第3页
第3页 / 共19页
课程设计.docx_第4页
第4页 / 共19页
课程设计.docx_第5页
第5页 / 共19页
课程设计.docx_第6页
第6页 / 共19页
课程设计.docx_第7页
第7页 / 共19页
课程设计.docx_第8页
第8页 / 共19页
课程设计.docx_第9页
第9页 / 共19页
课程设计.docx_第10页
第10页 / 共19页
课程设计.docx_第11页
第11页 / 共19页
课程设计.docx_第12页
第12页 / 共19页
课程设计.docx_第13页
第13页 / 共19页
课程设计.docx_第14页
第14页 / 共19页
课程设计.docx_第15页
第15页 / 共19页
课程设计.docx_第16页
第16页 / 共19页
课程设计.docx_第17页
第17页 / 共19页
课程设计.docx_第18页
第18页 / 共19页
课程设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

课程设计.docx

《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(19页珍藏版)》请在冰点文库上搜索。

课程设计.docx

课程设计

《单片机原理及应用》

课程设计报告

专业电气自动化

班级自122

姓名李威

学号121415218

二0一四年一月二日

目录

1.功能设计…………………………………………………2

2.方案设计…………………………………………………2

3.硬件设计…………………………………………………2

3.1复位电路……………………………………………………3

3.2晶振电路……………………………………………………3

3.3时钟电路……………………………………………………3

3.4按键电路……………………………………………………4

3.5蜂鸣器电路…………………………………………………4

3.6数码管显示电路……………………………………………5

3.7单片机定时器使用…………………………………………6

4.程序设计…………………………………………………6

4.1总程序图……………………………………………………7

4.2定时器T0流程图…………………………………………8

4.3定时器T1流程图…………………………………………8

5.小结………………………………………………………10

附录A电路设计

附录B程序代码

1功能分析

题目三:

倒计时器课程设计

基本功能要求:

可实现倒计时功能,计时时间可通过按键进行设定,设定完成后启动倒计时,计时时间到时可通过声光报警方式提示。

(1)可实现倒计时功能:

通过运用单片机的定时器T0中断方式1控制发光二极管,定时器T1断方式3进行时间自减一。

本程序最大倒计时时间为一天。

(2)计时时间可通过按键进行设定:

通过运用独立键盘控制时,分,秒的设定。

按键K1控制小时让小时以加一方式设定,按键K2控制分钟让分钟以加一方式设定,

按键K3控制秒让秒以加一方式设定,按键K4控制定时器开关。

(3)设定完成后启动倒计时:

通过按下独立键盘k4控制倒计时器开关。

(4)计时时间到时可通过声光报警方式提示:

通过运用发光二极管在最后十秒时闪烁和蜂鸣器在最后十秒时进行声光报警。

2方案设计

 

图1倒计时的总体框图

3、硬件电路设计

LED数码管倒计时器以STC89C52单片机为核心,起着控制作用。

系统包括六位数码管显示电路,按键电路,复位电路,时钟电路以及蜂鸣器电路。

单片机最小系统

最小系统就是单片机在发挥具体测控功能时所必须的组成部

分。

如下图所示为最小系统方框图:

图2单片机最小系统

(1).复位电路

复位是单片机的初始化操作,只需给STC89C52的复位引脚RST加上大于2个机器周期的高电平就可得单片机复位,复位时,PC初始化为0000H,使单片机重新启动。

在系统中,有时会出现显示不正常,也为了调试方便,我们需要设计一个复位电路。

本系统采用的电路如图3所示。

按键复位用在系统运行时的复位,使系统重新运行。

复位电路如下图所示。

图3复位电路原理图

(2).晶振电路

晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路中会产生偕波(也就是不希望存在的其他频率的波),这个波对电路的影响不大,但会降低电路的时钟振荡器的稳定性。

为了电路的稳定性起见,ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响,所以晶振所配的电容在10pf-50pf之间都可以的。

但是主流是接入两个33pf的瓷片电容,此次电路用33PF。

(3).时钟电路

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。

因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统稳定性。

常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。

单片机必须在时钟的驱动下才能工作。

在单片机内部有一个时钟振荡电路,只要外界一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。

本系统使用的是内部时钟方式。

时钟电路如下图4所示。

图4 时钟电路原理图

单片机在工作时,有内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。

其大小是时钟信号频率的倒数,f表示。

图4中的时钟频率为12MHz,即f=12MHz,则时钟周期为1/12us。

 

(4).按键电路

本系统的按键电路的作用是能够调整倒计时的初始值,倒计时是按时、分、秒顺寻排列显示的,用三个按键分别设定时、分、秒,所达到的效果是按一下对应的键时,所对应的值加一。

在程序中用K1对应时的设定,K2对应分的设定,K3对应秒的设定。

按K4键则系统开始运行。

按键电路如下图5所示。

图5 按键电路原理图

(5).蜂鸣器电路

蜂鸣器电路是由一个有源蜂鸣器、一个电阻和一个开关三极管组成。

此电路的作用是倒计时时间到零时,蜂鸣器发出报警声。

在本系统中,是利用单片机的P2^3口来控制,P2^3为低电平时,三极管导通,蜂鸣器报警。

电路如下图6所示

图6 蜂鸣器电路原理图

(6).数码管显示电路

在这里我们使用的是8段数码管显示(包含小数点),通常在显示上我们采用的方法一般包括两种:

一种是静态显示,另一种是动态显示。

其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多,所耗得电能较大;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。

在本设计中,为了减少端口资源,降低电能消耗,采用的是动态显示方法。

(7).单片机定时器的使用

本系统所用到的STC89C52有3个16位的定时器,而本系统只用到了定时器0和定时器1,所使用的工作方式都是定时器工作方式1,方式1时16位计数结构的工作方式,计数器由TH0或TH1的全部8位和TL0或TL1的全部8位构成。

使用工作方式1功能时,定时时间计算公式是:

(65536-计数初值)*机器周期

机器周期=晶振周期*12

本系统所用到的定时器0的定时时间是50ms;定时器1的定时时间是50ms;而电路所用的晶振是12MHZ,算得一个机器周期为1us。

(65536-50000)/256;

(65536-50000)%256;

4、软件设计与流程图

本系统中,是利用软件和硬件相互结合,以实现电路功能。

软件在系统中起着举足轻重的作用,利用程序对硬件达到控制作用。

因此下面说明软件的实现。

(1)倒计时器主程序流程图

程序的的开始时初始化数码管的段选和位选,数码管不显示。

程序中用到了两个定时器,接下来先设定定时器0和定时器1的工作方式,并且给两个定时器装初值,定时器0的定时时间是50ms,用作扫描数码管显示,定时器1的定时时间是50ms,用作定时器时间的递减。

然后给定时器设定初值,开启定时器。

最后进入死循环函数,在循环函数中,对按键进行扫描,如果有键按下,执行按键函数,并检查是否需要报警。

流程图如下图7所示:

 

图7倒计时器主程序流程图

 

(2).定时器0的中断程序流程图

定时器0的定时时间是50ms,用作扫描数码管显示,在定时器0开启时,定时器0开始定时,此时主程序正常运行,当定时器0的定时时间到时,主程序不在执行,开始进入中断程序,在中断程序中,对9位数码管进行动态扫描。

中断程序执行完后返回主程序。

如图8所示。

图8定时器0的中断程序流程图

(3).定时器1的中断程序流程图

定时器1的定时时间是50ms,用作是倒计时时间以秒来自减,在定时器1开启时,定时器1开始定时,此时主程序正常运行,当定时器0的定时时间到时,主程序不在执行,开始进入中断程序,在中断程序中,设定倒计时的时间变化。

中断程序执行完后返回主程序。

如图9所示。

图9定时器1的中断程序流程图

5、总结经验和体会

在这次的单片机程序课程设计中,学到了关于单片机的很多东西,单片机具有软硬结合,体积小,可以很容易嵌入到各种应用系统中,单片机是我们的这个专业中很重要的一门课程,同时也是一门比较难学的课程,这次实践让我对单片机有了更深一步的了解,让我们真正做到了理论联系实践,把我们所学的知识都运用到实践中去,这样就能把单片机学的更好。

在设计制作倒计时器的过程中,我深切体会到,实践是理论运用的最好检验。

本次设计是对我所学知识的一次综合性检测和考验,无论是动手能力还是理论知识运用能力都得到了提高,同时加深了我对网络资源认识,大大提高了查阅资料的能力和效率,使我有充足的时间投入到电路制作当中。

本系统的制作主要应用到了模拟电子技术、数字电子技术、单片机控制技术、电子工艺等多方面的知识。

在硬件调试过程中,我也学会不少的东西,掌握一些调试方法。

在设计仿真图和编些程序中,对Protel和Keil等软件掌握的更加牢固。

附录A:

电路设计

附录B:

倒计时器源程序(C语言)

#include//52系列单片机头文件

#defineucharunsignedchar//宏定义

#defineuintunsignedint//宏定义

sbitkey1=P3^4;//独立键盘端口声明

sbitkey2=P3^5;

sbitkey3=P3^6;

sbitkey4=P3^7;

sbitdula=P2^6;//申明u1锁存器的锁存端

sbitwela=P2^7;//申明u2锁存器的锁存端

sbitled=P1^0;//二极管端口声明

sbitbeep=P2^3;//蜂鸣器端口声明

ucharcodetable[]={//共阴极数码管编码

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

ucharnum0,num,sh,sl,s,fh,fl,f,m,mh,ml,h;//定义变量

///////////////延时/////////////////////

voiddelayms(uintxms)

{

uinti,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

/////////////初始化////////////////////////

voidinit()

{

TMOD=0x11;//设置定时器工作方式

TCON=0x00;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

ET0=1;

ET1=1;

TR0=0;

TR1=0;

}

/////////////显示子函数//////////////////////////

voiddisplay(uchars,ucharf,ucharm)

{

sh=s/10;

sl=s%10;

fh=f/10;

fl=f%10;

mh=m/10;

ml=m%10;

dula=1;

P0=table[sh];

dula=0;

P0=0xff;

wela=1;

P0=0xfe;

wela=0;

delayms(5);

dula=1;

P0=table[sl]|0x80;

dula=0;

P0=0xff;

wela=1;

P0=0xfd;

wela=0;

delayms(5);

dula=1;

P0=table[fh];

dula=0;

P0=0xff;

wela=1;

P0=0xfb;

wela=0;

delayms(5);

dula=1;

P0=table[fl]+0x80;

dula=0;

P0=0xff;

wela=1;

P0=0xf7;

wela=0;

delayms(5);

dula=1;

P0=table[mh];

dula=0;

P0=0xff;

wela=1;

P0=0xef;

wela=0;

delayms(5);

dula=1;

P0=table[ml];

dula=0;

P0=0xff;

wela=1;

P0=0xdf;

wela=0;

delayms(5);

}

////////////键盘扫描//////////////////////

voidkeyscan()

{

if(key1==0)

{

delayms(10);

if(key1==0)

{

s++;

if(s==24)

s=0;

while(!

key1);

}

}

if(key2==0)

{

delayms(10);

if(key2==0)

{

f++;

if(f==60)

f=0;

while(!

key2);

}

}

if(key3==0)

{

delayms(10);

if(key3==0)

{

m++;

if(m==60)

m=0;

while(!

key3);

}

}

if(key4==0)

{

delayms(10);

if(key4==0)

{

EA=1;

TR0=1;

TR1=1;

while(!

key4);

}

}

}

////////////主函数//////////////////////////

voidmain()

{

init();

while

(1)

{

keyscan();

display(s,f,m);

if(f==0&m==10)

{

beep=0;

delayms(5);

beep=1;

}

}

}

//////////////定时器T0//////////////

voidT0_time()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

num++;

if(num==4)

{

num=0;

if(s==0&&f==0&&m==10)

{led=~led;}

}

}

////////////定时器T1////////////////////

voidT1_time()interrupt3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

num0++;

if(num0==20)

{

num0=0;

if(m==0)

{

m=60;

if(f==0)

{

f=60;

if(s==0)

{s=24;

}

s--;

}

f--;

}

m--;

}

if(s==0&&f==0&&m==10)

{

beep=1;

delayms

(1);

}

if(s==0&&f==0&&m==0)//计时结束关中断

{

EA=0;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2