1. 单片机通信模块可能遇到的问题
想要学习单片机通信原理,必须对如下基础知识有比较清晰认识。
单片机:在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成单芯片微型计算机,即单片机。MCS-51系列单片机:集成8位CPU、4K字节ROM、128字节RAM、4个8位的并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理。
预备知识:对各种器件有一定的了解
1、电平:
电平特性 :高和低
定义单片机为TTL电平:高+5V(或3.3V取决于单片机的电源) 低+0V
RS232(计算机串口的电平)电平:计算机的串口
高-12 低+12V
电平转换芯片max232——用单片机与电脑通信时需要将单片机的电平转换为计算机能够识别的电平才能和电脑进行通信。
2、二进制:
3、二进制的逻辑运算:
“与”运算 运算符号“·” 单片机中“&”
“或”运算 运算符号“+”单片机中“|”
“非”运算 运算符号“”(求反)
“异或” 00=0
4、51单片机的系列
、STC 89C2RC40C-PDIP 0721CV4336
STC(公司)89(系列)C52(5-系列2-2*4K=8K 内部存储空间)RC40(运行的工作速度40MHZ)C(商业级或I-工业级 差别在温度范围 )-PD(封装型号PD 双列直插式的)IP0721(07年第21周生产)CV4336(该批的型号)
AT89C51(可到55)S(可以串行下载)LV(低电压3V即可)
谢谢!
2. 单片机通信模块可能遇到的问题有哪些
1、单片机的通信有串行通信和并行通信。串行通信分为同步和异步两种。同步通信波特率高,异步要低很多。
2、虽然如此,单片机使用最多的还是异步通信。
3、距离近时,直接将两单片机的TXD与RXD连接,自己根据需要编写协议,根据协议写好程序。
4、一边发送、一边接收,这就实现了单片机通信。
5、距离远时,需要加入电平转换模块,将单片机的TTL电平进行转换
3. 单片机编程可能遇到的问题
一些单片机常见问题的解决办法工作和生活中会遇到许许多多的问题,可能让你一时陷于其中,但是总有解决的办法。随时记下遇到的问题,并做好总结,一方面有助于积累,另一方面也避免同一次错误再犯。
1.PIC12F629仅有一个中断入口,要避免多个中断引发的冲突。
2.引脚电平变化触发中断,和外部INT中断,在总中断GIE清零的时候,不会进入中断程序执行。
3.单片机进入休眠时,要唤醒,常常使用引脚电平变化中断或者外部INT中断。若是前者,按键按下时会唤醒,按键抬起时也会唤醒。如果这个时候还有别的中断,如初始化了定时器,GIE置位了,两种中断就会冲突
4.如果PIC单片机的I/O口作为输入引脚使用,初始化时必须要关比较器,否则,不会响应。
5.看门狗溢出会导致单片机从休眠中醒来。
6.使用PT2262和单片机做发射端时,如果用电池,要做到最省电。正常时,单片机休眠,PTT2262不上电,可以用三极管控制PTT2262的电源端,仅在发射时上电一次。
7.315MHZ的调幅电路中,选频电感可以使用模压电感,也可以自己绕,当然最好使用一端环形PCB铜线。
8.315Mhz的收发天线长度计算公式:L=1/4波长;而波长=3.0*10^8/315Mhz 算出 最佳匹配天线约25cm,可以使用拉杆天线,当然在PCB上用一段长的粗线也可以。
9.接收端使用的是超再生接收电路,网络上普遍流传的那张图纸被人原搬下来后,可以使用,我也剽窃了一次,希望也可以。要想看懂,真不容易。
10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。 10.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大
11.调试时一定要有耐心。沉住气,多反思,没有谁一下子就会成功,之前都会失败很多次。想不通时把问题说出来,旁观者清,别人可以给你启示。
4. 单片机通讯故障
有几个可能,COM-USB设备是否有问题,com口是否选择对了,或者是你单片机本身的故障。
5. 单片机原理及应用问题
编写单片机应用程序的一般思路要点: 1、根据所选单片机型号,查阅该单片机技术文档,了解单片机具有哪些内部资源。
2、阅读软件设计说明书详细了解通过编程所要实现的功能。3、根据所要实现功能,划分模块并确定单片机资源分配方案。4、根据划分的模块确定具体算法。5、画出软件设计总流程图。6、画出个模块软件设计流程图。7、编写模块程序并调试。8、编写主程序并联合调试。
6. 单片机解决实际问题
如上面各位所说,这台高压点焊机,放电电压8000V,只要继电器两触点打火,单片机就会复位,这就是电网波动影响的问题,那建议如下两方面 (一) 5v电源端适当加上电感原件,降低来自变压变换的波动 (二) 可以在单片机驱动光电耦合开关控制输出24V电驱动接触器,从而彻底的将控制回路与高压控制回路分开 我想,这样就没有问题了
7. 单片机遇到的问题解决的方式
从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作,根据需求选择合适的单片机型号和外围器件,完成代码编写。积累了一点对单片机选型、特点的认识。
所以这篇想谈谈关于单片机特点和选型。
单片机
MCU,微处理器,他有很多名字,但是我还是喜欢叫他单片机,因为他就是单单的一片,没什么其他的模块,一片里面就集成了CPU,RAM、ROM等,冯·诺依曼必有的结构单元。只要外部给他晶振,给他电源,他就能像计算机一样工作起来。高级一点的单片机内部RC就能起振,外部晶振都可以免去,只要外部给个稳定的3.3V,就可以工作。
单片机设备做的可以有多小?看到老外玩的蚊子飞机,就知道了,大学的时候非常的震惊,也是这样,让我对飞行器着迷不已。
听过一个趣闻,就是为什么一个字节是8个BIT,而不是12个?据说是最早的芯片,因为工艺限制了,只能有八个引脚,想要更多的引脚怎么办,多用几个八脚芯片就好了,于是1个字节对应一个芯片,一个芯片的八个脚对应八个比特就顺理成章了。
计算机的技术从来都是往两个方向发展的,一个是计算速度快,资源多,同时可处理的事件多,相对应的,功耗大,体积大。一个就是计算速度慢,资源少,但是价格低廉,体积小,功耗低。
前者所发展而来的就是咱们的计算机,WINDOWS\LINUX操作系统,后者就是单片机系统了,各种嵌入式操作系统。手机的范畴有点迷了,我还是愿意把手机放在单片机系统这个层面来看。
在从业人数规模来看,前者发展出来的计算机,软件编程带动了多少人的就业,我们把这从事这职业的人叫做“码农”,他们的工作就是在前人对计算机一层一层又一层的封装下,进行针对应用的开发。顶层软件层的开发需要,促成JAVA、C#、PYTHON这样的语言出现,这些语言本身不涉及底层,只是调用底层的接口函数。显而易见的,想通过JAVA让计算机主板发出一个方波信号出来,是何等困难,但对应的是用JAVA在通用电脑屏幕上显示一串数字是何等的简单。
后者单片机,开发的人数就不如通用计算机了,单片机资源少,可用的“轮子”少,啥玩意都需要自己自力更生。能快速的发出方波,如果有DDS芯片的话,可以调制出正弦波,等等通用主机模块做不到的功能。更加的自定义!缺陷的话,显而易见的,想通过单片机在屏幕上显示一串HELLO WORLD字符,那得是进阶的人才能做到的咯!
所以单片机软件开发不是“纯软件”开发,也需要对硬件有相当的学习,对数字电路、模拟电路也要了解才行。这一行门槛高,很难速成,一定是慢慢积累~
是否“裸奔”
裸奔,顾名思义就是单片机穿不穿衣服?衣服是啥,操作系统呗!
选单片机的时候,根据需求不同,首先要选此单片机是否需要跑操作系统,还是裸奔。
· 当需要用复杂协议栈的时候,操作系统变得非常有用。
例如,希望咱们的单片机可以连互联网,通过网线联网,或者通过WIFI信号联网,那么多半需要运行操作系统,如果不跑操作系统也行,但是工作量很大,不稳定。
工程师需要比方案,咱们比比方案。
1 、开源的RTOS几乎都提供TCP/IP协议栈,社区的开源代码经过很多人,很多年的稳定运行。
2、自己写TCP/IP协议栈,嵌入到裸奔工程中,稳定性未知,BUG数量未知。
两个方案肯定选择前者,笔者自己试过在ENC28J60网卡芯片上自己硬刚协议栈,其中艰难不言而喻,到最后还是妥协选择开源社区。
·当需要运行多个复杂任务的时候,操作系统很有用
操作系统提供TASK机制,消息管理机制,如果上位机编程经验的人,对线程会有很深刻的理解,不同的TASK就是不同的线程。有了TASK机制,对任务的管理就会方便的多。好像安卓系统运行起来了,咱们可以用JAVA为他随时增加新功能,下个APK包,安装就好了,对吧。
什么时候,我会选择裸奔单片机?
裸奔有裸奔的好处,笔者怕黑。认为“上位机”开发人员之所以天天加班,有干不完的事,改不完的BUG,最大的原因就是“黑”。黑盒子太多了。黑盒子指的是一个程序块,这个程序块你压根不知道他是怎么实现的,你只知道他提供什么功能,至于自己是不是正确的调用了黑盒子的接口,你只能通过文档去看,然后就不断不断的试错,效率极低。所以很多时候大神上位机开发人员,是对黑盒子(某语言提供的对象、方法)有深刻掌握的人!
裸奔的单片机不一样,如果你愿意,启动时的汇编代码都可以自己写,配置好时钟,配置好各样的寄存器,所有的代码都是你自己写的,出了问题自己找,自己的代码还找不出原因,那就废了。如果你觉得C语言也是黑盒子,为了躲避C语言开发者给你留的坑,你甚至可以用汇编写代码,当然这个我不推荐了,C语言很棒,bug很少。裸奔开发,你眼前唯一的黑盒子就是硬件是如何实现的,也只有硬件能坑你一把。
不言而喻,裸奔的单片机代码,虽然简单,但是所能做的功能也会有局限。
裸奔的话,联网什么的别想了。
所以如果需求比较简单,一定裸奔,需求困难,就跑操作系统。
什么单片机支持操作系统?
理论上,只要ROM/RAM资源足够,所有的单片机都可以执行嵌入式操作系统,但是,不是所有人都有移植操作系统的能力。
新手还是得靠厂家帮你移植操作系统,所以选单片机的时候,得问一下,上网查一下,它支持哪些操作系统?
以TI的 CC2640为例,这玩意支持TI自家的嵌入式操作系统 TI-RTOS,好用!
裸奔的话,所有单片机都能裸奔,毕竟不穿衣服谁不会啊~
温度特性
注意要看设计产品的工作温度区间,是民用级,还是军工级,有些单片机芯片高低温实验过不了的,会出现代码起飞,内部FLASH莫名丢几个等这些问题,不要等代码写好,送去拿证了,过不了高低温,被老板骂~
低功耗特性
芯片是否有较好的休眠模式,老牌的芯片厂家都非常注重硬件低功耗模式,提出了各种各样的睡眠方式,TI就是把低功耗做的很好的厂家。如果是设计电池供电的产品,一定要考虑低功耗。低功耗更多需要代码去优化,这看一个软件工程师的水平~
一个纽扣电池,产品用一年,那就太牛了!
开发环境
喜欢IAR还是MDK?笔者喜欢IAR多一点,感觉界面很硬朗,MDK的话显得像是在写上位机软件~CORTEX Mx系列的单片机多半都是用MDK开发的,STM32算是明星级产品了。TI的产品大多是用IAR。所以哪个开发环境你更熟悉,也可以作为考虑范畴。
芯片是否冷门?
STM32的技术支持是真的多,资料满天飞,所以如果对自己读DATASHEET的能力有所怀疑的话,一定要选类似STM32这样的popular芯片。
选冷门芯片是对自己的很大挑战,你会发现百度问题几乎没人答,你得写英文e-mail给原厂工程师,满心欢喜克服语言困难写完,他也不会理你。你得翻墙去国外论坛找资料。但是一旦你开发好,你会成就感爆棚,也会觉得,单片机不过如此~然后写一些关于这个芯片的CSDN文章,帮助建设社区!
学生的话可以推荐尝试尝试,工作的就算了,都996了别升级007咯~
最近的状态
大学的时候,对单片机,对飞行器的热情,我都在年复一年,日复一日的工作中慢慢淡去了。现在我唯一想的就是努力把产品做好,卖到世界的各个角落,这也算change world的一种方式吧~嘿嘿,自己给自己熬点鸡汤,愿明天会好~
分享的这些,若是有用的话,点个赞呗~
8. 单片机相关问题
看现象应该是单片机一直在复位 1、检查一下单片机看门狗有没有问题 2、检查一主函数有没有开关LED的程序,把主函数改成最简单死循环的试试
9. 单片机与模块通信
假使你用单片机的串口进行通信的话,你只需要考虑蓝牙转串口和串口转蓝牙的过程就可以了,主要是二者在通信过程中的编码和解码,当然你具体处理的肯定是比特流,利用现成的蓝牙模块,至于具体的蓝牙通信协议,你不用深究,但要知道大概。
蓝牙信号会被手机的蓝牙模块识别,这一步你不用操心,但是手机具体如何响应,需要你控制,这一步要难一些,当然仅是简单功能的话还好说。
你可以把智能手机想像成一个ARM的开发平台,就像单片机一样,但是这个平台上已经有一个大型程序,就像你烧芯片一样,这个程序叫做操作系统,可能是安卓,也可能是IOS,操作系统上会有现成的API函数,就是为了方便开发,你可以基本不考虑硬件而去实现功能。
根据你的目的,你在手机上编写程序,小的app,来解读你所收到的蓝牙信号,比如是你可以触发手机按键控制单片机上的LED。
当然二者的通信过程肯定是有来有往的,就是你必须双向编码和解码,同时做出相应。