首页 > 其他分享 >51驱动四个1位数码管/*网上大都是驱动一个4位的数码管*/

51驱动四个1位数码管/*网上大都是驱动一个4位的数码管*/

时间:2024-07-12 18:30:53浏览次数:6  
标签:显示 qian ++ 51 数码管 驱动 shi 进位 bai

目的:51单片机驱动四个“1位”数码管;循环显示0、1、2、3~~~、99、100、1000、9999

哎!在网上找的很多方案是显示 0001、0002、0003~~~、0099、0100、1000、9999 而且还是”4“位的数码管

 

在公司实在无聊,花了半天时间写了V1.0版本代码,没错就是显示的0001、0002、0003~~~、0099、0100、1000、9999

在公司实在无聊,又花了半天时间写了V1.1版本代码,能够实现循环显示0、1、2、3~~~、99、100、1000、9999

/*******V1.0*******

编程人:刘利刊

时   间:2024年7月一个无聊的下午

*******************/

#include <reg51.h>
#include <intrins.h>                                     //延时函数需要的头文件
void Delay1000ms(void)                             //@12.000MHz延时函数1秒钟
{
        unsigned char data i, j, k;

        _nop_();
        i = 8;
        j = 154;
        k = 122;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

int a,b,c;                                                              //定义循环需要的几个变量
int shi=0,bai=0,qian=0;                                       //十位、百位、千位默认显示数组的第一个元素0,    /*如果把第一个元素换成0XFF不显示,那进位后原本显示0的就不显示了,这里没找到好办法*/
int G[10] = {0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};                           //定义的数组显示0-9,10个数,


void main()
{
        for(a=0; a<=9; a++)
            {
                        for(b=0; b<=9; b++)
                            {               
                                         for(c=0; c<=9; c++)
                                             {       
                                               P3 = G[c];              //个位端口
                                               P2 = G[shi];           //十位端口
                                               P1 = G[bai];           //百位端口
                                               P0 = G[qian];         //千位端口
                                               Delay1000ms();
                                              }
                                         shi++;                         //个位显示一轮后十位+1显示
                                         if(shi == 10)               //判断十位是否加到9了,如果是则清零
                                           {
                                            shi = 0;
                                           }
                                }         
                                bai++;                                 //十位显示一轮后百位+1显示
                                if(bai == 10)                        //判断百位是否加到9了,如果是则清零
                                  {
                                   bai = 0;
                                  }
              }
              qian++;                                                 //百位显示一轮后千位+1显示
              if(qian == 10)                                        //判断千位是否加到9了,如果是则清零
               {
                 qian = 0;
               }
}

 

/*****************************
编程人:刘利刊
时  间:24年7月又一个无聊的下午

*****************************/
#include <reg51.h>

#include <intrins.h>    //延时需要的头文件
void Delay1000ms(void)        //@12.000MHz
{
        unsigned char data i, j, k;

        _nop_();
        i = 8;
        j = 154;
        k = 122;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}


int a,b,c,d,count=0;              
int shi=0,bai=0,qian=0;     //十位、百位、千位默认显示数组的第一个元素0,    /*如果把第一个元素换成0XFF不显示,那进位后原本显示0的就不显示了,这里没找到好办法*/
int G[11] = {0xff,0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//定义的数组显示0-9,10个数,


void main()
{
        for(a=0; a<=9; a++)
           {
                        for(b=0; b<=9; b++)
                     {               
                                        for(c=0; c<=9; c++)
                                            {       
                                                         for(d=0; d<=9; d++)
                                                 {
                                                                    P3 = G[d+1];
                                                              P2 = G[shi];
                                                              P1 = G[bai];
                                                              P0 = G[qian];
                                                               Delay1000ms();
                                                              count ++;
                                                                                }
                                                         shi++;            //个位显示一轮后十位+1显示
                                             if(count == 10)   //count = 10的话就是第一次进位,第一次进位显示1
                                               {
                                                                  shi++;
                                               }
                                             if(shi == 11)     //判断十位是否加到9了,如果是则进位显示0
                                                     {
                                                                        shi = 1;
                                                     }
                                                         }
                                         bai++;                //十位显示一轮后百位+1显示
                             if(count == 100)      //count = 100的话就是第一次进位,第一次进位显示1
                                     {
                                                        bai++;
                                     }
                             if(bai == 11)         //判断百位是否加到9了,如果是则进位显示0
                                     {
                                                        bai = 1;
                                     }
                                        }         
                        qian++;                    //百位显示一轮后千位+1显示
                        if(count == 1000)          //count = 100的话就是第一次进位,第一次进位显示1
                    {
                                 qian++;
                    }
                        if(qian == 11)             //判断千位是否加到9了,如果是则进位显示0
                    {
                                 qian = 1;
                    }
           }
}

 

标签:显示,qian,++,51,数码管,驱动,shi,进位,bai
From: https://www.cnblogs.com/LLKYYDS/p/18299185

相关文章

  • MS5199T芯片解决方案以及驱动程序(国产三路5VADC)
    一、MS5199T芯片介绍MS5198T/MS5199T为适合高精度测量应用的低功耗、低噪声、三通道差分输入的16bit/24bit模数转换器。其内部集成了低噪声输入缓冲器、低噪声仪表放大器,当增益设置为64,更新速率为4.17Hz时,均方根噪声为10nV。MS5198T/MS5199T还集成了低端电源......
  • Linux下IIO子系统驱动
    1引入IIO子系统随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求越来越多。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传感器本质上都是ADC。这些传感器对外通过IIC或者SPI接口来发送ADC转换后的原始数据。Linux内核为了管理......
  • 51单片机:实现CSGO中C4下包功能(附功能实现视频和代码详解)
    目录一、功能实现二、功能简介1.矩阵键盘输入密码2.S11确认输入密码3.启用蜂鸣器三、模块化代码1.Buzzer.h2.Buzzer.c3.MatrixKey.h4.MatrixKey.c5.LCD1602.h6.LCD1602.c7.Delay.h8.Delay.c四、主函数五、Keil5界面一、功能实现51单片机实现CSGO中C4下包......
  • 雨晨 Windows 10 IOT 企业版 2021 长期服务版 19044.4651
    文件:YC19044.4561_iotltsc2021_x64_VIP3in1_install.wim同时支持直接激活以专业版为基础的所有虚拟版本大小:2653323398字节修改时间:2024年7月12日,15:39:54MD5:52565BC0E1DC7F205353E25CBE0AA2F7SHA1:E327D67581FD86DDF6F816870DA4C8EFEE589825CRC32:DAFC1D2......
  • Linux下WIFI驱动使用
    1WIFI驱动编译初体验一般WIFI有2种接口:USB和SDIO。例如USBWIFI使用的芯片为RTL8188EUS或RTL8188CUS,SDIO接口的WIFI使用芯片为RTL8189FS,如下图:RTL8189和RTL8188都是realtek公司出品的WIFI芯片,WIFI芯片原厂一般会整包提供。1.1向Linux内核添加WIFI驱动realt......
  • Day8(字符串)| 151.翻转字符串里的单词 55.右旋转字符串 28.实现 strStr() 459.重复
    151.翻转字符串里的单词给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或......
  • 软件spi ST7789屏幕驱动stm32
    #include"st7789.h"voidST7789_GPIO_Init(void){ GPIO_InitTypeDefGPIO_InitStruct; __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull=GPIO_PULLUP; GPIO_InitStru......
  • 基于51单片机智能热电偶温度检测PID控制恒温箱设计套件24-157
    24-157、51热电偶PID控制恒温箱设计-LCD1602-热电偶-KEY-AO4405本系统由STC89C52单片机电路+LCD1602液晶显示电路+热电偶检测电路+按键电路+AO4405-MOS管驱动发热电阻电路+AO4405-MOS管驱动制冷片电路+电源电路组成。1、LCD1602液晶实时显示温度和温度上下限。2、通过按键可......
  • 573、基于51单片机的温度控制(制冷,存储,查询)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能温度控制阀门制冷1、测量环境温度,如果温度过高,则打开阀门释放冷气2、记录阀门打开时间和打开时长3、具有查询功能二、Proteus仿真三......
  • 572、基于51单片机的温度检测(3路,PT100,TLC1543)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下......