附件忘记上传了:
ADC.zip
(15.57 MB, 下载次数: 204)
- #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);
- }
- }
复制代码
|