|
本帖最后由 law3411209 于 2019-9-14 16:26 编辑
最近使用N76E003单片机驱动在老王家买的0.9“的无背光12864液晶屏出现问题,驱动芯片是uc1705x,情况是这样:在显示的时候出现刷新慢,就像是51单片机驱动tft液晶屏出现的刷新缓慢,本来我以为是单片机内部时钟设置错误,后来发现时钟正常,在查看驱动芯片手册时发现芯片内部有个时钟发生器,不知道是不是这个时钟发生器设置错误导致的?
芯片内部结构图:
指令寄存器:
液晶屏引脚:
各位大佬指点一下啊- #include "N76E003.h"
- #include "Common.h"
- #include "Delay.h"
- #include "SFR_Macro.h"
- #include "Function_define.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit LCD_CS=P0^5; //片选端口
- sbit LCD_RST=P0^6;//复位
- sbit LCD_RS=P0^7;//数据/命令切换 C/D
- sbit LCD_WR=P3^0;//写数据
- sbit LCD_RD=P1^7;//读数据
- code uchar Number8X16[]={
- 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//"0",0
- 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//"1",1
- 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//"2",2
- 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//"3",3
- 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//"4",4
- 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//"5",5
- 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//"6",6
- 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//"7",7
- 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//"8",8
- 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//"9",9
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10: ""
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//11: "."
- 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//12: ":"
- 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//13: "A"
- 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//14: "B"
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//15: "H"
- 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//16: "I"
- 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//17: "S"
- 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//18: "T"
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//19: "U"
- 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//20: "V"
- 0x08,0xF8,0x00,0xF8,0x00,0xF8,0x08,0x00,0x00,0x03,0x3E,0x01,0x3E,0x03,0x00,0x00,//21: "W"
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//22: "m"
- 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//23: "n"
- 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0x91,0x20,0x20,0x11,0x0E,0x00,//24: "p"
- 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x10,0x00,//25: "t"
- 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//26: "u"
- };
- code uchar Number16X16[]={
- 0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,
- 0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,//0: "电"
- 0x00,0x00,0xFE,0x02,0x82,0x82,0x82,0x82,0xFA,0x82,0x82,0x82,0x82,0x82,0x02,0x00,
- 0x80,0x60,0x1F,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x44,0x58,0x40,0x40,0x00,//1: "压"
- 0x10,0x60,0x02,0x8C,0x00,0x44,0x64,0x54,0x4D,0x46,0x44,0x54,0x64,0xC4,0x04,0x00,
- 0x04,0x04,0x7E,0x01,0x80,0x40,0x3E,0x00,0x00,0xFE,0x00,0x00,0x7E,0x80,0xE0,0x00,//2: "流"
- 0x00,0x04,0x24,0x24,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0x24,0x24,0x04,0x00,0x00,
- 0x21,0x21,0x11,0x09,0xFD,0x83,0x41,0x23,0x05,0x09,0x11,0x29,0x25,0x41,0x41,0x00,//3: "表"
- 0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x10,0x10,0xFF,0x10,0x10,0x10,0xF0,0x00,0x00,
- 0x10,0x30,0x10,0x1F,0x08,0x88,0x48,0x30,0x0E,0x01,0x40,0x80,0x40,0x3F,0x00,0x00,//4: "功"
- 0x00,0x14,0xA4,0x44,0x24,0x34,0xAD,0x66,0x24,0x94,0x04,0x44,0xA4,0x14,0x00,0x00,
- 0x08,0x09,0x08,0x08,0x09,0x09,0x09,0xFD,0x09,0x09,0x0B,0x08,0x08,0x09,0x08,0x00,//5: "率"
- 0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,
- 0x00,0xFF,0x08,0x10,0x08,0x47,0x40,0x7F,0x42,0x42,0x42,0x42,0x7F,0x40,0x40,0x00,//6: "阻"
- 0x10,0x10,0xD0,0xFF,0x90,0x10,0x80,0x48,0x28,0x09,0x0E,0x08,0x28,0x48,0x88,0x00,
- 0x04,0x03,0x00,0xFF,0x00,0x01,0x80,0x80,0x43,0x2C,0x10,0x2C,0x43,0x80,0x80,0x00,//7: "校"
- 0x00,0x02,0x0C,0xE0,0x40,0x20,0xF8,0x4F,0x48,0x49,0xFE,0x48,0x48,0x48,0x08,0x00,
- 0x04,0x04,0x7F,0x00,0x00,0x00,0xFF,0x22,0x22,0x22,0x3F,0x22,0x22,0x22,0x20,0x00,//8: "准"
- 0x04,0x24,0x24,0xEF,0x24,0x24,0xEF,0x24,0x24,0x04,0xF8,0x00,0x00,0xFF,0x00,0x00,
- 0x82,0x42,0x32,0x0F,0x02,0x02,0xFF,0x02,0x02,0x02,0x0F,0x40,0x80,0x7F,0x00,0x00,//9: "荆"
- 0x04,0xE4,0x24,0xFF,0x24,0xE4,0x00,0x04,0xE4,0x24,0xFF,0x24,0xE4,0x04,0x00,0x00,
- 0x20,0x13,0x08,0xFF,0x0A,0x33,0x00,0x20,0x13,0x08,0xFF,0x0A,0x13,0x20,0x20,0x00,//10: "棘"
- 0x00,0x00,0x00,0xFC,0x04,0x04,0x16,0x65,0x04,0x44,0x84,0x7C,0x00,0x00,0x00,0x00,
- 0x00,0x10,0x10,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x52,0x82,0x42,0x3E,0x00,0x00,//11: "鸟"
- 0x00,0x00,0x00,0x08,0xF8,0x08,0x00,0x00,0x88,0x78,0x88,0x00,0x00,0x08,0xF8,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x0C,0x03,0x00,0x03,0x0C,0x30,0x0F,0x00,0x00,//12: "W"
- 0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x08,0x08,0x08,0x08,0x10,0x20,0xC0,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x33,0x24,0x28,0x30,0x00,0x00,0x30,0x28,0x24,0x33,0x00,0x00,//13: "Ω"
- 0x10,0x0C,0x44,0x24,0x14,0x84,0x45,0x26,0x44,0x84,0x14,0x24,0x44,0x14,0x0C,0x00,
- 0x04,0x04,0x02,0xFE,0x45,0x44,0x44,0x44,0x44,0x44,0x45,0xFE,0x02,0x04,0x04,0x00,//14: "容"
- 0x20,0x20,0x20,0xBE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBE,0x20,0x20,0x20,0x00,
- 0x00,0x80,0x80,0xAF,0xAA,0xAA,0xAA,0xFF,0xAA,0xAA,0xAA,0xAF,0x80,0x80,0x00,0x00,//15: "量"
- };
- void SET_DATA(uchar val)
- {
- P04=val&1;
- P03=(val>>1)&1;
- P01=(val>>2)&1;
- P00=(val>>3)&1;
- P10=(val>>4)&1;
- P11=(val>>5)&1;
- P12=(val>>6)&1;
- P13=(val>>7)&1;
- }
- /**********************************************************************************
- **函数名:void LCD_Write_Byte(u8 Cmd,u8 Dat)
- **功能:对LCD12864写命令
- **说明:无
- **参数: Cmd =0 命令 Cmd=1 数据
- **********************************************************************************/
- void LCD_Write_Byte(uchar Cmd,uchar Dat) //LCD写入函数
- {
- LCD_CS=0;
- LCD_RS=Cmd;
- LCD_RD=0;
- LCD_WR=0;
- SET_DATA(Dat);
- LCD_RD=1;
- Timer0_Delay1ms(2);
- LCD_CS=1;
- LCD_RD=0;
- }
- ///**********************************************************************************
- //**函数名:void LCD_Write_Byte(u8 Cmd,u8 Dat)
- //**功能:对LCD12864写命令
- //**说明:无
- //**参数: Cmd =0 命令 Cmd=1 数据
- //**********************************************************************************/
- void LCD_Write_Byte80(uchar Cmd,uchar Dat) //LCD写入函数
- {
- // u16 para;
- LCD_CS=0;
- LCD_RS=Cmd;
- LCD_WR=0;
- SET_DATA(Dat);
- Timer0_Delay1ms(2);
- LCD_RD=1;
- Timer0_Delay1ms(2);
- LCD_CS=1;
- }
- ///**********************************************************************************
- //**函数名:void LCD_Reset()
- //**功能:对LCD12864复位
- //**说明:无
- //**********************************************************************************/
- void LCD_Reset() //LCD硬件复位
- {
- LCD_RST=0;
- Timer0_Delay1ms(50);
- LCD_RST=0;
- Timer0_Delay1ms(50);
- LCD_RST=1;
- Timer0_Delay1ms(50);
- }
- void LCD_Coor(uchar x, uchar y) //LCD坐标控制
- {
- LCD_Write_Byte(0,0xb0+y); //设置页地址
- LCD_Write_Byte(0,(x>>4)+0x10);//设置列地址高4位
- LCD_Write_Byte(0,x&0x0f); //设置列地址低4位
- }
- void LCD_Clr() //清屏函数
- {
- uchar i,j;
- for(i=0;i<9;i++)
- {
- LCD_Coor(0,i);
- for(j=0;j<132;j++)
- {
- LCD_Write_Byte(1,0x00);
- }
- }
- }
- void LCD_UC1705_Init()
- {
- LCD_Reset();
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0xE2); ////软件复位
- Timer0_Delay1ms(20);
- //--表格第8个命令,0xA0段(左右)方向选择正常方向(0xA1为反方向)--//
- LCD_Write_Byte(0,0xA0); //ADC select segment direction
- Timer0_Delay1ms(20);
- //--表格第15个命令,0xC8普通(上下)方向选择选择反向,0xC0为正常方向--//
- LCD_Write_Byte(0,0xC8); //Common direction
- Timer0_Delay1ms(20);
- //--表格第9个命令,0xA6为设置字体为黑色,背景为白色---//
- //--0xA7为设置字体为白色,背景为黑色---//
- LCD_Write_Byte(0,0xA6); // //reverse display
- Timer0_Delay1ms(20);
- //--表格第10个命令,0xA4像素正常显示,0xA5像素全开--//
- LCD_Write_Byte(0,0xA4); // //normal display
- Timer0_Delay1ms(20);
- //--表格第11个命令,0xA3偏压为1/7,0xA2偏压为1/9--//
- LCD_Write_Byte(0,0xA2); //bias set 1/9
- Timer0_Delay1ms(20);
- //--表格第19个命令,这个是个双字节的命令,0xF800选择增压为4X;--//
- //--0xF801,选择增压为5X,其实效果差不多--//
- LCD_Write_Byte(0,0xF8); //Boost ratio set
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0x01); //x4
- Timer0_Delay1ms(20);
- //--表格第18个命令,这个是个双字节命令,高字节为0X81,低字节可以--//
- //--选择从0x00到0X3F。用来设置背景光对比度。---/
- LCD_Write_Byte(0,0x81); //V0 a set
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0x17); //
- Timer0_Delay1ms(20);
- //--表格第17个命令,选择调节电阻率--//
- LCD_Write_Byte(0,0x25); //Ra/Rb set
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0x2F); //--表格第16个命令,电源设置。--//
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0x40); //起始行从第一行开始
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0xB0);
-
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0x10);
-
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0x00);
-
- Timer0_Delay1ms(20);
- LCD_Write_Byte(0,0xAF); //显示开
- Timer0_Delay1ms(20);
- LCD_Clr();
- }
- ///****************************************************************************/
- ////函数名称:Disp_Dat(uchar Row,uchar Col,uchar Number,uchar fs)
- ////函数功能:将显示数据输出到屏幕指定位置显示
- ////输入参数:low 行地址
- ////输入参数:Col 列地址
- ////输入参数:Number 显示数据
- ////输入参数:fs 显示方式(0,反显,否则正常显示)
- ////返 回 值:无
- ///****************************************************************************/
- void Disp_Dat(uchar Row,uchar Col,uchar Number,uchar fs)
- {
- uchar L_H,L_L; //列
- uchar Page; //页
-
- //计算页地址
- Page=0xb0+Row;
- L_H=0x10+(Col>>4);
- L_L=(Col&0x0f);
- LCD_Write_Byte(0,Page);
- LCD_Write_Byte(0,0x1f&L_H); //列地址,高低字节两次写入,从第0 列开始
- LCD_Write_Byte(0,L_L);
-
- if(fs==0)
- {
- LCD_Write_Byte(1,~Number);
- }
- else
- {
- LCD_Write_Byte(1,Number);
- }
- }
- ///****************************************************************************/
- ////函数名称:Disp_Nub8X16(uchar Row,uchar Col,uchar Number,uchar fs)
- ////函数功能:将25x48点阵数值输出到屏幕指定位置显示
- ////输入参数:low 行地址
- ////输入参数:Col 列地址
- ////输入参数:Number 显示数值
- ////输入参数:fs 显示方式(0,反显,否则正常显示)
- ////返 回 值:无
- ///****************************************************************************/
- void Disp_Nub8X16(uchar Row,uchar Col,uchar Number,uchar fs)
- {
- uchar i,j;
- uchar Temp;
- const uchar *STR_p;
-
- STR_p=&Number8X16[Number*16];
- for(i=0;i<2;i++)
- {
- for(j=Col;j<Col+8;j++)
- {
- //Temp=pgm_read_byte(STR_p);//
- Temp=*STR_p;
- Disp_Dat(Row,j,Temp,fs);
- STR_p++;
- }
- Row++;
- }
- }
- void Disp_Nub16X16(uchar Row,uchar Col,uchar Number,uchar fs)
- {
- uchar i,j;
- uchar Temp;
- const uchar *STR_p;
-
- STR_p=&Number16X16[Number*32];
- for(i=0;i<2;i++)
- {
- for(j=Col;j<Col+16;j++)
- {
- //Temp=pgm_read_byte(STR_p);//
- Temp=*STR_p;
- Disp_Dat(Row,j,Temp,fs);
- STR_p++;
- }
- Row++;
- }
- }
- void Hellow() //初始屏幕
- {
- LCD_Clr(); //清屏函数
- Disp_Nub8X16(1,12,19,1); //U
- Disp_Nub8X16(1,20,17,1); //S
- Disp_Nub8X16(1,28,14,1); //B
- Disp_Nub16X16(1,36,0,1); //电
- Disp_Nub16X16(1,52,1,1); //压
- Disp_Nub16X16(1,68,0,1); //电
- Disp_Nub16X16(1,84,2,1); //流
- Disp_Nub16X16(1,100,3,1); //表
- Disp_Nub16X16(5,40,9,1); //荆
- Disp_Nub16X16(5,56,10,1); //棘
- Disp_Nub16X16(5,72,11,1); //鸟
- }
- void Write_Lcd0(void) //固定显示底板发去LCD
- {
- Disp_Nub16X16(0,8,0,1); //电
- Disp_Nub16X16(0,24,1,1); //压
- Disp_Nub8X16(0,40,12,1); //:
- Disp_Nub8X16(0,120,20,1); //V
- Disp_Nub16X16(2,8,0,1); //电
- Disp_Nub16X16(2,24,2,1); //流
- Disp_Nub8X16(2,40,12,1); //:
- Disp_Nub8X16(2,120,13,1); //A
- Disp_Nub16X16(4,8,4,1); //功
- Disp_Nub16X16(4,24,5,1); //率
- Disp_Nub8X16(4,40,12,1); //:
- Disp_Nub8X16(4,120,21,1); //W
- Disp_Nub16X16(6,8,14,1); //容
- Disp_Nub16X16(6,24,15,1); //量
- Disp_Nub8X16(6,40,12,1); //:
- Disp_Nub8X16(6,104,22,1); //m
- Disp_Nub8X16(6,112,13,1); //A
- Disp_Nub8X16(6,120,15,1); //H
- }
- void main(void)
- {
- P00_Quasi_Mode;
- P01_Quasi_Mode;
- P02_Quasi_Mode;
- P03_Quasi_Mode;
- P04_Quasi_Mode;
- P05_Quasi_Mode;
- P06_Quasi_Mode;
- P07_Quasi_Mode;
- P10_Quasi_Mode;
- P11_Quasi_Mode;
- P12_Quasi_Mode;
- P13_Quasi_Mode;
- P14_Quasi_Mode;
- P15_Quasi_Mode;
- P16_Quasi_Mode;
- P17_Quasi_Mode;
- P30_Quasi_Mode;
- LCD_UC1705_Init();//初始化
-
- Timer0_Delay1ms(10);
- Hellow();
- LCD_Clr();
- while(1)
- {
- Write_Lcd0();
-
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|