敬告:没有51单片机基础的人请慎重下载高质量实用性51单片机STC15W系列程序(1),STC8A系列可参考STC15单片机内部ADC采集数据在LCD12864上显示的程序main主程序:#include "LCD12864.h"void ValToString(unsigned int tmp,unsigned char *buf);int main(){unsigned int tmp;unsigned char buf[4];P2M1 &= 0xE5;P2M0 &= 0xE5;// P1M1 &= 0x7F;P1M0 &= 0x7F;SPI_config();SPI_init();ADC_init();//delay(10);LCD12864_write1(0,0,5,"test:");LCD12864_write2(0,1,"hello!");while(1){tmp = ADC_getvalue();ValToString(tmp,buf);LCD12864_write1(0,2,sizeof(buf),buf);LCD12864_write2(0,3,buf);//delay(5000);}}void ValToString(unsigned int tmp,unsigned char *buf) {buf[0] = tmp/100 + '0';buf[1] =(tmp%100)/10 + '0';buf[2] = (tmp/10)%10 + '0';buf[3] = '\0';}/*******************************************************/LCD12864程序:#include"LCD12864.h"sbit SPI_cs = P2^4;void delay(unsigned int ms){unsigned int i;do{i = MAIN_Fosc / 13000;while(--i) ; //14T per loop}while(--ms);}//void delay(unsigned int t)//{// unsigned int i,j;// for(i=0; i<t; i++)// for(j=0; j<10; j++);//}void SPI_config(){SPCTL = 0x00;SPCTL |= 0xD0;SPSTAT |= 0xC0;IE2 &= 0xFD;AUXR1 &= 0xF7;AUXR1 |= 0x04;// AUXR1|=0X04; //½« SPI µ÷Õûµ½ P2.1 P2.2 P2.3 P2.4// AUXR1&=0XF7;// SPDAT = 0;// SPSTAT = 0x80|0x40; //Çå³ýSPI״̬λ// SPCTL = 0x40|0x10|0x80;}unsigned char SPI_write(unsigned char dat){SPDAT = dat;while(!(SPSTAT&0x80));SPSTAT = 0xC0;//SPSTAT = 0x80|0x40;return SPDAT;}void SPI_wcmd(unsigned char cmd){SPI_cs = 1;SPI_write(0xF8);SPI_write(cmd&0xF0);SPI_write((cmd&0x0F)<<4);//SPI_write((cmd<<4)&0xF0);delay(2);}void SPI_wdat(unsigned char dat){SPI_cs = 1;SPI_write(0xFA);SPI_write(dat&0xF0);SPI_write((dat&0x0F)<<4);//SPI_write((dat<<4)&0xF0);delay(2);}void LCD12864_write1(unsigned char x,unsigned char y,unsigned char len,unsigned char *buf){//SPI_wcmd(0x03);switch(y){case 0:x=x+0x80;break;case 1:x=x+0x90;break;case 2:x=x+0x88;break;case 3:x=x+0x98;break;default:break;}SPI_wcmd(x);while(len>0){SPI_wdat(*buf++);len--;}}void LCD12864_write2(unsigned char x,unsigned char y,unsigned char *buf){switch(y){case 0:x=x+0x80;break;case 1:x=x+0x90;break;case 2:x=x+0x88;break;case 3:x=x+0x98;break;default:break;}SPI_wcmd(x);while(*buf!='\0')//while(*buf>0){SPI_wdat(*buf++);//delay(50);}}void SPI_init(){//delay(100);SPI_wcmd(0x30);//delay(50);SPI_wcmd(0x0C);//delay(50);}//void display(unsigned char code *buf) //{// while(*buf>0)// {// SPI_wdat(*buf);// buf++;// delay(50);// }//}//void LCD12864_write2()//{// SPI_wcmd(0x03);// delay(50);//// SPI_wcmd(0x91);// display("ÎÒÊÇÈË");//}/*******************************************************/ADC程序:#include "LCD12864.h"unsigned int ADC_getvalue(){unsigned int val;ADC_CONTR |= 0xE7;//val = ADC_RES << 8;val = val | ADC_RESL;ADC_CONTR |= 0x08;//return val;}void ADC_init(){ADC_CONTR &= 0xEF; //0b 1 11 0 1 111;ADC_CONTR |= 0xE7;delay(10);P1ASF |= 0x80;CLK_DIV |= 0x20;EADC = 0;ADC_CONTR |= 0x08;}/*******************************************************/.h文件程序://1#ifndef _ADC_H#define _ADC_Hextern void ADC_init();extern unsigned int ADC_getvalue();#endif//2#ifndef _LCD12864_H#define _LCD12864_H#define MAIN_Fosc 11059200L#include "STC15.H"#include "intrins.h"#include "ADC.h"//sbit SPI_sid = P2^3;//sbit SPI_clk = P2^1;extern void SPI_config();extern void delay(unsigned int ms);extern void SPI_init();extern void LCD12864_write1(unsigned char x,unsigned chary,unsigned char len,unsigned char *buf);extern void LCD12864_write2(unsigned char x,unsigned char y,unsigned char *buf);//extern void LCD12864_write2();#endif。