单片机(AT89C51)外设的I/O输入输出实验

还是熟悉的单片机(AT89C51)系列有需要的可以去看看我的单片机专栏,里面还有更多的关于单片机的知识。希望大佬们可以多多支持。

前面要是关于单片机有不了解的可以看看我的专栏,链接给你们丢这里了:单片机专栏

                                                                  开始分享吧!!!

                                            

目录

题目解析

方法一

实验电路图

实验代码

实验结果

方法二

实验电路图

实验代码

实验结果

总结


题目解析

主要实现扩展的输入口接了8个开关,扩展的输出口接了8个发光二极管。实现8个开关控制对应8个发光二极管的显示?

实验中需要用到外界其他的芯片

方法一

使用74LS37374LS245作为外接的芯片完成实验

实验电路图

实验代码

#include  <reg51.h>
#include  <absacc.h>  //定义绝对地址访问
#define  uchar  unsigned  char
void delay(unsigned int n)
{
	unsigned int i,j;
	for(i=0;i<n;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灯的亮灭。

方法二

使用825574LS373作为外接的芯片完成实验

实验电路图

实验代码

#include  <reg51.h>
#include  <absacc.h>   
#define  uchar  unsigned  char
uchar  i;


void delay(unsigned int n)
{
	unsigned int i,j;
	for(i=0;i<n;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输入输出实验的结果比较的简单明了,主要还是需要去了解其中的实验原理。

单片机专栏链接:单片机专栏

点点关注再走吧!!! 后续更加精彩

                                                   

No pains No results 

猜你喜欢

转载自blog.csdn.net/weixin_45629315/article/details/106084285