那位老大能提供一个stc单片机驱动oled屏(128*64)的keil c程序,要很简单的就行

那位老大能提供一个stc单片机驱动oled屏(128*64)的keil c程序,要很简单的就行,第1张

#define LCM_RW P2_0 //定义引脚

#define LCM_RS P2_1

#define LCM_E P2_2

#define LCM_Data P1

#define Busy 0x80 //用于检测LCM状态字中的Busy标识

#i nclude <at89x51h>

void WriteDataLCM(unsigned char WDLCM);

void WriteCommandLCM(unsigned char WCLCM,BuysC);

unsigned char ReadDataLCM(void);

unsigned char ReadStatusLCM(void);

void LCMInit(void);

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code DData);

void Delay5Ms(void);

void Delay400Ms(void);

unsigned char code uctech[] = {"uctech"};

unsigned char code net[] = {"uctechicpcncom"};

void main(void)

{

Delay400Ms(); //启动等待,等LCM讲入工作状态

LCMInit(); //LCM初始化

Delay5Ms(); //延时片刻(可不要)

DisplayListChar(0, 5, uctech);

DisplayListChar(0, 0, net);

ReadDataLCM();//测试用句无意义

while(1);

}

//写数据

void WriteDataLCM(unsigned char WDLCM)

{

ReadStatusLCM(); //检测忙

LCM_Data = WDLCM;

LCM_RS = 1;

LCM_RW = 0;

LCM_E = 0; //若晶振速度太高可以在这后加小的延时

LCM_E = 0; //延时

LCM_E = 1;

}

//写指令

void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测

{

if (BuysC) ReadStatusLCM(); //根据需要检测忙

LCM_Data = WCLCM;

LCM_RS = 0;

LCM_RW = 0;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

}

//读数据

unsigned char ReadDataLCM(void)

{

LCM_RS = 1;

LCM_RW = 1;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

return(LCM_Data);

}

//读状态

unsigned char ReadStatusLCM(void)

{

LCM_Data = 0xFF;

LCM_RS = 0;

LCM_RW = 1;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

while (LCM_Data & Busy); //检测忙信号

return(LCM_Data);

}

void LCMInit(void) //LCM初始化

{

LCM_Data = 0;

WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号

WriteCommandLCM(0x08,1); //关闭显示

WriteCommandLCM(0x01,1); //显示清屏

WriteCommandLCM(0x06,1); // 显示光标移动设置

WriteCommandLCM(0x0C,1); // 显示开及光标设置

}

//按指定位置显示一个字符

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

{

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;

X |= 0x80; // 算出指令码

WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码

WriteDataLCM(DData);

}

//按指定位置显示一串字符

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code DData)

{

unsigned char ListLength;

ListLength = 0;

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

while (DData[ListLength]>0x20) //若到达字串尾则退出

{

if (X <= 0xF) //X坐标应小于0xF

{

DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符

ListLength++;

X++;

}

}

}

//5ms延时

void Delay5Ms(void)

{

unsigned int TempCyc = 5552;

while(TempCyc--);

}

//400ms延时

void Delay400Ms(void)

{

unsigned char TempCycA = 5;

unsigned int TempCycB;

while(TempCycA--)

{

TempCycB=7269;

while(TempCycB--);

};

做测试也还不错的,接触的东西也会比较多,。当然,你应该是学电子专业的。

很容易就把LCM研发学到手了,就是电子加结构(其实结构很简单,很容易的)。

另外,接触NPI和生产,品质等部门,对于现场生产及处理问题会经验比较充足。

做上2,3年经验就会很丰富了,,也会很有前途(个人觉得比做结构设计或单纯电子工程师前景好多了,前提是要自我学习意识要强)

NO,正规做法就是要高温高湿验证风险品在恶劣环境内8小时或更多小时会不会出问题。。。但这个不是常规、所有模组都都要经过这个测试。一般是两种情况:首次投产一个新机种LCM,或是本压不良等存在信赖性风验的时候,抽了样品做高温高湿AT试验。

以上就是关于那位老大能提供一个stc单片机驱动oled屏(128*64)的keil c程序,要很简单的就行全部的内容,包括:那位老大能提供一个stc单片机驱动oled屏(128*64)的keil c程序,要很简单的就行、本科应届生做LCM测试怎么样,发展前景如何这个工作应该提高哪方面的能力呢。求高人指点!急~~~~、LCM(背光模组)高温高湿储存测试必需要有包装的方式才正确吧等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9872531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存