数字秒表报告.docx

上传人:b****4 文档编号:24656477 上传时间:2023-05-29 格式:DOCX 页数:18 大小:162.71KB
下载 相关 举报
数字秒表报告.docx_第1页
第1页 / 共18页
数字秒表报告.docx_第2页
第2页 / 共18页
数字秒表报告.docx_第3页
第3页 / 共18页
数字秒表报告.docx_第4页
第4页 / 共18页
数字秒表报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数字秒表报告.docx

《数字秒表报告.docx》由会员分享,可在线阅读,更多相关《数字秒表报告.docx(18页珍藏版)》请在冰豆网上搜索。

数字秒表报告.docx

数字秒表报告

题目:

数字秒表的设计

目录

摘要……………………………………………………………………………………1

1设计内容及要求……………………………………………………………………2

1.1计目的及主要任务………………………………………………..………...2

1.1.1设计目的……………………………………………………..…………2

1.1.2设计任务及主要技术指标……………………………………..………2

1.2设计思想……………………………………………………………..………2

2设计方案……………………………………………………………………3

2.1两种设计方案……………………………………………………………2

2.2方案选择……………………………………………………………………2

3设计原理及单元模块设计…………………………………………………………4

3.1设计原理及方法…………………………………………………...…………4

3.2单元模块设计…………………………………………………….…………4

3.2.1输入模块的设计………………………………………….……………4

3.2.2单片机控制模块的设计…………………………………….….………5

3.2.3输出模块的设计……………………………………………..…………5

4电路的仿真与分析…………………………………………………………………6

5硬件调试…………………………………………………………………..………7

6心得体会…………………………………………………………………………..8

参考文献……………………………………………………………………..………9

附录一:

C语言数字秒表程序………………………………………………………10

附录二:

元件清单……………………………………………………………………14

附录三:

总电路图……………………………………………………………………15

摘要

数字电子技术应该是一门理论和实践相结合的课程,在这次课程设计中,我选择了《数字秒表》这样一个题目,希望在自己尝试亲自设计电路的过程中,更加深刻的理解数电中各种集成电路的应用。

这个电路的核心是STC89C52单片机。

硬件组成:

输入设备为按键(键盘),输出为四位共阳数码管,其中STC89C52单片机芯片用于处理输入的数字信号并输出数字信号。

软件部分是由C语言设计的控制程序。

Keil软件将设计好的C语言程序转换成hex文件,并通过ISP通信接口下载端下载到单片机的EEPROM中,用来控制单片机的输出电平,进而控制数码管上显示的数字,从而实现数字秒表的功能。

关键词:

STC89C52单片机输入设备输出设备C语言程序数字秒表

1设计内容及要求

1.1设计的目的及主要任务

1.1.1设计目的

(1)学会用C语言设计方法设计具有一定功能的模块,并能运用图形设计方法完成顶层原理图的设计,并用Protues软件实现仿真。

(2)掌握数字秒表的主要功能及如何用单片机来实现。

1.1.2设计任务及主要技术指标

(1)设计一个能测量8名运动员短跑成绩的数字秒表,有10个按键,其中一个为启动开关,一个为清零开关,其它八个作为记录开关,一个四位数码管输出,显示记录时间。

启动开关按下后,秒表开始计时,每按下一个“记录”开关,则将当前计数时间暂存并显示在数码管上。

记录完成后,按下清零开关,数码管显示0000,所有记录清零,再继续按下启动开关,则又能重新记录数据。

(2)运用Protues软件中的仿真功能对所设计的数字秒表的各个模块及顶层电路的功能进行仿真分析。

(3)选择元件,做出实物,在硬件软件方面完成数字秒表的制作,并调试得出设计结果。

1.2设计思想

本次设计分为硬件设计和软件设计。

硬件方面主要分为三个模块:

按键输入模块、数据分析处理模块、显示模块。

软件方面是运用C语言设计具有逻辑控制功能的程序。

待硬件软件的设计均顺利完成之后,用Protues软件对所设计的数字秒表电路进行仿真,为制作实物提供可靠的理论基础。

2设计方案

2.1两种设计方案

方案一:

可选用STC89C52单片机,它与8051系列单片机全兼容,但其内部带有4KB的FLASHROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。

(如图2-1所示)

单片机

数码管模块

按键模块

 

图2-1方案一原理框图

方案二:

可以通过门电路设计,用555定时器作为多谢振荡器电路为计数电路提供计数脉冲,用74LS160计数器成3级计数电路,分别为60进制、10进制、10进制,并配合74139二四线译码器构成数码管显示电路,9个开关控制译码器,间接控制数码管显示。

(如图2-2所示)

555定时器

门电路

数码管

7段译码器

开关

图2-2方案二原理框图

2.1方案选择

通过比较可知,第一种方案比第二种方案结构要简单许多,元件成本相比之下要低。

并且用单片机的电路比较简单,调试发现问题比较容易。

所以选择方案一,而且相比较,选用STC89C52芯片作为本次实验的单片机芯片。

3设计原理及单元模块设计

3.1设计原理及方法

根据层次化设计理论,该设计问题自顶向下可分为输入模块、控制模块、输出显示模块,其系统框图如图3-1所示。

 

图3-1数字秒表计时器系统框图

3.2单元模块设计

3.2.1输入模块设计

按键模块为矩阵键盘,采用2*5方式排列,该电路由单片机不停的扫描是否有按键被按下,该模块的电路如图3-2所示:

图3-2按键输入对应的输入模块电路图

3.2.2单片机控制模块的设计

(1)此设计中用到的单片机芯片是STC89C52,它的主要的功能由内部软件控制其外部I/O口的高地电平,用来驱动不同的模块工作或者输出数字量作为其他模块的输入。

由它构成的最小系统电路图如图3-3所示:

图3-3STC89C52单片机最小系统

该电路总共由4组I/O口,分别为P0、P1、P2、P3,既可以输入数据,也可以输出数据。

其中P0口在作为输入口时,与输入信号间是线或的关系,作为输出口时,必须接上拉电阻才可以正常使用。

在软件中正是通过对I/O口输出电平的控制来达到控制外电路的功能。

3.2.3输出模块的设计

该电路由非门和四位共阳数码管组成。

由于单片机的输出电流非常小,不足以驱动多位数码管显示,因此在数码管的位选加上非门74HC04,其电流输出可以同时驱动多位数码管。

如图3-4所示是该部分的显示电路:

图3-4数码管显示电路

4电路的仿真与分析

根据图2-6利用Protues软件完成多路数字抢答器的原理图连接,并对其编译和仿真。

得到的仿真结果如图4-1、4-2下:

图4-1启动按键按下后

图4-2记录的第六个成绩

经过仿真,可以发现,该设计电路是可以实现所要求数字秒表功能的,由于其硬件简单,难度主要集中在程序的编译,但是由于软件部分可以通过软件仿真,所以,用单片机开发各种带有控制的电路比直接用硬件设计要简单容易很多,掌握单片机对我们来说是必要的。

5硬件调试

仿真结果正确后,按照电路图开始制作实物,实物做好之后,首先进行硬件调试。

硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。

具体步骤及测试结果如下:

(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。

(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。

然后需将软件资源下载到单片机的程序存储器中。

软件部分用Keil来编译,在编译完成之后,设置其产生hex文件,该文件通过ISP方式下载后可以直接使单片机工作。

经过调试,给电路确实可以实现这些功能:

(1)具有清零开关1个,记录开关8个,启动开关1个。

(2)当启动开关按下后,依次按下8个记录开关,可以记录8位运动员的成绩,并可查看8位运动员的成绩。

(3)清零开关按下后,计时与所记录的成绩均清零,可重新记录。

6心得体会

在此次课设过程中,本人经历了电路的设计、仿真以及实物的制作,回顾了以前学的C语言、模电以及今年的数电知识,并且能综合起来运用单片机的知识。

做完课设后,作者对很多知识的记忆都加深了。

亲身感觉到仿真在设计电路中的作用,运用软件的仿真,能够不断纠正本人在构思中所疏忽的一些软件或者硬件问题。

在仿真过程中,经常遇到一些问题,譬如疏忽了仿真软件中共阴、共阳数码管的接线特点,在连线时某根线连错或者未接上,还有限流电阻阻值多大等等。

在仿真结束后,自己对Protues和Keil软件的应用变得更加熟练了,而且对硬件设计中需要注意的问题也有了初步的了解,这对于以后电子线路的设计与制作是很有帮助的。

实物制作是一个相对来说比较麻烦的过程,需要耐心和毅力。

实物制作完成后,在调试的过程中,曾出现程序下载不进去这样的问题,经过不断地尝试与求助,最终花了一个半小时才弄明白。

在排错的过程中,我又对硬件和软件有了进一步的了解,对一些基本线路的检查能力的有一定的提高。

这是一次非常宝贵的经验。

参考文献

[1]徐爱钧《单片机原理实用教程:

基于Proteus虚拟仿真》电子工业出版社2008.7

[2]郭天祥《51单片机C语言教程》电子工业出版社2009.1

[3]邹振春《单片机原理及接口技术》机械工业出版社2005.1

[4]于晓东主编《80C51单片机原理、开发与应用实例》中国电力出版社2008.10

[5]伍时和主编《数字电子技术基础》清华大学出版社2009.4

[6]谭浩强《C语言设计》清华大学出版社2005.7

附录一:

C语言数字秒表程序

#include

inttime,sec=0,msec=0,temp,select=0,sec2,msec2;//sec、msec:

动态;sec2、msec2:

静态

charSEG[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

charNUM[4]={0};

intSTATIC[8][2];

#defineucharunsignedchar

voiddelay(x)//按键去抖延时

{

inta,b;

for(a=0;a

for(b=0;b<100;b++);

}

voidshow(x,y)//数码管显示

{

inti;

temp=0xEF;//11101111

NUM[0]=x/10;

NUM[1]=x%10;

NUM[2]=y/10;

NUM[3]=y%10;

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

{

P2=temp;

P0=SEG[NUM[i]];

temp=temp<<1;

P0=0xFF;

}

}

voidkey_scan(inti)//按键处理模块

{

if(select==i)

{

sec2=sec;

msec2=msec;

STATIC[i][0]=sec2;

STATIC[i][1]=msec2;

select++;

}

else

{

sec2=STATIC[i][0];

msec2=STATIC[i][1];

}

}

voidscan()//按键扫描模块

{

ucharkey_num;

P1=0x3f;//00111111

key_num=P1;

key_num=key_num&0x1f;

if(key_num!

=0x1f)

{

delay(10);

key_num=P1;

key_num=key_num&0x1f;

if(key_num!

=0x1f)

{

key_num=P1;

switch(key_num)

{

case0x2f:

//00101111

EA=1;

select=0;

break;

case0x37:

key_scan(0);break;//00110111

case0x3b:

key_scan

(1);break;//00111011

case0x3d:

key_scan

(2);break;//00111101

case0x3e:

key_scan(3);break;//00111110

}

while(key_num!

=0x1f)

{

key_num=P1;

key_num=key_num&0x1f;

show(sec2,msec2);

}

}

}

P1=0x5f;//01011111

key_num=P1;

key_num=key_num&0x1f;

if(key_num!

=0x1f)

{

delay(10);

key_num=P1;

key_num=key_num&0x1f;

if(key_num!

=0x1f)

{

key_num=P1;

switch(key_num)

{

case0x4f:

key_scan(4);break;//01001111

case0x57:

key_scan(5);break;//01010111

case0x5b:

key_scan(6);break;//01011011

case0x5d:

key_scan(7);break;//01011101

case0x5e:

//01011110

sec=msec=sec2=msec2=0;

msec=0;

EA=0;

break;

}

while(key_num!

=0x1f)

{

key_num=P1;

key_num=key_num&0x1f;

show(sec2,msec2);

}

}

}

}

voidmain()//主程序

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

TR0=1;

while

(1)

{

if(select==0)

{

show(sec,msec);

}

if(select>0)

{

show(sec2,msec2);

}

scan();

}

}

voidTIMES()interrupt1//定时程序

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

time++;

if(time==1)

{

time=0;

msec++;

if(msec==100)

{

msec=0;

sec++;

if(sec==60)

sec=0;

}

}

}

附录二:

元件清单

序号

名称

数量

型号

1

万用板

1块

2

单片机

1个

STC89C52

3

40引脚插座

1个

4

非门芯片

1个

74HC04

5

4共阳位数码管

2个

LG5641BH

6

按键

11个

7

排针

40个

8

瓷片电容

1个

9

电解电容

2个

104

10

杜邦线

20根

11

0欧电阻

10个

12

10K电阻

10个

13

14引脚插座

1个

14

10K排阻

1个

附录3总电路图

 

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1