单片机交流
直播中

汪潇潇

7年用户 827经验值
私信 关注
[问答]

如何实现8个开关控制对应8个发光二极管的显示?

如何实现8个开关控制对应8个发光二极管的显示?

回帖(1)

刘伟

2021-10-18 15:00:20
  主要实现扩展的输入口接了8个开关,扩展的输出口接了8个发光二极管。实现8个开关控制对应8个发光二极管的显示?
  实验中需要用到外界其他的芯片
方法一


  使用74LS373和74LS245作为外接的芯片完成实验
实验电路图






实验代码


#include  
#include    //定义绝对地址访问
#define  uchar  unsigned  char
void delay(unsigned int n)
{
        unsigned int i,j;
        for(i=0;i           for(j=249;j>0;j--)
          ;
}

uchar  i;
void main(void)
{
    while(1)
        {
       
        i=XBYTE[0x7fff];            //把输入口的开关信息输入到i中
        delay(1);                   //延时程序
        XBYTE[0x7fff]= i;           //把输入的开关信息传送到输出的地址中
        }
}
实验代码其实并不是很难稍加理解就可以,就是把输入口(地址0x7fff)的按钮信息赋值到i中,然后将输入口的数据传输到输出口中。输入口连接按钮,输出口连接LED灯。如上面的电路图一样。
实验结果

实现了每一个按钮的按动对应的LED灯的亮灭。
方法二


  使用8255和74LS373作为外接的芯片完成实验
实验电路图






实验代码


#include  
#include     
#define  uchar  unsigned  char
uchar  i;


void delay(unsigned int n)
{
        unsigned int i,j;
        for(i=0;i           for(j=249;j>0;j--)
          ;
}


void  main (void)
{
   while(1)
  {
                                                       
   i= 0x90;             //可有可无
  XBYTE[0xff7fc]= i;    //可有可无

  i=XBYTE[0xff7c];      //和上面的程序一样
  delay(1);             //和上面的程序一样
  XBYTE[0xff7d]= i;     //和上面的程序一样
  }
}
实验结果

实现了每一个按钮的按动对应的LED灯的亮灭。
总结

单片机(AT89C51)外设的I/O输入输出实验的结果比较的简单明了,主要还是需要去了解其中的实验原理。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分