stc8g1k08a adc采集电压输出到串口和屏幕
ADC通道3(P3.3) 测量高于3.3v的需要接电阻分压
hex文件
#include "stc8g.h"
#include "stdio.h"
#include <intrins.h>
#include "string.h"
#define LCD_CS P55;//CS片选
#define LCD_SDA P54;//SDA数据
#define LCD_SCL P32;//SCL时钟
#define LCD_CS_CLR P55=0;
#define LCD_CS_SET P55=1;
#define LCD_SPI_SDA_CLR P54=0;
#define LCD_SPI_SDA_SET P54=1;
#define LCD_SPI_SCL_CLR P32=0;
#define LCD_SPI_SCL_SET P32=1;
#define LCD_RD_SET 1;//复位清屏 我没接在单片机上
#define LCD_RS_SET 0;
#define COL 128 //x轴最大值
#define ROW 128 //y轴最大值
#define COL_Pre 0
#define ROW_Pre 0
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40
#define BRRED 0XFC07
#define GRAY 0X8430
#define GRAY25 0xADB5
typedef unsigned char u8;
typedef unsigned short u16;
u16 POINT_COLOR = WHITE,BACK_COLOR = 0x0;
void LCD_InitPins(void) {//初始化
P5M0 = 0xFF; P5M1 = 0x00; // 设置P5为推挽输出
P3M0 = (P3M0 & ~0x08) | 0x07; P3M1 = (P3M1 & ~0x07) | 0x08; //p30-32 推挽 p33 高阻
LCD_CS_SET; // 初始时CS为高电平
}
void SendDataSPI(unsigned char dat)
{
unsigned char i;
for(i=0; i<8; i++)
{
if( (dat&0x80)==0x80 ){
LCD_SPI_SDA_SET;}
else{
LCD_SPI_SDA_CLR;}
dat <<= 1;
LCD_SPI_SCL_CLR;
LCD_SPI_SCL_SET;
}
}
void WriteComm(unsigned char dt)
{
LCD_CS_CLR;
LCD_SPI_SDA_CLR;
LCD_SPI_SCL_CLR;
LCD_SPI_SCL_SET;
SendDataSPI(dt);
LCD_CS_SET;
}
void WriteData(unsigned char dt)
{
LCD_CS_CLR;
LCD_SPI_SDA_SET;
LCD_SPI_SCL_CLR;
LCD_SPI_SCL_SET;
SendDataSPI(dt);
LCD_CS_SET;
}
void SendData(unsigned int color)
{
WriteData(color>>8);
WriteData(color);
}
void LCD_IC_Init(void)// ILI9163C初始化
{
// ILI9163C, 用于 LB1.41
WriteComm(0x11); // 退出睡眠模式
WriteComm(0x26); // 设置默认伽马值
WriteData(0x04);
WriteComm(0xB1); // 设置帧率
WriteData(0x0C);
WriteData(0x14);
WriteComm(0xC0); // 设置 VRH1[4:0] & VC[2:0] 用于 VCI1 & GVDD
WriteData(0x0C);
WriteData(0x05);
WriteComm(0xC1); // 设置 BT[2:0] 用于 AVDD & VCL & VGH & VGL
WriteData(0x02); // 0x00
WriteComm(0xC5); // 设置 VMH[6:0] & VML[6:0] 用于 VOMH & VCOML
WriteData(0x29); // 31 21 29
WriteData(0x43); // 58 48 43
WriteComm(0xC7);
WriteData(0x40);
WriteComm(0x3a); // 设置颜色格式
WriteData(0x05);
WriteComm(0x2A); // 设置列地址
WriteData(0x00);
WriteData(0x00);
WriteData(0x00);
WriteData(0x7F);
WriteComm(0x2B); // 设置页地址
WriteData(0x00);
WriteData(0x00);
WriteData(0x00);
WriteData(0x9F);
WriteComm(0x36); // 设置扫描方向
WriteData(0xC8); // 0xc8
WriteComm(0xB7); // 设置源输出方向
WriteData(0x00);
WriteComm(0xF2); // 启用伽马位
WriteData(0x01);
WriteComm(0xE0);
WriteData(0x36); // p1
WriteData(0x29); // p2
WriteData(0x12); // p3
WriteData(0x22); // p4
WriteData(0x1C); // p5
WriteData(0x15); // p6
WriteData(0x42); // p7
WriteData(0xB7); // p8
WriteData(0x2F); // p9
WriteData(0x13); // p10
WriteData(0x12); // p11
WriteData(0x0A); // p12
WriteData(0x11); // p13
WriteData(0x0B); // p14
WriteData(0x06); // p15
WriteComm(0xE1);
WriteData(0x09); // p1
WriteData(0x16); // p2
WriteData(0x2D); // p3
WriteData(0x0D); // p4
WriteData(0x13); // p5
WriteData(0x15); // p6
WriteData(0x40); // p7
WriteData(0x48); // p8
WriteData(0x53); // p9
WriteData(0x0C); // p10
WriteData(0x1D); // p11
WriteData(0x25); // p12
WriteData(0x2E); // p13
WriteData(0x34); // p14
WriteData(0x39); // p15
WriteComm(0x29); // 显示开启
WriteComm(0x2c);
}
code const unsigned char asc2_1608[95][16]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x33,0xF8,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x00,0x00},/*""",2*/
{0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x00,0x00},/*"#",3*/
{0x00,0x00,0x0E,0x18,0x11,0x04,0x3F,0xFF,0x10,0x84,0x0C,0x78,0x00,0x00,0x00,0x00},/*"$",4*/
{0x0F,0x00,0x10,0x84,0x0F,0x38,0x00,0xC0,0x07,0x78,0x18,0x84,0x00,0x78,0x00,0x00},/*"%",5*/
{0x00,0x78,0x0F,0x84,0x10,0xC4,0x11,0x24,0x0E,0x98,0x00,0xE4,0x00,0x84,0x00,0x08},/*"&",6*/
{0x08,0x00,0x68,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x18,0x18,0x20,0x04,0x40,0x02,0x00,0x00},/*"(",8*/
{0x00,0x00,0x40,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/
{0x02,0x40,0x02,0x40,0x01,0x80,0x0F,0xF0,0x01,0x80,0x02,0x40,0x02,0x40,0x00,0x00},/*"*",10*/
{0x00,0x80,0x00,0x80,0x00,0x80,0x0F,0xF8,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00},/*"+",11*/
{0x00,0x01,0x00,0x0D,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/
{0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80},/*"-",13*/
{0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/
{0x00,0x00,0x00,0x06,0x00,0x18,0x00,0x60,0x01,0x80,0x06,0x00,0x18,0x00,0x20,0x00},/*"/",15*/
{0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"0",16*/
{0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"1",17*/
{0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00},/*"2",18*/
{0x00,0x00,0x0C,0x18,0x10,0x04,0x11,0x04,0x11,0x04,0x12,0x88,0x0C,0x70,0x00,0x00},/*"3",19*/
{0x00,0x00,0x00,0xE0,0x03,0x20,0x04,0x24,0x08,0x24,0x1F,0xFC,0x00,0x24,0x00,0x00},/*"4",20*/
{0x00,0x00,0x1F,0x98,0x10,0x84,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00},/*"5",21*/
{0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x18,0x88,0x00,0x70,0x00,0x00},/*"6",22*/
{0x00,0x00,0x1C,0x00,0x10,0x00,0x10,0xFC,0x13,0x00,0x1C,0x00,0x10,0x00,0x00,0x00},/*"7",23*/
{0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"8",24*/
{0x00,0x00,0x07,0x00,0x08,0x8C,0x10,0x44,0x10,0x44,0x08,0x88,0x07,0xF0,0x00,0x00},/*"9",25*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/
{0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/
{0x00,0x00,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10,0x04,0x00,0x00},/*"<",28*/
{0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00},/*"=",29*/
{0x00,0x00,0x10,0x04,0x08,0x08,0x04,0x10,0x02,0x20,0x01,0x40,0x00,0x80,0x00,0x00},/*">",30*/
{0x00,0x00,0x0E,0x00,0x12,0x00,0x10,0x0C,0x10,0x6C,0x10,0x80,0x0F,0x00,0x00,0x00},/*"?",31*/
{0x03,0xE0,0x0C,0x18,0x13,0xE4,0x14,0x24,0x17,0xC4,0x08,0x28,0x07,0xD0,0x00,0x00},/*"@",32*/
{0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40,0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04},/*"A",33*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x11,0x04,0x0E,0x88,0x00,0x70,0x00,0x00},/*"B",34*/
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x1C,0x10,0x00,0x00},/*"C",35*/
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"D",36*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x17,0xC4,0x10,0x04,0x08,0x18,0x00,0x00},/*"E",37*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x17,0xC0,0x10,0x00,0x08,0x00,0x00,0x00},/*"F",38*/
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x44,0x1C,0x78,0x00,0x40,0x00,0x00},/*"G",39*/
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x00,0x80,0x00,0x80,0x10,0x84,0x1F,0xFC,0x10,0x04},/*"H",40*/
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x00,0x00,0x00,0x00},/*"I",41*/
{0x00,0x03,0x00,0x01,0x10,0x01,0x10,0x01,0x1F,0xFE,0x10,0x00,0x10,0x00,0x00,0x00},/*"J",42*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x03,0x80,0x14,0x64,0x18,0x1C,0x10,0x04,0x00,0x00},/*"K",43*/
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00},/*"L",44*/
{0x10,0x04,0x1F,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x1F,0xFC,0x10,0x04,0x00,0x00},/*"M",45*/
{0x10,0x04,0x1F,0xFC,0x0C,0x04,0x03,0x00,0x00,0xE0,0x10,0x18,0x1F,0xFC,0x10,0x00},/*"N",46*/
{0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"O",47*/
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x10,0x80,0x10,0x80,0x10,0x80,0x0F,0x00,0x00,0x00},/*"P",48*/
{0x07,0xF0,0x08,0x18,0x10,0x24,0x10,0x24,0x10,0x1C,0x08,0x0A,0x07,0xF2,0x00,0x00},/*"Q",49*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x11,0xC0,0x11,0x30,0x0E,0x0C,0x00,0x04},/*"R",50*/
{0x00,0x00,0x0E,0x1C,0x11,0x04,0x10,0x84,0x10,0x84,0x10,0x44,0x1C,0x38,0x00,0x00},/*"S",51*/
{0x18,0x00,0x10,0x00,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x00,0x18,0x00,0x00,0x00},/*"T",52*/
{0x10,0x00,0x1F,0xF8,0x10,0x04,0x00,0x04,0x00,0x04,0x10,0x04,0x1F,0xF8,0x10,0x00},/*"U",53*/
{0x10,0x00,0x1E,0x00,0x11,0xE0,0x00,0x1C,0x00,0x70,0x13,0x80,0x1C,0x00,0x10,0x00},/*"V",54*/
{0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00},/*"W",55*/
{0x10,0x04,0x18,0x0C,0x16,0x34,0x01,0xC0,0x01,0xC0,0x16,0x34,0x18,0x0C,0x10,0x04},/*"X",56*/
{0x10,0x00,0x1C,0x00,0x13,0x04,0x00,0xFC,0x13,0x04,0x1C,0x00,0x10,0x00,0x00,0x00},/*"Y",57*/
{0x08,0x04,0x10,0x1C,0x10,0x64,0x10,0x84,0x13,0x04,0x1C,0x04,0x10,0x18,0x00,0x00},/*"Z",58*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x40,0x02,0x40,0x02,0x40,0x02,0x00,0x00},/*"[",59*/
{0x00,0x00,0x30,0x00,0x0C,0x00,0x03,0x80,0x00,0x60,0x00,0x1C,0x00,0x03,0x00,0x00},/*"\",60*/
{0x00,0x00,0x40,0x02,0x40,0x02,0x40,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/
{0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00},/*"^",62*/
{0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01},/*"_",63*/
{0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
{0x00,0x00,0x00,0x98,0x01,0x24,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xFC,0x00,0x04},/*"a",65*/
{0x10,0x00,0x1F,0xFC,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"b",66*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00},/*"c",67*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x11,0x08,0x1F,0xFC,0x00,0x04},/*"d",68*/
{0x00,0x00,0x00,0xF8,0x01,0x44,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xC8,0x00,0x00},/*"e",69*/
{0x00,0x00,0x01,0x04,0x01,0x04,0x0F,0xFC,0x11,0x04,0x11,0x04,0x11,0x00,0x18,0x00},/*"f",70*/
{0x00,0x00,0x00,0xD6,0x01,0x29,0x01,0x29,0x01,0x29,0x01,0xC9,0x01,0x06,0x00,0x00},/*"g",71*/
{0x10,0x04,0x1F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"h",72*/
{0x00,0x00,0x01,0x04,0x19,0x04,0x19,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"i",73*/
{0x00,0x00,0x00,0x03,0x00,0x01,0x01,0x01,0x19,0x01,0x19,0xFE,0x00,0x00,0x00,0x00},/*"j",74*/
{0x10,0x04,0x1F,0xFC,0x00,0x24,0x00,0x40,0x01,0xB4,0x01,0x0C,0x01,0x04,0x00,0x00},/*"k",75*/
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"l",76*/
{0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC},/*"m",77*/
{0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"n",78*/
{0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00},/*"o",79*/
{0x01,0x01,0x01,0xFF,0x00,0x85,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"p",80*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x05,0x01,0xFF,0x00,0x01},/*"q",81*/
{0x01,0x04,0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x04,0x01,0x00,0x01,0x80,0x00,0x00},/*"r",82*/
{0x00,0x00,0x00,0xCC,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x98,0x00,0x00},/*"s",83*/
{0x00,0x00,0x01,0x00,0x01,0x00,0x07,0xF8,0x01,0x04,0x01,0x04,0x00,0x00,0x00,0x00},/*"t",84*/
{0x01,0x00,0x01,0xF8,0x00,0x04,0x00,0x04,0x00,0x04,0x01,0x08,0x01,0xFC,0x00,0x04},/*"u",85*/
{0x01,0x00,0x01,0x80,0x01,0x70,0x00,0x0C,0x00,0x10,0x01,0x60,0x01,0x80,0x01,0x00},/*"v",86*/
{0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00},/*"w",87*/
{0x00,0x00,0x01,0x04,0x01,0x8C,0x00,0x74,0x01,0x70,0x01,0x8C,0x01,0x04,0x00,0x00},/*"x",88*/
{0x01,0x01,0x01,0x81,0x01,0x71,0x00,0x0E,0x00,0x18,0x01,0x60,0x01,0x80,0x01,0x00},/*"y",89*/
{0x00,0x00,0x01,0x84,0x01,0x0C,0x01,0x34,0x01,0x44,0x01,0x84,0x01,0x0C,0x00,0x00},/*"z",90*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x3E,0xFC,0x40,0x02,0x40,0x02},/*"{",91*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/
{0x00,0x00,0x40,0x02,0x40,0x02,0x3E,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/
{0x00,0x00,0x60,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00},/*"~",94*/
};
void BlockWrite(unsigned int Xstart,unsigned int Xend,unsigned int Ystart,unsigned int Yend) //设置显示区域
{
WriteComm(0x2a);
WriteData((Xstart)>>8);
WriteData((Xstart));
WriteData((Xend)>>8);
WriteData(Xend);
WriteComm(0x2b);
WriteData((Ystart)>>8);
WriteData((Ystart));
WriteData((Yend)>>8);
WriteData(Yend);
WriteComm(0x2c);
}
void WriteOneDot(unsigned int color)//单个点
{
LCD_CS_CLR;
LCD_RD_SET;
LCD_RS_SET;
SendData(color);
LCD_CS_SET;
}
void LCD_SetCursor(unsigned short Xpos, unsigned short Ypos)//单点画布
{
BlockWrite(Xpos,Xpos+1,Ypos,Ypos+1);
}
void LCD_Fast_DrawPoint(unsigned short x,unsigned short y,unsigned short color)//画点
{
LCD_SetCursor(x,y);
WriteOneDot(color);
}
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)//显示字符
{
u8 temp,t1,t;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2);
num=num-' ';
for(t=0;t<csize;t++)//t--左右镜像
{
if(size==16)temp=asc2_1608[num][t];
//else if (size==12)temp=asc2_1206[num][t];
//else if(size==24)temp=asc2_2412[num][t];
else return;
for(t1=0;t1<8;t1++) //宽度8
{
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
temp<<=1;
y++;
if(y>=ROW)return;
if((y-y0)==size)
{
y=y0;
x++;
if(x>=COL)return;
break;
}
}
}
}
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)//显示字符串
{
u8 x0=x;
width+=x;
height+=y;
while((*p<='~')&&(*p>=' '))
{
if(x>=width){x=x0;y+=size;}
if(y>=height)break;//͋³ö
LCD_ShowChar(x,y,*p,size,0);
x+=size/2;
p++;
}
}
void draw_rectangle(int x1,int y1,int x2,int y2,int color){//绘制矩形
int i,j;
LCD_CS_CLR;
BlockWrite(0,COL,0,ROW);
for(i=0;i<COL;i++)
{
for(j=0;j<ROW;j++)
{ if(j>x1&&j<x2&&i>y1&&i<y2){
SendData(color);
}
else{
SendData(BLACK);
}
}
}
LCD_CS_SET;
}
void ADCInit()//初始化
{
P_SW2 |= 0x80;
ADCTIM = 0x3f; //00111111设置ADC内部时序
P_SW2 &= 0x7f;
ADCCFG = 0x2f; //00101111 右对齐 设置ADC时钟为系统时钟/2/16
ADC_CONTR |= 0x80; //adc电源开
}
int ADCRead(u8 channel)
{
int res;
ADC_RES = 0;
ADC_RESL = 0;
ADC_CONTR =0xc0|channel;//0x40|0x80| 开启adc电源 开始adc转换 选择adc通道
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20)); //查询ADC_LAG完成标志
ADC_CONTR &= ~0x20; //清完成标志
res = (ADC_RES << 8) | ADC_RESL; //读取ADC结果
return res;
//return ((u16)ADC_RES * 256 + (u16)ADC_RESL);
}
void msg_send(char msg[]){//发送字符串函数
int i=0;
while(msg[i]){
SBUF=msg[i];
while(!TI);
TI=0;
i++;
}
}
#define ADCTIM (*(unsigned char volatile xdata *)0xfea8)
int *BGV;
char internal_ref[8],vcc[8],adc3_v[8],adc_s[8],adc3[4];
int ref_v,v;
u16 res,res1,res2;
void main(){
//串口控制
ES = 1;//允许串口中断
SM0 = 0;
SM1 = 1;//sm0 0 sm1 1 设置串口1工作在模式1,可变波特率8位数据方式
SM2 = 0;//多机通信模式 模式0和1设置为0
RI = 0;//接收位标志清零
TI = 0;//发送位标志清零
REN = 1;//允许接收数据
TMOD &= 0xCF; //1100 1111 设置定时器定时器1模式0
TL1 = 0xE8; //设置定时初始值
TH1 = 0xFF; //设置定时初始值
TR1=1;//启用定时器1
LCD_InitPins();//端口初始化
LCD_IC_Init();//屏幕初始化
draw_rectangle(1,128,1,128,BLACK);//绘制黑色背景
P3M0 &= ~0x08; P3M1 |= 0x08; //配置P33高阻输入,用于adc采集
BGV = (int code *)0x1ff7;//rom
ref_v=*BGV;//从rom读取内部1.2v电压值
sprintf(internal_ref,"%d",ref_v);//转换字符串
ADCInit(); //ADC初始化
P_SW2 |= 0x80; //使能访问XFR
while(1){
res = ADCRead(3);//p33 adc值
adc3[0]=res/1000+'0';
adc3[1]=res%1000/100+'0';
adc3[2]=res%100/10+'0';
adc3[3]=res%10+'0';
msg_send(adc3);
sprintf(adc_s,"%d",res);//转换字符串
LCD_ShowString(0,0,122,20,16,"adc:");
LCD_ShowString(32,0,122,20,16,adc3);//显示adc值
v =(long)res*v/1024L;//p33 电压计算
sprintf(adc3_v,"%d",(int)v);
res = ADCRead(15); //读取内部1.19v
v = (int)(1024L * ref_v/ res);
sprintf(vcc,"%d",v);
LCD_ShowString(0,22,122,20,16,"p33:");
LCD_ShowString(56,22,122,20,16," mv");
LCD_ShowString(32,22,122,20,16,adc3_v);//显示adc3电压计算值
LCD_ShowString(0,44,122,20,16,"vcc:");
LCD_ShowString(32,44,122,22,16,vcc);//显示vcc电压值
LCD_ShowString(64,44,122,22,16,"mv");
//LCD_ShowString(0,66,122,20,16,"ref:");
//LCD_ShowString(32,66,122,20,16,internal_ref);//显示内部1.19v电压值
//LCD_ShowString(64,66,122,22,16,"mv");
}
}