基于STC89C52定时器设计.docx

上传人:b****3 文档编号:3754938 上传时间:2023-05-06 格式:DOCX 页数:13 大小:539.23KB
下载 相关 举报
基于STC89C52定时器设计.docx_第1页
第1页 / 共13页
基于STC89C52定时器设计.docx_第2页
第2页 / 共13页
基于STC89C52定时器设计.docx_第3页
第3页 / 共13页
基于STC89C52定时器设计.docx_第4页
第4页 / 共13页
基于STC89C52定时器设计.docx_第5页
第5页 / 共13页
基于STC89C52定时器设计.docx_第6页
第6页 / 共13页
基于STC89C52定时器设计.docx_第7页
第7页 / 共13页
基于STC89C52定时器设计.docx_第8页
第8页 / 共13页
基于STC89C52定时器设计.docx_第9页
第9页 / 共13页
基于STC89C52定时器设计.docx_第10页
第10页 / 共13页
基于STC89C52定时器设计.docx_第11页
第11页 / 共13页
基于STC89C52定时器设计.docx_第12页
第12页 / 共13页
基于STC89C52定时器设计.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于STC89C52定时器设计.docx

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

基于STC89C52定时器设计.docx

基于STC89C52定时器设计

摘要

近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

本次课程设计主要是使用STC89C52单片机来实现定时器计时,开发板主要由发光二极管、数码管显示器、矩阵键盘、继电器、串口max232以及温度传感等模块组成,在掌握原理的基础上完成焊接任务,能够做到正确认识元器件,并做到基本焊接技巧,保证了不出现断路、短路、极性元件焊反等情况。

利用KeilC软件进行编程与调试,通过单片机的定时中断来实现计时并在开发板的二位数码管上显示时间。

关键词:

STC89C52单片机;数码管显示器;KeilC;计时器

 

目录

1设计题目1

2设计目的1

3设计要求1

4软硬件介绍1

4.1软件简介1

4.2STC89C52硬件介绍2

4.3LED数码管显示器概述2

5电路原理图3

6电路板的制作安装5

7程序设计6

7.1程序流图6

7.2程序代码7

8软硬件调试12

9设计报告总结12

参考文献13

 

1设计题目

基于STC89C52时钟设计。

2设计目的

1、巩固和加深单片机原理课程知识的理解和运用。

2、培养学生综合分析问题、发现问题和解决问题的能力。

3设计要求

使用STC89C52定时器完成定时,设计出时钟,并将时间在数码管上显示,秒闪烁使用小数点实现,保留分。

1.能正确认识元器件;

2.能读懂电路原理图;

3.能正确掌握PCB图和原理图的关系;

4.掌握基本焊接技巧,保证不能出现断路、短路、极性元件焊反等情况,以便保证下一步调试程序的正常进行;

5.学会利用Keil软件进行程序的编程与设计,以实现相应的功能。

4软硬件介绍

4.1软件简介

随着单机片的开发软件也在不断发展,Keil软件时目前最流行开发MCS-51系列单机片软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出,Keil提供了包括C编译器,宏汇编,连接器,库管理和一个功能强大的方针调试器等在内的完整开发方案,通过一个集成开发环境(uUision)将这些部分组合在一起,运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM.20M以上空闲的硬盘空间,WIN98,WIN2000.WINXP等操作系统。

Keil C51单片机软件开发系统中法的整体结构中的uVision与Ishell分别是用于在C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及A51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

4.2STC89C52硬件介绍

单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年。

由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,“几乎无处不在,无所不为”。

单片机的应用领域已经从面相工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。

单片机系列有51和52两个系列。

MCS-51系列有8053、8051、8751共3种机型,它们的指令系统和引脚完全相同,而差别在于片内有无ROM或EPROM。

8031内部无ROM,8051内部有4KBROM,8751内部有4KBEPROM。

MCS-52系列有8032、8052、8752共三种机型,52系列的指令系统及引脚和51系列相同,但52系列有3个16位定时器/计数器、6个中断源,片内有256字节的RAM。

8052内部有8KROM,8752内部有8KBEPROM。

4.3LED数码管显示器概述

LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。

它使用了8个LED发光二极管,其中7个用于显示字符,一个用于显示小数点,故通常称之为7段发光二极管数码器。

其内部结构如下图4.1所示,LED数码显示器有两种连接方法如下:

图4.1LED数码管

共阳极接法:

把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。

共阴极接法:

把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地,每个发光二极管的阳极通过电阻与输入端相连。

5电路原理图

根据设计要求,确定总体电路原理图如图4.1:

图4.1总体电路原理图

实现秒表器控制与显示功能模块如图4.2:

图4.2控制与显示模块

STC89C52单片机的P1口与四片数码管的七段发光二极管及小数点位a、b、c、d、e、f、g、dp引脚相连,在P1口的相应位置低电平时,七段发光二极管进行相应的显示;而P2口是用于控制四片数码管中每一片的显示,在P2口的相应位置低电平时,与之相连的数码管片将用于显示。

 

继电器工作模块如图4.3:

图5.3继电器工作模块

STC89C52单片机的P3口(RD)通过PNP三极管与继电器相连,P3口置低电平时,继电器工作,LED(D13)被点亮。

6电路板的制作安装

根据电路总原理图和对单片机、各种原理电路的认识,以及购买的元器件清单,设备和工具清单,开始对电路板进行制作安装。

安装好的电路板如图6.1所示:

 

图6.1电路板演示

7程序设计

7.1程序流图

根据题目的要求,按照程序的编写原则,可以画出如下程序框图7.1:

图7.1程序流图

7.2程序代码

程序代码如下:

#include

#include

#defineunitunsignedint

#defineucharunsignedchar

uchardatatimer_count,cm,cf,cs,f;/*定时器计数变量*/

ucharcodeduma[]={0x28,0xF9,0x4C,0x58,0x99,0x1A,0x0A,0xF8,0x08,0x18};//共阴的数码管段选.将值送给P0口

ucharcodewema[]={0xEF,0xDF,0xBF,0x7F};//P1口的片选位

unsignedcharled_buf[]={0,0,0,0};

delay(uchartime)//time=1时延时10ms

{uchari,j,k,q;

for(q=time;q>0;q--);//10*timems

for(i=10;i>0;i--)//10ms

{for(j=2;j>0;j--);//1ms

{for(k=60;k>0;k--);}//154*3.255=500us

}

}

voiddisplay(void)

{

unsignedchari=0;

led_buf[0]=cm%10;

led_buf[1]=cm/10;

led_buf[2]=cf%10;

led_buf[3]=cf/10;

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

{

switch(i){

case0:

P2=0x7F;break;

case1:

P2=0xBF;break;

case2:

P2=0xDF;break;

case3:

P2=0xEF;P0|=0x08;break;

default:

P2=0xEF;break;

}

P0=duma[led_buf[i]];

if(i==2)

{

if(f==0)

{

P0&=0xf7;

}

else

{

P0|=0x08;

}

}

delay

(1);

}

}

voidmain(void)

{

timer_count=0;//初始化端口

cm=0;

cf=0;

cs=0;

EA=1;ET0=1;

TMOD=0x01;/*T0方式1计时*/

TH0=-46080/256;//定时器T0的高四位赋值

TL0=-46080%256;

TR0=1;/*开中断,启动定时器*/

f=0;

for(;;)

{

display();

}

}

/*定时计数器0的中断服务子程序*/

voidtimer0(void)interrupt1using1

{

TH0=-46080/256;

TL0=-46080%256;

timer_count=timer_count+1;

if(timer_count==10)

{

if(f==0)

{

f=1;

}

else

{

f=0;

}

}

if(timer_count==20)

{

cm=cm+1;

if(f==0)

{

f=1;

}

else

{

f=0;

}

timer_count=0;

if(cm==60)

{cf=cf+1;

cm=0;

if(cf==60)

{cs=cs+1;

cf=0;}

if(cs==24)

{cs=0;}

}

}

}

8软硬件调试

软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。

在KeilC软件中编写程序,然后进行程序调试、仿真,检查数码管是否按要求进行变化,经过仿真,程序符合题目要求。

硬件调试是先用万用表检查印制电路的焊接情况,检查是否有虚焊,是否有短路。

在检查无误后通电检查LED数码管显示。

9设计报告总结

经过了几周的实践与探索,更进一步的对所学的知识有了深刻的理解,而且也学到了新的知识并将理论知识与实践经验相结合,深化用理论去指导实践。

这次实践锻炼了我的动手实践能力,加强了我分析和解决问题的能力,培养了我的团队合作意识。

在我们组里,每个人都很认真的完成焊接工作,最终我们团结一致,共同努力,完成了满意的结果。

这是大学里的最后一次的实验,我们倍加珍惜,对我们进入社会做了初步的锻炼,受益匪浅。

在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功。

参考文献

[1]樊昌信,曹丽娜.通信原理[M],国防工业出版社,2007

[2]余成波,单片机实用技术与应用,清华大学出版社,2010

[3]马秀丽,C语言程序设计,清华大学出版社,2008

[4]江丽,单片机原理与应用技术,清华大学出版社,2007

[5]何宏主编.单片机原理与接口技术,国防工业出版社,2006

[6]王秋爽,单片机开发基础与经典设计实例,机械工业出版社,2008

[7]沈建良,单片机入门与提高,北京航空航天大学出版社,2009

 

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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