[资料分享] 【蓝桥杯单片机02】LED的基本控制

[复制链接]
5176|12
 楼主 | 2018-1-26 14:55 | 显示全部楼层 |阅读模式
本帖最后由 ohy3686 于 2018-1-27 22:32 编辑

【蓝桥杯单片机02】LED的基本控制
广东职业技术学院  欧浩源
    在CT107D单片机综合训练平台实现LED的基本控制和其他单片机开发平台不一样,不单单是控制几个LED实现跑马灯这么简单。因为在这个平台上要掌握74CH138译码器和74HC573锁存器的使用才能实现对LED的基本控制。因此,这个单元的重点不是LED的控制,而是掌握译码器和锁存器的基本使用。
1、74HC138:三八译码器
    用非专业的语言来解释,这个芯片实现的功能就是用3个输入引脚,实现8个输出引脚,而且这个八个输出引脚中只要一个低电平。对于这个芯片,你不需要搞清楚它的内部结构和工作原理,只需要把真值表记住就行了。注意:是要记住。


2、74HC573:锁存器
    用非专业的语言来解释,锁存器就是能够把输出的数据保存住,不会受到输入变化的影响。
    573锁存器有20个引脚,D1~D8是数据输入端,Q1~Q8是数据输出端,LE为锁存控制端。当锁存使能端LE为高时,573的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
    简单的说就是,LE为高电平时,Q1~Q8输出和D1~D8输入是一样的;LE为低电平时,Q1~Q8输出不受D1~D8输入的变化影响。明白这个就掌握了该锁存器的使用。

3、74HC02:或非门
    从电路原理图上可以分析出,单片机的WR引脚或者GND和译码器的Y4引脚作为74HC02的输入。可以通过J13的跳帽选择是WR还是GND作为74HC02的输入。如果译码器的Y4输出低电平,那么74HC02的输出Y4C将为高电平,而该引脚接到74HC573锁存器的LE引脚,这时候锁存器处于数据联通的开放状态,也就是单片机可以控制LED灯。如果单片机不向外设输出数据,或者译码器的Y4没有输出低电平的话,则74HC573处于锁存状态,即单片机不能控制LED灯。

4、单元训练题目


5、实现源码参考
  1. #include "reg52.h"  

  2. sbit HC138_A = P2^5;        
  3. sbit HC138_B = P2^6;        
  4. sbit HC138_C = P2^7;        

  5. void Delay(unsigned int time)
  6. {
  7.         while(time--);
  8.         while(time--);
  9. }
  10. /*=======================================================
  11. *功能:通过HC138译码器控制HC573锁存器
  12. *参数:n--HC138译码器低电平引脚
  13.          4:Y4输出低电平
  14.          5:Y5输出低电平
  15.          6:Y6输出低电平
  16.          7:Y7输出低电平
  17.          8:Y4~Y7全部输出高电平
  18. *返回值:无。
  19. *设计:欧浩源  广东职业技术学院 & 小蜜蜂科教
  20. *时间:2018年1月26日
  21. =======================================================*/
  22. void Init74HC138(unsigned char n)
  23. {
  24.         switch(n)
  25.         {
  26.                 case 4:
  27.                         HC138_A = 0;
  28.                         HC138_B = 0;
  29.                         HC138_C = 1;
  30.                         break;
  31.                 case 5:
  32.                         HC138_A = 1;
  33.                         HC138_B = 0;
  34.                         HC138_C = 1;
  35.                         break;
  36.                 case 6:
  37.                         HC138_A = 0;
  38.                         HC138_B = 1;
  39.                         HC138_C = 1;
  40.                         break;
  41.                 case 7:
  42.                         HC138_A = 1;
  43.                         HC138_B = 1;
  44.                         HC138_C = 1;
  45.                         break;
  46.                 case 8:
  47.                         HC138_A = 0;
  48.                         HC138_B = 0;
  49.                         HC138_C = 0;
  50.                         break;
  51.         }
  52. }

  53. void LEDRunning()
  54. {
  55.         char i = 0;

  56.         P0 = 0xaa;
  57.         Delay(60000);
  58.         Delay(60000);
  59.         P0 = 0x55;
  60.         Delay(60000);
  61.         Delay(60000);
  62.         
  63.         for(i = 0; i < 3; i++)
  64.         {
  65.                 P0 = 0x00;
  66.                 Delay(60000);
  67.                 P0 = 0xff;
  68.                 Delay(60000);
  69.         }
  70.         for(i = 0; i < 8; i++)
  71.         {
  72.                 P0 <<= 1;
  73.                 Delay(60000);
  74.         }
  75.         for(i = 0; i < 8; i++)
  76.         {
  77.                 P0 <<= 1;
  78.                 P0 |= 1;
  79.                 Delay(60000);
  80.         }
  81. }

  82. main()
  83. {
  84.         Init74HC138(4);                                
  85.         while(1)
  86.         {
  87.                 LEDRunning();                                
  88.         }
  89. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评论

一路向北lm 2018-2-12 18:51 回复TA
分享的不错,辛苦大版主了 
| 2018-1-27 09:24 | 显示全部楼层
感谢分享,1602好几届没考了,不知道今年考不考。
 楼主 | 2018-1-27 09:42 | 显示全部楼层
一路向北lm 发表于 2018-1-27 09:24
感谢分享,1602好几届没考了,不知道今年考不考。

老实说,我从来没有用过1602模块
便宜是便宜点,相对来说,12232或者12864更好用一些
点阵显示模块现在又有OLED
所以,以后估计很少人会用1602的了。
| 2018-1-28 14:02 | 显示全部楼层
ohy3686 发表于 2018-1-27 09:42
老实说,我从来没有用过1602模块
便宜是便宜点,相对来说,12232或者12864更好用一些
点阵显示模块现在又有O ...

1602其实很简单的,看看手册就懂了,现在我在学校用得OLED居多,还有串口哈哈哈哈,说实话,调试的时候串口用得挺多的
| 2018-2-1 09:47 | 显示全部楼层
感谢版主分享,大家一块学习起来~~
 楼主 | 2018-2-1 11:57 | 显示全部楼层
21ic小喇叭 发表于 2018-2-1 09:47
感谢版主分享,大家一块学习起来~~

感谢喇叭管理员支持....
| 2018-2-1 20:47 | 显示全部楼层
谢谢分享
| 2018-2-11 16:21 | 显示全部楼层
本帖最后由 cpu51 于 2018-2-11 16:25 编辑

看半天没看懂,楼主是不是介绍用LED替代1602液晶模块呢?感兴趣,有这样的系列资料小伙伴们共享一下啊,谢谢啦。

评论

ohy3686 2018-2-11 17:15 回复TA
跟1602没有关系,就是一个跑马灯 只不过在蓝桥杯比赛的板子上不是用I/O口直接驱动LED 而是有译码器和锁存器在中间。 
| 2018-2-24 12:38 | 显示全部楼层
谢谢分享
| 2018-4-2 14:28 | 显示全部楼层
不错
| 2018-8-9 12:41 | 显示全部楼层
楼主,能麻烦您指点一下怎样去获取锁存器的地址0xXX?
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /1 下一条

快速回复 返回顶部 返回列表