📄 ssd1779.c
字号:
/*-----------------------
Drive IC:SSD1779
Test mode:8 bit paraller interface 8080 MCU
DOT SIZE:128*128
Program by:wudi
Date:2006-02-08
-------------------------*/
#include <reg51.h>
#include <intrins.h>
#include <ctype.h>
#define X_add 128
#define Y_add 128
#define Data_port P1
#define nop _nop_()
sbit CS=P3^5;
sbit RST=P3^4;
sbit RS=P3^2;
sbit WR_=P3^1;
sbit RD_=P3^0;
sbit KEY=P2^0;
typedef unsigned char byte;
typedef unsigned int word;
byte code BMP[];
void write_data(in_data);
void write_com(in_com);
void delay(word time);
void initial();
void wait_key();
void display_griphic(byte griphic[]);
void test_patten(byte cl,byte ch);
void disptest_bar_h();
void address_set(byte addX1,addX2,addY1,addY2);
void main(void)
{
initial();
while(1)
{
display_griphic(BMP);
delay(1000);
disptest_bar_h();
delay(1000);
test_patten(0xf8,0x00);
test_patten(0x07,0xe0);
test_patten(0x00,0x1f);
test_patten(0xff,0xff);
test_patten(0x00,0x00);
}
}
void delay(word time)
{
word i;
while(time--)
for(i=0;i<10;i++);
}
void wait_key()
{
KEY=1;
while(KEY);
delay(10);
while(!KEY);
delay(10);
//delay(8000);
}
void address_set(byte addX1,addX2,addY1,addY2)
{
write_com(0x75);
write_data(addX1);
write_data(addX2);
write_com(0x15);
write_data(addY1);
write_data(addY2);
}
void write_data(in_data)
{
RS=1;
CS=0;
RD_=1;
Data_port=in_data;
WR_=0;
//nop;
WR_=1;
CS=1;
}
void write_com(in_com)
{
RS=0;
CS=0;
RD_=1;
Data_port=in_com;
WR_=0;
//nop;
WR_=1;
CS=1;
}
void initial()
{
//word i;
RST=0;
delay(10);
RST=1;
write_com(0xD1); // ENABLE INTERAL OSCILLATOR
delay(10);
write_com(0x20); //SET POWER CONTROL REGISTER
write_data(0x0F); //5X BOOST
write_com(0x81); //SET CONTRAST LEVEL & INTERAL REGULATOR
write_data(0x2F);
write_data(0x06);
write_com(0x94); //EXIT SLEEP MODE
write_com(0xfb); //SET BIASING RATIO
write_data(0x02); //1/9 BIAS
// write_com(0xf7); //SELECT PWM/FRC
// write_data(0x28); //
// write_data(0x0e); //
// write_data(0x05); //
write_com(0xbb); //SET COM OUTPUT SCAN DIRECTION
write_data(0x01);
write_com(0xbc); //SET DATA OUT SCAN DIRECTION
write_data(0x00);
write_data(0x00);
write_data(0x00); //65k
write_com(0xca); //SET DISPLAY CONTROL
write_data(0x00); //
write_data(0x20); //
write_data(0x00); //
write_com(0xf2); //SET FRAME FREQUENCY
write_data(0x00);
write_data(0x00);
write_com(0xf1);
write_data(0xe0);
write_data(0x00);
write_data(0x00);
write_com(0xa2); //DISABLE ICON
write_com(0xa7); //NORMAL/INVERSE DISPLAY
write_com(0xaf); //SET DISPLAY ON
}
void display_griphic(byte griphic[])
{
word i,j,k;
address_set(4,131,4,131);
write_com(0x5c);
for(i=0;i<X_add;i++)
for(j=0;j<Y_add;j++)
for(k=0;k<2;k++)
{
write_data(*griphic);
griphic++;
}
}
void test_patten(byte cl,byte ch)
{
word i,j;
address_set(4,131,4,131);
write_com(0x5c);
for(i=0;i<X_add;i++)
for(j=0;j<Y_add;j++)
{
//for(k=0;k<2;k++)
write_data(cl);
write_data(ch);
}
}
void disptest_bar_h()
{
word i,j;
write_com(0x75);
write_data(0x00);
write_data(0x83);
write_com(0x15);
write_data(0x00);
write_data(0x83);
write_com(0x5c);
for (i=0;i<34;i++)
{
for(j=0;j<132;j++)
{
write_data(0xF8);
write_data(0x00);
}
}
for (i=0;i<34;i++)
{
for(j=0;j<132;j++)
{
write_data(0x07);
write_data(0xe0);
}
}
for (i=0;i<34;i++)
{
for(j=0;j<132;j++)
{
write_data(0x00);
write_data(0x1F);
}
}
for (i=0;i<34;i++)
{
for(j=0;j<132;j++)
{
write_data(0xff);
write_data(0xff);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -