秒表设计策划书.docx

上传人:b****5 文档编号:7676591 上传时间:2023-01-25 格式:DOCX 页数:9 大小:812.91KB
下载 相关 举报
秒表设计策划书.docx_第1页
第1页 / 共9页
秒表设计策划书.docx_第2页
第2页 / 共9页
秒表设计策划书.docx_第3页
第3页 / 共9页
秒表设计策划书.docx_第4页
第4页 / 共9页
秒表设计策划书.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

秒表设计策划书.docx

《秒表设计策划书.docx》由会员分享,可在线阅读,更多相关《秒表设计策划书.docx(9页珍藏版)》请在冰豆网上搜索。

秒表设计策划书.docx

秒表设计策划书

 

单片机的秒表设计

策划书

 

姓名:

________

班级:

________

一、课题题目

秒表设计——用C51设计一个7SEG-MPX2-CA数码管

显示“秒表”,显示时间为00~60秒,每秒自动加一。

二、课题内容

本课题利用单片机的定时器/计数器定时和记数的原理,结合AT89C51单片机、7SEG-MPX2-CA数码管来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。

用C51设计一个7SEG-MPX2-CA数码管显示“秒表”,显示时间为00~60秒,每秒自动加一。

其中设计了两个开关按键:

按一下PB0的按钮开关,即可开始定时。

再按一下PB0按钮开关,即可停止定时。

PB1所接的按钮开关的功能室将秒表归零,按一下PB1按钮开关,则不管有没有定时都要从00开始。

三、需要的元器件

7SEG-MPX2-CA数码管1个

AT89C51单片机1个

BUTTON开关3个

CAP电容3个

CRYSTAL晶振1个

RES电阻3个

四、原理图

如图1简易码表电路图

 

五、实验流程图

如图2主程序INTO中断子程序

如图3INT0中断子程序INT1中断子程序

如图4T0中断子程序T1中断子程序

六、实验电路图

如图5

如图6

如图7

如图

七、实验程序

;******************************************************************

;/*ch07-5-4.c-码表实验-PB0:

开始/暂停PB1:

归零*/

//==声明区================================

#include//定义8x51暂存器之标头档,P2-17~19

#defineSEGP2//定义七节显示器接至Port2

#defineSCANPP1//定义扫瞄线接至Port1

sbitPB0=P3^2;//PB0按钮接至P3.2(INT0)

sbitPB1=P3^3;//PB1按钮接至P3.3(INT1)

/*声明T0计时相关声明*///THxTLx

#definecount_M150000//T0(MODE1)之计量值,0.05s

#defineTH_M1(65636-count_M1)/256//T0(MODE1)计量高8位元

#defineTL_M1(65636-count_M1)%256//T0(MODE1)计量低8位元

intcount_T0=0;//计算T0中断次数

/*声明T1扫瞄相关声明*/

#definecount_M2250//T1(MODE2)之计量值,0.25ms

#defineTH_M2(256-count_M2)//T1(MODE2)自动载入计量

#defineTL_M2(256-count_M2)//T1(MODE2)计数量

charcount_T1=0;//计算T1中断次数

/*声明七节显示器驱动信号阵列(共阳)*/

charcodeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,//数字0-4

0x92,0x83,0xf8,0x80,0x98};//数字5-9

chardisp[2]={0xc0,0xc0};//声明显示区阵列初始显示00

/*声明基本变量*/

charseconds=0;//秒数

charscan=0;//扫瞄信号

voiddebouncer(void);//声明防弹跳函数

//==主程序================================

main()//主程序开始

{IE=0x8f;//10001111,启用INT0/1、TF0/1中断(6-4页)

TCON=0x00;//设定INT0/1采低态动作(6-4页)

TMOD=0x21;//00100001,T1采mode2、T0采mode1

TH0=TH_M1;TL0=TL_M1;//设置T0计数量高8位元、低8位元

TR0=0;//不启动T0(7-7页)

TH1=TH_M2;TL1=TL_M2;//设置T1自动载入值、计数量

TR1=1;//启动T1(7-7页)

P3=0xff;//规划PB0/PB1输入

while

(1);//无穷回圈,程序停滞

}//主程序结束

//==T0中断子程序-计算并显示秒数===================

voidT0_1s(void)interrupt1//T0中断子程序开始

{TH0=TH_M1;TL0=TL_M1;//设置T0计数量高8位元、低8位元

if(++count_T0==20)//若中断20次,即0.05x20=1秒

{count_T0=0;//重新计次

seconds++;//秒数加1

if(seconds==60)//若超过60秒

seconds=0;//秒数归0,重新开始

}//if叙述结束(中断20次)

disp[1]=TAB[seconds/10];//填入十位数显示区

disp[0]=TAB[seconds%10];//填入个位数显示区

}//T0中断子程序结束

//===T1中断子程序-扫瞄===========================

voidT1_8ms(void)interrupt3//T1中断子程序开始

{if(++count_T1==32)//若中断32次,即0.25mx32=8ms

{count_T1=0;//重新计次

if(++scan==3)scan=1;//若超过十位数,显示个位

SEG=0xff;//关闭7段显示器

SCANP=~scan;//输出扫瞄信号

SEG=disp[scan-1];//输出显示信号

}//结束if判断(中断32次)

}//T0中断子程序结束

//==int0中断子程序-码表之开始/暂停==================

voidint0_sw(void)interrupt0//int0中断子程序开始

{TR0=~TR0;//切换T0为开始/暂停

while(PB0==0);//等待放开PB0

debouncer();//防弹跳

}//int0中断子程序结束

//==int1中断子程序-码表归零=======================

voidint1_RST(void)interrupt2//int1中断子程序开始

{while(PB1==0);//等待放开PB1

debouncer();//防弹跳

seconds=0;//秒数归零

disp[0]=disp[1]=0xc0;//显示

}//int1中断子程序结束

//===防弹跳函数=====================================

voiddebouncer(void)//防弹跳函数开始

{inti;//声明变量i

for(i=0;i<2400;i++);//连数2400次,约20ms

}//防弹跳函数结束

;

 

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

当前位置:首页 > 高中教育 > 小学教育

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

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