mdsk.net
当前位置:首页 >> 急求一个51单片机的C语言程序,要求从串口发送字符串,由ProtEus里虚拟终端接收并显示 >>

急求一个51单片机的C语言程序,要求从串口发送字符串,由ProtEus里虚拟终端接收并显示

1、你的 Proteus 仿真环境搭建好了吗?2、如果只是简单的调试串口,在 Kei l里面也可以跟踪到串口数据的. 这张就是Keil接收串口和发送串口数据的图片

代码转自:《51单片机C语言创新教程》温子祺等著./*实验名称:串口收发数据实验 *描 述:在使用单片机的串口接收数据实验当中, 使用串口调试助手发送什么数据, 单片机采用查询法将接收到的数据返发到PC *作 者:温子祺 *修改日期:

如果用中断方式接收的话,只能接收单个字符.而如果用查询方式的话,接收字符串占用的时间真太长了,整个cpu将陷入一个长期无法工作的状态,按照波特率为19200来算,接收一个字符的时间是573微秒,十个字符的话就是5.73毫秒了,系统无法正常工作.建议用中断接收单个字符.

直接接就可以了,在virtual terminal中设好好单片机一直的波特率和工作方式,这个时候不需要连接串口模块(因为这个模块就是电脑的硬件串口).单片机输出的可以在上面显示,在上面输入单片机就会接收(但是自己看不到),要想看到,你得让单片机把收到的数据再发回来就可以了.

proteus里的虚拟终端与电脑上的超级终端是一样的,只能显示ASCII字符,用单片机发送时,不能发送十六进制数,十六进制数小于20H是不显示的,从20H开始才能显示的,例如发送0x30~0x39,就是显示0~9这十个数字.要显示字母,要发送字符或字符串,例如,发单个字母,SBUF='A' ; 才能显示字母A.如果是发一串字符串,应该先声明一个字符串再发送,例如,unsigned char str[ ]="HELLO 2020yea!";然后就可以发字符串了,才能显示出这个字符串.

电脑通过串口助手向单片机发送字符串,单片机定义一个可以保存7个字符的数组,依次保存接收的字符串,当接收到7个字符串后,就可以从数组的最后一个字符向前发送每一个字符给电脑就可以了.剩下的就是串口初始化,串口接收和发送程序了,就比较好写了.其实,电脑发送任意的7个字符的字符串都可以,单片机收到后就可以逆序返回给电脑的. 用proteus 仿真测试,可以用虚接终端代替电脑发送和接收字符串,仿真结果如下图.

你可以用串口测试软件来发送字符,有空给你编一个吧!不过最近忙

#include "reg52.h"#define uchar unsigned char #define uint unsigned int//---------------------------------------------------sbit led = P1^0;sbit key = P0^0;sbit out1= P0^1;sbit out2= P0^2;uint run_cnt;uchar temp;//---------------------------------------------------void

//特定的字符,那就先弄好数据格式//比如 你要接收4个asii字符//那就把帧设计成//起始符-字节数-有效数据-结束符 等类似这种格式//起始符一般订为不常用的 asii 字符 ,结束符号也是比如$,#,@这些//假设你要发送asii的1 2 3 4,起始符-$,结

1.不知你这个虚拟终端什么用.用了串口调试助手,这个就不要用了. 2.你的程序开了串口中断,那程序就用串口中断子函数来收发. 程序改一下: #include <reg51.h> //#include <stdio.h> #define uchar unsigned char uchar com_pc; /*void

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com