倒计时器课程设计.docx

上传人:b****1 文档编号:2896395 上传时间:2023-05-05 格式:DOCX 页数:23 大小:191.84KB
下载 相关 举报
倒计时器课程设计.docx_第1页
第1页 / 共23页
倒计时器课程设计.docx_第2页
第2页 / 共23页
倒计时器课程设计.docx_第3页
第3页 / 共23页
倒计时器课程设计.docx_第4页
第4页 / 共23页
倒计时器课程设计.docx_第5页
第5页 / 共23页
倒计时器课程设计.docx_第6页
第6页 / 共23页
倒计时器课程设计.docx_第7页
第7页 / 共23页
倒计时器课程设计.docx_第8页
第8页 / 共23页
倒计时器课程设计.docx_第9页
第9页 / 共23页
倒计时器课程设计.docx_第10页
第10页 / 共23页
倒计时器课程设计.docx_第11页
第11页 / 共23页
倒计时器课程设计.docx_第12页
第12页 / 共23页
倒计时器课程设计.docx_第13页
第13页 / 共23页
倒计时器课程设计.docx_第14页
第14页 / 共23页
倒计时器课程设计.docx_第15页
第15页 / 共23页
倒计时器课程设计.docx_第16页
第16页 / 共23页
倒计时器课程设计.docx_第17页
第17页 / 共23页
倒计时器课程设计.docx_第18页
第18页 / 共23页
倒计时器课程设计.docx_第19页
第19页 / 共23页
倒计时器课程设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

倒计时器课程设计.docx

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

倒计时器课程设计.docx

倒计时器课程设计

河南机电高等专科学校

课程设计报告书

 

课程名称:

单片机原理及系统设计

课题名称:

倒计时器课程设计

专业:

计算机控制技术

班级:

学号:

姓名:

成绩:

2013年12月30日

目录

1.设计目的1

2.设计准备……………………………………………………………1

3.设计要求和设计指标1

4.设计内容2

4.1硬件部分2

4.1.1硬件部分工作原理…2

4.1.2设计原理4

4.1.3PCB图及PCB库…8

4.2软件部分11

4.2.1程序流程图…12

5.本设计改进建议12

6.总结(感想和心得等)13

7.主要参考文献13

附录13

1、设计目的

1)掌握利用keiluv4进行软件的编程及编译。

2)加深对单片机原理及系统设计课程的理解。

3)掌握倒计时的设计原理和方法。

4)加深用Protel99SE进行原理图的绘制、原理图库创建、PCB的生成及PCB库的创建的操作方式。

2﹑设计准备

1)单片机STC89C52RC、数码管、74HC573锁存器、按键及其他元件。

2)软件keiluv4和Protel99SE。

3、设计要求和设计指标

1)设计要求

①设计一个倒计时电路,并具有显示功能。

②设置外部操作键,能对倒计时器进行修改、启动、停止和清零。

③当计时器递减为零时,实现声光报警(蜂鸣器鸣叫,LED灯闪烁),当重新计时时,报警关闭。

④利用六位数码管的动态显示,来显示倒计时时间(时、分、秒),中间利用小数点隔开。

⑤当利用外部功能键设置时间时,利用三个LED灯来区分修改的是小时、分钟还是秒。

2)设计指标

①具有基本的倒计时功能。

②具有暂停、清零和报警的功能

③可以任意设置时间。

④开始时显示为六个零。

 

4、设计内容

4.1硬件部分

4.11硬件部分工作原理

1)显示部分

利用六位七段数码管的动态显示,用来显示倒计时间和设置时间。

数码管采用共阴极接法,当阳极接入高电平时,数码管显示,位选送入低电平时,数码管被选中可以参与显示(位选),再送入段选数值。

段选采用共阴极接法,送入高电平可显示数值,如图1-3。

利用D8、D7、D6三个数码管用于显示功能键。

2)按键部分

利用51单片机P3端口独立键盘,即P3^4﹑P3^5、P3^6、P3^7(如图1-8)。

按键检测流程如图1-2所示,程序中用延时10ms的方式进行消抖。

按键S1为复位按键。

3)定时器部分

用定时器T0和定时器T1,软启动、工作方式1。

运用时首先打开全局中断、定时器1中断和定时器0中断才能运行。

装入初值时,因为晶振频率为11.0592MHZ(如图1-5),所以一个机器周期为1.09us,计算65536个数字小于1s,所以应装初值为:

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

TH1=(65536-45872)/256;

TL1=(65536-45872)%256;

运行20次就1s。

 

4)报警部分

当倒计时减为零时,用P1端口P1^0LED灯1s闪烁,蜂鸣器发声报警。

LED灯为共阳极接口,当送入低电平时发光,蜂鸣器图1-1,与单片机相连如图1-9.

 

 

图1-2按键检测流程图

 

图1-1蜂鸣器原理图

 

4.1.2、设计原理

sbitkey1=P3^4用于启动倒计时和停止倒计时。

sbitkey1=P3^5切换功能键(当第一次按下时切换到sec,此时D6灯亮。

当第二次按下时切换到min,此时D7灯亮。

当第三次按下时切换到hour,此时D8灯亮)。

sbitkey1=P3^6设定数值(当D6灯亮时sec++,当D7灯亮时min++,当D8灯亮时hour++。

)。

sbitkey1=P3^7清零。

六位数码管:

前两位显示小时,中间两位显示分,最后两位显示秒。

中间用小数点隔开。

图1-3六位数码管原理图

图1-4STC89C52RC单片机原理图

 

图1-5复位电路及时钟原理图

 

图1-6锁存器原理图

 

图1-7led灯连接原理图

图1-8按键连接原理图

图1-9蜂鸣器连接原理图

 

图1-10原理图

 

原理图介绍:

STC89C52RC单片机采用DIP40封装,电阻采用AXIAL0.4封装,led灯采用DIODE0.4封装,数码管采用SMG封装(如图1-13),蜂鸣器采用beep封装(如图1-11),按键采用S1封装(如图1-12),电容采用RAD0.1封装,极性电容采用RB.2/.4封装,晶振采用XTAL1封装,三极管采用TO-92B封装。

(PCB库如图1-11所示)

 

4.1.3PCB图与PCB库

Protel99SE是ProklTechnology公司基于Windows环境下开发的电路板设计软件。

该软件功能强大,人机界面友好,易学易用,是大中专院校电学专业必学课程,同时也是业界人士首选的电路板设计工具。

Protel99SE由两大部分组成:

电路原理图设计(AdvancedSchematic)和多层印刷电路板设计(AdvancedPCB)。

其中AdvancedSchematic由两部分组成:

电路图编辑器(Schematic)和元件库编辑器(SchematicLibrary)。

 

图1-11蜂鸣器封装图(beep)

 

图1-12按键的封装图(S1)

 

图1-13数码管的封装图(SMG)

 

图1-14PCB封装图

4.2软件部分

Keil软件介绍:

支持8051微控制器体系结构的Keil开发工具,适合每个阶段的开发人员,不管是专业的应用工程师,还是刚学习嵌入式软件开发的学生。

KEILC51开发工具旨在解决嵌入式软件开发商面临的复杂问题。

当你开始一个新项目,只需简单的从设备数据库选择使用的设备,uVisionIDE将设置好所有的编译器、汇编器、链接器和存储器选项。

包含大量的例程,帮助你着手使用最流行的嵌入式8051设备。

KeilμVision调试器准确地模拟8051设备的片上外围设备(IC、CAN、UART、SPI、中断、I/O端口、A/D转换器、D/A转换器和PWM模块)。

模拟帮助你了解硬件配置,避免在安装问题上浪费时间。

此外,使用模拟器你可以在没有目标设备的情况下编写和测试应用程序。

当你准备在目标硬件上测试软件应用时,可以使用MON51、MON390、NONADI、或者FlashMON51目标监视器、ISD51In-System调试器、ULINKUSB-JTAG适配器在目标系统上下载并测试程序代码。

 

4.2.1程序流程图

图1-12程序流程图

4、本设计改进建议

①可以设计让其正计时,当计时时间到时报警。

②不用数码管,用1602液晶显示。

③程序中设计时,设置只能加,不能减,可以设计让其可以减。

④利用矩阵键来设计。

5、总结(感想和心得等)

单片机是我们重要的一门课程,因为在生活中有很多地方都运用了单片机方面的知识,例如我们的手表、计算器、充电器等等,都运用到单片机方面的知识。

经过多天的设计,设计基本完成,从中学习了很多知识。

也知道了设计是多么不容易的事情,需要很多知识才能设计出来。

从这几天的设计中,学习到了很多知识,加深了对学到的知识的理解,使对以前学习的知识有了深刻的理解。

而且在设计发现好多知识在课本中没有,还有许多知识记不住,基础知识没掌握好,明白了不能只读书,还要多操作单片机,不断地学习。

6、主要参考文献

[1]《单片机原理及运用》主编董少明中国铁道出版社2007.11出版

[2]《模拟电子技术》主编杨毅德重庆大学出版社2004出版

[3]《8051单片机实践与应用》主编吴金戌沈庆阳清华大学出版社2002出版

附录

C语言程序:

#include(头文件)

#defineucharunsignedchar(宏定义)

#defineuintunsignedint

sbitdula=P2^6;(声明变量,锁存器U3、锁存器U4、位选端、led灯、蜂鸣器和四个按键)

sbitwela=P2^7;

sbitkey1=P3^4;

sbitkey2=P3^5;

sbitkey3=P3^6;

sbitkey4=P3^7;

sbitbeep=P2^3;

sbitled=P1^0;

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};(定义共阴数码管编码)

ucharsec,min,hour,temp1,num1,num2,temp2;(定义所需使用的变量)

voiddelay(uintxms)(延时程序)

{

uinti,j;

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

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

}

voiddisplay(ucharhour,ucharmin,ucharsec)(显示程序)

{

uchars1,s2,m1,m2,h1,h2;

s2=sec/10;(分开秒的十位和各位)

s1=sec%10;

m2=min/10;(分开分的十位和各位)

m1=min%10;

h2=hour/10;(分开时的十位和各位)

h1=hour%10;

dula=1;(打开U4锁存端)

P0=table[h2];(送入段选信号)

dula=0;(关闭U4锁存端)

P0=0xff;(消影)

wela=1;(打开U3锁存端)

P0=0xfe;(送入位选信号)

wela=0;(关闭U3锁存端)

delay

(1);(延时1毫秒)

dula=1;

P0=table[h1]+0x80;(+0x80是为了显示小数点)

dula=0;

P0=0xff;wela=1;

P0=0xfd;wela=0;

delay

(1);

dula=1;

P0=table[m2];

dula=0;

P0=0xff;

wela=1;

P0=0xfb;

wela=0;

delay

(1);

dula=1;

P0=table[m1]+0x80;

dula=0;

P0=0xff;

wela=1;

P0=0xf7;

wela=0;

delay

(1);

dula=1;

P0=table[s2];

dula=0;

P0=0xff;

wela=1;

P0=0xef;

wela=0;

delay

(1);

dula=1;

P0=table[s1];

dula=0;

P0=0xff;

wela=1;

P0=0xdf;

wela=0;

delay

(1);

}

voidkeyscan()(按键程序)

{

if(key1==0)

{

delay(10);(延时消抖)

if(key1==0)

{

while(!

key1);(检测按键释放)

temp1++;(key1键每按一次temp1加一次)

if(temp1==1)

{TR0=1;(启动定时器T0)

TR1=0;(关闭定时器T1)

}

if(temp1==2)

{TR0=0;

TR1=0;

beep=1;(关闭报警)

led=1;

temp1=0;

}

}

}

if(key3==0)

{

delay(10);

if(key3==0)

{

switch(temp2)(当temp2=1时功能键切换到秒,temp2=2时切换到分,temp2=3切换到时)

{

case1:

sec++;if(sec==60)sec=0;break;(秒加一)

case2:

min++;if(min==60)min=0;break;(分加一)

case3:

hour++;if(hour==24)hour=0;break;(时加一)

}

while(!

key3);(检测按键释放)

}

}

if(key2==0)(功能键)

{

delay(10);

if(key2==0)

{while(!

key2);

temp2++;(功能键每按一次temp2加一次,如图1-7当temp2=1时,D4灯亮,表示切换到秒。

当temp2=2时,D3灯亮,表示切换到秒分。

当temp2=3时,D4灯亮,表示切换到时。

if(temp2==1)

{P1=0xdf;

}

if(temp2==2)

{P1=0xbf;

}

if(temp2==3)

{P1=0x7f;

}

if(temp2==4)

{temp2=0;

P1=0xff;(关闭所有的灯)

}

}

}

if(key4==0)(清零键并且能关闭报警)

{

delay(10);

if(key4==0)

{while(!

key4);

hour=0;

min=0;

sec=0;

TR0=0;

TR1=0;

beep=1;(关闭声报警)

led=1;(关闭光报警)

}

}

}

voidmain()(主函数)

{

TMOD=0x11;(设置定时器T0、T1为工作方式1,软启动00010001)

TH0=(65536-45872)/256;(装初值为50ms)

TL0=(65536-45872)%256;

TH1=(65536-45872)/256;

TL1=(65536-45872)%256;

EA=1;(开总中断)

ET0=1;(开T0定时器中断)

ET1=1;(开T1定时器中断)

hour=0;(设定开始倒计时初值)

min=0;

sec=60;

while

(1)(大循环)

{keyscan();(检测按键程序)

display(hour,min,sec);(显示)

}

}

voidT0_time()interrupt1

{TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

num1++;

if(num1==20)

{num1=0;

if(sec==0)

{if(min==0)

{if(hour==0)

{

;

}

elsehour--;(此时hour不为零)

min=59;

}

elsemin--;(此时min不为零)

sec=59;

}

elsesec--;(此时sec不为零)

if((sec==0)&&(min==0)&&(hour==0))(如果秒为零,分为零,时为零说明倒计时已经完成,开始报警,停止计时)

{TR1=1;

TR0=0;

}

}

}

voidT1_time()interrupt3

{TH1=(65536-45872)/256;

TL1=(65536-45872)%256;

num2++;

beep=0;(蜂鸣器鸣叫)

if(num2==10)

{num2=0;

led=~led;(数码管没0.5s闪烁一次)

keyscan();

}

}

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

当前位置:首页 > 法律文书 > 调解书

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

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