我刚来公司不久,公司让我给新产品设计一款OLED液晶屏。但是驱动芯片居然是SSD1327的。找了几天,练个1327的影子都没查到。眼看时间一天天过去,过几天就要上交任务了,愁死我了,谁能救救我啊,万分感谢。!这是本人写的程序,求高手指点
#include<C8051F000.h>
#define uchar unsigned char
#define uint unsigned int
sbit DC=P1^3;
sbit CS=P1^1;
sbit CLK=P2^0;
sbit DIN=P2^1;
sbit LED=P3^3;
void delay(uchar k)
{
uchar i,j;
for(i=0;i<100;i++)
for(j=0;j<k;j++);
}
void writeCOM(uchar com)
{
uchar i;
CS=0;
DC=0;
for(i=0;i<8;i++)
{
CLK=0;
if(com&0x80==0x80)
DIN=1;
else
DIN=0;
CLK=1;
CLK=1;
com<<=1;
}
CS=1;
DC=1;
}
void writeDAT(uchar dat)
{
uchar i;
CS=0;
DC=1;
for(i=0;i<8;i++)
{
CLK=0;
if(dat&0x80==0x80)
DIN=1;
else
DIN=0;
CLK=1;
CLK=1;
dat<<=1;
}
CS=1;
DC=0;
}
void int_dis(void)
{
uint i,j;
writeCOM(0xAE);//关闭OLED
writeCOM(0x15);//设定显示列地址
writeCOM(0x00);
writeCOM(0x3F);
writeCOM(0x75);//设定显示行地址
writeCOM(0x00);
writeCOM(0x4F);
writeCOM(0x81);//设定对比度
writeCOM(0x40);
writeCOM(0xA0);//设定重置数据
writeCOM(0x00);
writeCOM(0xA1);//设定显示起始地址
writeCOM(0x00);
writeCOM(0xA2);//设定显示结束地址
writeCOM(0x00);
writeCOM(0xA4);//设定显示模式
writeCOM(0xA8);//设定驱动路数
writeCOM(0x5F);
writeCOM(0xB1);//设定相位长度
writeCOM(0x53);
writeCOM(0xB3);//设定显示时钟
writeCOM(0x41);
writeCOM(0xBC);//设定电压
writeCOM(0x10);
writeCOM(0xBE);//设定VCOMH
writeCOM(0x05);//0.8*VCC
writeCOM(0xAB);//选择外部VDD供电
writeCOM(0x00);
writeCOM(0xAE);//打开OLED
delay(50);
LED=0;
delay(10);
for(i=0;i<128;i++)
for(j=0;j<64;j++)
writeDAT(0xf0);
}
void main()
{
while (1)
{
WDTCN = 0xDE;
WDTCN = 0xAD;
PRT1CF = 0x00;
PRT2CF = 0x00;
PRT3CF = 0xff;
int_dis();
LED=1;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>