本帖最后由 电气合2201袁驰 于 2023-1-6 22:08 编辑
C51单片机第2课—硬件基础知识学习(2)主要内容:
一:74HC138基本内容
二:LEDS6控制开关代码补充
三:74HC245和74HC138对LED小灯的控制总结
一:74HC138基本内容
我们知道,现学的51单片机有32个IO口可供我们使用。那么,当我们需要更多的IO口控制更多的电子器件时,除了可以更换单片机以外,我们还可以在IO口处外加扩展。比如:数字扩展芯片,74HC138就是常见的一种数字芯片。
74HC138原理图 手画的74HC138原理图
1—6为输入pin Y0—Y7为输出pin
(注意:上面画一条横线代表是负逻辑,也就是低电平有效。关于电源电路及电容的作用参考上一个帖子)
二:LEDS6控制开关代码补充
第一个帖子中,我们在最后的代码中补充了好几行代码,这里可以解释一下了。
首先,我们看上面的第一个图。ENLED直接接到了P1^4引脚。而ADDR0—ADDR3是通过跳线帽接到了P1^0—P1^3引脚上。
这就是我们在代码开头用sbit所定义的位置
因为我们的板子上P1^0也可能接有其他元器件,所以我们使用了跳线帽。
这里补充一点跳线帽知识:
用插针将ADDR0和P1^0连接。R1,R2,R3,也是如此。
我们还知道,74HC138又叫做三八译码器(即用三种状态引出八种结果)
数据手册:
1—6为输入pin Y0—Y7为输出pin
根据我们第一个帖子中,我们要点亮一个LED小灯,我们就需要LEDS6输入一个低电以使三极管导通。那么根据上面第三个图我们知道,当CBA输入110时,Y0—Y7所对应的状态中,Y6是0(低电平)
因此,我们在我们就可以知道:ADDR0是0 ADDR1是1 ADDR2是1 ADDR3是1(因为ADDR3连接6号G1要求高电平有效)ENLED是(0)
这就是第一个帖子我们所加的代码的原因
代码笔记 代码
变量i别忘了要在前面定义
三:74HC245和74HC138对LED小灯的控制总结
我们在这节课学习了74HC138的基本内容及使用原理,成功的使得LEDS6处输出一个低电平,从而使得三极管导通。结合上个帖子对74HC245的学习,我们的代码就完成了。因为P0的RST值是全高的,因此B1—B7处全部是高电平,而代码中我们定义了P0^0=0;这样最终的结果就是八个LED小灯只有第一个会间断闪烁(因加有for语句,下个帖子再说)。
总结:结合上一个帖子对几个硬件器件的学习,我们完成了对LED小灯的闪烁任务。
因为部内开发板我还不是很熟悉,过两天我会将LED小灯闪烁拍成视频单独
发一个帖子。
最后,感谢各位小伙伴的观看。
|