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

📄 7.c

📁 51单片机控制4位7段数码管显示
💻 C
字号:
#include <reg51.h>   
  
#define uchar unsigned char   
  
void delay_ms(uchar ms);  // 延时毫秒@12M,ms最大值255   
void display();           // 显示子程序   
  
uchar code dis_code[10] = {0xc0,0xf9,0xa4,0xb0,0x99,  //段码表   
                          // 0    1    2    3    4      对应内容   
                           0x92,0x82,0xf8,0x80,0x90};   
                          // 5    6    7    8    9   
  
uchar data dis_0 = 0;     // 个位值   
uchar data dis_1 = 0;     // 十位值   
uchar data dis_2 = 0;     // 百位值   
uchar data dis_3 = 0;     // 千位值   
  
void main()   
{   
    P2 = 0x00;           // 关所有数码管   
  
    while(1)   
    {   
        display();       // 调用显示子程序   
           
        dis_0++;         // 个位值加1   
        if(dis_0 != 10)  // 个位未到10则结束此次循环   
            continue;   
  
        dis_0 = 0;       // 个位到10清零           
        dis_1++;         // 十位值加1(个位到10的进位)   
        if(dis_1 != 10)  // 十位未到10则结束此次循环   
            continue;   
  
        dis_1 = 0;       // 十位到10清零           
        dis_2++;         // 百位值加1(十位到10的进位)   
        if(dis_2 != 10)  // 百位未到10则结束此次循环   
            continue;   
  
        dis_2 = 0;       // 百位到10清零           
        dis_3++;         // 千位值加1(百位到10的进位)   
        if(dis_3 != 10)  // 千位未到10则结束此次循环   
            continue;   
  
        dis_3 = 0;       // 千位到10清零  
    }   
}   
void display()                // 显示子程序   
{   
    uchar data i = 50;        // 用于延长每四位数的显示时间   
    while(i--)                // 直到i减为0   
    {   
        P0 = dis_code[dis_0]; // 取个位的段码   
        P2 = 0xf8;            // 开个位显示(P2.7口控制个位数码管)   
        delay_ms(1);          // 延时1ms使四位数码管动态显示时能看清   
        P2 = 0x00;   
        P0 = dis_code[dis_1]; // 取十位的段码   
        P2 = 0xf4;            // 开十位显示(P2.6口控制十位数码管)   
        delay_ms(1);          // 延时1ms作用同上   
        P2 = 0x00;   
        P0 = dis_code[dis_2]; // 取百位的段码   
        P2 = 0xf2;            // 开百位显示(P2.5口控制十位数码管)   
        delay_ms(1);          // 延时1ms作用同上   
         P2 = 0x00;  
        P0 = dis_code[dis_3]; // 取千位的段码   
        P2 = 0xf1;            // 开千位显示(P2.4口控制十位数码管)   
        delay_ms(1);
		P2 = 0x00;          // 延时1ms作用同上   
    }   
}   
void delay_ms(uchar ms)       // 延时毫秒@12M,ms最大值255   
{   
    uchar i;   
    while(ms--)   
        for(i = 0; i < 124; i++);   
}   

⌨️ 快捷键说明

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