单片机MC51多功能秒表设计报告 本文关键词:秒表,多功能,单片机,报告,设计
单片机MC51多功能秒表设计报告 本文简介:单片机课程设计报告设计题目:多功能秒表班级:09电信(1)班姓名:黄伟昭学号:20094081032指导教师:邵海龙调试地点:调试时间:成绩:一、实验要求1.硬件电气原理图一张(含元器件清单一份;所有引脚标注清楚)2、软件程序清单一套(含主要程序流程图,全部源程序及详细的注释)3、使用功能说明书一份
单片机MC51多功能秒表设计报告 本文内容:
单片机课程设计报告
设计题目:
多功能秒表
班
级:
09电信(1)班
姓
名:
黄伟昭
学
号:
20094081032
指导教师:
邵海龙
调试地点:
调试时间:
成
绩:
一、实验要求
1.硬件电气原理图一张(含元器件清单一份;所有引脚标注清楚)
2、软件程序清单一套(含主要程序流程图,全部源程序及详细的注释)
3、使用功能说明书一份(含功能描述及操作指南和收获体会)
4、软件在开发板上调试成功,并能成功表演,仿真成功达到设计课题的要求。
二、实现要求
秒表功能
1、设计可以显示0.01秒—59分59秒00的秒表,最小单位为毫秒;
2、通过按键控制秒表清零、暂停、继续、退出、时间设置、记录等功能;
3、具有倒计时、正计时功能;
4、秒表可以分组存储,批量显示;
三、硬件原理:
1、显示模块:
(1)
七段共阴数码管:
在共阴极结构中,各段发光二极管的阴极连在一起,将此公共点接地,某一段发光二极管的阴极为高电平时,该段发光。
LED显示0~9某个字符时,则要求在a~dp送固定的字段码,如要使LED显示“0”,则要求a、b、c、d、f各引脚为高电平,g和dp为低电平,字段码为“0x3f”
。
dp
g
f
e
d
c
b
a
0
0
1
1
1
1
1
1
0x3f
共阴极字符0~15七段码如下:
字符:
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
字段码:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,(2)
74HC573(八进制
3
态非反转透明锁存器)
高性能硅门
CMOS
器件输入是和标准
CMOS
输出兼容的;加上拉电阻,他们能和
LS/ALSTTL
输出兼容。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
×/u36755X出能直接接到
CMOS,NMOS
和
TTL
接口上
×/u25805X作电压范围:2.0V~6.0V
×/u20302X输入电流:1.0uA
×CMOS
器件的高噪声抵抗特性
2、按键模块:
本次设计采用独立按键。
3、80c51芯片:
80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual
In
Line
Package),内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。
四、流程图
Key3=0?
清零复位
数都=0?
Key2=0?
Y
Y
Y
N
Y
N
Y
Y
Y
Y
Y
N
Y
N
Y
Y
开始
扫描按键
Key5=0?
Flag2=!Flag2
Flag2=0?
Key1=0?
Flag=!Flag
TR0=!TR0
TR0=1?
Flag=0?
倒计时
正计时
显示End
Key3=0?
Flag3=!Flag3
Flag3=0?
Key1=0?
Key2=0?
Key1=0?
秒+1
秒-1
分+1
分-1
显示
Y
五、主程序
#include
#define
uchar
unsigned
char
#define
uint
unsigned
int
uchar
code
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x37,0x00};
uchar
code
table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar
tempdate[8];
uchar
i,x,tt,tt1,w,n,flag,flag1,flag2,flag3,keyn;
char
min_h,min_l,sec_h,sec_l,sec_ph,sec_pl;
uchar
tmin_h[8],tmin_l[8],tsec_h[8],tsec_l[8],tsec_ph[8],tsec_pl[8];
uchar
minh1,minl1,sech1,secl1,secph1,secpl1;
char
minh,minl,sech,secl,secph,secpl;
sbit
wela=P2^6;
sbit
dula=P2^7;
sbit
key1=P2^0;
sbit
key2=P2^1;
sbit
key3=P2^2;
sbit
key4=P2^3;
sbit
key5=P2^4;
sbit
beep=P2^5;
void
delay(uint
z)//12mhz延时
1ms
{
uint
y;
while(z--)
for
(y=89;y>0;y--);
}
void
beep1(uchar
z)
{
uchar
i;
for(i=0;i0
if(sec_pl0)
if(sec_pl==10){sec_pl=0;sec_ph++;}
if(sec_ph==10){sec_ph=0;sec_l++;}
if(sec_l==10){sec_l=0;sec_h++;}
if(sec_h==6){min_l++;sec_h=0;}
if(min_l==10){min_l=0;min_h++;}
if(min_h==6)clr();
}
}
void
time1()
interrupt
3
{
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
dis(0,6);
}
六、使用说明书
多功能秒表使用说明书
一
秒表显示方式:
多功能秒表可以显示从(0.00秒到59分59秒99),当显示的时间超过1小时后,数码管数据清零,显示情况如下图:
图一
二
秒表按键设置:
多功能秒表共设置有5个按键如图:
图二
三
秒表的使用方法:
1、正计时:
多功能秒表一开机,默认为正计时工作方式,当按下key1(开始/暂停)键后,秒表开始计时。在计时过程中,可以通过key1(开始/暂停)键,来控制计时的暂停或开始,亦可以通过key2(记录)键来记录时间数据,用户每按一次key2(记录)键,喇叭响一声,则记录一组时间数据,一共可以记录7组数据。若时间数据存满以后,计时停止,再按一次key2(记录)键可以返回查看原先记录的数据(若需要记录的数据不足七组,可以在记录数据组数到达所需要求时先暂停计时然后按下key2(记录)键进入查看数据,未记录的数据组默认显示为(0000.00))。在查看数据时,按住key2(记录)键最后一位数码管将会显示要显示的数据组数,如图三,当放开key2(记录)键后将显示的是记录下的第二组数据。图三
2、倒计时:
首先使秒表暂停,然后按住key4(模式切换)键,此时最后一位数码管显示“d”,放开该键,则秒表进入倒计时模式,再次按住key4(模式切换)键,最后一位数码管显示“A”,放开该键则可以切换回正计时模式(如图四所示)。倒计时模式下也可以记录7组数据,记录和查看方法与正计时相同。
图四
当倒计时时间进入最后10秒倒计时时,每隔一秒喇叭响一声。当再度跳为0000.00时,计时停止,在数码管上闪烁”End”喇叭长响(如图五所示)。
图五
3、时间设置
首先使秒表暂停,长按key5(时间设置),直到最后一位数码管显示“A”且喇叭响一声(如图六所示)。放开该键,后可以看到秒的个位为长亮,其它数码管闪烁显示,此时按一下key1(开始/暂停)键可以使秒加1,按一下key2(记录)键,可以使秒减一,按下key3(复位)键可以看到分个位变为常亮,其余闪烁显示,此时按一下key1(开始/暂停)键可以使分加1,按一下key2(记录)键,可以使分减一。当时间设置完成后再长按key5(时间设置)键,直到最后一位数码管显示“A“,且喇叭响一声后松开退出时间设置。图六
七、心得体会
设计的过程中,我受益匪浅。首先,我意识到平时扎实的基础是关键,只有平时学得牢,在面对课题时思路才会敏捷,在面对问题时才会快速找到症结所在并找到解决之道。其次,程序设计是个很复杂的过程,在大的构思实现之后我们往往还要在很多的细节上对程序加以改进。
在过去的大学学习中,我们大多数接触的是专业课,我们在课堂上学习的也都是专业课的理论知识,为了锻炼我们的实践能力把所学的专业理论知识运用到实践中去,课程设计为我们搭建了这样一个练习的平台。
在这次课程设计中,我们培养了在实践中研究问题、分析问题和解决问题的能力,并意识到程序设计不仅要注重整体,更要注重细节;当程序运行过程中遇到问题时,我们要打开思路,发挥创新精神,力求用最有效简洁的方法解决;遇到难以解决的困难时,我们要多多请教书本、老师、同学,坚持不懈,就算程序运行失败了也不要气馁。
这一次的课程设计实验,让我体会到知识的应用所带来的成就感。与此同时,单片机课程设计也使我们体会到了团结的力量,再复杂的程序在我们的讨论中也可以得到答案。课程设计所带来的经验可以让我更好的学习。
八、整体电路仿真图