简易秒表设计实验报告
时间: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软件中,即使程序不会需要模仿别人的时候,也必须通过自身再打一遍程序, 在多次的通过打印过程,渐渐记住并理解程序,也有助于我们以后的程序创新。
内容:实验题目;实验目的;实验原理;实验步骤;数据处理;结果分析
分数