一 原理图分析
二 三八译码器工作原理
三八译码器:3个输入控制8路互斥的低电平有效输出。
|-------|-------|-------|--------|
| C | B | A | 输出 |
| 0 | 0 | 0 | Y0 |
| 0 | 0 | 1 | Y1 |
| 0 | 1 | 0 | Y2 |
| 0 | 1 | 1 | Y3 |
| 1 | 0 | 0 | Y4 |
| 1 | 0 | 1 | Y5 |
| 1 | 1 | 0 | Y6 |
| 1 | 1 | 1 | Y7 |
三 锁存器工作原理
锁存器:当使能端LE为高时,输出同步,LE为低时,输出数据被锁存。
|--------|--------|--------|--------|
| OE | LE | 输入 | 输出 |
| 1 | 1 | L | L |
| 1 | 1 | H | H |
| 1 | 0 | X | H |
四 或非门原理
|--------|--------|--------|
| 输入 | 输入 | 输出 |
| A | B | C |
| 1 | 1 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
五 代码
#include "reg52.h"
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;
void Delay(unsignde int t)
{
while(t--);
while(t--);
}//实现延时功能的函数
void liushuideng()
{
unsigned char i;//定义char型变量
HC138_C = 1;
HC138_B = 0;
HC138_A = 0;//输出Y4
for(i=0;i<3;i++)
{
P0 = 0x00;//实现了全亮
Delay(60000);
Delay(60000);//延时
P0 = 0xff;//实现了全灭
Delay(60000);
Delay(60000);//延时
}由全灭到全亮,循环3次
for(i=0;i<=8;i++)
{
P0 = 0xff<<i;//实现了由全灭到全亮
Delay(60000);
Delay(60000);//延时
}实现了由全灭,再逐个点亮
for(i=0;i<=8;i++)
{
P0 = 0x00<<i;//实现了由全亮到全灭
Delay(60000);
Delay(60000);//延时
}实现了由全亮,再逐个灭
}//实现了又全亮到全灭,再逐个亮起,再逐个灭掉的函数功能
void main()
{
while(1)
{
liushuideng();
}