原创 OCMJ15X20D(ADS7843)

2008-10-2 20:08 2534 5 5 分类: 消费电子

//=============================================
#include <reg52.h>
#include <intrins.h>
 
sbit LCD_RS   =P3^0;  //L:存取缓存器,H:存取DDRAM
sbit LCD_WR   =P3^1;  //L有效
sbit LCD_RD   =P3^3;  //L有效
sbit LCD_CS1  =P3^4;  //L有效
sbit LCD_CS2  =P3^5;  //H有效
sbit LCD_BUSY =P3^6;
sbit LCD_RST  =P3^7;  //L有效


sbit DCLK     =P2^7;        //根据用户自己的定义
sbit CS       =P2^6;
sbit DIN      =P2^5;
sbit STA      =P2^4;
sbit DOUT     =P2^3;
sbit INT   =P3^2;       //GP-CHECK4


#define lcd_regname  P1
#define lcd_regdata  P1
#define lcd_regnada  P1
#define lcd_data     P1
#define lcd_control  P3
#define uchar        unsigned char
#define uint         unsigned int


uchar taby[4];
uchar tabx[4];
uint x[6],y[6],xmin,ymin,xmax,ymax;
uint a="0",r,q=0;


//=============================================
uchar code chn[]={
"支持文字与绘图两种混和显示模式          "
"支持2 Page 显示模式(And, Or, Nor, Xor)  "
"内建两个显示 RAM,可做成4 灰阶的显示效果"
"内建中文字库储存7602个标准GB码的简体中文"
"提供全角(16x16)与半角(8x16) 文字显示模式"
"内建8x8 键盘扫瞄界面(Key Scan)          "
"光标、反白、闪烁功能,光标高度与宽度可调"
"支持屏幕水平卷动及垂直卷动功能          "
"内建512Byte SRAM 可自行造字             "
"提供中/英文文字对齐功能                 "
"显示字型可放大到32x32、48x48 或64x64    "
"支持可将字型由ROM 直接读出使用          "
"内建粗体字形与行距设定                  "
"内建10-Bit ADC 支持触控屏幕应用         "
"可使用3V/5V 供电而不需外接负电压        "
};


uchar code chn1[]={
"             触摸屏坐标测试             "
"                 X=                     "
"                 Y=                     "
};


uchar code chn2[]={
"             取值参考范围:              "
"                 <X<                    "
"                 <Y<                    "
};


uchar code alb[]={
"0123456789"
};


uchar code pic[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x3F,0xF8,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0x80,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x00,
0x0F,0xFF,0x00,0x01,0x80,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x00,0x80,0x00,0x0F,0xFF,0x00,0x01,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x43,0x01,0x80,0x00,0x7F,0xFF,0xF0,0x01,0x80,0xFF,0xFF,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x43,0x01,0x80,0x00,0x7F,0xFF,0xF0,0x01,
0x83,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0xFF,0x07,0x00,0x07,
0xFF,0xFF,0xFE,0x01,0x83,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,
0xFF,0x07,0x00,0x07,0xFF,0xFF,0xFE,0x01,0x87,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x3F,0xFC,0x1E,0x00,0x1F,0xFF,0xFF,0xFF,0x81,0x87,0xFF,0xFF,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3F,0xFC,0x1E,0x00,0x1F,0xFF,0xFF,0xFF,0x81,
0x8F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xBF,0xFF,0xFC,0x00,0x7F,
0xFC,0x00,0x7F,0xC1,0x8F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xBF,
0xFF,0xFC,0x00,0x7F,0xFC,0x00,0x7F,0xC1,0x9F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xF0,0x00,0xFF,0xC0,0x00,0x0F,0xE1,0x9F,0xFF,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x00,0xFF,0xC0,0x00,0x0F,0xE1,
0x97,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xE0,0x03,0xFF,
0xFF,0xFC,0x01,0xF1,0x97,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0xFF,0xE0,0x03,0xFF,0xFF,0xFC,0x01,0xF1,0x9F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xDF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x80,0xF1,0x9F,0xFF,0xFF,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xDF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x80,0xF1,
0x97,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x0F,0xFF,
0xFF,0xFF,0xE0,0x39,0x97,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,
0xFF,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x39,0x9F,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xFF,0xF8,0x00,0x1F,0xFF,0xF0,0x03,0xF8,0x39,0x9F,0x7F,0xFF,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x1F,0xFF,0xF0,0x03,0xF8,0x39,
0x8B,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,0x3F,0xFF,
0xFF,0xC0,0x7C,0x19,0x8B,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,
0xE0,0x00,0x3F,0xFF,0xFF,0xC0,0x7C,0x19,0x87,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x7F,0xF0,0x00,0x3F,0xFF,0xFF,0xF8,0x1E,0x09,0x87,0xFF,0xFF,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xF0,0x00,0x3F,0xFF,0xFF,0xF8,0x1E,0x09,
0x8B,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x7F,0xFF,
0xFF,0xFE,0x0F,0x09,0x8B,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0xF8,0x00,0x7F,0xFF,0xFF,0xFE,0x0F,0x09,0x81,0xF3,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0x87,0x09,0x81,0xF3,0xFF,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0x87,0x09,
0x81,0xF7,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFE,0x00,0xFF,0xFF,
0xFF,0xFF,0x83,0x89,0x81,0xF7,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x89,0x81,0xF7,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xC3,0x89,0x81,0xF7,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xC3,0x89,
0x81,0xD3,0xFF,0xFF,0xF0,0x3F,0xF8,0x00,0x00,0x00,0x7F,0xFF,0xFE,0x01,0xFF,0xFF,
0xFF,0xFF,0xE1,0x89,0x81,0xD3,0xFF,0xFF,0xF0,0x3F,0xF8,0x00,0x00,0x00,0x7F,0xFF,
0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xE1,0x89,0x81,0xD3,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
0x00,0x00,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xE1,0x89,0x81,0xD3,0xFF,0xFF,
0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xE1,0x89,
0x80,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,
0xFF,0xFF,0xF1,0x89,0x80,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x01,0xFF,0xFF,
0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF1,0x89,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,
0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF3,0x09,0x80,0x03,0xFF,0xFF,
0xFF,0xFF,0xFF,0xC0,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF3,0x09,
0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,
0xFF,0xFF,0xF2,0x11,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x01,0xFF,0xFF,
0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xF2,0x11,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
0x00,0x01,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xF0,0x21,0x80,0x03,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x01,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xF0,0x21,
0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xF0,0x01,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x01,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,
0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x70,0x01,0x80,0x03,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x70,0x01,
0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFE,0xFF,0x70,0x01,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x01,0x80,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x01,0x80,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,
0xFF,0x7F,0x20,0x01,0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0x7F,0xFF,0x7F,0x20,0x01,0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x7F,0x20,0x01,0x80,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x7F,0x20,0x01,
0x80,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xDF,
0xFF,0x7E,0x20,0x01,0x80,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x7F,0xFF,
0xFF,0xFF,0xFF,0xDF,0xFF,0x7E,0x20,0x01,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x3E,0x40,0x01,0x81,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x3E,0x40,0x01,
0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xCF,
0xFF,0x3C,0x40,0x01,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x1F,0xFF,
0xFF,0xFF,0xFF,0xCF,0xFF,0x3C,0x40,0x01,0x83,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFE,0x38,0x40,0x01,0x83,0xFF,0xEF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFE,0x38,0x40,0x01,
0x83,0xE0,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0x8F,
0xFE,0x38,0x40,0x01,0x83,0xE0,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x07,0xFF,
0xFF,0xFF,0xFF,0x8F,0xFE,0x38,0x40,0x01,0x83,0xC0,0x07,0xC0,0x00,0x3F,0xFF,0xF7,
0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x30,0x40,0x01,0x83,0xC0,0x07,0xC0,
0x00,0x3F,0xFF,0xF7,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x30,0x40,0x01,
0x83,0x80,0x07,0xC0,0x00,0x3F,0xFF,0xE7,0xF0,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1F,
0x7C,0x20,0x40,0x01,0x83,0x80,0x07,0xC0,0x00,0x3F,0xFF,0xE7,0xF0,0x00,0x00,0xFF,
0xFF,0xFF,0xFF,0x1F,0x7C,0x20,0x40,0x01,0x83,0x80,0x07,0xC0,0x00,0x1F,0xFF,0xE3,
0xF8,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x1E,0x78,0x00,0x40,0x01,0x83,0x80,0x07,0xC0,
0x00,0x1F,0xFF,0xE3,0xF8,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x1E,0x78,0x00,0x40,0x01,
0x83,0x80,0x0F,0x80,0x00,0x1F,0xFF,0xC3,0xF8,0x00,0x00,0x3F,0xFF,0xFF,0xFE,0x1E,
0xF0,0x00,0x00,0x01,0x83,0x80,0x0F,0x80,0x00,0x1F,0xFF,0xC3,0xF8,0x00,0x00,0x3F,
0xFF,0xFF,0xFE,0x1E,0xF0,0x00,0x00,0x01,0x83,0x00,0x0F,0x80,0x00,0x0F,0xE7,0xE1,
0xFC,0x00,0x00,0x1F,0xFF,0xFF,0xDA,0x3C,0xE0,0x00,0x00,0x01,0x83,0x00,0x0F,0x80,
0x00,0x0F,0xE7,0xE1,0xFC,0x00,0x00,0x1F,0xFF,0xFF,0xDA,0x3C,0xE0,0x00,0x00,0x01,
0x83,0x80,0x0F,0x00,0x00,0x0F,0xF7,0xE0,0xFE,0x00,0x00,0x07,0xFF,0xFF,0xF2,0x30,
0x80,0x00,0x00,0x01,0x83,0x80,0x0F,0x00,0x00,0x0F,0xF7,0xE0,0xFE,0x00,0x00,0x07,
0xFF,0xFF,0xF2,0x30,0x80,0x00,0x00,0x01,0x87,0x80,0x1F,0x00,0x00,0x07,0xF7,0xE0,
0x77,0x00,0x00,0x01,0xFF,0xFF,0xF1,0x20,0x00,0x00,0x00,0x01,0x87,0x80,0x1F,0x00,
0x00,0x07,0xF7,0xE0,0x77,0x00,0x00,0x01,0xFF,0xFF,0xF1,0x20,0x00,0x00,0x00,0x01,
0x87,0xC0,0x1F,0x00,0x00,0x03,0xF3,0xF0,0x73,0x80,0x00,0x00,0xFE,0x7F,0xF0,0x00,
0x00,0x00,0x00,0x01,0x87,0xC0,0x1F,0x00,0x00,0x03,0xF3,0xF0,0x73,0x80,0x00,0x00,
0xFE,0x7F,0xF0,0x00,0x00,0x00,0x00,0x01,0x87,0xE0,0x1E,0x00,0x00,0x01,0xF9,0xF0,
0x71,0xC0,0x00,0x00,0x7C,0x3F,0xF0,0x00,0x00,0x00,0x00,0x01,0x87,0xE0,0x1E,0x00,
0x00,0x01,0xF9,0xF0,0x71,0xC0,0x00,0x00,0x7C,0x3F,0xF0,0x00,0x00,0x00,0x00,0x01,
0x87,0xE0,0x1E,0x00,0x00,0x00,0xF8,0xF8,0x78,0xC0,0x00,0x00,0x78,0x1F,0xE0,0x00,
0x00,0x00,0x00,0x01,0x87,0xE0,0x1E,0x00,0x00,0x00,0xF8,0xF8,0x78,0xC0,0x00,0x00,
0x78,0x1F,0xE0,0x00,0x00,0x00,0x00,0x01,0x83,0xE0,0x1C,0x00,0x00,0x00,0x7C,0xF8,
0x7C,0x60,0x00,0x00,0x72,0x07,0xE0,0x00,0x00,0x00,0x00,0x01,0x83,0xE0,0x1C,0x00,
0x00,0x00,0x7C,0xF8,0x7C,0x60,0x00,0x00,0x72,0x07,0xE0,0x00,0x00,0x00,0x00,0x01,
0x81,0xE0,0x18,0x00,0x00,0x00,0x7C,0xFC,0x7E,0x30,0x00,0x00,0x70,0x00,0xE0,0x00,
0x00,0x00,0x00,0x01,0x81,0xE0,0x18,0x00,0x00,0x00,0x7C,0xFC,0x7E,0x30,0x00,0x00,
0x70,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x38,0x00,0x00,0x00,0x3F,0xF8,
0x7F,0x10,0x00,0x00,0x60,0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x38,0x00,
0x00,0x00,0x3F,0xF8,0x7F,0x10,0x00,0x00,0x60,0x00,0x78,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x38,0x00,0x00,0x00,0x3F,0xE0,0x3C,0x90,0x00,0x00,0x60,0x00,0x60,0x00,
0x00,0x00,0x00,0x01,0x80,0x00,0x38,0x00,0x00,0x00,0x3F,0xE0,0x3C,0x90,0x00,0x00,
0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x78,0x00,0x00,0x00,0x3F,0x80,
0x3C,0x10,0x00,0x00,0xC0,0x03,0xF0,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x78,0x00,
0x00,0x00,0x3F,0x80,0x3C,0x10,0x00,0x00,0xC0,0x03,0xF0,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x78,0x00,0x00,0x00,0x7E,0x00,0x3C,0x10,0x00,0x01,0x40,0x04,0xD8,0x00,
0x00,0x00,0x00,0x01,0x80,0x00,0x78,0x00,0x00,0x00,0x7E,0x00,0x3C,0x10,0x00,0x01,
0x40,0x04,0xD8,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,
0x1E,0x0A,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0xF8,0x00,
0x00,0x00,0xFC,0x00,0x1E,0x0A,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x01,
0x80,0x01,0xF0,0x00,0x00,0x00,0xF8,0x00,0x07,0x04,0x00,0x02,0x0C,0x02,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x01,0xF0,0x00,0x00,0x00,0xF8,0x00,0x07,0x04,0x00,0x02,
0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0xF0,0x00,0x00,0x00,0xF0,0x00,
0x00,0x80,0x00,0x02,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0xF0,0x00,
0x00,0x00,0xF0,0x00,0x00,0x80,0x00,0x02,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x0C,0x48,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x0C,
0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,
0x00,0x00,0x00,0x38,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,
0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x38,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x0F,0xE2,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x0F,0xE2,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,
0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,
0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xC0,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};


//微秒级延时
void Delay_Nus(uint N)
{
 while(N--);
}


//毫秒级延时
void Delay_Nms (uint N)
{
 uint i;
 for(i=0;i<N;i++)
  Delay_Nus(123);
}


//送数据子函数
void SendData(uchar regnada) small
{
 lcd_regnada = regnada;
 LCD_CS1 =0; // chip enable.
 LCD_RD = 1; //
 LCD_RS = 0; // rs = 0;
 LCD_WR = 0; // wr = 0;
 ;
 LCD_WR = 1; // wr = 1;
 LCD_RS = 1; // rs = 1;
 LCD_CS1 =1; // chip disable.
}


//写资料到缓存器
void WriteDataToREG(uchar regname,uchar regdata) small
{                                  
 SendData(regname);
 Delay_Nus(1);
 SendData(regdata);
}


//写资料到DDRAM
void WiteDataToDDRAM(uchar wrdata) small
{      
 while(LCD_BUSY == 1);
 lcd_data = wrdata;
 LCD_CS1 =0; // chip enable.
 LCD_RD = 1; //
 LCD_RS = 1; // rs = 1;
 LCD_WR = 0; // wr = 0;
 ;
 LCD_WR = 1; // wr = 1;
 LCD_RS = 1; // rs = 1;
 LCD_CS1 =1; // chip disable.
}


//读缓存器
uchar ReadDataFromREG(uchar regname) small
{                          
 uchar reg_rddata;


 SendData(regname);


 lcd_data = 0xff;
 LCD_CS1 =0; // chip enable.
 LCD_WR = 1; // wr = 1;
 LCD_RS = 0; // rs = 0;
 LCD_RD = 0; // rd = 0;
 ;
 reg_rddata = lcd_data;
 LCD_RD = 1; // rd = 1;
 LCD_RS = 1; // rs = 1;
 LCD_CS1 =1; // chip disable.
 return(reg_rddata);
}


//上电复位
void LCD_Reset(void) small
{              
 Delay_Nms(120); // Delay_Nus 120ms 等待上电复位
 lcd_control = 0xff; // LCD_RS/WR/RD/CS1/CS2 normal - skeep high.
}


//设定坐标
void SetXY(uchar x,uchar y) small
{                               
 WriteDataToREG(0x60,x); // active window top register(awtr)
 WriteDataToREG(0x70,y); // active window top register(awtr)
}


//初始化
void LCD_Initial(void) small
{                  
 WriteDataToREG(0x00,0xc9); // lcd control register(lcr)
 WriteDataToREG(0x01,0xf2); // misc.register(mir)
 WriteDataToREG(0x02,0x10); // advance power setup register(apsr)
 WriteDataToREG(0x03,0x80); // advance display setup regiser(adsr)
 WriteDataToREG(0x10,0x6b); // cursor control register(ccr)
 WriteDataToREG(0x11,0x00); // distance of word or lines register(dwlr)
 WriteDataToREG(0x12,0x91); // memory access mode register(awrr)
 WriteDataToREG(0x21,0x27); // display window right register(dwrr)
 WriteDataToREG(0x31,0xef); // display window bottom register(dwbr)
 WriteDataToREG(0x41,0x00); // display window left register(dwlr)
 WriteDataToREG(0x51,0x00); // display window top register(dwtr)
 WriteDataToREG(0x20,0x27); // active window right register(awrr)
 WriteDataToREG(0x30,0xef); // active window bottom register(awbr)
 WriteDataToREG(0x40,0x00); // active window left register(awlr)
 WriteDataToREG(0x50,0x00); // active window top register(awtr)
 WriteDataToREG(0x60,0x00); // cursor position x register(cpxr)
 WriteDataToREG(0x61,0x00); // begin segment position register(bgsg)
 WriteDataToREG(0x70,0x00); // cursor position y register(cpyr)
 WriteDataToREG(0x71,0x00); // shift action range,begin commom register(bgcm)
 WriteDataToREG(0x72,0xef); // shift action range,end commom register(edcm)
 WriteDataToREG(0x80,0xaa); // blink time register(btr)
 WriteDataToREG(0x81,0x00); // frame rate polarity change at common_fa register(fdca)
 WriteDataToREG(0x91,0x00); // frame rate polarity change at common_fb register(fdcb)
 WriteDataToREG(0x90,0x06); // shift clock control register(sccr)
 WriteDataToREG(0xa0,0x11); // interrupt setup & status register(frcb)
 WriteDataToREG(0xa1,0x00); // key scan control register(kscr)
 WriteDataToREG(0xa2,0x00); // key scan data register(ksdr)
 WriteDataToREG(0xa3,0x00); // key scan data expand register(kser)
 WriteDataToREG(0xb0,0x27); // interrupt column setup register(intx)
 WriteDataToREG(0xb1,0xef); // interrupt row setup register(inty)
 WriteDataToREG(0xc0,0x00); // touch panel control register(tpcr)
 WriteDataToREG(0xc1,0x0a); // adc status register(adcs)
 WriteDataToREG(0xc8,0x80); // touch panel segment high byte data register(tpxr)
 WriteDataToREG(0xc9,0x80); // touch panel common high byte data register(tpyr)
 WriteDataToREG(0xca,0x00); // touch panel segment/common low byte data register(tpzr)
 WriteDataToREG(0xd0,0x80); // lcd contrast control register (lccr)
 WriteDataToREG(0xe0,0x00); // pattern data register(pdr)
 WriteDataToREG(0xf0,0xa0); // font control register(fcr)
 WriteDataToREG(0xf1,0x0f); // font size control register
}


//清屏
void LCD_Clear(void) small
{                  
 uchar reg_rddata;
 WriteDataToREG(0xe0,0x00);
 reg_rddata = ReadDataFromREG(0xf0);
 reg_rddata |= 0x08;
 WriteDataToREG(0xf0,reg_rddata);
}


//显示图形
void Display_Picture(uchar code *pho) small
{                         
 uchar i,j,k;
 uchar code *pp;
 SetXY(0,0);
 for(k=0;k<4;k++)
 {
  pp=pho;
  for(j=0;j<60;j++)
  {
   for(i=0;i<40;i++)
   {
    WiteDataToDDRAM(*pp);
    ++pp;
   }
  }
 }
}


//显示点阵
void Display_Grid(uchar data1,uchar data2) small
{                                   
 uchar i,j;
 SetXY(0,0);
 for(j=0;j<60;j++)
 {
  for(i=0;i<80;i++)
  {
   WiteDataToDDRAM(data1);
  }
  for(i=0;i<80;i++)
  {
   WiteDataToDDRAM(data2);
  }
 }
}


//显示点阵
void Display_Grid1() small
{                                   
 uchar i,j,k;
 for(k=0;k<3;k++)
 { 
  for(i=0;i<3;i++)
  {
   for(j=0;j<16;j++)
   {
    SetXY(19*i,j+k*112);
    WiteDataToDDRAM(0xff);
    WiteDataToDDRAM(0xff);
   }
  }
 }
}


//显示中文或字符
void Display_Chinese(uchar code *cha,int count) small
{                                   
 int i;
 for(i=0;i<count;i++)
 {
  WiteDataToDDRAM(*cha);
  ++cha;
 }
}


//显示中文或字符
void Display_Chinese1(int count) small
{                                
 WiteDataToDDRAM(count);
}


//向ADS7843写数据
WriteDataTo7843(unsigned char num)
{
 unsigned char count="0";
 DCLK=0;
 for(count=0;count<8;count++)
 {
  num<<=1;
  DIN=CY;
  DCLK=0; _nop_();_nop_();_nop_();
  DCLK=1; _nop_();_nop_();_nop_();
 }
}


//从ADS7843读数据
ReadDataFrom7843(void)
{
 unsigned char count="0";
 unsigned int Num="0";
 for(count=0;count<12;count++)
 {
  Num<<=1;
  DCLK=1; _nop_();_nop_();_nop_();
  DCLK=0; _nop_();_nop_();_nop_();
  if(DOUT) Num++;
 }
 return(Num);
}


//ADS7843初始化
void start(void)
{
 DCLK=0;
 CS=1;
 DIN=1;
 DCLK=1;
 CS=0;
}


//中断程序
void go() interrupt 0
{
 uchar i;
 uint X="0",Y=0,X_temp[2],Y_temp[2];
 start(); //启动SPI
 Delay_Nus(2);
 for(i=0;i<2;i++)
 {
  for(r=0;r<6;r++)
  {
   WriteDataTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
   DCLK=1; _nop_();_nop_();_nop_();_nop_();
   DCLK=0; _nop_();_nop_();_nop_();_nop_();
   x[r]=ReadDataFrom7843();  //读X轴坐标
   WriteDataTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
   DCLK=1; _nop_();_nop_();_nop_();_nop_();
   DCLK=0; _nop_();_nop_();_nop_();_nop_();
   y[r]=ReadDataFrom7843();  //读Y轴坐标
  }
  xmin=x[0];xmax=x[0];ymin=y[0];ymax=y[0];
  for(r=1;r<6;r++)
  { 
   if(x[r]<xmin)
    xmin=x[r];
   if(x[r]>xmax)
    xmax=x[r];
   if(y[r]<ymin)
    ymin=y[r];
   if(y[r]>ymax)
    ymax=y[r];
  }


 X_temp=(x[0]+x[1]+x[2]+x[3]+x[4]+x[5]-xmin-xmax)/4;
 Y_temp=(y[0]+y[1]+y[2]+y[3]+y[4]+y[5]-ymin-ymax)/4;
 }
 CS=1;
 INT=1;
 X=(X_temp[0]+X_temp[1])/2;
 Y=(Y_temp[0]+Y_temp[1])/2;
 tabx[0]=X/1000;
 tabx[1]=X%1000/100;
 tabx[2]=X%100/10;
 tabx[3]=X%10;
 taby[0]=Y/1000;
 taby[1]=Y%1000/100;
 taby[2]=Y%100/10;
 taby[3]=Y%10;
 if(q==0)
 {
  LCD_Clear();q=1;
  WriteDataToREG(0x00,0xc5);
  Display_Grid1();
  WriteDataToREG(0x10,0x2b);
  WriteDataToREG(0x00,0xcd);
  SetXY(0,48);
  Display_Chinese(chn1,120);
  SetXY(0,144);
  Display_Chinese(chn2,120);
 }
 for(r=0;r<4;r++)
 {   
  SetXY(19+r,64);
  Display_Chinese1(alb[tabx[r]]);
 }
 for(r=0;r<4;r++)
 {    
  SetXY(19+r,80);
  Display_Chinese1(alb[taby[r]]);
 }
 Delay_Nms(300);  
}


//!!!!!!!主程序!!!!!!!!!!!
void main (void)
{
 SP=0x5f;
 LCD_Reset();
 LCD_Initial();
 LCD_Clear();
 IE=0x81;
 IT0=0;
 while(1)
 {
  IE=0x00;
  q=0;
  WriteDataToREG(0x10,0x29);
  WriteDataToREG(0x00,0xcd);
  SetXY(0x00,0x00);
  Display_Chinese(chn,600);
  IE=0x81;
  Delay_Nms(3000);
  IE=0x00;
  q=0;
  WriteDataToREG(0x00,0xc5);
  Display_Grid(0xcc,0xcc);
  IE=0x81;
  Delay_Nms(3000);
  IE=0x00;
  q=0; 
  WriteDataToREG(0x00,0xc5);
  Display_Grid(0x33,0x33);
  IE=0x81;
  Delay_Nms(3000);
  IE=0x00;
  q=0; 
  WriteDataToREG(0x10,0x2b);
  WriteDataToREG(0x00,0xcd);
  SetXY(0x00,0x00);
  Display_Chinese(chn,600);
  IE=0x81;
  Delay_Nms(3000);
  IE=0x00;
  q=0; 
  WriteDataToREG(0x00,0xc5);
  Display_Grid(0xcc,0x33);
  IE=0x81;
  Delay_Nms(3000);
  IE=0x00;
  q=0;
  WriteDataToREG(0x00,0xc5);
  Display_Picture(pic);
  IE=0x81;
  Delay_Nms(3000);
 }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条