标题: 求修改程序,大致上就是将八位数码管改成这样 [打印本页]

作者: Makaroe    时间: 2020-7-5 16:10
标题: 求修改程序,大致上就是将八位数码管改成这样
#include<reg51.h>
#define uchar unsigned char

sbit S1=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
uchar k;


void delay_ms(uchar z)
{
        uchar i,j;
        for(i=z;i>0;i--)
                for(j=110;j>0;j--);
}

void keyscan()
{

        S1=1;
        if(S1==0)
        {
                delay_ms(10);
                if(S1==0)
                {
                        k++;
                        if(k==5)
                        {
                                k=1;
                        }
                        while(!S1);
                }

        }
}


void display()
{
        P0=0x36;
        dula=1;
        dula=0;
        if(k==1)
        {

                P0=0xe7;
                wela=1;
                wela=0;
                delay_ms(10);
        }
        if(k==2)
        {

                P0=0xc3;
                wela=1;
                wela=0;
                delay_ms(10);
        }
        if(k==3)
        {

                P0=0x81;
                wela=1;
                wela=0;
                delay_ms(10);
        }
        if(k==4)
        {

                P0=0x00;
                wela=1;
                wela=0;
                delay_ms(10);
        }
}

void main()
{
        uchar i,count;
        P0=0x00;
        dula=1;
        dula=0;
        P0=0xff;
        wela=1;
        wela=0;
        while(1)
        {
                keyscan();
                display();                       
        }
}

C9E92B8C237DB274D12E9EAB0D53A9C6.jpg (158.65 KB, 下载次数: 56)

C9E92B8C237DB274D12E9EAB0D53A9C6.jpg

作者: xianfajushi    时间: 2020-7-5 17:29
也就是一个数码管显示||这样的符号,送给数码管的信号是固定的,只要控制点亮的个数就可以了?还是要显示对称的,若显示对称的则一个数码管显示右|一个显示左|这样的话送给数码管的值就有变化了,不过也就是2个值而已。
作者: chenyinhu    时间: 2020-7-5 20:09

这样的效果?



作者: wulin    时间: 2020-7-5 21:45

  1. #include<reg51.h>
  2. #define uchar unsigned char

  3. sbit S1=P3^4;
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;

  6. uchar code table[9][8]={
  7. 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
  8. 0x00,0x00,0x00,0x06,0x30,0x00,0x00,0x00,
  9. 0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00,
  10. 0x00,0x00,0x06,0x36,0x36,0x30,0x00,0x00,
  11. 0x00,0x00,0x36,0x36,0x36,0x36,0x00,0x00,
  12. 0x00,0x06,0x36,0x36,0x36,0x36,0x30,0x00,
  13. 0x00,0x36,0x36,0x36,0x36,0x36,0x36,0x00,
  14. 0x06,0x36,0x36,0x36,0x36,0x36,0x36,0x30,
  15. 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36};
  16. uchar code weia[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  17. uchar i,j,k;

  18. void delay_ms(uchar z)
  19. {
  20.         uchar i,j;
  21.         for(i=z;i>0;i--)
  22.                 for(j=110;j>0;j--);
  23. }

  24. void keyscan()
  25. {
  26.         if(S1==0)
  27.         {
  28.                 if(++j>10)
  29.                         j=11;
  30.                 if(j==10)
  31.                 {
  32.                         k++;
  33.                         if(k>8)
  34.                                 k=0;
  35.                 }
  36.         }
  37.         else j=0;
  38. }

  39. void display()
  40. {
  41.         P0=0x00;dula=1;dula=0;
  42.         P0=weia[i];wela=1;wela=0;
  43.         P0=table[k][i];dula=1;dula=0;
  44.         i++;i%=8;
  45. }

  46. void main()
  47. {
  48.         while(1)
  49.         {
  50.                 keyscan();
  51.                 display();
  52.                 delay_ms(1);
  53.         }
  54. }
复制代码










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