⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 转速表.c

📁 转速表:硬件简单
💻 C
字号:
/********************************************************/
//项目名称:转速表
//硬件结构:89c51+4位共阳数码管
/********************************************************/
#include <at89x51.h>
unsigned int led[4],count_x=0;
unsigned long int v=0;
unsigned char count_n=0,i,a,b,c;
unsigned char code table1[]={0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90};//共阳极数码管的编码 

void display(unsigned int velocity)//显示函数
{
    led[0]=velocity/0x3E8;
    led[1]=(velocity-led[0]*1000)/0x64;
    led[2]=(velocity-led[0]*1000-led[1]*100)/0xA;
    led[3]=velocity%0xA;
    for(i=0,c=0x01;i<=4,c<=0x08;c*=2,i++)
    {    
        EA=0;//关闭中断
        P0=table1[led[i]];
        P2=c;
        for(a=6;a>0;a--)
            for(b=248;b>0;b--);
    }

    EA = 1; //允许CPU中断
    ET0 = 1; //定时器0中断打开
    EX0=1;//打开外部中断0
    IT0=1;//脉冲方式触发*/    
}
void main(void)
{
    EA = 1; //允许CPU中断
    ET0 = 1; //定时器0中断打开
    EX0=1;//打开外部中断0
    IT0=1;//脉冲方式触发
    TMOD = 0x1; //设定时器0为模式1,16位模式
    TH0=0xFF;
    TL0=0xCD; //设定时值为50us
    TR0 = 1; //开始定时
    while(1);
}

void outinterrupt0(void) interrupt 0//外部中断服务程序
{
    count_n++;
    if(count_n==2)
    {
        v=300000/count_x;
        count_x=0;
        count_n=0;            
        display(v);        
    }
}

void KeyAndDis_Time0(void) interrupt 1//定时中断服务程序
{
    TH0=0xFF;
    TL0=0xDA; //设定时值
    if(count_n==1)
    {
        count_x++;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -