IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> IO口控制-按键控制LED灯花式显示 -> 正文阅读

[嵌入式]IO口控制-按键控制LED灯花式显示

IO口控制-按键控制LED灯花式显示

一、实验目的

		掌握P0-P3 各个I/O的工作原理和作用
		
		掌握I/O口的输入输出控制
		
		进一步熟练C51编程和软硬件联调

二、实验内容

		在交通灯控制系统的基础上修改硬件电路
		
		AT89C51单片机的P1口接8个独立按键,P0口接8个LED灯,led等的上拉电阻改用排阻,设计硬件电路。
		
		编写程序,实现基本要求:当P1.0键按下后P0.0灯亮, P1.1键按下后P0.0~P1.1灯亮,
		P1.2键按下后P0.0~P1.2灯亮,以此类推, P1.7键按下后P0.0~P1.7灯亮
		
		进一步发挥,按如下规则显示,或自己制定显示规则。(另一程序)
		
		当key0 按下时,LED等全亮
		
		当key1 按下时,后四个LED灯亮
		
		当key2 按下时,前四个LED灯亮
		
		当key3 按下时,奇数灯亮
		
		当key4 按下时,偶数灯亮
		
		当key5 按下时,从右到左依次显示
		
		当key6 按下时,从左到有依次显示
		
		当key7 按下时,显示如下花样显示效果。

三、电路图

在这里插入图片描述

四、总结

问题讨论

		P0-P3四个I/O端口的主要功能有什么区别?各个口在什么情况下需接上拉电阻?
		
		区别:
		
		P0口作输出口用时,需加上拉电阻。P0口有复用功能。当对外部存储器进行读写操作时,P0口先是提供外部存储器的低8位地址,供外部存储器地址锁存器锁存,然后充当数据线,用于写出或读入数据。P1口、P2口只是普通IO口。
		
		P0口第一个功能是数据接口,第二个功能是地址低八位,P2口第二个功能是地址高八位。另外除了P0口没有内部上拉电阻外,其他三个都有内部上拉电阻。
		
		P1、P2、P3都有内部上拉电阻,所以外部的上拉电阻可接可不接。
		
		P1、P2、P3输出一个高电平,或者提供一个驱动能力的时候,需接上拉电阻。
		
		而P0没有,所以。如果用P0口驱动必须接上拉电阻。
		
		P0口,输出高电平时,接口本身根本就没有输出能力,必须用外接上拉电阻来形成高电平。

问题和建议

		上拉电阻是一个很好的设计,优点是不需要添加外部上拉电阻。
		缺点是驱动电流受到内部上拉电阻的限制。
		上拉电阻越小则驱动能力就越大,所以当驱动能力不足的时候可以并联上拉电阻。

五、代码

代码:

\#include \<reg52.h\>

sbit LED0 = P0\^0;

sbit LED1 = P0\^1;

sbit LED2 = P0\^2;

sbit LED3 = P0\^3;

sbit LED4 = P0\^4;

sbit LED5 = P0\^5;

sbit LED6 = P0\^6;

sbit LED7 = P0\^7;

sbit key0 = P1\^0;

sbit key1 = P1\^1;

sbit key2 = P1\^2;

sbit key3 = P1\^3;

sbit key4 = P1\^4;

sbit key5 = P1\^5;

sbit key6 = P1\^6;

sbit key7 = P1\^7;

void delay(unsigned int z)

{

unsigned int x,y;

for(x=z;x\>0;x--)

for(y=110;y\>0;y--) ;

}

void main(){

P1=0xff;

P0=0x00;

LED0 = 0;

LED1 = 0;

LED2 = 0;

LED3 = 0;

LED4 = 0;

LED5 = 0;

LED6 = 0;

LED7 = 0;

while(1){

if(key0==0){

LED0 = 1;

LED1 = 1;

LED2 = 1;

LED3 = 1;

LED4 = 1;

LED5 = 1;

LED6 = 1;

LED7 = 1;

}

if(key1==0){

LED0 = 0;

LED1 = 0;

LED2 = 0;

LED3 = 0;

LED4 = 1;

LED5 = 1;

LED6 = 1;

LED7 = 1;

}

if(key2==0){

LED0 = 1;

LED1 = 1;

LED2 = 1;

LED3 = 1;

LED4 = 0;

LED5 = 0;

LED6 = 0;

LED7 = 0;

}

if(key3==0){

LED0 = 0;

LED1 = 1;

LED2 = 0;

LED3 = 1;

LED4 = 0;

LED5 = 1;

LED6 = 0;

LED7 = 1;

}

if(key4==0){

LED0 = 1;

LED1 = 0;

LED2 = 1;

LED3 = 0;

LED4 = 1;

LED5 = 0;

LED6 = 1;

LED7 = 0;

}

if(key5==0){

LED0 = 0;

LED1 = 0;

LED2 = 0;

LED3 = 0;

LED4 = 0;

LED5 = 0;

LED6 = 0;

LED7 = 0;

delay(500);

LED7 = 1;

delay(500);

LED6 = 1;

delay(500);

LED5 = 1;

delay(500);

LED4 = 1;

delay(500);

LED3 = 1;

delay(500);

LED2 = 1;

delay(500);

LED1 = 1;

delay(500);

LED0 = 1;

}

if(key6==0){

LED0 = 0;

LED1 = 0;

LED2 = 0;

LED3 = 0;

LED4 = 0;

LED5 = 0;

LED6 = 0;

LED7 = 0;

delay(500);

LED0 = 1;

delay(500);

LED1 = 1;

delay(500);

LED2 = 1;

delay(500);

LED3 = 1;

delay(500);

LED4 = 1;

delay(500);

LED5 = 1;

delay(500);

LED6 = 1;

delay(500);

LED7 = 1;

}

if(key7==0){

LED0 = 1;

LED1 = 0;

LED2 = 0;

LED3 = 0;

LED4 = 0;

LED5 = 0;

LED6 = 0;

LED7 = 1;

delay(500);

LED6 = 1;

LED1 = 1;

delay(500);

LED5 = 1;

LED2 = 1;

delay(500);

LED4 = 1;

LED3 = 1;

delay(500);

LED7 = 0;

LED0 = 0;

delay(500);

LED6 = 0;

LED1 = 0;

delay(500);

LED5 = 0;

LED2 = 0;

delay(500);

LED4 = 0;

LED3 = 0;

delay(500);

}

}

}


LED1 = 0;

LED2 = 0;

LED3 = 0;

LED4 = 0;

LED5 = 0;

LED6 = 0;

LED7 = 1;

delay(500);

LED6 = 1;

LED1 = 1;

delay(500);

LED5 = 1;

LED2 = 1;

delay(500);

LED4 = 1;

LED3 = 1;

delay(500);

LED7 = 0;

LED0 = 0;

delay(500);

LED6 = 0;

LED1 = 0;

delay(500);

LED5 = 0;

LED2 = 0;

delay(500);

LED4 = 0;

LED3 = 0;

delay(500);

}

}

}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:31:43  更:2021-11-23 12:32:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:17:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码