使用单片机设计实现软件延时00到59秒计时器的资料说明

发布者:MysticGlow最新更新时间:2023-08-09 来源: elecfans关键字:单片机  软件延时  计时器 手机看文章 扫描二维码
随时随地手机看文章

1. 实验任务

如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。


2. 电路原理图

图4.11.1


3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

(2. 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。


4. 程序设计内容

(1. 在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,从新秒计数。

(2. 对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。

(3. 在数码上显示,仍通过查表的方式完成。

(4. 一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1秒时间为1.002秒。

DELY1S: MOV R5,#100

D2: MOV R6,#20

D1: MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

DJNZ R5,D2

RET

汇编源程序

Second EQU 30H

ORG 0

START: MOV Second,#00H

NEXT: MOV A,Second

MOV B,#10

DIV AB

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P0,A

MOV A,B

MOVC A,@A+DPTR

MOV P2,A

LCALL DELY1S

INC Second

MOV A,Second

CJNE A,#60,NEXT

LJMP START

DELY1S: MOV R5,#100

D2: MOV R6,#20

D1: MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

DJNZ R5,D2

RET

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

7. C语言源程序

#include 《AT89X51.H》

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char Second;

void delay1s(void)

{

unsigned char i,j,k;

for(k=100;k》0;k--)

for(i=20;i》0;i--)

for(j=248;j》0;j--);

}

void main(void)

{

Second=0;

P0=table[Second/10];

P2=table[Second];

while(1)

{

delay1s();

Second++;

if(Second==60)

{

Second=0;

}

P0=table[Second/10];

P2=table[Second];

}

}


关键字:单片机  软件延时  计时器 引用地址:使用单片机设计实现软件延时00到59秒计时器的资料说明

上一篇:51单片机GPIO结构框图与工作原理
下一篇:使用单片机制作一个报警器的资料和源代码说明

推荐阅读最新更新时间:2024-10-24 11:19

使用单片机设计实现软件延时00到59秒计时器的资料说明
1. 实验任务 如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。 2. 电路原理图 图4.11.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。 (2. 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b
[单片机]
使用<font color='red'>单片机</font>设计实现<font color='red'>软件</font><font color='red'>延时</font>00到59秒<font color='red'>计时器</font>的资料说明
00-59秒计时器(利用软件延时
1. 实验任务   如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。 2. 电路原理图 图4.11.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。 (2. 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……
[单片机]
00-59秒<font color='red'>计时器</font>(利用<font color='red'>软件</font><font color='red'>延时</font>)
11. 00-59秒计时器(利用软件延时
1. 实验任务 如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。 2. 电路原理图 图4.11.1 3. 系统板上硬件连线 (1. 把 单片机系统 区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到 四路静态数码显示模块 区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b, ,P0.7/AD7对应着h。 (2. 把 单片机系统 区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到 四路静态数码显示模块 区域中的任一个a-h端口上;要求:P2.0/A8对应着a
[单片机]
11. 00-59秒<font color='red'>计时器</font>(利用<font color='red'>软件</font><font color='red'>延时</font>)
00-59秒计时器(利用软件延时
1. 实验任务 如下图所示,在 AT89S51 单片机的 P0 和 P2 端口分别接有两个共阴数码管, P0 口驱动显示秒时间的十位,而 P2 口驱动显示秒时间的个位。 2. 电路原理图 图 4.11.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的 P0.0/AD0 - P0.7/AD7 端口用 8 芯排线连接到“四路静态数码显示模块”区域中的任一个 a - h 端口上;要求: P0.0/AD0 对应着 a , P0.1/AD1 对应着 b , …… , P0.7/AD7 对应着 h 。 (2. 把“单片机系统”区域中的
[单片机]
00-59秒<font color='red'>计时器</font>(利用<font color='red'>软件</font><font color='red'>延时</font>)
STM32 使用通用计时器实现微秒延时
为了驱动ARF2496K这款芯片,做STM32上的移植,所以第一步需要解决的就是时序问题,很显然在STM32下类似于51的延时方法并不适用,自然想到了采用定时器进行定时来延时。目前使用的是查询方式进行延时。 环境: STM32F107主控,采用STLINK仿真 代码如下: static void TIM5_Init_Query(CALC_TYPE type,uint32_t val) { TIM_TimeBaseInitTypeDef Tim5; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); Tim5.TIM_Period=1; //??? if(typ
[单片机]
STM32 使用通用<font color='red'>计时器</font>实现微秒<font color='red'>延时</font>
分享一个按键消抖和数码管显示都不用延时函数的倒计时器
最近一直在研究程序中怎么取消延时函数,经过一段时间的摸索,终于有所收获,随手写了个倒计时器,倒计时器在生活中很多地方都会用到,只要把电路稍加改进,就可以做成很实用的东西,程序仿真通过,等有时间做成实物,先把程序发上来分享一下。 随便截了几张图。 仿真界面: 程序界面: 源程序,写得比较粗糙,喜欢的可以共同研究一下
[单片机]
分享一个按键消抖和数码管显示都不用<font color='red'>延时</font>函数的倒<font color='red'>计时器</font>
STM32 使用通用计时器实现微秒延时
为了驱动ARF2496K这款芯片,做STM32上的移植,所以第一步需要解决的就是时序问题,很显然在STM32下类似于51的延时方法并不适用,自然想到了采用定时器进行定时来延时。目前使用的是查询方式进行延时。 环境: STM32F107主控,采用STLINK仿真 代码如下: static void TIM5_Init_Query(CALC_TYPE type,uint32_t val) { TIM_TimeBaseInitTypeDef Tim5; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); Tim5.TIM_Period=1; //?
[单片机]
STM32 使用通用<font color='red'>计时器</font>实现微秒<font color='red'>延时</font>
8051系列单片机软件精确延时研究(一)
前言   最近自学STC公司的8051系列单片机,编程中如流水灯等非精确延时多用软件延时实现,写了几个类似DelayX10us(unsigned char x)的函数方便调用,函数内部的语句多是用STC官方延时程序再自己套一个for或者do..while循环改造而成,像这样: //非精确延时10*Xus //@12.000MHz 12T模式 void DelayX10us(unsigned char x) { unsigned char i; for (; x 0; x--) { _nop_(); i = 2; while (--i); } }   由于不懂汇编,所以对代码
[单片机]
8051系列<font color='red'>单片机</font><font color='red'>软件</font>精确<font color='red'>延时</font>研究(一)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved