单片机c51,脉冲计数(使用定时器和计数器,附带proteus线路图)

首先代码

#include "reg51.h"
#include "absacc.h"

#define uchar unsigned char 
#define uint unsigned int 

uchar num[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
uchar wei[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};
  
uint n1=0;
uint n2=0;


void delay(unsigned int t){
    unsigned char i;
    for(;t>0;t--){
        for(i=300;i>0;i--);
    }
}

// p1控制哪一位显示
// p2控制显示什么数字

// T0定时,T1计数
// 当T0定时间到了,就取出T1计数值,然后显示到数码管上面


void main(void) {

     TMOD=0X51; // T0定时,T1计数,都是16位的

     TH0=(65536-50000)/256; // 定T0的时间位50ms
     TL0=(65536-50000)%256;

     ET0=1; 
     EA = 1; 

     TR0=1; // 启动T0
     TR1=1; // 启动T1


    while(1){
        P1=wei[7];
        P2=num[n1%10];
        delay(10);
        P1=wei[6];
        P2=num[(n1/10)%10];
        delay(10);
        P1=wei[5];
        P2=num[(n1/100)%10];
        delay(10);
        P1=wei[4];
        P2=num[(n1/1000)%10];
         delay(10);
        P1=wei[3];
        P2=num[(n1/10000)%10];
        delay(10);
        P1=wei[2];
        P2=num[(n1/100000)%10];
        delay(10);
        P1=wei[1];
        P2=num[(n1/1000000)%10];
        delay(10);
        P1=wei[0];
        P2=num[(n1/10000000)%10];
        delay(10);

    }

}

// 用T0定时
void timer ()interrupt 1
{
     TH0=(65536-50000)/256; // 定T0的时间位50ms
     TL0=(65536-50000)%256;

     n1=TH1;
     n2=TL1;
     n1=TH1*256+n2;
     
     TH1=0;
     TL1=0; 


        
}


线路图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值