一、题目![](https://img-blog.csdnimg.cn/69199665802c46ccbe0202364cffed0f.png)
二、重点
通过训练题,掌握三个应用器件:74HC138、74HC573、74HC02
2.1 74HC138译码器
真值表如上图,总结就是六路输入八路输出,使能端高低低有效,3路输入控制A3 A2 A1(CBA)二进制对应到输出Y0~Y7,输出低电平有效。
2.2 74HC573锁存器
总结就是使能端OE低电平有效,LE高电平有效,非反转锁存器!使能端打通后,D段输入对应Q段对应输出。
2.3 74HC02 或非门
或非门。
三、编程思路
3.1源程序
#include "reg52.h"
// 调用后,可以直接对单片机的相关寄存器与引脚进行操作
sbit HC138_A= P2^5; //定义引脚,参照原理图
sbit HC138_B= P2^6;
sbit HC138_C= P2^7;
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void LEDRunning()
{
unsigned char i;
HC138_C= 1 ;
HC138_B= 0 ;
HC138_A= 0 ;
for(i = 0; i<3 ; i++)
{
P0= 0x00; /*1位十六进制数可以用4位二进制数来表示,给P0口赋值2位十六进制数,刚好占满
P00~P07。*/
Delay(60000);
Delay(60000);
P0= 0xff;
Delay(60000);
Delay(60000);
}
for(i = 1 ; i < 8 ; i++)
{
P0= 0xff << i ; /*这里对P0按位操作,根据原理图,LED低电平点亮,最左边的灯对应P00,是
最低位,所以第一次左移,最低位P00由1变0,最左边的灯点亮*/
Delay(60000);
Delay(60000);
}
for(i = 1 ; i < 8 ; i++)
{
P0= ~(0xff << i ) ; // 取反,同理
Delay(60000);
Delay(60000);
}
}
void main()
{
while(1)
{
LEDRunning();
}
}
点灯比较简单,思路见注释。
51单片机主要有两种开发模式,一种是io扩展的开发模式,一种是存储器映射的开发模式,通过J13切换模式。如果1、2引脚相接就是存储器映射;2、3引脚相接就是io开发模式;这里选用的是2、3口相接,io开发模式。