找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1493|回复: 3
打印 上一主题 下一主题
收起左侧

求修改程序,大致上就是将八位数码管改成这样

[复制链接]
跳转到指定楼层
楼主
#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, 下载次数: 55)

C9E92B8C237DB274D12E9EAB0D53A9C6.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2020-7-5 17:29 | 只看该作者
也就是一个数码管显示||这样的符号,送给数码管的信号是固定的,只要控制点亮的个数就可以了?还是要显示对称的,若显示对称的则一个数码管显示右|一个显示左|这样的话送给数码管的值就有变化了,不过也就是2个值而已。
回复

使用道具 举报

板凳
ID:568565 发表于 2020-7-5 20:09 | 只看该作者

这样的效果?


回复

使用道具 举报

地板
ID:213173 发表于 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. }
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表