大家好,这里是一起学单片机上一个视频给大家拍了一下实物连接啊,我们输出 pwm, 然后用 逻辑分析抓了一下波形啊,这节我们就来过一下程序,那么主程序在原来的那个基础框架上,模板框架上增加了个 pwm 的初始化,然后按键增加了按键对 pwm 的调节, 然后 pwm 的程序初始化吗?我们大概过一下就行了,因为前面也拍过视频给大家讲过,我们这里头一定要理理解,我们的 pw 输出的这个频率是我们系统时钟,然后除以我们总的技术周期,然后再除以一个分频那个系数, 这样的话就可以完成我们 pwm 频率,嗯,设置,然后我们的整个占空笔呢,就是我们那个我们这边的一个 翻转点的数值比上我们的整个周期乘以百分之百,对不对?很简单,我现在把我们的整个技术周期设置为一千,他们设置成一千的好处是什么呢?那么我们就可以精准到零点一了,对不对?如果我们设置的是一百的话, 那我们每次调是百分之一的调,对吧?那么我们设置成一千的话,如果我去改变,比如变成九九九, 那我们是不是相当于整个的占空笔是百分之九十九点九啊?就是我们按零点一都可以调,对吧? 这个好处就在这里,如果你是一万的话,那么如果你是一万,那么可以想象你的控制的精度可以到零点零一,可以调节,对不对? 你改变一的时候,相当于改变数字多一个一,少一个一,占整个分数的是不是零点零一啊?就这个原因啊, 所以我这里是保持一千,然后呢,我们的整个技术周期是一千,但是注意这里是要加个一才是一千,那么我们真正写进去的值是九十九,九九,为什么?因为我们的技术值是从零开始的啊,是从零开始的, 零到九九九是一千个数啊,这里要注意,不管你上向上技术还是这条有个向下技术啊,他都是有到零这个概念的啊,所以这个零不要低,他不是从一开始, 然后分屏系数很好理解,就是我们主屏进行分屏啊,那么分屏除数吗?这个不能为零,所以说即使你是 pic 写成零的话,那么他也分屏,也就是一分屏,也就是系统时钟分屏啊,所以这个写进的值也是要加一的,比如说我,那我要 三百分拼,那我们这边写进的值一定是二九九啊,大家要注意啊,这两个,这个加一一定要注意, 你不要看。嗯,现在如果频率比较慢,你多一个一,少一好影响不大。当你的频率非常高的时候,多一个一,少一个一,那么就很明显了。尤其分屏的话, 那么多分一次频的,这个整个的整整个频率会差别非常大,比如说二十四兆,二十四 k, 我多分一瓶就变成十二 k 了,你看这个频率差的非常大了,所以大家一定要注意啊。 好,那我们来看一下,这就是频率和占空笔,我们怎么理解,怎么计算,剩下来就非常简单了, 那么就是都是通用的。大家可以看一下这个规格书里有这些历程啊,它有实验历程,基本上就是这样的,然后我们先要使能,我们来 让他输出 pwm, 如果不使能的话,他可以作为其他的功能啊,普通 l 口啊,其他的功能包括 spi 啊,那我们要这个寄存器制一的话,我们这对应的端口才能输出 pwm, 然后呢?还有我们的端口是否转移,因为我们这个设计有些端口是可以有副用银角的,比如说你批一点一口被占用了,我们可以转移到批五点四口这样子啊,所以这边有个批一口批大门输出到底是在哪个银角哪个端口上,这里可以转移的, 然后就是把我们的分屏系数,我们的时钟进行分屏,把这个寄寄存器进行复制。高八位第八位啊, 然后我们通道模式就是输出 pwm 模式,是输出模式,然后我们再把我们的整个技术 周期高八位第八位写进去,那么剩下就是写两个通道的翻转点的值啊,这翻转点的值,那么到这个点就会进行翻转, 然后就是从高电瓶切成低电瓶啊,然后这里头有模式,还有一个输出即兴的选择啊,这边 ccer 就是到底先输出高电瓶,输出低电瓶,在这里选择的啊,又可以选择的,然后有我们的总开关打开,然后使能,我们的中断,也就是到他翻转点的时候,我们可以进入中断啊,如果你不使能的话,那么就 pw 无所谓。 然后这边就是再有一个,增加一个,把我们的 pwm 的这个激素器啊,内部激素器打开,因为他要进行技术,然后进行对比才能翻转,对吧?剩下就比较简单了,然后在这个程序里头还加上我们的创口显示,还加 加上我们幺六零二显示,这里头幺六零二显示有个小技巧,就是因为我们希望输出的都是实际有用的数字,比如说我们输出百分之十五,可以看出来这时候他占幺六零二的三个位,对不对?但如果这是我们现在信号变成百分之五了,我们希望是这样的, 那么是百分之五,而不是零五百分之,对吧?那么可以看一下这样的对比的话,我们这边原来这位是原来是占的,原来是百分号, 所以这位一定要被空格给替代掉。这里要注意,也就是当我们的数字是返回的这个字母串的有效数字只有一位的时候,我们这边要把它加一个空格,把这位占掉,因为我们幺六零二如果你这位不刷新的话,他会保持到原来的数数的数, 那么如果你这时候刚开始一上来是百分之,比如说你输入是两位数的数字,那么这边是有一个百分号,对不对?当你变成一位的数字四数字的时候,这边就会变成什么, 如果你这边不填除掉,比如说变成百分之五,就会出现百分之五,百分号,百分号,对不对?多了一个不需要的百分号,所以大家注意这里一定要处理掉啊,就这个原因我们剩下就没什么了, 主要重点就在这里,我这边只是输出了 p 一和 p 二这四个通道, p 一点零一点一互补, p 一点二,一点三互补啊,也就说一个百分之八十五,一个百分之十五, 那么剩下的就比较简单了,按键了,你可以对这个百分号这个翻转点的值进行改变,我这里就是从百分之五到百分之九十五可调,可以看 出来我这里并没有加减一啊,也就说我上来是加减十,也就是按百分之一来调的,并不是百分之零点一啊。当然如果你想控制精度高一点,那么再加个百分之零点一调节也行的啊。 我还有口,因为三号键四号键按键还没有用,你可以改变成微条,有百分之零点一的条,然后长按短按我还没加进去,如果加了长按按键的话,可以快速调节,对不对?好,整个程序就到这里啊, 那么其实这里头我还下一节再给大家讲一个,这里头其实,呃隐藏了一个小的细节,就是我们的 pwm 可以作为计数器定时器来用啊,不是计数器啊,是定时器来用, 因为他可以引入一个什么中段对不对?那么我们设置一段时间让他进入中段不就可以了吗?这不相当于额外的 定时器吗?也就说这这时候这个整个模块帮我们提供了有记录啊。呃,有两个大通道的 pwpwmapwmb, 最少有两组定时器啊,然后这两个定时器呢?每组里头有就可以细分为四个子定时器,相当于啊。 好,这个视频我们下次也下一节再拍,这节到这里啊,欢迎大家对我的视频评论、转发、点赞,谢谢大家。
粉丝6386获赞2.4万

关于 p w m 的基础知识,上一节已经讲解清楚了,现在开始编写程序如何使用 p w m 控制 r g b 亮度主函数。首先初始化 adc 和 p w m 模块, p w m 主要设置占空比和频率,然后选择对应的 p w m 通道,使能 p w m 输出。 此循环里面首先通过 adc 采集变位器的数字量,然后复制给 pwm 占空笔控制寄存器。本程序之控制 rgb 的绿灯、红灯和蓝灯控制引脚均无输出。 关注我,学习更多电路和编程知识。程序编写完成后,将 hax 文件收录到单片集中。程序收录 成功后,调节开发板上的电位器, rgb 灯、绿灯亮度跟随变化。

大家好,这里是一起学单拼机,前两个视频给大家拍过这个利创 eta 打的板啊,就是我们用 stc 八 h e k 幺七做了一个 pwm 发声器,那么食物焊接好了,我们就来测试一下啊, 那么再过一下硬件的结构吧,这边就是数码管四位供养,数码管背后有两片五九五来驱动啊, 然后这部分带三十片的,这部分是电源处理,因为我们供电是二十四伏,呃,因为我们目标最后输出的 pwm 信号有二十四伏啊,不得拉高到二十四伏, 因为外部供电是二十四伏的话,我们就不要单独再做一个五伏电源供供给单片机了,我们就利用这二十四伏,所以这边做了个线形降压,用了 l m 三幺七做个限行降压,降到二十四伏,但是这个呢压差有点过大,这个散热片还是很烫的,手是放不上 上去的,那么还是蛮烫的,所以这个地方后续要改善,那么把这个地方改成就开关性降压芯片,比如说 lm2596 这种啊。然后这就是单片机, 这部分是光偶,光偶呢,就做一个转速反馈检测啊,然后这边四个按键就是两个通道 pwm 加减,然后呢每过五秒钟啊,是五秒钟显示 pwm, 两秒钟显示转速啊,下面切成一个一个点的这个,这是转速,现在我们没有接转速反馈信号,所以是零。这两部分完全一样的电路,就是我们的最后的 pwm 就是升压扩留电路啊,是这两部分, 那么这边的通道就是上面是 pwm 一 pwm 公共多案,下面是转速反馈,转速反馈,我外接这个按键,我们模拟按这个按键 转速就会有反反应啊,因为实实物的转速是三十个脉冲,会显示就是当前的电机是转了一转, 那么你要按的非常快才能是六十啊,就是我这边显示六十二 pm 显示一分钟是六十转吗?就是一秒钟转一转,你要按三十次,所以我到时候我们来测试一下,以我单身几十年的手速是达不到这样的速度的。好,我们来看一下 现在我的第一通道输出是百分之二十,我们看一下第二通道百分之五十,我们现在的供电电压是十八点九伏,当我们的 pdrm 输出电压是在大概在十八伏左右啊, 因为我这边用了一个第一,看到吗?这个是做一个防反接啊,非常简单的防反接。我们来看一下第一的电压线是多少?十八点二 十八点二伏,对吧?那么百分之二十的话应该在三点六伏左右,我们来看一下一通道的电压值, 来看一下,是吧?没有问题啊,三点六伏,那么我们再看二通道应该是一半,对吧?九十八伏的话,九点零六伏,没问题啊,是吧?那么随机来改变一下,比如说我们把一通道降到百分之十, 百分之十,那么你在一点八伏左右,一点八伏,好,没问题啊,这是我们两路的 pwm, 我们同时遥控器遥控也是没问题的,我们来看一下 遥控器,我们一号键是加,看到吗?百分之十六这样往上加,那么四五是对 对应的二号通道的加和减,我们加加到百分之六十减。 然后还有一个按键呢,就是我们的这个红色的开关键我们做一个数据的储存,就下次开机的时候还是输出当前的 pwm 信号,我们来看一下,是百分之二十一,百分之五十六,对吧?我们现在关机再开机看一下, 开机自检一下, 百分之二十一,百分之五十六,没问题啊。 好,我们再看一下转速反馈信号,因为这个转速反馈信号一秒钟按三十次,这边才能显示六十啊,因为这个简单数学关系,那我现在疯狂的按,你看只有二啊,一秒钟我如 如何也按不到三六,三十次,十四,对吧?现在就是相当于电机一分钟转十四圈,只有你要一秒钟按三十次,那么电机可以一一分钟是六十,那个地方应该显示六十,好吧, 那么就是这样啊,这几个功能都测试了一下,没问题, pwm 一, pwm 二转速反馈,包括我们的红外遥控,还有我们的储存储功能都测试没有问题。好,这节视频就到这里啊,欢迎大家录的视频评论转发点赞,谢谢大家。

大家好,这个的话是基于我们 s t c 八二 h 四 k 六四 t 尔的一颗单片机做的一个小的一个制作,主要就是基于它的一个 led 驱动跟触摸驱动做的一块小板子,也叫触摸电子琴,上面的话是驱动了一个三个四位的数码管,下面加了十四路的触摸驱动,其实他最多可以做十六路的触摸,那我们这边 另外两个触摸用来给他做 rtc 的一个时钟的信号源,所以没有接,那么这现在来简单的上电测试一下, 可以看到上店以后数码管会显示 一个 logo, 这个的话, hello s t c 的一个芯片名称,可以看到刚刚 logo 结束以后,这边显示了一个 p 杠零零,那么这个 p 杠零零就是它的一个模式,它从 p 杠零零到 p 杠零四总共有五个模式, p 杠零零的话这边就是显示当前的一个时间,因为这颗芯片有 rtc 的功能,那我们只要这边放入一颗纽扣电池,他就可以实现一个掉电走时的一个功能, 那我这边没有装电池就不演示这个功能。然后按下这颗模式切换,可以切换到 p 杠零一,他是从零零到零四循环切换的, 这个模式主要是针对我们这个触摸以及 led 进行一个测试,可以看到触摸对应的弹簧按下它边上的 led 会亮起下面的这七个。 第一个最底下的这个灯他是按下就会点亮,第二个灯他是长按三秒以后会点亮,第三个灯是松开的时候会亮一下,可以看到其实每一个都是如此, 然后右边的下面三个也是一样的道理,他是按下以后这颗灯就会点亮,这是 p 杠零一,是一个 led 跟一个触摸的一个测试,然后我们切换到 p 杠零二,这个的话是一个手动 弹琴那个功能,可以看到下面的这七个按钮对应的是一到七的一个音符,左边是一个低音、中音、高音的一个切换,可以听一下低音的时候他的一到七对应的声音, 再来听一下重音, 可以看到他三个音对应的七个音节声音都是不一样的,那么这里主要是通过改变他 pw 的一个频率,输出的频率不一样,可能耳听出来的声音也是不太一样的,那这就是他最简单一个工作原理,这边是直接改变频率, 从而去驱动这个蜂鸣器发出声音,这个是一个手动,当然了像我这样的手不太灵活的弹不出来,那我们直接切换到下一个 p 杠零三,是一个自动演示,那么这个零是表示当前的一个序号, 我们按一下这个启动,他就可以自动播放,这个是当前的一个音节,这个是当前的一个音阶,分别对应一是低音,二是中音,三是高音,这个四是当前的一个节 拍数,当然了不要的话也可以暂停,当然还可以切换。这里总共做了九首音乐, 当然勉强也是能听得出他是什么歌的,对吧?然后再来第四个模式,这个模式就是一个 p w m, 这个模式是一个 p w m 转 d a c 的一个输出,然后加了一个功放。这边的话,如果说单片机有需要播放一些简易的音频,可以直接这样子处理,是不是再来听一遍?音质其实还是可以的, 只要外接一个小喇叭就可以,这就是我们整个的一个系统,拜拜。

本视频讲解一下 pwm 的基础知识。 pwm 的全称是脉冲宽度调制,是通过将有效的电信号分散成离散形式,从而来降低电信号所传递的平均功率的一种方式。扶直周期或频率不变,脉宽或占空比可调的脉冲波 如果我们想要控制一个直流电机的转速,我们可以通过改变其两端电压即可。但是该种方法有很大的局限性,可调直流电源构造复杂,成本高昂,应用起来很不现实。 所以我们采用另外的控制方式。电压源驱动器直流电机电压源提供直流电压,不同的驱动器控制不同的直流电机,应用非常灵活。其中驱动器对电机的调速控制就是利用 pw m。 如图,电机为某相同转速时,红色代表驱动器输出幅值不变的 p w m 波,蓝色代表可调直流电源输出的电压,两者都是直接作用到扩散。一、当 p w m 波的占空比越大时, 所对应的直流电压与 pwm 波的幅值越接近,反之与零幅越接近。二、周期的红色 pwm 波脉宽下的矩形面积之和与蓝色直流电压的面积相等及幅秒机相等, 又红浮纸乘以碳等于又蓝 t。 例如,当 pwm 波的浮值为二十四伏,占空比为百分之五十时, 与直流电压十二伏作用到电机上所产生的效果是一模一样的,即速度相同,即二十四伏乘以百分之五十等于十二伏。 twm 波的频率不可随意, 频率太低会导致电机运转不畅,震动大、噪音大,频率太高会导致驱动器开关损耗较大,甚至有电机会笑叫而不转的情况,一般一 k 到三十 k 的 pwm 频率较为普遍。 pwm 实现的原理是通过锯齿波、三角波、再波所需要合成的波形调制波进行比较,然后确定 pwm 所需要输出的即兴通常是高电瓶或者是低电瓶, 因为一般都是作用到开关元器键上。如下图所示,震荡器输出的锯齿波和参考值进行比较,然后就可以输出 pwm 波形了。 软件模拟 pwm 产生一般采用定时器实现,使用定时器控制 gpio 口的高电瓶和低电瓶的翻转时间,即可实现输出方 多的频率控制和占空比控制。软件模拟 pwm 常应用于实时性要求不高、频率要求不高的场合。如下是软件模拟 pwm 实现代码。

大家好,这里是一起学台面机,这两天又没更新了,又在干别的事情,那么继续把 stc 八 h 这个模块,我把它做了个最小系统版啊,这板子,但是做出来是有问题的,我把它焊接了上了,然后用了 iphone c 通信啊, 然后按键什么都连好了,但是测试有问题,然后我用我觉得应该软件我查了没问题,我现在又随便的又找了一块啊, 那么就不明白把它焊接是裸裸机,这样连接测试就没有问题,那么看来是我板子焊接是哪里那个硬件产生的故障, 我们还是这节视频,就是说是搭建了食物,我们加了个幺六零二 iphone c 同行的站单,编辑两个银角,然后我们来做一下 pwm 实验啊,那么现在我这个实验的是这个液晶一秒钟刷 进一次啊,只是做实验,包括后面的赫兹这两个也没显示啊,但是串口中会每隔一秒钟刷新一下当前的 pwm, 大家看一下, 八十赫兹百分之二十八,我们来实际逻辑分析抓一下。我这边输出了两个音角,是一对互补的,就有种他的自己的 pwmen 和 ep 这两个通道, 现在百分之二十八,八十,赫兹七十九点九三,二十八点零一,下面是七十二,对吧?没问题,我们来改变一下,试一下 现在我的按键,因为刷新比较慢啊啊,液晶水显示刷新比较慢, 后面我再给大家讲具体的程序啊,现在先演示一下实验,百分之四十二还是八十核磁啊, 现在是七十九点九六,四十一点九九,对吧?下面是百分之五十八,七十九点九五啊,好,效果还是不错的,比较精准的。 好,这节视频先演示到这里啊,下一节视频我们就来具体分析下程序,包括 iphone c 通信的注意要点,还有 pw 模块的注意要点啊。好,这节视频到这里,欢迎大家对我的视频评论、转发点赞,谢谢。

这是一颗 stc 八 h 一 k 幺六单片机,他是红金科技近年来主推的一款高性能微控制器。 stc 八系列单片机仍以五幺为内核指令代码与传统的八零 c 五幺单片机完全兼容, 一点九至五点五伏的宽工作电压范围使得他的应用场合更加的广泛。不同于以往的幺幺幺二幺五等系列单片机, stc 八系列单片机绝大多数为贴片封装,体积小巧, 如 l q f p 三十二封装银角间距为零点八毫米。 tssop 二零封装银角间距为零点六五毫米, q f n 二零封装银角间距仅为零点四毫米。同时,八系列的面积是 stc 首款集成片内 iphone c 接口的单片机。他的利益突出特点是拥有独立的 adc, 外部参考电压源输入银角,这使得他的 adc 更加准确。 s t c 八系列单片机型号众多,不同型号的单片机外设及内存容量大同小异,使用时根据需求选取相应的资源即可。我们以 s t c 八一八 k 幺六 s 四 a 幺二为例, a 代表旗舰款, 内存容量为八千字节,闪存容量为十六千字节,有四个独立串口, adc 精度为十二位。 八系列单片机拥有高精度的内部整档器成分下误差仅为正负百分之零点三,程序烧血时默认使用内部整档器。可以看出官方对这个系列 单片机的内部诊断器经络非常的自信。我们在下载界面可以选择内部诊断器的频率,如果使用外部进证,则需要软件设置相关的系统式中控制集存器。

iphone c 总线是一种常用的片机总线。 iphone c 总线只有两根线,一根串行数据线 star, 一根串行时,中线 scl 总线有主机控制, iphone c 是同步串行半双工总线。 对于多个从机,每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。 iphone c 一次完整通信包括如下步骤,一、主机发送起始条件,主机占用总线,唤醒总线所有的层机。二、 主机发送器件地址,总线上所有的从机就会拿这个器件跟自身进行比较,匹配,成功的那个从机就会回复一个应答信号给主机,并根据方向位来决定数据传输方向。三、进行有效数据交流,每传输完一个直接数据都 要给应答。四、主机发送停止信号,释放总线结束本次通信起始信号。当 scl 线是高电瓶时, star 线从高电瓶向低电瓶切换,表示通讯的起始停止信号。当 scl 线是高电瓶时, 大线由低电瓶向高电瓶切换,表示通讯的停止。起始和停止信号一般由主机产生,其示意图如下, iphone c 使用 s、 d、 a 信号线来传输数据,使用 s、 c、 l 信号线进行数据同步。 s、 d、 a 数据线在 c、 c、 l 的每个时钟周期传输一位数据。传输时, s、 c、 l 为高电瓶的时候, s、 d、 a 表示的数据有效, 以此时的 s、 d、 a 为高电瓶时表示数据一为低电瓶时,表示数据零。当 s、 c、 l 为低电瓶时, s、 d、 a 的数据无效。一般 在这个时候 sda 进行电瓶切换,为下一次表示数据做好准备。每次数据传输都以自结为单位,每次传输的自结数不受限制。 iphone c 总线上的每个设备都有自己的独立地址,主机发起通讯时,通过 sda 信号线发送设备地址,也叫从机地址来查找从机。 iphone c 协议规定,设备地址可以是七位、八位或十位。 实际中七位的地址应用比较广泛。紧跟设备地址的一个数据位用来表示数据传输方向,他是数据方向位。 rw 可以是第八位,设备地址是七位或第十一位,设备地址是十位。数据方向位为一时,表示主机由从机读数据,该位为零时,表示主机向从机写数据。如下图表示从机地址是七位,数据方向位为第八、 八位。 iphone c 的数据和地址传输都在响应,响应包括应答 x 和非应答 neck 两种信号作为数据接收端时,当设备无论主从机接收到 iphone c 传输的一个字节数据或地址后,若希望对方继续发送数据, 则需要向对方发送应答艾克信号,发送方会继续发送下一个数据。若接收端希望结束数据传输,则向对方发送非应答耐克信号,发送方接收到该信号后,会产生一个停止信号,结束信号传输。传输时,主机产生时钟。 在第九个时钟时,数据发送端会释放 s d a 的控制权,由数据接收端控制 s d a。 若 s d a 为高电瓶,表示非应答信号。 neck 低电瓶表示应答信号。 iphone c 有三种通信方式,主机只读取 数据,主机仅发送数据,主机既读数据又发送数据。 iphone c 不同模式的速率不一样,需要查看规格书,了解从机支持的模式。主机和从机速率不匹配,通信会产生问题。 iphone c 上拉电阻阻值一般根据经验选择四点七 k 阻值最小值需要考虑单片机 io 口的灌电流大小,灌电流太大容易损坏单片机 io 口 组值最大值需要考虑 iphone c 上升延时间不同。 iphone c 速率要求信号上升时间不同,如果不符合要求,会导致通信异常或者数据错误、丢包等问题,可根据参考公式进行计算。 iphone c 常见如下问题, iphone c 总线的地址错误。 iphone c 总线的持续错误。 iphone c 总线的电压错 错误。 iphone c 总线的硬件错误。 iphone c 总线的软件错误。常用的 iphone c 调试工具一般是试播器或者逻辑分析仪。 iphone c 总线十位地址主从如何进行通信呢?关注我,学习更多电路和编程知识。