登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
VIP申请
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
VIP网盘
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
小灯部分总分析
小灯部分总分析
[ 复制链接 ]
琦谓
2025-7-23 18:28:32
点亮小灯
硬件分析
该节内容以LED2为例
分析LED部分:
欲点亮LED2,则LED2需导通状态
Q16导通,DB0低电平时,此时LED2有压降,则LED2可导通
分析74HC245芯片:
72HC245
19号OE号脚,为使能引脚,该引脚接地,所以是低电平,该引脚低电平有效,故74HC245芯片可作用
1号脚是方向引脚,接VCC,故是高电平,所以是A编号引脚控制B编号引脚
A1号脚低电平则B1号脚低电平,即DB_0低电平则DB0低电平 ^DBX-0
分析74HC138芯片:
74HC138
4号脚E1为低电平有效,5号脚E2低电平有效,E3高电平有效
欲达到上述效果,则
ENLED低电平,此时E1和E2均为低电平
ADDR3高电平,此时E3高电平
此时,该芯片可正常使用
欲使Q16导通,则LEDS6需要为低电平,此时Q16才有压降,才可以导通
欲使LEDS6低电平,查真值表后,需要3号脚A2为高电平,2号脚A1为高电平,1号脚A0为低电平
欲达到以上效果,则
ADDR0为低电平,则A0为低电平
ADDR1为高电平,则A1为高电平
ADDR2为高电平,则A2为高电平 ^Q16-1
分析跳线部分:
欲时ADDR0低电平,则P1.0需要低电平
欲使ADDR1高电平,则P1.1需要高电平
欲使ADDR2高电平,则P1.2需要高电平
欲使ADDR3高电平,则P1.3需要高电平
欲使DB_0低电平,则P0.0需要低电平
欲使ENLED低电平,则P1.4需要低电平
综上:
欲电亮小灯,
P0.0低电平,等效于DB_0低电平
P1.0低电平,等效于ADDR0低电平
P1.1高电平,等效于ADDR1高电平
P1.2高电平,等效于ADDR2高电平
P1.3高电平,等效于ADDR3高电平
P1.4低电平,等效于ENLED低电平
代码
点亮 LED2
#include<reg52.h>
sbit LED = P0 ^ 0;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
点亮LED3
#include<reg52.h>
sbit LED = P0 ^ 1;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
点亮LED4
#include<reg52.h>
sbit LED = P0 ^ 2;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
点亮LED5
#include<reg52.h>
sbit LED = P0 ^ 3;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
点亮LED6
#include<reg52.h>
sbit LED = P0 ^ 4;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
点亮LED7
#include<reg52.h>
sbit LED = P0 ^ 5;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
点亮LED8
#include<reg52.h>
sbit LED = P0 ^ 6;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
点亮LED9
#include<reg52.h>
sbit LED = P0 ^ 7;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
LED = 0;//灯亮
while (1);
}
复制代码
小灯闪烁
LED2闪烁
#include <reg52.h>
sbit LED = P0 ^ 0;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
LED3闪烁
#include <reg52.h>
sbit LED = P0 ^ 1;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
LED4闪烁
#include <reg52.h>
sbit LED = P0 ^ 2;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
LED5闪烁
#include <reg52.h>
sbit LED = P0 ^ 3;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
LED6闪烁
#include <reg52.h>
sbit LED = P0 ^ 4;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
LED7闪烁
#include <reg52.h>
sbit LED = P0 ^ 5;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
LED8闪烁
#include <reg52.h>
sbit LED = P0 ^ 6;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
LED9闪烁
#include <reg52.h>
sbit LED = P0 ^ 7;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;//U3 74HC138芯片使能
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;//三极管导通
while (1)
{
LED = 0;//灯亮
for (i = 0; i < 30000; ++i);//非精确延时
LED = 1;//灯灭
for (i = 0; i < 30000; ++i);//非精确延时
}
}
复制代码
流水灯
右向左
[code]#include sbit ADDR0 = P1 ^ 0;sbit ADDR1 = P1 ^ 1;sbit ADDR2 = P1 ^ 2;sbit ADDR3 = P1 ^ 3;sbit ENLED = P1 ^ 4;void main(){ unsigned int i = 0; char cnt = 0; ENLED = 0; ADDR3 = 1;//U3 74HC138芯片使能 ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;//三极管导通 while (1) { if (8 == cnt)//到最左边,需要进行复位,点亮最右边 cnt = 0; P0 = ~(1
小灯
部分
分析
相关帖子
CobaltStrike基础——Server端文件基础分析
分析慢查询
IIS日志分析工具
大/小模型在视频分析领域中的联合应用
NVIDIA系统级性能分析工具Nsight Systems入门详解
【攻防世界】流量分析1
【攻防世界】流量分析1
MySQL INSERT 导致的死锁分析
Linux性能分析工具和方法
NVIDIA Kernel级性能分析工具Nsight Compute入门详解
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
CobaltStrike基础——Server端文件基础分析
0
613
丘娅楠
2025-08-14
业界
分析慢查询
0
600
喝岖
2025-08-15
软件
IIS日志分析工具
0
57
新程序
2025-08-17
业界
大/小模型在视频分析领域中的联合应用
0
189
焦尔蕾
2025-08-22
业界
NVIDIA系统级性能分析工具Nsight Systems入门详解
0
801
訾懵
2025-08-22
安全
【攻防世界】流量分析1
0
308
薛小春
2025-08-23
安全
【攻防世界】流量分析1
0
886
谅潭好
2025-08-23
业界
MySQL INSERT 导致的死锁分析
0
760
公西颖初
2025-08-27
业界
Linux性能分析工具和方法
0
122
眸胝
2025-09-01
业界
NVIDIA Kernel级性能分析工具Nsight Compute入门详解
0
107
任修
2025-09-03
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
琦谓
2025-7-23 18:28:32
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
凶契帽
9988
5
氛疵
9988
6
猷咎
9986
7
里豳朝
9986
8
肿圬后
9986
9
蝓俟佐
9984
10
虽裘侪
9984
查看更多