|
AVR單片機電壓采樣
0.jpg (36.98 KB, 下載次數: 214)
下載附件
2015-11-22 15:32 上傳
以下是源碼:
- #include<iom16v.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar Data[4]={0,0,0,0};
- void DelayMs(uint i) //0.25ms
- {uchar j;
- for(;i!=0;i--)
- {for(j=250;j!=0;j--) {;}}
- }
- void Display(uchar *p) //間隔5ms顯示
- {uchar i,sel=0x01;
- for(i=0;i<4;i++)
- {PORTD=sel;
- PORTB=0xff-Table[p[i]];
- DelayMs(10);
- sel=sel<<1;
- }
- }
- uint ADC_Convert(void)
- {uint temp1,temp2;
- temp1=(uint)ADCL;
- temp2=(uint)ADCH;
- temp2=(temp2<<8)+temp1;
- return(temp2);
- }
- void Process(uint i,uchar *p)
- {p[0]=i/1000;
- i=i%1000;
- p[1]=i/100;
- i=i%100;
- p[2]=i/10;
- i=i%10;
- p[3]=i;
- }
- void main(void)
- {uint i;
- DDRA=0x00; //設置A口為不帶上拉輸入;
- PORTA=0x00;
- DDRB=0xff; //設置B口為推挽1輸出;
- PORTB=0xff;
- DDRD=0xff; //設置C口為推挽1輸出;
- PORTD=0xff;
- PORTB=0x00; //B口初始化輸出1;C口初始化輸出0;點亮全部數碼管;
- PORTD=0xff;
- ADMUX=0x01; //選擇第二通道ADC1;
- ADCSR=0xe6; //125K轉換速率,自由轉換模式;啟動AD轉換器;
- DelayMs(3000); //延時待系統穩定;
- while(1)
- {//i=ADC_Convert();
- i = (int)((long)ADC_Convert() * 5010 / 1024); //將獲得的AD值轉換為電壓值,單位為mv
- Process(i,Data);
- Display(Data);
- }
- }
復制代碼
|
-
-
M16_AD轉換電壓表.zip
2015-11-22 14:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
102.48 KB, 下載次數: 217, 下載積分: 黑幣 -5
評分
-
查看全部評分
|