蓝桥杯单片机基础训练:CT107D单片机综合训练平台——(一)跑马灯

本文介绍了如何在特定平台上使用138译码器和锁存器控制LED灯,通过138译码器的控制引脚操作实现LED的点亮,以及使用延时函数处理闪烁速度和外设管理。作者还分享了KEIL编程环境的使用和代码编写技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        老师给出这张ppt。开始讲说在此平台上P0口不是直接接LED,不能直接给P0口高低电平来点亮LED灯 ,就开始介绍锁存器和138译码器的原理

 先看左下角这个东西,三路输入八路输出,左下三个是控制,ppt说了,八路输出是互斥的低有效输出,意思就是,这八路同时只能有一路是低电平,而哪一路输出低电平就是依靠三路的控制,表格中A0对应A(从右往左看),以此类推,该功能表高低电平的排布规律要学会,先看三个控制的,就是二进制,是001就对应Y1,011就对应Y3,以此类推。

 再来看看锁存器。八路3态输出的非反转透明锁存器就说明左边P0口输入什么右边就输出什么。锁存器有三类引脚,第一类就在上方的控制引脚,接地的是作片选(选择芯片)来用的。再来看LE控制引脚,作用是控制什么时候锁存和打通。看表格可以知道,OE一直给低电平,LE置高电平的时候就是可以打通的。

 在看到这里,上方最右边的跳线帽已经接到23脚,那或非门的WR就是低电平0,原理图中,一样的英文数字代表是接在一起的,比如或非门的Y4C就接在控制引脚LE上。(或非门:先或之后,在取反输出)。此时要打通MIR的话就要Y4输入0,此时或上0就是0,取反就会输出1,输出1就打通了。而要Y4输入0就要回到138译码器左上角的三个控制引脚。至此,代码思路就讲完了。就是从三个控制引脚的代码开始写起。

接下来讲解敲代码的过程。视频用的是keil4,但是本人还是喜欢用keil5,省赛用的是keil4.(佛山)。

 值得注意的是,板子是15系列,开发还是按照C52的模式。

 经典勾选。

 第一步 基本框架搭建好。(基础)

第二步 根据138译码器的原理图,将引脚对应位置定义好。 (基础)这样写可以提醒自己是从从A到C这样看过去,比如100就对应着给HC138_C高电平,BA都给低电平。

 第三步 (基础)延时函数,这个可以在那个烧录软件上生成,然后修改一下就可以延时任意大小的毫秒了。然后再说说格式上,模块化可以从江科大上看到,而我这样写则是国一学长的推荐,要在main.h里面进行外部声明,解耦合。

 第四步 (正式)此时我们就开始写帮助我们实现目的的函数了,在此之前先把之前的Delay1ms改一下名称会舒服点。在来讲这个函数,先根据138译码器,三个控制引脚置高低电平如图所示,就能让Y4置低电平,通过或非门就会让Y4C输出高电平给LE控制MIR的打通,此时就可以通过P0口控制LED灯了。后面就可以检测一下延时函数和之前写的代码有没有问题。

(板子实验现象发现是闪烁很快,而且有非常烦人的蜂鸣器的鸣叫,后面就开始加大延时时间然后,着手把蜂鸣器等外设关闭且模块化方便以后使用,跑马灯不模块化是因为意义不大。)

(基础)再讲之前还是把 这个延时函数改一下,为了我们输入数字就能得到预期的延时时间,经过测试,发现生成500ms得到的延时时间是比较准确的,那咱们就暂时先这样写吧,一毫秒的误差太大了。因为_nop_();,所以记得包含一个intrings的头文件。

(基础)然后就是解决 蜂鸣器乱叫的问题,这是学长的写法,挺简洁的,但我暂时是看不懂,所以要等后面学到才能做出分析。至此,我们就实现了关闭外设和让LED一秒闪一次的目的。

接着实现后面的要求就简单了,先介绍我自己的写法,简单粗暴的用了三个for循环,循环实现,闪烁三遍-->依次点亮-->依次熄灭-->闪烁三遍 实验现象也符合要求。

 视频教程里面也是用循环,但是只有移位操作,比较简洁,实验现象一样,建议学习。

至此,本章内容的学习介绍,如有错误,请多多纠正!谢谢观看! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值