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

時間 2021-08-11 17:32:25

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);

avr微控制器彙編程式設計時建議在不使用的中斷向量出放置中斷返回指令RETI,我不明白有什麼意義

意思就是說,如果微控制器在執行中被幹擾了,程式跳轉到你沒有使用的中斷向量的位置上。比如現在你寫一個程式,外部中斷0 int0 這個中斷你並沒有使用,實際上你根本就不用去理它了。比如微控制器的復位地址為 000,中斷0向量int0地址是 002,程式就是應該是這樣 org 000 復位 rjmp re...

怎樣學習微控制器,應該如何著手,如何學好微控制器?

我也是今年剛剛學微控制器。我覺得如果你不是電子專業的話,一年之內想參加電子設計大賽需要你付出很大的努力。我的建議是,先從51微控制器入手 即80c51 這樣應該容易些。學得比較熟練後就可以學學電子設計大賽要求的晶片了,例如,msp430。如果你沒有數字邏輯電路基礎的話建議還是先去了解下數字邏輯電路的...

微控制器如何控制220v的繼電器,微控制器如何控制繼電器 220v 大功率

我的鹿叫桃 可在微控制器控制輸出端接三極體 可控矽或者有一定輸出電流的元件4013積體電路,他們的輸出端接220v繼電器的線圈即可,用繼電器的常開常閉觸點控制電器。繼電器的特點就是在控制端加入低壓控制訊號,然後開關端分為常開端和常閉端,開關端可以認為是一個金屬開關,是可以接入220v大功率裝置的,微...