这个单片机串口程序为何输入字符串而熟出的是ascll码?

问题描述

这个单片机串口程序为何输入字符串而熟出的是ascll码?
#include //包含头文件
//毫秒级延时函数
void delay(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i = 0;i < 120;i++);
}
}
//字符发送函数
void putchar(unsigned char data1)

{
SBUF = data1; //将待发送的字符送入发送缓冲器
while(TI == 0); //等待发送完成
TI = 0; //发送中断标志请0
}
//字符串发送函数
void putstring(unsigned char *dat)
{
while(*dat != '') //判断字符串是否发送完毕
{
putchar(*dat); //发送单个字符
dat++; //字符地址加1,指向先下一个字符
delay(5);
}
}
//主函数
void main(void)
{
unsigned char c = 0;
SCON = 0x50; //串口方式1 ,允许接收
TMOD = 0x20; //T1工作于方式2
PCON = 0x00; //波特率不倍增
TL1 = 0xfd; //波特率设置
TH1 = 0xfd; //
EA = 1; //开总中断
ES = 1; //开串口接收中断
TR1 = 1; //定时器开启
delay(200);
putstring(""Receiving from 8051...rn""); //串口向终端发送字符串,结尾处回车换行
putstring(""----------------------rn"");
delay(50);
while(1)
{

}
}

//
void revdata(void) interrupt 4
{
unsigned char temp;
if(RI == 0) return; //如果没有接收中断标志,返回
ES = 0; //关闭串口中断
RI = 0; //清串行中断标志位
temp = SBUF; //接收缓冲器中的字符
putchar(temp); //将接收的字符发送出去
ES = 1; //开启串口中断
}

解决方案

接受的是字符串,但是是一个一字节一个字节传送。程序没有问题,把串口软件接受设置成字符。

时间: 2024-07-31 11:26:38

这个单片机串口程序为何输入字符串而熟出的是ascll码?的相关文章

编码-霍夫曼树程序,输入字符串统计字符出现次数并译码。请问如何改成从文件读入字符串?

问题描述 霍夫曼树程序,输入字符串统计字符出现次数并译码.请问如何改成从文件读入字符串? //生成HuffmanCode文件的两个函数void HuffmanEncoding(HuffmanTree HTHuffmanCode HC){//根据HuffmanTreeHT求HuffmanCode表HC int cpi; char cd[n]; int start; cd[num] = ''; for(i = 1;i <= num;i++){ start = num; c = i; while((p

c++-编写程序,输入字符串S1和S2 以及插入位置n,在字符串S1中的指定位置n处插入字符串S2。

问题描述 编写程序,输入字符串S1和S2 以及插入位置n,在字符串S1中的指定位置n处插入字符串S2. 编写程序,输入字符串S1和S2 以及插入位置n,在字符串S1中的指定位置n处插入字符串S2.例如,输入"jiangsu"."123"和位置3,则输出"ji123angsu". 解决方案 #include <iostream> #include <string> using namespace std; int main(

串口通信-51单片机串口发送字符串给电脑 自己写了程序但出不了结果

问题描述 51单片机串口发送字符串给电脑 自己写了程序但出不了结果 #include unsigned char code L1[] = "123456789"; unsigned char code L2[] = "12345678"; void delay(void) { unsigned char n,m; for(m=0;m<200;m++) for(n=0;n<250;n++); } void send_str() { unsigned i =

求解答-C语言51单片机串口通信程序求教

问题描述 C语言51单片机串口通信程序求教 #include #include #include #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3; bit read_flag=0; void init_serialcomm(void) { SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD

串口通信-菜鸟求助·51单片机串口响应小程序

问题描述 菜鸟求助·51单片机串口响应小程序 程序1.在液晶上显示从PC机串口上下发的数据,屏满后自动清屏.实现如下的功能:1.用下串口0模式,实现数据的移位输出2.用定时器实现波特率的计算,单片机与PC通信.3.实现多机通信.4.高级串口功能的应用,请参看Keil的print等串口输出函数.这时候可实现串口向上位机输出字符串等功能,上位机向下位机发送命令等功能.如用PC机发送一个字符串"Hello,world"单片机用puts函数回送一个"Hello,my friend&q

程序-PIC单片机串口通信时波特率的具体算法?

问题描述 PIC单片机串口通信时波特率的具体算法? 我那个单片机是PIC16F877A,晶振4M,我想将波特率设置为38400,求告知具体算法 真的救急.这是因为我蓝牙模块的波特率为38400的,最初我单片机程序的波特率是9600的,我是不是也要将单片机的程序的波特率也设置为38400呢,还是将蓝牙模块的波特率设置为9600呢,最主要是我电脑没蓝牙,没办法修改蓝牙模块的波特率. 解决方案 资料页的最后有个表格,上面有

java-模拟键盘输入向其他应用程序编辑框输入字符串

问题描述 模拟键盘输入向其他应用程序编辑框输入字符串 JAVA 程序中模拟键盘输入向其他应用程序(SAP)编辑框输入字符 要有源码 解决方案 不知道你具体要做什么,但是JAVA 程序中模拟键盘输入的例子代码你可以看看这文章http://blog.csdn.net/yu555666/article/details/1634564 解决方案二: 参考com.jniwrapper.win32.FunctionName 你的需求应该是调用WinApi函数,比如GetWindow,FindWindow,S

c++-编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串。

问题描述 编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串. 编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串.例如,输入"jiangsu123"和删除位置5,则输出"jiansu123". 解决方案 #include <iostream> #include <string> using namespace std; int main() { char s1[100];

《单片机串口通信及测控应用实战详解》——6.3 PC端程序设计

6.3 PC端程序设计 单片机串口通信及测控应用实战详解 6.3.1 采用Visual Basic实现 1.程序界面设计 运行VB 6.0,创建标准的工程项目文件,设计程序窗体. (1)添加1个MSComm控件用于实现PC与单片机串口通信. (2)添加2个按钮控件CommandButton,用于输出指令和关闭程序. (3)添加3个文本控件TextBox,用于输入单片机地址.继电器状态和返回数据. (4)添加5个标签控件Label,用于显示文本框功能等. 2.属性设置 程序窗体.控件对象的主要属性