AVR单片机mega16如何将AD转换后的数据通过UART发送出去

 我来答
天空之城iot
2013-07-26 · 大数据、物联网、自动化、方案学习探讨
天空之城iot
采纳数:79 获赞数:269

向TA提问 私信TA
展开全部
把转换后的数据分成两个字节,高字节在前或者低字节在前你自己定,我习惯用协议,所以习惯用两个字节表示一个数据,然后让单片机串口把这两个字节发出去就行。比如你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]);
}
}
追问
如果用GSM模块接收的话,需要电平转换吗?可以直接把单片机的UART口跟GSM的直接相连吗?
追答
单片机uart转换成232电平后(加个max232)可以和gsm串口连接。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bingshiliuxing
2013-07-26 · TA获得超过795个赞
知道小有建树答主
回答量:229
采纳率:100%
帮助的人:121万
展开全部
这个问题其实实现起来不难
这里面涉及到的外设有:ad转换,UART两个
你在网上找下mega16的这两个外设的例程,会有很多,你略微修改下就好了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式