PC机串口调试助手与单片机通信字符问题

来源:互联网 发布:js淘宝购物车脚本之家 编辑:程序博客网 时间:2024/04/29 11:33

在利用PC机的串口调试助手与单片机通信时,单片机与PC机是以ASCII码的形式通信的,比如发送1,其实发送的是字符1,如果在接收区以十六进制显示的话,是31(1的ASCII码)。具体如下:

1. 十六进制发送与十六进制显示都为选中,发送与接收的都是字符的形式;

2.如果以十六进制发送或者十六进制显示的话,就是以十六进制的ASCII码的形式发送或显示。


如果在串口调试助手中发送十六进制数字,以单片机的数码管显示的话,把十六进制ASCII码,换算成十进制ASCII码,然后显示在数码管上。以下是程序示例:(单片机开发板为普中科技的HC6800-EM3 v3.0)

/************************** 目标:以16进制发送一个1-255之间的任一数,当单片机收到后在数码管上动态显示出来* 作者:panda* 日期:2017/08/13*************************/#include<reg52.h>typedef unsigned int u16;typedef unsigned char u8;u16 temp;u8 bai,shi,ge;sbit a_138=P1^0; //138译码器的A,B,C端,用于控制数码管的位端sbit b_138=P1^1;sbit c_138=P1^2;u8 code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};void delay(u16 z){u8 x,y;for(x=0;x<100;x++)for(y=0;y<z;y++);}void wei2(){a_138=1;b_138=0;c_138=0;}void wei3(){a_138=0;b_138=1;c_138=0;}void wei4(){a_138=1;b_138=1;c_138=0;}void display(u8 bai,u8 shi,u8 ge){wei4();P0=table[ge];delay(1);wei3();P0=table[shi];delay(1);wei2();P0=table[bai];delay(1);}void init(){bai=16;shi=16;ge=16;TMOD=0x20; //计数器工作在方式2,8位自动重装PCON=0x00; //SMOD=0; 不倍频(不使波特率增倍) SMOD不可位寻址TH1=0xf3;TL1=0xf3; //波特率为2400TR1=1;SCON=0x50;//SM0=0;//SM1=1;//SM2=0;//REN=1; //允许串行接收位打开EA=1; //开总中断ES=1; //开串行口中断}int main(){init();while(1){display(bai,shi,ge);}return 0;}void ser() interrupt 4{RI=0;temp=SBUF;bai=temp/100;shi=temp%100/10;ge=temp%10; }

原创粉丝点击