[单片机类]

【一个小小的个人经验分享】【二】CT107D流水灯+蜂鸣器操作

[复制链接]
9185|3
手机看帖
扫描二维码
随时随地手机跟帖
enderman1|  楼主 | 2019-1-30 21:09 | 显示全部楼层 |阅读模式
本帖最后由 enderman1 于 2019-1-30 21:12 编辑

>说在前面的话:好久没更新了吧,挺愧疚的;其实吧,有两个原因:最近年前事情比较多+观察一波反响。不过个人感觉还不错,我决定继续更新。另外,最近看到本站有很多大神已经有发布完整的代码了,因此我决定就不再多余的放代码了哈哈,也就是说本系列仅仅是经验分享,当然必要的时候我也会添加一些核心的部分代码的;希望大家能够理解一下...

上回了解了电路之后,就该真正的使用了;我意识到有的人在拿到板子之后肯定会有所疑问:为什么这个板子上的蜂鸣器总是会响呢,更有甚者会以为是板子的问题;但是我们不得不养成遇到问题理性分析的习惯,既然这个蜂鸣器会响,就要分析电路关闭它:

【一】关闭蜂鸣器
1548215599346374.jpg 这个就是那个蜂鸣器了,另一端有个N_BUZZ网络标签;寻找一下相同的网络标签:

1548215599619545.jpg 不难发现连接在ULN2003的OUT7上    也就是说想要操作OUT7的话,要置位或者复位P06,而中间连接了一个锁存器,开启锁存器要置位Y5C:

1548215599561911.jpg (这是一个或非门)当Y5C为1时,WR=0,Y5=0;而WR通过跳线帽连接了GND始终为0所以让Y5为0就行了;
1548215599487165.jpg 这个就是罪魁祸首138译码器了,通过操作P27 P26 P25来控制这一系列的东西....


而关闭蜂鸣器的方法还是比较多的,比如说:
1、对P2口进行总线操作,P2|=0xa0; P0&=0xbf;(复位操作蜂鸣器的引脚)
                               或者P2|=0xa0; P0|=0x40;(置位位操作蜂鸣器的引脚)
    这样就可以开关蜂鸣器了
2、由于频繁使用138译码器(数码管,继电器,蜂鸣器,流水灯,点阵....),所以干脆把操作138译码器这3个IO口写成一个函数(可能这个思路还是比较普遍的,本站的一个dalao和我的思路是一样的,说我是抄袭的也没办法咯....


void switch_138(unsigned char dat){
        switch(dat){
                case 0:P27=0;P26=0;P25=0;break;
                case 1:P27=0;P26=0;P25=1;break;
                case 2:P27=0;P26=1;P25=0;break;
                case 3:P27=0;P26=1;P25=1;break;
                case 4:P27=1;P26=0;P25=0;break;
                case 5:P27=1;P26=0;P25=1;break;
                case 6:P27=1;P26=1;P25=0;break;
                case 7:P27=1;P26=1;P25=1;break;
                //default:break;
        }
}
就是这个函数了,用的时候直接switch_138(端口号4-7),然后P0相应操作就行了,它的好处就是增加代码的可读性,我更推荐这种方法...另外通过观察电路图会发现,0~3都可以使锁存器的数据锁存,所以这个函数使用非常方面,用就完事儿了。

【二】流水灯
其实有了刚刚的操作之后, 点灯就简单多了;这里不得不说,蓝桥杯开发板设计的还是很不错的,设计者为了扩展IO口可谓是“不择手段”,而51单片机典型的扩展IO口就是连接8255A,或者就是这个方法;P2口用作控制,P0口做为数据传输。
1、那么言归正传,对LED发光的操作就是对P0口的操作,用上边的switch_138(4),直接选通U6这个锁存器  P0口进行操作,至于操作的具体内容就要看题目内容了。。。2、
2、流水灯的操作有时就是可以看成一个固定的数组,显示的“动画”可以通过code 直接牺牲掉ROM来换来计算的速度;当然用各种循环判断移位也是可以的了;总之方法非常的多,没有必要一一举例。

下一期会谈一谈CT107D里数码管这个东西,里面涉及到延时和一些骚操作,所以内容会比较长(个人人为...),这期的东西可能有点少哈(因为流水灯确实没什么好说的,主要在于多多练习啊)欢迎在本帖下方评论留言 ,再见~








下方是流水灯相关电路:(谁会知道为什么会出现~于是就有了这句话....)
1548215599953625.jpg
1548217636725499.png
1548217636900572.png

相关帖子

二九结狐六体| | 2019-1-31 08:05 | 显示全部楼层
可以的啊! 很好的帖子啊!

使用特权

评论回复
PerryW| | 2020-2-14 16:43 | 显示全部楼层
想问一下贴主有没有遇到led和数码管一起使用的时候发生冲突的情况,个人感觉是数码管的锁存器switch_138(7)执行了 led switch_138(4)的P0口代码。目前还没找到解决方法。代码没有编译错误。

使用特权

评论回复
nvjwiciw659| | 2020-4-20 15:43 | 显示全部楼层
岩浆岩浆帅帅

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

71

帖子

12

粉丝