0.png (41.66 KB, 下載次數: 83)
下載附件
2018-7-25 16:12 上傳
附件忘記上傳了:
ADC.zip
(15.57 MB, 下載次數: 204)
2018-7-25 11:52 上傳
點擊文件名下載附件
附件 下載積分: 黑幣 -5
- #include<STC15WXX.H>
- #include<intrins.h>
- void Delay_ms(unsigned int ms)
- {
- unsigned int a,b;
- for(a=ms;a>0;)
- {
- for(b=1000;b>0;)
- {
- b=b-1;
- }
- a--;
- }
- }
- void ADC_int() //ADc初始化
- {
- P1ASF=0X01; //吧P1.0設置為ADC引腳
- CLK_DIV=0X20; //ADC結果設置
- ADC_CONTR=0X80; //打開ADC 電源
- ADC_RESL=0;
- ADC_RES=0;
- Delay_ms(10);
- }
- unsigned int ADC_Read() //讀ADCCH6
- {
- unsigned int a=0;
- ADC_CONTR = 0X88; //啟動ADC電源和設置P1.0口為ADC轉換并且540個時鐘轉換一次
- Delay_ms(1);
- while(!(ADC_CONTR&0X10)); //等待轉換完成
- a=ADC_RES*256+ADC_RESL; //獲取ADC結果
- ADC_CONTR&=~0x10;
- return a;
- }
- void UartInit() //9600bps@11.0592MHz
- {
- SCON = 0x50; //8位數據,可變波特率
- AUXR = 0x14;
- AUXR |= 0x01; //串口1選擇定時器2為波特率發生器
- T2L = 65536-(11059200/4/9600); //設定定時初值
- T2H = (65536-(11059200/4/9600))>>8; //設定定時初值
- }
- void Uartsend_1(unsigned char send)
- {
- SBUF=send; //發送數據
- while(!TI); //等待前一幀數據發送完畢
- TI=0; //復位標志位
- }
- void U1_TX_C(char *send)
- {
- unsigned char a=0;
- while(send[a])
- {
- Uartsend_1(send[a]);
- a++;
- }
- }
- void Uartsend_adc(unsigned long send)
- {
- unsigned char a[4],b;
- send=send*506/1024; //電壓計算
- a[0]=send%10+'0';
- a[1]=send/10%10+'0';
- a[2]='.';
- a[3]=send/100+'0';
- for(b=4;b>0;b--) //發送
- Uartsend_1(a[b-1]); //
- }
- void main()
- {
- unsigned int adcnum;
- ADC_int(); //ADc初始化
- UartInit(); //9600bps@11.0592MHz
- while(1)
- {
- U1_TX_C("t1.txt=");//先發送t1.txt=(因為觸摸屏顯示的格式是(t1.txt="多少V" 最后還要發送三個結束標志 0xff))
- Uartsend_1(0X22);//' “ '的十六進制數
- adcnum=ADC_Read(); //讀取一次
- Uartsend_adc(adcnum);
- U1_TX_C("V");
- Uartsend_1(0X22);
- Uartsend_1(0Xff);
- Uartsend_1(0Xff);
- Uartsend_1(0Xff);
- Delay_ms(1000);
- }
- }
復制代碼
|