void ser()interrupt 4
{
if(TI)
{
TI=0;
flag=1;
}
}
至于P1=0xff;是因为P1作为输入口,读数据前先送高,以保证读数的稳定可靠。
void main()
{
UARTinit();
sc ('\n') ;
ss("---------\n") ;
while(1);
}
原因是向单片机下载程序时会在程序尾部自动填充了无条件跳转指令到起始位置,也就是程序在发送一遍后并没有停止,而是返回起始地址又重新开始了
把转换后的数据分成两个字节,高字节在前或者低字节在前你自己定,我习惯用协议,所以习惯用两个字节表示一个数据,然后让单片机串口把这两个字节发出去就行。比如你ad转换后的数据为十进制256,则要把十六进制100通过串口发出,先发01 ,再发00,最好遵循一种协议,比如modbus协议,然后把数据放入一个数组,这个数组就是遵循modbus的数组, *** 作单片机串口发送数组就行。如果你转换的数据时浮点数,最简单的方法是确定好浮点数的小数点位数,然后将这个浮点数100倍或者乘1000倍,变为整数发送,发出后在上位机或者另外单片机再除这个倍数还原。给你个mega164p发送的程序。
串口0发送函数发送1个字符
/
void USART_Transmit0(unsigned char data) //串口0发送数据,查询方式
{
while (!(UCSR0A & DATA_REGISTER_EMPTY0)); // 等待发送寄存器空
UDR0 = data; // 发送数据
//while(!(UCSR0A&(1<<TXC0)));
// UCSR0A|=(1<<TXC0);
}
/
串口0发送函数发送n个字符
/
void usart0_transmit_array(unsigned char string[],unsigned char n)//n为数组长度
{
volatile unsigned char i;
for (i=0;i<n;i++)
{
USART_Transmit0(string[i]);
}
}
制定串口通讯协议
搭建硬件电路,硬件调试
分别编写电脑和DSP中的程序
程序调试和通讯调试
总结实现过程及结果
步骤差不多就这样子了,没什么难点,全是工作量的事。
当然可能遇到各种各样的问题,要做的过程中逐一解决。
方法如下:
1、先到淘宝或者电脑商城找一个USB转rs232的转换器,最好是光电隔离的那种。
2、然后打开电脑,先把转化器的光盘放到电脑光驱里面,然后把USB转RS232电缆连接到电脑的USB接口,电脑会自动查找并且安装。
3、安装完成以后,打开电脑-属性-设备管理器会看见多了一个端口com#,#是端口号。
4、把三菱的编程线连接到USB转RS232的9针插头上,读取plc,在传输设置中双击“串行”图标,选择com#就可以了。
5、编程软件的com口和电脑的com一致。
以上就是关于51单片机 串口发送程序全部的内容,包括:51单片机 串口发送程序、简单的一个单片机串口发送字符串程序、AVR单片机mega16如何将AD转换后的数据通过UART发送出去等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)