AVR微控制器mega16如何將AD轉換後的資料通過UART傳送出去

2021-08-07 23:39:59 字數 1256 閱讀 4425

1樓:天空之城

把轉換後的資料分成兩個位元組,高位元組在前或者低位元組在前你自己定,我習慣用協議,所以習慣用兩個位元組表示一個資料,然後讓微控制器串列埠把這兩個位元組發出去就行。比如你ad轉換後的資料為十進位制256,則要把十六進位制100通過串列埠發出,先發01 ,再發00,最好遵循一種協議,比如modbus協議,然後把資料放入一個陣列,這個陣列就是遵循modbus的陣列,操作微控制器串列埠傳送陣列就行。如果你轉換的資料時浮點數,最簡單的方法是確定好浮點數的小數點位數,然後將這個浮點數*100倍或者乘1000倍,變為整數傳送,發出後在上位機或者另外微控制器再除這個倍數還原。

給你個mega164p傳送的程式。

串列埠0傳送函式傳送1個字元

void usart_transmit0(unsigned char data) //串列埠0傳送資料,查詢方式

串列埠0傳送函式傳送n個字元

void usart0_transmit_array(unsigned char string,unsigned char n)//n為陣列長度}

2樓:

這個問題其實實現起來不難

這裡面涉及到的外設有:ad轉換,uart兩個

你在網上找下mega16的這兩個外設的例程,會有很多,你略微修改下就好了。

高手給個atmega16微控制器的ad轉換程式,轉換的結果由數碼管輸出。

3樓:匿名使用者

#include

#include

#define  uchar unsigned char#define  uint  unsigned int#include "xianshi.c"

uint mega16_ad()

void main()

for(i=0;i<4;i++)}}

#pragma data:code

const  table=;

void delay(uint ms)

}void show(uchar j,uchar k){ddra|=bit(3);

ddra|=bit(4);

ddrb=0xff;

porta|=bit(3);

portb=table[j];

porta&=~bit(3);

portb=0xff;

portb&=~bit(k);

porta|=bit(4);

porta&=~bit(4);

delay(1);

微控制器之間如何實現通訊,微控制器與微控制器之間如何進行序列通訊?

兩個單抄片機之間串列埠襲通訊,如果是用proteus 最簡單 bai了,兩個微控制器的rxd,txd交叉連線就行了。du要是實物最zhi好用rs232連線通訊,距離可以達到幾十米。再遠點距離,用rs485連線通訊。總之,方法很多的,dao也很靈活的。1 微控制器的通訊 有抄序列襲通訊和並行通bai信...

微控制器如何與串列埠模組進行通訊,微控制器如何與8個串列埠模組進行通訊

這個東西我做過,使用串轉並的晶片2552,一個2552帶2個串列埠。你這個方案裡需要接4個2552,現實並口轉串列埠。我做過相關的產品設計,有相關的電路圖和源 需要的話,可以找我聯絡。樓主的問題不明。假設說串列埠模組是現成的,那就要加電路,如果模組是你自己做的,那你可以在每次通訊前發一個地址資料出來...

微控制器如何選購及入門,學習微控制器怎麼入門?

電路原理,模電,數電,通訊原理,微控制器,protell99 高頻率電子線路,訊號系統,數字訊號處理,fpga,dsp等等 我覺得 電路原理,模電,數電,微控制器,是自少要學好的.訊號系統看你是準備往什麼方向走了 通訊方向的話,就要求高很多了.單單玩微控制器的話,要求沒那麼高 的 但是 基本的幾個變...