标题: 51单片机C程序修改 显示管从99减到00,并停留在00不断闪烁 [打印本页]

作者: liuan    时间: 2021-5-17 11:54
标题: 51单片机C程序修改 显示管从99减到00,并停留在00不断闪烁
51单片机C程序各位大佬帮忙看看怎么修改才能实现功能:显示管从99减到00,并停留在00不断闪烁,51单片机电路如图。  #include<regx51.h>
  unsigned char num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  void delay()
  {
          unsigned int a=500;
          while(a--);
          }
          void main()
          {
                         unsigned char i,j;
                         while(1)
                   {
                          j++;
                          if(j>100)
                          {
                                  j=0;
                                  i--;
                                  if(i<99) i=0;
                                  }
                                 P1=num[i/10]; P3_0=0;P3_1=1;
                                  delay();
                                  P3_0=1;P3_1=1;
                                  P1=num[i%10];P3_0=1;P3_1=0;
                                  delay();
                                  P3_0=1;P3_1=1;
                                 

IMG_20210516_163728_7.jpg (1.58 MB, 下载次数: 47)

IMG_20210516_163728_7.jpg

作者: robinsonlin    时间: 2021-5-17 14:30
1,先搞清楚,显示两个数字如何操作。
2,再搞清楚,显示空白如何操作。
3,再搞清楚,通过定时器来递减一个变量。
4,判断当变量小于等于0时,变量一直等于0。
5,然后将这个变量显示出来。
6,闪烁其实就是500毫秒显示变量,500毫秒显示空白的操作。
作者: liuan    时间: 2021-5-17 19:11
robinsonlin 发表于 2021-5-17 14:30
1,先搞清楚,显示两个数字如何操作。
2,再搞清楚,显示空白如何操作。
3,再搞清楚,通过定时器来递减 ...

就是搞不清啊,求大佬指导一下我该如何学习?
作者: robinsonlin    时间: 2021-5-17 21:05
liuan 发表于 2021-5-17 19:11
就是搞不清啊,求大佬指导一下我该如何学习?

都想拥有武林秘籍,一夜功成名就。 殊不知 “黄蓉比郭靖聪明百倍,就是学不会降龙十八掌” 。  已经给你把知识点分解成最小的步骤了,如果还不知如何办,就从头开始学C语言,从头开始学寄存器吧。
作者: xianfajushi    时间: 2021-5-18 08:04
数码管显示随意控制要在哪位显示就在哪位显示。  闪烁可参https://blog.csdn.net/xianfajush ... ase&utm_term=51  倒计时可参https://blog.csdn.net/xianfajush ... ase&utm_term=51  或https://blog.csdn.net/xianfajush ... ase&utm_term=51
作者: wulin    时间: 2021-5-18 09:43
从99减到00,并停留在00不断闪烁
#include<regx51.h>
unsigned char num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay()
{
        unsigned int a=500;
        while(a--);
}
void main()
{
        unsigned char i=99,j;
        bit flag=0;
        while(1)
        {
                j++;
                if(j>100)
                {
                        j=0;
                        if(i>0)
                                i--;
                        flag=~flag;
                }
                P1=0x00;
                if(i>0)P3_0=0;
                else P3_0=flag;
                P3_1=1;
                P1=num[i/10];
                delay();
                P1=0x00;
                if(i>0)P3_1=0;
                else P3_1=flag;
                P3_0=1;
                P1=num[i%10];
                delay();
        }
}
作者: liuan    时间: 2021-5-18 19:59
wulin 发表于 2021-5-18 09:43
从99减到00,并停留在00不断闪烁
#include
unsigned char num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x ...

谢谢!
作者: birdzhyli    时间: 2021-5-18 21:29
学习这个事还是要从基础学起,如果是要做工程的话就直接去某一个宝弄就行了,这里没人能从基础一点点讲起
作者: 飞熊战神    时间: 2021-5-18 22:18
慢慢从基础打起吧,不能超之过急
作者: xianfajushi    时间: 2021-5-21 15:01

无标题.png (60.32 KB, 下载次数: 31)

无标题.png

作者: 95267700    时间: 2021-5-21 19:14
xianfajushi 发表于 2021-5-21 15:01

你好,你的这个仿真软件是叫Proteus吧,由于本站不支持下载.我去百度搜索一个




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1