易语言单片机串口通讯调试助手乱码

我使用sim900a短信模块时,串口调试助手一直出现这个,哪位大神知道怎么解决? - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
我使用sim900a短信模块时,串口调试助手一直出现这个,哪位大神知道怎么解决?
等待验证会员
15:44:55  
[img]file:///C:\Users\flj\AppData\Roaming\Tencent\Users\\QQ\WinTemp\RichOle\DT`0DBM_QGCP3XQ[(NSOM2L.png[/img]
(12.01 KB, 下载次数: 3)
15:44 上传
18:42:34  
你不停得在重启模块
08:27:56  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
模块开机以及注册基站时有个2a的大电流,电压会跌落一下,属于正常,如果供电芯片带载能力不够,电压跌落过大会造成单片机及模块掉电复位,如果程序没问题,建议抓下4V供电端的电压比较下单片机掉电复位的具体电压…
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司查看: 28058|回复: 41
关于ESP8266WIFI模块的使用问题
把GND和TXD之间两个引脚也接高吧
回帖助人的奖励!
Powered by帮忙分析下,串口调试助手怎么显示乱码,xiexie - 单片机 -
电子工程世界-论坛
后使用快捷导航没有帐号?
请完成以下验证码
查看: 6902|回复: 1
帮忙分析下,串口调试助手怎么显示乱码,xiexie
在线时间8 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
/***********************************************
****& && &AVR&&DS范例& && && &&&***
**** MCU: AT& && && && && && && && && &***
**** 作者:&&maweili& && && && && && && && &***
**** 编译器:WINAVR& && && && && && & ***
****& && && && && && && && && && && && && &&&***
****&&& & & & & && && &&&***
***********************************************/
#include &avr/io.h&& && &&&
#include &util/delay.h&
#include &avr/interrupt.h&& &//中断函数头文件
//××××××××××××引脚宏定义×××××××××××××
//18B20定义
# SET_DQ (PORTA) |= (1 && (PA2))& && &// 18b20 高电平
#define CLR_DQ (PORTA) &=~(1 && (PA2))& && &// 18b20
#define DQ_IN&&(PINA) & (1&&(PA2))& && && && &// 18b20信号输入
#define SET_OUT (DDRA)|= (1&&(PA2))& && && &//PA2定义成输出
#define SET_IN&&(DDRA)&=~(1&&(PA2))& && && &//PA2定义成输入
//常量声明
#define BAUD 9600
//全局变量声明
unsigned char Temp_H,Temp_L,OK_F
//函数声明
void Delayus(unsigned int lus);
void Delayms(unsigned int lms);
void Port_Init(void);& &//端口初始化配置
void Usart_Init(void);&&//USART寄存器设置
void Usart_PutChar(unsigned char cT);&&//字节发送函数
void Usart_PutString(unsigned char *pcString);
void Usart_PutString(unsigned char *pcString);
unsigned char _Init(void);
unsigned char Read_18b20(void);& && &&&//读18b20
void Write_18b20(unsigned char dat);& &//写18b20
int main(void)& && && && &
& & & & unsigned int tempint,&&//temp用于存储温度值,
& & & && && && && && && && && &&&//tempint用于存储温度整数值,temppoint用于存储温度小数值,
& & & & Port_Init();
& & & & Usart_Init();
& & & & tempint = 0;
& & & & temppoint=0;
& & & & Temp_H = 0;
& & & & Temp_L = 0;
& & & & OK_Flag = 0;
& & & & Usart_PutString((unsigned char *)&DS18B20 温度测量实验&);
& & & & Usart_PutChar(0x0D);
& & & & Usart_PutChar(0x0A);&&//结尾发送回车换行
& & & & sei();& && && & //使能全局中断&&
& & & & while(1)
& & & & {& & & & & & & & & & & &
& & & & & & & & /*
& & & & & & & & if(DS18B20_Init())
& & & & & & & & {
& & & & & & & & & & & & PORTB = 0x01;
& & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & PORTB = 0x02;
& & & & & & & & }
& & & & & & & & */
& & & & & & & & cli();
& & & & & & & & DS18B20_Init();& &&&//初始化DS18B20
& & & & & & & &
& & & & & & & & Write_18b20(0Xcc);&&//发送ROM指令,跳过ROM匹配
& & & & & & & &
& & & & & & & & Write_18b20(0X44);&&//& & & & & & & &
& & & & & & & &
& & & & & & & & for(i=0;i&50;i++)& && &//延时等转换完成
& & & & & & & & {
& & & & & & & & & & & & Delayms(20);
& & & & & & & & }
& & & & & & & &
& & & & & & & & DS18B20_Init();& & //初始化DS18B20
& & & & & & & &
& & & & & & & & Write_18b20(0Xcc);&&//发送ROM指令,跳过ROM匹配
& & & & & & & &
& & & & & & & & Write_18b20(0Xbe);&&//发送读取暂存器指令
& & & & & & & & & & & &
& & & & & & & & Temp_L = Read_18b20(); //获得温度的低位
& & & & & & & &
& & & & & & & & Temp_H = Read_18b20(); //获得温度的高位
& & & & & & & & & & & &
& & & & & & & & if(Temp_H & 0x08)& &//判断温度的正负
& & & & & & & & {
& & & & & & & & & & & & PORTB = 0x04;
& & & & & & & & & & & & Temp_H = ~Temp_H;&&//负温度。取反加1
& & & & & & & & & & & & Temp_L = ~Temp_L;&&//
& & & & & & & &
& & & & & & & & & & & & S |= ~(1 && SREG_C);&&//清零进位位标志
& & & & & & & & & & & & Temp_L++;& && && && && && &//温度低字节加1
& & & & & & & & & & & & if(SREG & (1 && SREG_C))&&//有进位吗?
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & Temp_H++;& && && &&&//有进位,则温度高字节加1
& & & & & & & & & & & & }
& & & & & & & &
& & & & & & & & }& & & &
& & & & & & & & PORTB |= (1 && PB1);
& & & & & & & & temppoint = Temp_L & 0x0f;
& & & & & & & &
& & & & & & & & tempint = ((Temp_H && 4) & 0x70) | (Temp_L && 4);& & & & & & & &
& & & & & & & &
& & & & & & & & Usart_PutString((unsigned char *)&当前环境温度为:&);
& & & & & & & & Usart_PutChar(tempint / 1000 + 0x30);
& & & & & & & & Usart_PutChar(tempint % 1000 / 100 + 0x30);
& & & & & & & & Usart_PutChar(tempint % 100 / 10 + 0x30);
& & & & & & & & Usart_PutChar(tempint % 10 + 0x30);
& & & & & & & & Usart_PutChar(0x0D);
& & & & & & & & Usart_PutChar(0x0A);&&//结尾发送回车换行& & & &
& & & & & & & & sei();
& & & & & & & & for(i=0;i&200;i++)& && &//
& & & & & & & & {
& & & & & & & & & & & & Delayms(20);
& & & & & & & & }
//端口状态初始化设置函数
void Port_Init()
& & & & PORTD = 0X00;& && && & //USART的发送接收端口分别为PD0和PD1
& & & & DDRD |= (0 && PD1);& &//PD0为接收端口,置为输入口;PD1为发送端口,置为输出口
& & DDRD |= (1 && PD0);
& & & & PORTB = 0x00;
& & & & DDRB = 0
& & & & DDRA &= ~(1 && PA2);// 输入模式(上电时为高电平)
& & PORTA &= ~(1 && PA2);// 输出锁存器写0,以后不再更改
//USART寄存器配置函数
void Usart_Init()
& & & & UCSRA = 0X00;& & & &
& & & & UCSRC |= (1&&URSEL) | (1 && UCSZ1) | (1 && UCSZ0);&&//异步,数据格式8,N,1
& & & && && &//UCSRC寄存器与UBRRH寄存器共用相同的I/O地址,写 UCSRC 时, URSEL 应设置为 1。
& & & & UBRRL = (F_CPU / BAUD / 16 - 1) % 256;& & //设置
& & & & UBRRH = (F_CPU / BAUD / 16 - 1) / 256;& & & & & & & &
& & & & UCSRB |= (1 && RXCIE) | (1 && RXEN) | (1 && TXEN);& & //发送使能
//字节发送函数
void Usart_PutChar(unsigned char cTXData)
& & & & while( !(UCSRA & (1 && UDRE)) );&&//只有数据寄存器为空时才能发送数据
& & & & UDR = cTXD& & & && && && && && && &//发送数据送USART I/O数据寄存器-UDR
//接收中断函数
ISR(USART_RXC_vect )
& & & & unsigned char R
& & & & Rev = UDR;& && && && &&&//从USART I/O数据寄存器-UDR中读出数据
& & & & Usart_PutChar(Rev);& & //将接收到的数据发送
void Usart_PutString(unsigned char *pcString)
& & & & while (*pcString)
& & & & & & & & Usart_PutChar(*pcString++);
& & & & }& & & &
//DS18B20初始化
unsigned char DS18B20_Init()
& & & & //unsigned char Delayus0;
& & & & SET_OUT;& &//PA2设置为输出口
& & & & CLR_DQ;& & //输出低& & & & & & & &
& & & & Delayus(560);
& & & & SET_DQ;
& & & & SET_IN;& &&&//输入 释放数据线
& & & & Delayus(90);
& & & & & & & &
& & & & //while(DQ_IN);
& & & & //while(!(DQ_IN));& & & &
& & & & if(DQ_IN)
& & & & & & & & OK_Flag = 0;& & & & & & & & & & & &
& & & & else
& & & & & & & & OK_Flag = 1;& & & & & & & &
& & & & Delayus(400);
& & & & SET_OUT;
& & & & SET_DQ;& & & &
& & & & return OK_F
unsigned char Read_18b20()
& & & && &// dat用于存储读到的数据
& & & & unsigned char dat = 0;& &// dat用于存储读到的数据& & & &
& & & & for(i = 0;i & 8;i++)
& & & & & & & & CLR_DQ;
& & & & & & & & SET_OUT;& & //定义为输出
& & & & & & & &
& & & & & & & & Delayus(5);& &//拉低15微秒
& & & & & & & &
& & & & & & & & SET_DQ;& && &//拉高
& & & & & & & & SET_IN;& && &&&//定义成输入,读入数据
& & & & & & & & & & & &
& & & & & & & & Delayus(15);
& & & & & & & & & & & &
& & & & & & & & if(DQ_IN)& && & //读数据
& & & & & & & & {& & & & & & & & & & & &
& & & & & & & & & & & & dat |= 0x80;& &//如果是1,置1,右移数据
& & & & & & & & }
& & & & & & & & Delayus(65);
& & & & & & & & SET_DQ;& && &//拉高
& & & & & & & & SET_OUT;& & //定义为输出
& & & & & & & & Delayus(1);
& & & & & & & & dat = dat && 1;
& & & & & & & &
& & & & }& & & &
& & & && &&&//返回读到的1字节数据
void Write_18b20(unsigned char dat)
& & & & SET_OUT;& && && && &//数据线设置为输出
& & & & for(i = 0;i & 8;i++)&&
& & & & & & & & CLR_DQ;& && && &//拉低数据线15us,开始写数据
& & & & & & & & Delayus(10);
& & & & & & & &
& & & & & & & & if(dat & 0x01)& &//写数据
& & & & & & & & {
& & & & & & & & & & & & SET_DQ;& & //写1& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & CLR_DQ;& &//写0& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & &
& & & & & & & & Delayus(65);
& & & & & & & & & & & &
& & & & & & & & SET_DQ;& && && & //拉高数据线
& & & & & & & & Delayus(10);& &//写两位数据的时间间隔
& & & & & & & & dat &&= 1;& && &//数据右移1位,先写低位
& & & & SET_DQ;& && && &//拉高
& & & & //PORTB = 0x01;& & & &
void Delayus(unsigned int lus)
& & & & while(lus--)
& & & & & & & & _delay_loop_2(3);
void Delayms(unsigned int lms)
& & & & while(lms--)
& & & & & & & & Delayus(1000);
在线时间1766 小时
威望43165分
芯币42818枚
E金币1812枚
TA的帖子TA的资源
注意数制的正确选择,包括程序中和串口调试软件的。
技术导师勋章
论坛威望大于30000或网友提名:坛子里公认的技术导师
EEWORLD 官方微信
EE福利 唾手可得
Powered by2013年12月 VB大版内专家分月排行榜第二2013年3月 VB大版内专家分月排行榜第二2013年1月 VB大版内专家分月排行榜第二2012年9月 VB大版内专家分月排行榜第二2012年8月 VB大版内专家分月排行榜第二2012年7月 VB大版内专家分月排行榜第二2006年7月 VB大版内专家分月排行榜第二2006年5月 VB大版内专家分月排行榜第二
2014年9月 VB大版内专家分月排行榜第三2013年7月 VB大版内专家分月排行榜第三2013年6月 VB大版内专家分月排行榜第三2013年4月 VB大版内专家分月排行榜第三2012年11月 VB大版内专家分月排行榜第三2006年6月 VB大版内专家分月排行榜第三2006年4月 VB大版内专家分月排行榜第三2002年12月 VB大版内专家分月排行榜第三2002年11月 VB大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。串口调试总是乱码,求助【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:141,719贴子:
串口调试总是乱码,求助收藏
此程序是郭天祥视频教程例子,目的是在上位机上用串口调试助手发送一个字符X,单片机收到字符后返回给上位机“I get X”,串口波特率为9600。我下到单片机后进行试验,串口总是返回乱码,串口调试助手乱码如下:源程序为:#include&reg52.h&#define uchar unsigned char#define uint unsigned int uchar flag = 0,a,i;uchar code table[] = "I get ";
void init(){ TMOD
= 0x20; TH1 = 0 TL1 = 0 TR1 = 1; SM0 = 0; SM1 = 1; REN = 1; EA = 1; ES = 1;} void main(){ init(); while(1) {
if(flag==1)
for(i=0;i&6;i++)
SBUF = table[i];
while(!TI);
while(!TI);
} }} void seri() interrupt 4{ RI = 0; a = SBUF;
flag = 1; delay(100);}求指教,谢谢。
本公司全权代理台湾单片机MCU品牌, 全线推广销售系列产品,可提供完整的电子产品设计单片机-方案解决-原理图设计-技术支持-全自动机械化程序单片机服务
你用的是郭老师的学习板?
第三行代码复制的时候成了一行,有点失误
波特率不匹配,估计是程序中得问题,然后用12M晶振没事的,偏差一点没问题。
楼主啊,可以问你几个串口问题吗?方便的话加q
波特率问题,要用11.0592M
我的也总是乱码,还没找到原因
楼主问题解决了吗?我现在也正遇见这个问题
用的12c2052ad单片机
11.0592晶振
必须用11.0592M的晶振,因为12M的晶振无法得到标准波特率。
广弘达电子是台湾义隆电子正式授权代理商,负责义隆单片机的推广和销售!台湾总部:弘硕电子科技股份有限公司,保证品质,货真价实,诚信双赢!
我也碰到过,加个include&stdio.h&试试
波特率和晶振一定要匹配,否则有时会出现乱码
楼主,请问12864串口通讯的程序你有吗?
老郭的那不行啊,他那板子是 12MHZ 的 在串口里找不到对应的波特率,最好换成 11.0592MHZ的
如果用的是12M晶振,把波特率改成2400就可以了。
如果用的是12M晶振,把波特率改成2400就可以了。
12M的晶振不适合做高于2400波特率的串口, 已经实验多次, 老实用11.0592吧。
波特率调到4800试试
登录百度帐号推荐应用

我要回帖

更多关于 51串口调试助手乱码 的文章

 

随机推荐