简易秒表设计实验报告

来源:工作范文网 时间:2020-10-22 09:56:20

v1.0

v1.0可编辑可修改

PAGE

PAGE #

实验报告

系别信工系专业 班级 姓名 学号

课题名称:

简易秒表设计

实验目的:

1、 熟悉Keil C51软件的使用方法及 proteus仿真软件的使用;

2、 综合运用所学的理论知识(数码管、按键) ,通过实践加强对所学知识的理解,具备设 计单片机应用系统的能力。

3、 通过本次试验,增强自己的动手能力。认识单片机在日常生活中的应用的广泛性,实用 性。

设计要求:

制作简易秒表,用三个按键分别实现秒表的启动、 停止与复位,利用两位共阴级的数码管显

示时间。

设计思路:

硬件设计:数码管部分采用 2位共阴极的数码管,在 P0 口接上拉电阻,公共端低电 平扫描。按键电路部分,将按键一侧与单片机任一 I/O 口相连。

软件设计:模块化思想,使用定时器T0的工作方式1,编写显示子程序,延时子程序, 初始化程序,主程序设计时注意按键消抖。

原理图:

RP1

RESPACK-8

C1

」—r

Q

C2

TlL

R1

29

31

19

b XTAL1

P0.0/AD0

P0.1/AD1

P0.2/AD2

XTAL2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

RST

P0.7/AD7

P2.0/A8

P2.1/A9

P2.2/A10

PSEN

P2.3/A11

ALE

P2.4/A12

EA—

P2.5/A13

P2.6/A14

P2.7/A15

P1.0

P3.0/RXD

P1.1

P3.1/TXD

P1.2

P3.2/INT0

P1.3

P3.3/IN

P1.4

P3.4/T0

P1.5

P3.5/T1

P1.6

P3.6/WR

P1.7

P3.7/RD

U1

38

37

18

35

33

9

21

1

10

2

11

4

AT89C51

13

T6-

6

39

12

2 3 4 5 6 7 8 9

源代码:

#in clude<> #defi ne uint un sig ned int

定义"

定义"启动"按钮 定义"停止"按钮 定义"复位"按钮 定义位选

TOC \o "1-5" \h \z sbit key1=P3A0; //

sbit key2=P3A1; //

sbit key3=P3A2; //

sbit wei 仁卩2人6; // sbit wei2=P2A7;

uchar aa;uchar temp;uchar shi;uchar ge;

uchar code table[]={

共阴极数码真值表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

共阴极数码真值表

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; // void delay( uint z)

{

ui nt x,y;

for(x=z;x>0;x--)

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

}

void display(uchar shi,uchar ge) // 显示子程序

{

shi=temp/10;

ge=temp%10; //分离个位和十位

wei1=0; //送位选

PO=table[shi];〃 使用动态扫描的方法实现数码管显示

delay(1);

wei仁1; //关闭位选

wei2=0;

P0=table[ge];

delay(1);

wei2=1;

}

void init() //初始化程序

{

aa=0;

temp=0;

TMOD=0x01; //使用定时器 T0的方式1

TH0=0x4c;

TL0=0x00; // 定时 50ms 中断一次

EA=1; //终端总允许

ET0=1; //允许定时器T0中断

void timerO() interrupt 1 {

TH0=0x4c;

//重装初值

TL0=0x00;

aa++;

//中断计数值加1

if(aa==20)

//中断20次后,定时时间为 20*50ms=1000ms=1s

{

aa=0;

temp++;

if(temp==60) //秒表到达60s后回零

{

temp=0;

}

}

}

void mai n()

{

init(); //调用初始化子程序

while(1)

{

if(key1==0) // 检验启动按钮是否按下 {

delay(10);〃 延时去抖动

if(key1==0);〃 再次检测启动按钮

{

while(!key1);〃 松手检测

TR0=1; //启动定时器开始工作

}

}

if(key2==0) //

{

delay(10);

if(key2==0)

{

while(!key2);

TR0=0;

}

}

if(key3=0)

{

delay(10);

if(key3==0)

{

while(!key3);

temp=0;

shi=0;

ge=0;

TR0=0;

}

}

display(shi,ge);

实验结果:

在proteus中编写程序,编译调试后生成hex文件,将hex文件加到仿真电 路中,通过对简易秒表进行演示,达到设计要求。。

实验心得

在keil软件中,即使程序不会需要模仿别人的时候,也必须通过自身再打一遍程序, 在多次的通过打印过程,渐渐记住并理解程序,也有助于我们以后的程序创新。

内容:实验题目;实验目的;实验原理;实验步骤;数据处理;结果分析

分数