一块160*80不带控制器的液晶屏
我的效果,直接用ram创建一个160*80的显存区,1k一下ram就别玩了,没有控制器,只有驱动器,
5块钱还要什么飞机呢!
程序:
- #include "STC15F2K60S2.H"
- #include "intrins.h"
- typedef unsigned char uchar;
- typedef unsigned int uint;
- //显示刷新帧速25ms,40帧,微闪烁,过快导致对比度下降
- #define LCD_DATA P2
- sbit LCD_RST = P4^4; // 重启 L
- sbit LCD_XCS = P3^2; //命令选择L
- sbit LCD_SID = P3^3; //命令串行数据
- sbit LCD_XCLK = P3^4; //命令时钟
- sbit LCD_DISP = P3^5; //L关闭显示
- sbit LCD_CP = P4^2; //数据移位时钟
- sbit LCD_LP = P4^1; //数据锁存,com数据移位
- sbit LCD_M = P3^7; //LCD输出交流信号
- sbit LCD_FLM = P3^6; //帧起始
- sbit LCD_D1 = P2^0; //数据输入
- sbit LCD_D2 = P2^1;
- sbit LCD_D3 = P2^2;
- sbit LCD_D4 = P2^3;
- /***********************阴码,顺向(高位在前)逐行式************************************/
- uchar xdata LCD_RAM[80][20]={
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x70,0x3E,0x07,0xC0,0x3C,0x3F,0x81,0xFB,0xFF,0x1F,0x83,0xE0,0x1C,0x0F,0xE0,0x3F,0x1F,0xE0,0x00},
- {0x00,0xF0,0x67,0x8C,0xE0,0x3C,0x30,0x07,0x00,0x07,0x39,0xC7,0x30,0x3C,0x0E,0x70,0x71,0x9C,0x70,0x00},
- {0x01,0xF0,0x03,0x80,0x70,0x7C,0x30,0x06,0x00,0x06,0x30,0xCE,0x38,0x3E,0x0E,0x38,0xE0,0x1C,0x38,0x00},
- {0x03,0x30,0x03,0x80,0x70,0x7C,0x30,0x0E,0x00,0x0E,0x30,0xCE,0x18,0x3E,0x0E,0x39,0xC0,0x1C,0x1C,0x00},
- {0x00,0x30,0x03,0x80,0x70,0xFC,0x30,0x0C,0x00,0x0C,0x39,0xCE,0x18,0x76,0x0E,0x39,0xC0,0x1C,0x1C,0x00},
- {0x00,0x30,0x03,0x80,0xE1,0xDC,0x3F,0x0F,0xF0,0x1C,0x1F,0x8E,0x1C,0x77,0x0E,0x71,0xC0,0x1C,0x1C,0x00},
- {0x00,0x30,0x07,0x07,0xC1,0x9C,0x03,0x8E,0x38,0x1C,0x0F,0x0E,0x3C,0xE7,0x0F,0xF1,0xC0,0x1C,0x1C,0x00},
- {0x00,0x30,0x0E,0x00,0xF3,0x9C,0x01,0xCC,0x38,0x38,0x3B,0xC3,0xF8,0xE3,0x8E,0x39,0xC0,0x1C,0x1C,0x00},
- {0x00,0x30,0x0E,0x00,0x73,0x1C,0x01,0xCC,0x18,0x38,0x70,0xE0,0x18,0xE3,0x8E,0x19,0xC0,0x1C,0x1C,0x00},
- {0x00,0x30,0x1C,0x00,0x37,0xFF,0x01,0xCE,0x18,0x70,0x70,0xE0,0x39,0xFF,0x8E,0x1D,0xC0,0x1C,0x18,0x00},
- {0x00,0x30,0x38,0x00,0x70,0x1C,0x01,0xCE,0x38,0x70,0x70,0xE0,0x39,0xC1,0xCE,0x18,0xE0,0x1C,0x38,0x00},
- {0x00,0x30,0x70,0x18,0x70,0x1C,0x63,0x86,0x30,0x60,0x31,0xC0,0x71,0x81,0xCE,0x38,0xF1,0x9C,0x70,0x00},
- {0x03,0xFE,0xFF,0xCF,0xC0,0x1C,0x7F,0x03,0xE0,0xE0,0x1F,0x8F,0xC3,0x80,0xCF,0xF0,0x3F,0x1F,0xC0,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0xFC,0x7F,0x87,0xF0,0xC0,0xC7,0x0E,0x70,0xEE,0x07,0x80,0x78,0xE0,0xC0,0xFC,0x1F,0xE0,0x7E,0x00},
- {0x03,0x80,0x60,0x0E,0x18,0xC0,0xC7,0x0E,0x71,0xCE,0x07,0xC0,0xF8,0xF0,0xC3,0x87,0x1C,0x71,0xE3,0x80},
- {0x03,0x80,0x60,0x1C,0x00,0xC0,0xC7,0x0E,0x73,0x8E,0x07,0xC0,0xF8,0xF0,0xC3,0x03,0x1C,0x31,0x81,0xC0},
- {0x03,0x80,0x60,0x38,0x00,0xC0,0xC7,0x0E,0x77,0x0E,0x07,0xE0,0xF8,0xF8,0xC7,0x03,0x9C,0x33,0x81,0xC0},
- {0x03,0x80,0x60,0x30,0x00,0xC0,0xC7,0x0E,0x7E,0x0E,0x07,0xE1,0xF8,0xD8,0xC6,0x03,0x9C,0x33,0x80,0xC0},
- {0x03,0x80,0x60,0x30,0x00,0xC0,0xC7,0x0E,0x7C,0x0E,0x07,0x61,0xB8,0xDC,0xC6,0x01,0x9C,0x73,0x00,0xC0},
- {0x03,0xFC,0x7F,0x31,0xF8,0xFF,0xC7,0x0E,0x7C,0x0E,0x07,0x73,0xB8,0xCE,0xC6,0x01,0x9C,0x73,0x00,0xC0},
- {0x03,0x80,0x60,0x30,0x38,0xC0,0xC7,0x0E,0x7E,0x0E,0x07,0x73,0x38,0xCE,0xC6,0x01,0x9F,0xC3,0x00,0xC0},
- {0x03,0x80,0x60,0x30,0x38,0xC0,0xC7,0x0E,0x77,0x0E,0x07,0x3F,0x38,0xC7,0xC6,0x03,0x9C,0x03,0x80,0xC0},
- {0x03,0x80,0x60,0x38,0x38,0xC0,0xC7,0x0E,0x73,0x8E,0x07,0x3F,0x38,0xC7,0xC7,0x03,0x9C,0x03,0x81,0xC0},
- {0x03,0x80,0x60,0x18,0x38,0xC0,0xC7,0x0C,0x73,0x8E,0x07,0x1E,0x38,0xC3,0xC7,0x03,0x1C,0x01,0x81,0x80},
- {0x03,0x80,0x60,0x1E,0x38,0xC0,0xC7,0x4C,0x71,0xCE,0x07,0x1E,0x38,0xC1,0xC3,0x87,0x1C,0x01,0xC3,0x80},
- {0x03,0xFE,0x60,0x07,0xF0,0xC0,0xC7,0x78,0x70,0xEF,0xF7,0x1C,0x38,0xC1,0xC0,0xFC,0x1C,0x00,0x7F,0xE0},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0xFC,0x1F,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x8E,0x71,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x8E,0x70,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x86,0x70,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x8E,0x70,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x8E,0x3C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0xF8,0x1F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x9C,0x07,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x8C,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x8E,0x01,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x8E,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x87,0x63,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x03,0x87,0x3F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
- };
- void LCD_Init(void) //为了保证屏幕亮度,必须刷新较慢暂定50hz
- {
- uint i=0,x=0,y=0;
-
- //LCD_CP=1;
- LCD_LP=1;
- LCD_FLM=1;
-
- LCD_LP=0;
- LCD_FLM=0;
- for (x=80;x>0;x--)
- {
- LCD_LP=1;
- LCD_LP=0;
- for (i=0;i<20;i++)
- {
-
- y=LCD_RAM[x];
-
-
- LCD_CP=1;
- LCD_DATA=y>>4;
-
- LCD_CP=0;
- LCD_CP=1;
- LCD_DATA=y;
-
- LCD_CP=0;
- }
-
- }LCD_M=~LCD_M;
- }
- delay_us()
- {_nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- void LCD_CMD (uchar command) //发送命令时,必须延时足够(先设定2us)才能正确配置命令
- { uchar i=0;
- LCD_XCS=0;
- delay_us();
- LCD_XCLK=1;
- delay_us();
- for (i=0;i<8;i++)
- {
- command<<=1;
- LCD_SID=CY;
- delay_us();
- LCD_XCLK=0;
- delay_us();
- LCD_XCLK=1;
- delay_us(); //上升沿读取数据
-
- }
- // LCD_XCLK=0;
- // LCD_SID=1;
- LCD_XCS=1;
- delay_us(); //关闭命令控制
- }
- void main()
- { unsigned char i, j;
-
- LCD_RST=0;
- i = 59;
- j = 90;
- do
- {
- while (--j);
- } while (--i);
- LCD_RST=1;
- LCD_CMD(0x08); //00000000bD3 select frame direction.0:normal,1:reverse,bias 1/9
- LCD_CMD(0x27); //00101111bSelect internal power supply operating mode
-
- LCD_CMD(0x46); //01000111bSelect internal resistor ratio(Rb/Ra) mode
- LCD_CMD(0x67); //01100111bSet the LCD booster frequency
- LCD_CMD(0xf0); //11011010bSet the V0 output voltage electronic volume register
- LCD_XCS=0; //这三条必须有,不然升压不工作!或许是A,B两个版本的区别
- LCD_SID=1;
- LCD_XCLK=0;
-
-
- // LCD_DISP=0;
- // LCD_DISP=1;
- // LCD_XCS=0;
- // LCD_SID=0;
- // LCD_XCLK=0;
-
- while (1)
- { LCD_Init();}
- }
复制代码
|