00-59秒计时器,0-59s Timer

00-59秒计时器,0-59s timer
关键字:at89s51,计时器电路
1.  实验任务
如下图所示,在at89s51单片机的p0和p2端口分别接有两个共阴数码管,p0口驱动显示秒时间的十位,而p2口驱动显示秒时间的个位。
2.  电路原理图
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
5.  程序框图
6.  汇编源程序
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
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%10];
  while(1)
    {
      delay1s();
      second++;
      if(second==60)
        {
          second=0;
        }
      p0=table[second/10];
      p2=table[second%10];
    }
}

安科瑞ARD2/ARD2L系列智能电动机保护器可用于煤矿、石化、冶炼、建筑等行业,欠压报警
RA6T2的A/D转换器性能分析
AI将实现国内IC设计业的解决之道
为了不被拖后腿小米6最后还是要用 自主研发处理器
希捷科技推出一键(one-click)备份的储存装置
00-59秒计时器,0-59s Timer
蓝牙主动降噪耳机 最高性能无线蓝牙耳机排行
宁德时代不再单是电池供应商的角色更是多元的能源服务商
指纹锁的特点
Molex莫仕公布全球汽车架构和驾驶体验调研结果
Rokid推出全屋智能语音化解决方案2.0
全方位解读应急仓储管理的解决方案
索尼概念车由Aibo机器狗团队设计,有L2级自动驾驶功能
高低速CAN总线架构的基本概念
电梯数据采集器,实现智能化管理的关键
浅谈工厂管理软件的作用
什么是人脸识别技术?人脸识别技术能否辨别撞脸呢?
碧桂园对未来机器人的思考,是未来想走的道路
谷歌宣布Gboard 输入法将支持摩尔斯电码输入,以帮助残障人士交流
国际货币金融体系的重构是怎样的一个趋势