做出来一个简简单单的板子,遇到一些问题,这里记录一下
硬件
考虑单片机的驱动力
一个单片机的总功率是有限的,单个脚的驱动能力也是有限的,当需要直接用单片机驱动一些东西的时候是需要考虑这些问题的。比如,stc(除了P0脚)可以直接驱动LED,但是值得注意的是他只能在驱动一个LED的时候表现的不错,当要直接驱动共阳数码管的时候就会驱动力不足。此时就有一些解决方案。
- 并联小的上拉电阻,变成强上拉比如一个1K电阻
- 用三极管放大
- 用驱动芯片
- 用共阴数码管的话就不会遇到需要驱动力特别大的情况,但是要有允许灌电流大的脚
考虑噪音干扰
是的,就数字信号电路也有考虑噪音干扰的地方,虽然我并没有打算去做。
比如我做的这个板子里有一个蜂鸣器,我引脚只用一个电阻直接连到三极管上去了。
第一个问题就是高频噪音,在刚刚启动之类的不稳定状态蜂鸣器会叫,只不过声音比较小就是了。
第二个问题就是他偶尔不叫,推测是单片机拉低的后电平对于三极管来说仍然太高了,导致无法关闭三极管
改进方法包括加滤波的电阻,并给基极加一个下拉电阻,当然不加也能用就是了。
pcb元件排布
最好均匀一点,给边上留一点空间。
软件
单线驱动
实话说这种驱动方式我是第一次见,dht11就是单线双向驱动的。有一点就是你不一定真的要检验他的回复信号。dht11每次启动需要隔两秒,我最后是用手动的方式确认启动的,当然用定时中断也不是不行吧应该。
不要凭空写代码
要么仿真,要么那实物做,凭空写出来的东西可能没有一个函数是对的当然我确实学艺不精就是了。