欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-08 19:58:49
...

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

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

                                                                  开始分享吧!!!

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

目录

题目解析

方法一

实验电路图

实验代码

实验结果

方法二

实验电路图

实验代码

实验结果

总结


题目解析

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

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

方法一

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

实验电路图

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

实验代码

#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作为外接的芯片完成实验

实验电路图

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

实验代码

#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输入输出实验的结果比较的简单明了,主要还是需要去了解其中的实验原理。

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

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

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

No pains No results 

相关标签: 单片机 c语言