基于stc12单片机测量电压在oled上显示

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Stc12电压测量在oled上显示#includeSTC12C5A60S2.h#includeintrins.h#includeoled.hcharcodeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};#defineSCANPP0#defineSEG7PP2/************定义相应操作位***************/#defineADC_POWER0x80//ADC电源控制位,0:关闭,1:打开#defineADC_FLAG0x10//ADC结束标志位#defineADC_START0x08//ADC启动控制位#defineADC_SPEEDLL0x00//540clocks___________选择转换速度unsignedchardisp[4]={0,0,0,0};ints,s1,current;floatabc,abc1;voidAD_init();voidserial_init();voiddelay(unsignedintms);floatAD_work(unsignedcharchannel);unsignedintAD_get(unsignedcharchannel);//******************************************////主程序////******************************************//voidmain(){AD_init();//A/D转换初始化//serial_init();//串口初始化LCD_Init();while(1){unsignedchari;//TI=1;//使用printf函数前须先将发送标志位TI置1abc=AD_work(0)*1000;s=(int)abc;LCDShowVoltage(0,2,s);current=2*s/4.1;LCDShowVoltage1(0,4,current);delay(1000);//延时约1s//TI=0;/*abc1=AD_work(1)*1000;s1=(int)abc1;LCDShowVoltage(0,0,s1);*/}}unsignedintAD_get(unsignedcharchannel){ADC_CONTR=ADC_POWER|ADC_SPEEDLL|channel|ADC_START;//开启AD转换10001000即POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0_nop_();_nop_();_nop_();_nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR寄存器while(!(ADC_CONTR&ADC_FLAG));//等待转换完成ADC_CONTR&=ADC_FLAG;//关闭AD转换,ADC_FLAG位由软件清0return(ADC_RES*4+ADC_RESL);//返回AD转换完成的10位数据(16进制)}floatAD_work(unsignedcharchannel){floatAD_val;//定义处理后的数值AD_val为浮点数unsignedchari;for(i=0;i100;i++)AD_val+=AD_get(channel);//转换100次求平均值(提高精度)AD_val=AD_val/100;AD_val=(AD_val*5)/1024.0;//AD的参考电压是单片机上的5v,所以乘5即为实际电压值returnAD_val;}voiddelay(unsignedintms)//延时约1ms{unsignedchara,b,c;while(ms--){for(c=1;c0;c--)for(b=222;b0;b--)for(a=12;a0;a--);}}voidserial_init()//初始化模块从STC软件的波特率计算器拷贝过来的{PCON&=0x7F;//波特率不倍速SCON=0x50;//8位数据,可变波特率AUXR|=0x04;//独立波特率发生器时钟为Fosc,即1TBRT=0xD9;//设定独立波特率发生器重装值AUXR|=0x01;//串口1选择独立波特率发生器为波特率发生器AUXR|=0x10;//启动独立波特率发生器}voidAD_init(){P1ASF=0xff;//P1口全部作为模拟功能AD使用ADC_RES=0;//清零转换结果寄存器高8位ADC_RESL=0;//清零转换结果寄存器低2位ADC_CONTR=ADC_POWER|ADC_SPEEDLL;//开启AD电源delay(10);//等待1ms,让AD电源稳定}#includeSTC12C5A60S2.H#includeintrins.h#includeoled.hsbitLCD_SCL=P2^3;//时钟D0(SCLK)sbitLCD_SDA=P2^2;//D1(MOSI)数据sbitLCD_RST=P2^1;//复位sbitLCD_DC=P2^0;//数据/命令控制#defineXLevelL0x00#defineXLevelH0x10#defineXLevel((XLevelH&0x0F)*16+XLevelL)#defineMax_Column128#defineMax_Row64#defineBrightness0xCF#defineX_WIDTH128#defineY_WIDTH64voidLCDShowVoltage(ucharx,uchary,longintdate){ucharbuf[7]={0};buf[0]=date/10000+0x30;buf[1]=date%10000/1000+0x30;buf[2]='.';buf[3]=date%1000/100+0x30;buf[4]=date%100/10+0x30;buf[5]=date%10+0x30;buf[6]='V';LCD_P8x16Str(x,y,Power:);LCD_P8x16Str(x+56,y,buf);}voidLCDShowVoltage1(ucharx,uchary,longintdate){ucharbuf[6]={0};buf[0]=date/10000+0x30;buf[1]=date%10000/1000+0x30;buf[2]='.';buf[3]=date%1000/100+0x30;buf[4]=date%100/10+0x30;buf[5]=date%10+0x30;buf[6]='A';LCD_P8x16Str(x,y,Power:);LCD_P8x16Str(x+56,y,buf);}unsignedcharcodeF16x16[]={/*--文字:广--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x09,0x0E,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x80,0x60,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--文字:东--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x08,0x88,0x48,0x28,0x18,0x0F,0xE8,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x20,0x11,0x09,0x05,0x41,0x81,0x7F,0x01,0x01,0x05,0x09,0x11,0x20,0x00,0x00,/*--文字:海--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x10,0x60,0x02,0x0C,0xC0,0x10,0x08,0xF7,0x14,0x54,0x94,0x14,0xF4,0x04,0x00,0x00,0x04,0x04,0x7C,0x03,0x00,0x01,0x1D,0x13,0x11,0x55,0x99,0x51,0x3F,0x11,0x01,0x00,/*--文字:洋--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x10,0x60,0x02,0x8C,0x00,0x10,0x91,0x96,0x90,0xF0,0x90,0x94,0x93,0x10,0x00,0x00,0x04,0x04,0x7E,0x01,0x00,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,/*--文字:大--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,/*--文字:学--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,};unsignedcharcodeBMP[]={0xEF,0x3F,0x3F,0x3F,0x3F,0x3C,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x81,0xC1,0x61,0x61,0x31,0x31,0x11,0x19,0x09,0x0D,0x05,0x05,0x07,0x03,0x03,0x03,0x00,0x00,0x3E,0x3E,0x3E,0x3E,0x3E,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x05,0x05,0x0D,0x09,0x19,0x11,0x21,0x61,0x41,0x81,0x81,0x01,0x3F,0x3F,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x9F,0xBF,0x9F,0x8F,0xBF,0xBF,0x3F,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x70,0x18,0x0C,0x06,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功