|
Altium Designer畫的AD接收UART發送模塊電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (52.24 KB, 下載次數: 96)
下載附件
2018-2-24 02:18 上傳
0.png (62.55 KB, 下載次數: 108)
下載附件
2018-2-24 02:18 上傳
0.png (50.54 KB, 下載次數: 88)
下載附件
2018-2-24 02:18 上傳
【簡要說明】 一、 尺寸:長50mmX寬25mmX高10mm
二、主要芯片:ATMEGA8
三、工作電壓:直流5V 二、 特點:
1、檢測模擬量電壓范圍0~5V
2、數碼管顯示范圍0~5000
3、四位數碼管顯示
4、輸入輸出接線簡單
5、AD轉換頻率125K,8位數據轉換
6、波特率:9600 , 誤差率:0.156% 三、 作用:將0~5V的模擬電壓量轉換成為0~5000的數字量,由數碼管顯示出來,并轉換成為0~255的十六進制,由單片機UART(即,TXD口發出),經232電平轉換后,可以和電腦直接通信。
AD接收UART發送模塊AD轉換數值顯示
image016.jpg (24.21 KB, 下載次數: 90)
下載附件
2018-2-24 00:47 上傳
0.png (11.37 KB, 下載次數: 108)
下載附件
2018-2-24 02:21 上傳
image017.png (27.53 KB, 下載次數: 99)
下載附件
2018-2-24 00:47 上傳
image014.jpg (27.07 KB, 下載次數: 81)
下載附件
2018-2-24 00:47 上傳
image012.jpg (25.21 KB, 下載次數: 116)
下載附件
2018-2-24 00:47 上傳
image004.jpg (13.84 KB, 下載次數: 78)
下載附件
2018-2-24 00:47 上傳
image010.jpg (29.66 KB, 下載次數: 88)
下載附件
2018-2-24 00:46 上傳
單片機源程序如下:
- #include <iom8v.h>
- #include <macros.h>
- #define uchar unsigned char
- #define uint unsigned int
- /********************************************************************
- 數碼管段碼定義0123456789
- *********************************************************************/
- uchar Table[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位碼
- uchar wei[4]={0X10,0X20,0X40,0X80}; //位的控制端 (仿真)
- //uchar wei[4]={0Xe0,0Xd0,0Xb0,0X70}; //位的控制端 (板子)
- uint date; //定義數據類型
- uchar z,x,c,v; //定義數據類型
- /**********************************************************************
- 延時函數
- **********************************************************************/
- void DelayMs(uint i) //0.25ms
- {uint j;
- for(;i!=0;i--)
- {for(j=8000;j!=0;j--) {;}}
- }
- /**********************************************************************
- 數碼管動態掃描
- *********************************************************************/
- void Pre_Display()
- {
- /***********************數據轉換*****************************/
- z=date/1000; //求千位
- x=date%1000/100; //求百位
- c=date%100/10; //求十位
- v=date%10; //求個位
- PORTD=wei[0];
- PORTB=Table[z];
- DelayMs(1);
- PORTD=wei[1];
- PORTB=Table[x];
- DelayMs(1);
- PORTD=wei[2];
- PORTB=Table[c];
- DelayMs(1);
- PORTD=wei[3];
- PORTB=Table[v];
- DelayMs(1);
- }
- /**********************************************************************
- 電壓值處理函數
- **********************************************************************/
- uint ADC_Convert(void)
- {uint temp1,temp2;
- temp1=(uint)ADCL;//先讀ADCL
- temp2=(uint)ADCH;//再讀ADCH
- temp2=(temp2<<8)+temp1;//求值
- temp2=temp2*49/10;//求顯示的電壓值(0~5.12)V
- if(temp2>=5000)temp2=5000;
- return(temp2);
- }
- /**********************************************************************
- 初始化I/O口
- **********************************************************************/
- void Init_IO(void) //初始化I/O口
- {
- DDRC=0x00; //設置C口為不帶上拉輸入;
- PORTC=0x00;
- DDRB=0xff; //設置B口為推挽1輸出;
- PORTB=0xff;
- DDRD=0xFF; //設置D口為推挽1輸出;
- PORTD=0xFF;
- }
- /********************************************************************
- 串口初始化子程序
- *********************************************************************/
- void Uart_Init(void)
- {
- UCSRB = 0x00; //disable while setting baud rate
- UCSRA = 0x00; //Bit1為1則倍速發送
- UCSRC = 0x86;
- UBRRL = 0x33; //波特率:9600 Bps
- UBRRH = 0x00; //誤差率:0.156%
- UCSRB = 0x18;
- }
- /********************************************************************
- 串口發送字節子程序
- *********************************************************************/
- void Putchar(unsigned char c)
- {
- while (!(UCSRA&(1<<UDRE)));
- UDR=c;
- }
- /**********************************************************************
- 主函數
- **********************************************************************/
- void main(void)
- {uint i;
- uint B=50;
- uint TXD;
- Init_IO();
- Uart_Init();
- ADMUX=0x00;
-
- //選擇第一通道;
- /**********************轉換速率應在50~200K****************************/
- ADCSR=0xe6; //125K轉換速率,自由轉換模式;啟動AD轉換器;
- DelayMs(1); //延時待系統穩定;
- while(1)
- {
-
- B--;
- i=ADC_Convert(); //顯示電壓值(0~1024)
-
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (6.08 KB, 下載次數: 95)
下載附件
2018-2-24 02:19 上傳
所有資料51hei提供下載:
|
|