2.5元淘得手
点亮便是宝
程序显示效果(需调一下比拟度)
原是并口,芯片支持串口(需小改)
//屏丝印WOM-13064H2
//NT7538 驱动例程, 12864 点阵, 6800 时序 驱动电压 VDD=3.3V
#include<reg52.h>
//#include<STC8F.h>
#define uchar unsigned char
//函数
void LCD_Init() ;
void Delay(int) ;
void LCD_RegWrite(uchar) ; //写命令寄存器
void LCD_dataWrite(uchar) ; //写显示数据寄存器
void Write_Indirect68(uchar _data); //间接驱动 68 模式写数据子程序
LCD_Data_Read(void); //读显示数据寄存器
Read_Indirect68(void); //间接驱动 68 模式读数据子程序
Read_STATUS_Indirect68(void); //间接驱动 68 模式读状态字
void Write_HANZI( uchar _x,uchar _y,uchar hz ); //写一个汉字
void Write_ZIFU( uchar _x,uchar _y,uchar zf ); //写一个字符
void Test_Read_Modify_Write(); //读功能及读修正写测试
void Dot_Write(uchar _x,uchar _y); //写单点, 读修正写模式
void LCD_Clear() ;
void LCD_XY() ; //X_Y 坐标定位,根据 col,row 的值在显示区定位
void LCD_DISPPIC( uchar pic ); //写全屏图片
void LCD_BIAN( ); //写边框
void LCD_HANZI( ); //写汉字列表
void LCD_ZIFU( ); //写字符列表
void LCD_Line_Write(uchar x0,uchar y0,uchar xt,uchar yt); //两点划直线 出发点(x0,y0), 终点(xt,yt)
//间接驱动模式功能位定义
sbit LCD_CS = P0^3 ;
sbit LCD_A0 = P0^4 ;
sbit LCD_RST = P0^1 ; //
sbit LCD_WR = P0^2 ;
sbit LCD_RD = P0^5 ;
#define DBBUS P1 //并口数据端口
#define LCMLIMIT 130 //128总列数.
#define EXCURSION 1 //列驱动偏移量, 从 SO 开始该值为 0, 从 S1 开始该值为 1,
//全局变量
uchar col,row; /列 x,行(页)y,输出数据 /
uchar lcdvop; //比拟度参数
uchar status; //状态字
uchar code tu[];//图片数组
uchar code hanzi[][32];//汉字数组
uchar code zifu[][16];//字符数组
/主函数/
void main(void)
{
//EA=1,EX1=1,IT1=0;//中断设置, 开启外部中断 1, 低电平触发
lcdvop=0x20; //vop 预设参数
LCD_Init(); //初始化
LCD_Clear(); //清屏
status=Read_STATUS_Indirect68();//读状态字
LCD_RegWrite(0xa5); //逼迫全显指令
Delay(1000); //显示延时
LCD_RegWrite(0xa4); //规复正常显示
LCD_BIAN(); //写边框
Delay(1000);
LCD_Clear();
LCD_HANZI( ); //写入汉字
LCD_ZIFU(); //写入字符
Delay(1000);
LCD_Line_Write(10,3,3,60); // 画线
LCD_Line_Write(3,61,124,61);
LCD_Line_Write(124,61,117,3);
LCD_Line_Write(118,3,10,3);
Delay(1500);
while(1)
{
}
}
//
//初始化
//
void LCD_Init()
{
DBBUS=0xff;
LCD_CS = 1 ;
LCD_A0 = 1 ;
LCD_RST = 0 ; //复位脚复位
Delay(50);
LCD_RST = 1 ;
Delay(100);
LCD_RegWrite(0xe2); //复位指令
LCD_RegWrite(0xae); //关显示
LCD_RegWrite(0x60); //起始行设置 40-7F
LCD_RegWrite(0xa2); //LCD 偏压设置,A2=1/9,A3=1/7
LCD_RegWrite(0xa1); //SEG 扫描方向设置 A0=正扫 S0->S131,A1=反扫 S131->S0
LCD_RegWrite(0xc0); //COM 扫描方向设置,C0=正扫 C0->C63,C8=反扫 C63->C0
LCD_RegWrite(0xA6); //显斧正/反显设置,A6=1 显示,A7=0 显示
LCD_RegWrite(0x26); //V0 的电压调节器的内部电阻率设置, Rb/Ra Ratio 20-27
LCD_RegWrite(0x81); //比拟度 VOP 设置指令
LCD_RegWrite(lcdvop); //比拟度参数 00-3F
LCD_RegWrite(0xf8); //倍压模式设置指令
LCD_RegWrite(0x00); //倍压模式选择 00=2X,3X,4X 01=5X 03=6X
LCD_RegWrite(0xa4); //全部显示掌握 ,A4=正常显示,A5=逼迫所有像素全亮
LCD_RegWrite(0x2f); //电源设置
LCD_RegWrite(0xAf); //打开显示
}
//
/ 写汉字列表 /
//
void LCD_HANZI(void)
{
Write_HANZI( 16,1,hanzi[0] ); // "电"
Write_HANZI( 32,1,hanzi[1] ); // "子"
Write_HANZI( 48,1,hanzi[2] ); // "淘"
Write_HANZI( 64,1,hanzi[3] ); // "宝"
Write_ZIFU( 80,1,zifu[11] ); //"D"
Write_ZIFU( 88,1,zifu[16] ); //"I"
Write_ZIFU( 96,1,zifu[17] ); //"Y"
Write_HANZI( 16,3,hanzi[4] ); // "液"
Write_HANZI( 32,3,hanzi[5] ); // "晶"
Write_HANZI( 48,3,hanzi[6] ); // "显"
Write_HANZI( 64,3,hanzi[7] ); // "示"
Write_HANZI( 80,3,hanzi[8] ); // "模"
Write_HANZI( 96,3,hanzi[9] ); // "块"
}
//
/ 写字符列表 /
//
void LCD_ZIFU(void)
{
Write_ZIFU( 8,5,zifu[10] ); // ""
Write_ZIFU( 16,5,zifu[10] ); // ""
Write_ZIFU( 24,5,zifu[1] ); // "1"
Write_ZIFU( 32,5,zifu[2] ); // "2"
Write_ZIFU( 40,5,zifu[8] ); // "8"
Write_ZIFU( 48,5,zifu[15] ); // "X"
Write_ZIFU( 56,5,zifu[6] ); // "6"
Write_ZIFU( 64,5,zifu[4] ); // "4"
Write_ZIFU( 72,5,zifu[11] ); //"D"
Write_ZIFU( 80,5,zifu[12] ); // "O"
Write_ZIFU( 88,5,zifu[13] ); // "T"
Write_ZIFU( 96,5,zifu[14] ); // "S"
Write_ZIFU( 104,5,zifu[10] ); // ""
Write_ZIFU( 112,5,zifu[10] ); // ""
}