① 用哪种单片机 可以实现RS422 串口自动校正乱码(就是RX和TX接反了,可以自动调整)和波特率自动适应
单片机加电时用加一段检测串口的初始化程序控制一个交换引脚的元件,例如电子开关提交回答
② AVR单片机中晶振校准如何实现怎么测晶振是否校准
AVR本身功能只能校准片内RC吧,外部晶振本身就是一个基准,正常情况下偏差是很小的,可以通过两端的电容微调。要完全校准只能通过一个外部基准时钟来测出偏差值并记录下来,再在软件里根据偏差来调整
另外一般时钟晶振偏差会小很多,32.768K或它的倍频。
③ 单片机问题-求自动校正北京时间的模块
GPS可以,相关资料可以到: http://search.digikey.com/scripts/DkSearch/dksus.dll?Selection
下载。
④ 单片机电子时钟时间误差如何调整才最有效
用高清度频率计校正时基信号频率。并调节晶体负载电容。或更换晶体。
⑤ 单片机的三种复位方式
一、高电平复位
复位电路的工作原理 在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2us就可以实现,那这个过程是如何实现的呢?在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。
(1)、上电复位
电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。
(2) 按键复位
在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。
总结: 1、复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。 2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。
二、低电平复位
在使用STM32芯片时,常用的复位方式为按键复位,且为低电平复位。其原理与上述高电平复位相反,分析也挺简单,这里不在赘述,只给出按键复位原理
单片机的复位引脚RST(全称RESET)出现2个机器周期以上的复位电平时,单片机就执行复位操作。如果RST持续为复位电平,单片机就处于循环复位状态。当单片机处于正常电平时就正常转入执行程序。
当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为低电平,之后随着时间推移电源通过电阻对电容充电,充满电时RST为高电平。正常工作为高电平,低电平复位。即上电低电平,然后转向高电平。当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST为低电平。正常工作为低电平,高电平复位。
⑥ 51单片机如何判断程序超时并自动重置
用看门狗电路,在响应时对看门狗送信号,时间间隔设置好即可,你可以看看看门狗的工作流程,很符合你的需要(还能防止程序受干扰跑飞)。
不想外接电路的可以尝试带内部看门狗的单片机,别的我不知道,STC的是有的,看厂商技术资料使用,就是可靠性不清楚,我也没用过,你如果愿意可以尝试一下。
⑦ 51单片机不停的自动复位怎么办
你怎么确定单片机是在复位而不是程序出了问题?做一下单步调试吧,如果没有仿真器,可以试着用一盏LED作为断点参考。比如运行到一个地方亮一次?
如果真是不停地复位的话,检查一下你的复位电路是否有问题。51应该没有软复位的吧?我也不懂,求大侠来解答
⑧ 单片机奇偶校验
通常,串行通信的一帧的格式是8-n-1,即8位数据、无校验、1个停止位。
有时为了提高准确度,需要增加一个“奇”校验位或者“偶”校验位。
对于高级语言的做法是很简单的,只要把格式命令“8-n-1”,改为“8-P-1”或“8-O-1”即可。
串行口在带有校验位的通信方式中,是先发送8位数据,然后再发送校验位。
51单片机也可以按照带有校验位的方式进行串行通信,这在51单片机中称为9位数据方式。
51单片机中有两个位,分别称为TB8和RB8,它们在“无校验”的时候,并没有用处。
当51单片机用9位数据方式进行串行通信的时候,TB8和RB8的作用如下:
51单片机在发送的时候,先发送8位数据,然后发送TB8中的内容;
51单片机在接收的时候,先接收8位数据,然后接收校验位,存到RB8中。
编写51单片机程序的时候,应该在发送数据之前,在TB8中,写好待发送的校验位。
8位数据的校验位,可以利用单片机中奇偶标志位P来自动生成,程序如下。
MOV A, #待发数据 ;数据进了A,即刻生成奇偶标志位P
MOV C, P
MOV TB8, C ;校验位送到TB8
MOV SBUF, A ;发送数据,以及P
由于P = 1则说明A中有奇数个1,所以上述程序是“偶”校验的形式。
如果要求的是“奇”校验,则需要增加一条取反指令,如下:
MOV C, P
CPL C
MOV TB8, C ;校验位送到TB8
接收方会把收到的8位数送到SBUF,第9位数,送到RB8,然后自动设立RI = 1。
之后,就可以用RB8中的内容,对刚才收到的8位数进行正确性检验。
另一个问题:51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几?
本来想用串口的模式1,可是仔细一看,模式1是10异步通信方式,1起始位,8数据位,1停止位?
悬赏分:20 - 解决时间:2009-12-1 13:26
问题补充:首先感谢一楼的回答。我还有些疑问,刚才用示波器看了下,当发送0xFF时,示波器显示一位低电平,其余为高电平,这点应该是对的,因为起始位是0.可是为什么发送0xAA时,示波器的(起始位+数据位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列为:0 +1010 1010 + 1,这两个值好像不对,是相反了,要是调一下刚好对?
;-----------------------------------------------------------------
最佳答案用串口的模式1,是10位异步通信方式。
1起始位,8数据位,1停止位,没有奇偶校验位。
这种模式就是:8-n-1(8数据位,无奇偶校验位,1停止位)的模式。
完全符合你的要求。
⑨ 波特率固定下,可否用单片机实现RS422串口自动校正乱码,求助各位大神了,要具体一点的,或者有前例的
对于RS422,你如果连接线正确都没法保证,那一切都是空谈。至于RX,TX接反,那是肯定没办法校正的。
只有在硬件正确的情况下,才能考虑通讯数据的纠错。