|
楼主 |
发表于 2020-10-3 10:45:12
|
显示全部楼层
#include <STC8.H>
sbit cs = P5^5;
sbit RST= P5^3;
sbit a0 = P5^2;
sbit clk= P5^1;
sbit din= P5^0;
unsigned char code InitData[]={
0xAE,//显示关
0XC0,//从上向下
0XA1,//列地址,从右到左
0X40,//初始行,0x40--0x7f
0XA6,//常规,正显示
0XA4,//常规,显示点阵
0X81,//内电阻微调-对比度控制
0X1E,//范围00--3f
0XAD,//静态图标开,ac关
0X01,//10,未知??
0XA3,//偏压比1/7
0X2F,//内部电压供应模式
0XF8,//升压倍数
0X00,//2倍
0X23,//调整内部电阻的比例-对比度
0XAF,//显示开
0XB0,//第0页
0X04,//第4列低
0X10,//第4列高
0X00 //20
};
char i,j;
long ltmp;
//void Timer1Init(void) //1微秒@11.0592MHz
//{
// AUXR |= 0x40; //定时器时钟1T模式
// TMOD &= 0x0F; //设置定时器模式
// TL1 = 0xF5; //设置定时初值
// TH1 = 0xFF; //设置定时初值
// TF1 = 0; //清除TF1标志
// TR1 = 1; //定时器1开始计时
//}
unsigned char tmp;
//-------------------------------------------------------------------------
void writeChar(unsigned char cd,unsigned char c)//cd-cmd or data;c,char
{
if(cd==1)a0 = 0;
else a0 = 1;
cs = 0;
for(j=0;j<8;j++)
{
clk = 0;
din = c&0x80?1:0;//msb
clk = 1;
c <<=1;
}
cs = 1;
}
//-------------------------------------------------------------------------
void InitST7567(void)
{
RST = 0;
ltmp=65;
while(ltmp--);
RST = 1;
cs=0;
for(i=0;i<17;i++)
{
writeChar(1,InitData);
}
//所有像素写一遍0;
// for(j=0;j<8;j++)
// {
// writeChar(1,j+0xb0);
// writeChar(1,0x10);
// writeChar(1,0x00);
// for(i=0;i<128;i++)
// writeChar(0,0);
// }
}
void main(void)
{
// while(1)
// {
// cs = 0;din = 0;
// i=255;
// while(i--);
// cs = 1; din = 1;
// }
InitST7567();
{
writeChar(1,0xb2);
writeChar(1,0X10);
writeChar(1,0X06);
for(i=0;i<228;i++)
{
writeChar(0,0x10);
}
}
//writeChar(1,0xA5);
} |
|