把转换后的数据分成两个字节,高字节在前或者低字节在前你自己定,我习惯用协议,所以习惯用两个字节表示一个数据,然后让单片机串口把这两个字节发出去就行。比如你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<
}
/***********************************************************************
串口0发送函数发送n个字符
************************************************************************/
void usart0_transmit_array(unsigned char string[],unsigned char n)//n为数组长度
{
volatile unsigned char i;
for (i=0;i
USART_Transmit0(string[i]);
}
}
这个问题其实实现起来不难
这里面涉及到的外设有:ad转换,UART两个
你在网上找下mega16的这两个外设的例程,会有很多,你略微修改下就好了。