基于51单片机的数字秒表课程设计Word文档下载推荐.docx

上传人:b****1 文档编号:4785185 上传时间:2023-05-04 格式:DOCX 页数:27 大小:327.72KB
下载 相关 举报
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第1页
第1页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第2页
第2页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第3页
第3页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第4页
第4页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第5页
第5页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第6页
第6页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第7页
第7页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第8页
第8页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第9页
第9页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第10页
第10页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第11页
第11页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第12页
第12页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第13页
第13页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第14页
第14页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第15页
第15页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第16页
第16页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第17页
第17页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第18页
第18页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第19页
第19页 / 共27页
基于51单片机的数字秒表课程设计Word文档下载推荐.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的数字秒表课程设计Word文档下载推荐.docx

《基于51单片机的数字秒表课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字秒表课程设计Word文档下载推荐.docx(27页珍藏版)》请在冰点文库上搜索。

基于51单片机的数字秒表课程设计Word文档下载推荐.docx

利用其定时器的原理,数码管以及定时器中断来设计计时器。

将软硬件结合起来,使得系统能实现0.00~655.36秒的计时。

另外,通过独立按键的设计来对秒表进行控制。

key1键控制计时的开始与暂停、key2键控制计时时的保存数据然后可以通过key4键控制数据的输出(可以保存十个,保存十个时秒表可以停止,该功能可用于赛跑中的计时)、key3键控制“清零”和保存按下清零键前的最后一次所计时间。

(特别声明:

每次处于“暂停状态”的时间都可以在此基础之上进行计时)。

方案二:

用AT89C51设计一个1602液晶显示的“秒表”,显示时间范围为0.00~655.36秒(此处可以通过设置两个变量进行进位操作来达到最大计数9999.99秒),计时精度达到0.01秒。

利用其定时器的原理,1602液晶以及定时器中断来设计计时器。

key1键控制计时的开始与暂停、key3键控制“清零”和保存按下清零键前的最后一次所计时间。

注:

由于开发板的键盘对液晶显示有影响,顾放弃数码管秒表显示中的部分功能。

三、硬件设计

原理图:

(程序可用于在下图在软件中仿真也可以用于开发板)

四、系统的软件设计

1、软件整体设计思路:

将程序模块化与功能,含有多个子程序的调用与嵌套。

通过对按键的是否按下来对秒表进行操作,按键功能在设计目标的具体操作中已经展现。

10毫秒秒定时采用定时器T0中断的工作方式1进行,中断及计数的开启与关闭受控于按键处理程序。

2、软件流程图:

如图所示。

(注:

用1602液晶的方案中无key2与key4)

3、程序:

(1)数码管秒表显示程序:

/**********************************

数码管显示秒表计时

**********************************/

头文件宏定义定义

#include<

reg52.h>

#defineuintunsignedint

#defineucharunsignedchar

uintt,tt;

uinttable[10];

ucharyi,er,san,si,wu,liu,i,j,k,l,m,flag;

ucharcodetable0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

ucharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

ucharcodetable2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

位定义

***********************************/

sbitdula=P2^6;

sbitwela=P2^7;

sbitkey1=P3^4;

//开始与暂停

sbitkey2=P3^5;

//保存10次时间

sbitkey3=P3^6;

//清零与恢复

sbitkey4=P3^7;

//读取保存的数据

函数的申明

voidinit();

voiddisplay(flag);

voiddisplay1();

voidkeyscan1();

voidkeyscan2();

voidshu(uintt);

voiddelay(uchard);

/*********************************

主函数

voidmain()

{

init();

while

(1)

{

display1();

keyscan2();

}

}

初始化函数

voidinit()

m=1;

TMOD=0x01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

EA=1;

ET0=1;

TR0=0;

shu(t);

总显示函数

voiddisplay(flag)

while(flag)

keyscan1();

数据显示函数

voiddisplay1()

P0=table0[liu];

dula=1;

dula=0;

P0=0xff;

P0=table2[0];

wela=1;

wela=0;

delay(5);

P0=table0[wu];

P0=table2[1];

P0=table0[si];

P0=table2[2];

P0=table1[san];

P0=table2[3];

delay(3);

P0=table0[er];

P0=table2[4];

P0=table0[yi];

P0=table2[5];

/**************************************

动态显示数字循环中的键盘检测

**************************************/

voidkeyscan1()

if(key1==0)

{

delay(10);

if(key1==0)

flag++;

while(!

key1);

if(flag%2)//判断是否暂停

TR0=1;

else

TR0=0;

}

if(key2==0)

if(key2==0)

{

if(j==10)

{

j=0;

flag++;

}

else

table[j]=t;

j++;

}

key2);

if(key3==0)

if(key3==0)

l++;

if(l%2)//判断是否清零还是恢复

tt=t;

t=0;

shu(t);

t=tt;

shu(tt);

display1();

key3);

if(key4==0)

if(key4==0)

if(k==10)k=0;

t=table[k];

shu(t);

k++;

key4);

/***************************************

主程序中计时暂停时的键盘检测

***************************************/

voidkeyscan2()

if(key1==0)

delay(10);

flag++;

while(!

if(flag%2)

TR0=1;

else

TR0=0;

display(flag%2);

if(key4==0)

if(k==10)k=0;

t=table[k];

shu(t);

display1();

k++;

数字的拆分

voidshu(uintt)

liu=t/100000;

wu=t/10000%10;

si=t/1000%10;

san=t/100%10;

er=t/10%10;

yi=t%10;

if(liu==0)liu=10;

if(wu==0)wu=10;

if(si==0)si=10;

延时函数

voiddelay(uchard)

unsignedchara,b,c;

for(c=d;

c>

0;

c--)

for(b=120;

b>

b--)

for(a=2;

a>

a--);

/*****************************************

定时器0工作方式110毫秒计时

******************************************/

voidtime0()interrupt1//计时10毫秒

t++;

if(t%1000==170)

if(m%2)

P1=0xaa;

m++;

else

P1=0x55;

(2)1602液晶秒表显示程序:

1602液晶显示秒表计时

#defineuintunsignedint

ucharflag,yi,er,san,si,wu,liu,l,m,num;

ucharcodetable[]="

0123456789"

;

ucharcodetable1[]="

***STOPWATCH***"

位定义

sbitLCDE=P3^4;

sbitrs=P3^5;

sbitkey1=P3^6;

sbitkey3=P3^7;

函数的申明

voidwrite_com(ucharcom);

voidwrite_da(ucharda);

voiddisplay();

voiddelay(ucharz);

主函数

voidmain()

{

初始化函数

voidinit()

{dula=1;

P0=0x00;

LCDE=0;

write_com(0x01);

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x80);

for(num=0;

num<

16;

num++)

write_da(table1[num]);

delay(3);

write_com(0x80+0x45);

display1();

写指令

voidwrite_com(ucharcom)

P0=com;

rs=0;

LCDE=1;

写数据

voidwrite_da(ucharda)

P0=da;

rs=1;

数的拆分

voidshu(uintt)

voidkeyscan1()

{

if(key1==0)

{delay(10);

if(flag%2)

if(key3==0)

{l++;

if(l%2)

{tt=t;

t=0;

{t=tt;

shu(tt);

}

voiddisplay()

while(flag%2)

voiddisplay1()

write_com(0x80+0x45);

delay(5);

write_da(table[liu]);

write_da(table[wu]);

write_da(table[si]);

write_da(table[san]);

write_da(0x2e);

write_da(table[er]);

write_da(table[yi]);

voiddelay(ucharz)

{uchari;

for(z;

z>

z--)

for(i=110;

i>

i--);

voidtime0()interrupt1

{P1=0xaa;

五、系统的调试及设计结果

1602液晶——秒表显示效果图:

上电状态:

过程中灯亮状态:

四位数显示:

LED数码管——秒表显示效果图:

上电初始状态:

三位数显示:

灯亮状态:

六、创新实验室课程设计小结

此次为期九天的实训即将结束了,我对自己在此期间的表现还是比较满意的。

还记得刚开始接触51单片机还是在去年,那时对单片机可谓是一窍不通。

接触多了之后,渐渐的不再觉得它那么的难懂,自己对单片机也有了点认知。

通过对本次的课程设计,也使自己深刻的认识到自己的很多不足之处。

第一天,了解了一些关于robocup比赛的知识,同时也了解了我们院刚刚参加robocup比赛的一些情况,结合这些参赛队伍,毛老师讲了一些关于比赛队伍的小车的设计过程以及实现一些功能所需的条件。

其中,了解了循迹,避障,超声测距等电路

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

当前位置:首页 > 人文社科 > 法律资料

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

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