蓝桥杯单片机 基础篇1——————数码管的显示

来源:互联网 发布:淘宝千人千面 编辑:程序博客网 时间:2024/06/08 04:21

下面是官网提供给我们的原理图,关于数码管这个模块我们可以看到,主控芯片是通过 74hc138控制74hc02再去控制74hc573  为了节约单片机的io 官网采取了这种方式。

如果想让数码管显示我们可以通过p25 p26 p27 三个io控制  其中我们可以这样写 :

            P2=0xc0;  138的Y6端输出低电平 WR端一直是低电平,Y6C输出高电平 使u8(573)使能端打开,打开数码管位选端。

            P0=0x01;   选择第一位数码管。

            P2=0x1f;      数据锁存。

            P0=0xff ;  用于消隐。

            P2=0xe0;   U7(573)使能,打开数码管段选端。

            P0=table【】;  显示数字相应的段码  。  

            P2=0x1f;      数据锁存。

            P0=0x00;     消隐 。    

以上是对数码管的操作主要方法,对于将数码管显示放到中断里面,后面回讲到,本期附带程序 ,数码管显示  1~8 ;(蓝桥杯官网开发板)。


#include "reg52.h"
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar  yi,er,san,si,wu,liu,qi,ba;
void delayms(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
     for(y=114;y>0;y--);


}
void display1(uchar yi,er)
{
   P2=0xc0;
   P0=0x01;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[yi];
   P2=0x1f;
   P0=0x00;
   delayms(1);


   P2=0xc0;
   P0=0x02;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[er];
   P2=0x1f;
   P0=0x00;
   delayms(1);
}
void display2(uchar san,si)
{
   P2=0xc0;
   P0=0x04;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[san];
   P2=0x1f;
   P0=0x00;
   delayms(1);


   P2=0xc0;
   P0=0x08;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[si];
   P2=0x1f;
   P0=0x00;
   delayms(1);
}
void display3(uchar wu,liu)
{
   P2=0xc0;
   P0=0x10;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[wu];
   P2=0x1f;
   P0=0x00;
   delayms(1);


   P2=0xc0;
   P0=0x20;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[liu];
   P2=0x1f;
   P0=0x00;
   delayms(1);


}
void display4(uchar qi,ba)
{
   P2=0xc0;
   P0=0x40;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[qi];
   P2=0x1f;
   P0=0x00;
   delayms(1);


   P2=0xc0;
   P0=0x80;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=table[ba];
   P2=0x1f;
   P0=0x00;
   delayms(1);


   P2=0xc0;
   P0=0x80;
   P2=0x1f;
   P0=0xff;
   P2=0xe0;
   P0=0xff;
   P2=0x1f;
   P0=0x00;
   delayms(1);
}
void main()
{
   yi=1;er=2;san=3;si=4;wu=5;liu=6;qi=7;ba=8;
   while(1)
   {
      display1(yi,er); 
       display2(san,si);
       display3(wu,liu);
       display4(qi,ba);
   }
}

阅读全文
0 0