共2条
1/1 1 跳转至页
OCMJ4X8C 哪位用过OCMJ4X8C液晶显示模块?

问
我正在用这个液晶模块,它的分辨率是128*64,控制芯片是ST7920,我看它的说明书编51的显示程序,现在还没有显示东西,有谁用过这个模块,说说它的初始化顺序,说明手册讲的含糊不清,网上资料也少,谢谢啦!
答 1:
我用过!!明天我发给你!!#define lcd_wait XBYTE [0xBC01] //液晶显示地址
#define lcd_writer XBYTE [0xBC00]
#define lcd_writed XBYTE [0xBC02]
sbit BUSY_FLAG=P0^7;
void delay(unsigned int d) //延时1ms d*1ms
{
unsigned int i;
while(d--)
{ for(i=0;i<125;i++)
{;}
}
}
void delay1(unsigned int d) //延时50us d*100us
{
unsigned int i;
while(d--)
{
for(i=0;i<12;i++)
{;}
}
}
void lcd_inputi_disp(uchar x) //写指令子程序
{
lcd_writer=x;
lcd_writer=x;
delay1(1);
}
void lcd_inputd_disp(uchar y)
{
lcd_writed=y;
lcd_writed=y;
delay1(1);
}
void lcd_initial_disp(void)
{
delay(1);
lcd_inputi_disp(0x30);
delay(1);
lcd_inputi_disp(0x01); //指令01H为清除显示并设定地址指针为00H
delay(1);
lcd_inputi_disp(0x06); //指定在资料写入或读取时
delay(1); //设定游标的移动方向及指定显示的移位
}
void lcd_inputi(uchar x) //写指令子程序
{
lcd_writer=x;
lcd_writer=x;
delay1(100);
}
void lcd_inputd(uchar y)
{
lcd_writed=y;
lcd_writed=y;
delay1(100);
}
void lcd_initial(void)
{
delay(1);
lcd_inputi(0x30);
delay(1);
lcd_inputi(0x01); //指令01H为清除显示并设定地址指针为00H
delay(1);
lcd_inputi(0x06); //指定在资料写入或读取时
delay(1); //设定游标的移动方向及指定显示的移位
}
void lcd_menu1()
{
uchar i;
// OCMRW=0x00;
lcd_inputi(0x0c); //开显示,关游标
lcd_inputi(0x80); //显示“版本: 01”
lcd_inputd(0xb0);
lcd_inputd(0xe6);
lcd_inputd(0xb1);
lcd_inputd(0xbe);
lcd_inputd(0x3a);
lcd_inputd(0x20);
lcd_inputd(0x30);
lcd_inputd(0x32);
i=0; //显示北京利达科信有限公司
lcd_inputi(0x93);
lcd_inputd(chara1[i]);
lcd_inputd(chara1[++i]);
lcd_inputd(chara1[++i]);
lcd_inputd(chara1[++i]);
for(i=0;i<16;i++)
{
lcd_inputi(0x88+i/2);
lcd_inputd(chara2[i]);
lcd_inputd(chara2[i+1]);
i+=1;
}
// inigraphic();
//lida_icon();
}
/*****************************************
函数功能:
输入ABS
1 ABS:
2 确认
*****************************************/
uchar code chmenu_page17[]=
{
0xca,0xe4,0xc8,0xeb,0x41,0x42,0x53,
0x31,0x20,0x41,0x42,0x53,0x3a,
0x32,0x20,0xc8,0xb7,0xc8,0xcf,
};
void menu_page17()
{
uchar i;
lcd_initial();
lcd_inputi(0x0f);
lcd_inputi(0x82);
for(i=0;i<7;i++)
{
lcd_inputd(chmenu_page17[i]);
}
lcd_inputi(0x91);
for(i=7;i<13;i++)
{
lcd_inputd(chmenu_page17[i]);
}
lcd_inputi(0x89);
for(i=13;i<19;i++)
{
lcd_inputd(chmenu_page17[i]);
}
lcd_inputi(0x94);
}
答 2: 我用汇编根据模块的资料编了程序.可惜不好使,液晶没显示.
我拿你的程序试试吧,我都快疯了 答 3: 发到我邮箱里行吗?htjgdw@sina.com
这是我邮箱,感谢. 答 4: 上面这个程序是不是不全. 答 5: 用的什么CPU ,51?PIC?我可以给你一个保证好用的汇编。 答 6: 我用51单片机 答 7: 我用51单片机 答 8: 我也用51ylf2601@hotmail.com 答 9: 我用的是间接方式,非总线方式。我用的不是ocmj4x8c,但和它兼容。是深圳一家公司做的,ocmj4x8c好像是广州的长做的。
cpu:c8051f040
内部OSC8分后成功实现对lcd的操作。
我还有几点疑惑:
怎样显示自定义字符啊,还有图像啊!
scroll address(卷地址)是怎么一回事啊?怎么用?
谢谢!望高手帮忙啊! 答 10: 谁能说说你们的写指令,写数据子程序是怎么编的.我按照它的时序图写的程序,液晶根本没反映,很是急人. 答 11: 不知ST7920和单片机连接时是否需要上拉电阻 答 12: 我试了,必须要接上拉电阻,否则无法正常读写数据.
#define lcd_writer XBYTE [0xBC00]
#define lcd_writed XBYTE [0xBC02]
sbit BUSY_FLAG=P0^7;
void delay(unsigned int d) //延时1ms d*1ms
{
unsigned int i;
while(d--)
{ for(i=0;i<125;i++)
{;}
}
}
void delay1(unsigned int d) //延时50us d*100us
{
unsigned int i;
while(d--)
{
for(i=0;i<12;i++)
{;}
}
}
void lcd_inputi_disp(uchar x) //写指令子程序
{
lcd_writer=x;
lcd_writer=x;
delay1(1);
}
void lcd_inputd_disp(uchar y)
{
lcd_writed=y;
lcd_writed=y;
delay1(1);
}
void lcd_initial_disp(void)
{
delay(1);
lcd_inputi_disp(0x30);
delay(1);
lcd_inputi_disp(0x01); //指令01H为清除显示并设定地址指针为00H
delay(1);
lcd_inputi_disp(0x06); //指定在资料写入或读取时
delay(1); //设定游标的移动方向及指定显示的移位
}
void lcd_inputi(uchar x) //写指令子程序
{
lcd_writer=x;
lcd_writer=x;
delay1(100);
}
void lcd_inputd(uchar y)
{
lcd_writed=y;
lcd_writed=y;
delay1(100);
}
void lcd_initial(void)
{
delay(1);
lcd_inputi(0x30);
delay(1);
lcd_inputi(0x01); //指令01H为清除显示并设定地址指针为00H
delay(1);
lcd_inputi(0x06); //指定在资料写入或读取时
delay(1); //设定游标的移动方向及指定显示的移位
}
void lcd_menu1()
{
uchar i;
// OCMRW=0x00;
lcd_inputi(0x0c); //开显示,关游标
lcd_inputi(0x80); //显示“版本: 01”
lcd_inputd(0xb0);
lcd_inputd(0xe6);
lcd_inputd(0xb1);
lcd_inputd(0xbe);
lcd_inputd(0x3a);
lcd_inputd(0x20);
lcd_inputd(0x30);
lcd_inputd(0x32);
i=0; //显示北京利达科信有限公司
lcd_inputi(0x93);
lcd_inputd(chara1[i]);
lcd_inputd(chara1[++i]);
lcd_inputd(chara1[++i]);
lcd_inputd(chara1[++i]);
for(i=0;i<16;i++)
{
lcd_inputi(0x88+i/2);
lcd_inputd(chara2[i]);
lcd_inputd(chara2[i+1]);
i+=1;
}
// inigraphic();
//lida_icon();
}
/*****************************************
函数功能:
输入ABS
1 ABS:
2 确认
*****************************************/
uchar code chmenu_page17[]=
{
0xca,0xe4,0xc8,0xeb,0x41,0x42,0x53,
0x31,0x20,0x41,0x42,0x53,0x3a,
0x32,0x20,0xc8,0xb7,0xc8,0xcf,
};
void menu_page17()
{
uchar i;
lcd_initial();
lcd_inputi(0x0f);
lcd_inputi(0x82);
for(i=0;i<7;i++)
{
lcd_inputd(chmenu_page17[i]);
}
lcd_inputi(0x91);
for(i=7;i<13;i++)
{
lcd_inputd(chmenu_page17[i]);
}
lcd_inputi(0x89);
for(i=13;i<19;i++)
{
lcd_inputd(chmenu_page17[i]);
}
lcd_inputi(0x94);
}
答 2: 我用汇编根据模块的资料编了程序.可惜不好使,液晶没显示.
我拿你的程序试试吧,我都快疯了 答 3: 发到我邮箱里行吗?htjgdw@sina.com
这是我邮箱,感谢. 答 4: 上面这个程序是不是不全. 答 5: 用的什么CPU ,51?PIC?我可以给你一个保证好用的汇编。 答 6: 我用51单片机 答 7: 我用51单片机 答 8: 我也用51ylf2601@hotmail.com 答 9: 我用的是间接方式,非总线方式。我用的不是ocmj4x8c,但和它兼容。是深圳一家公司做的,ocmj4x8c好像是广州的长做的。
cpu:c8051f040
内部OSC8分后成功实现对lcd的操作。
我还有几点疑惑:
怎样显示自定义字符啊,还有图像啊!
scroll address(卷地址)是怎么一回事啊?怎么用?
谢谢!望高手帮忙啊! 答 10: 谁能说说你们的写指令,写数据子程序是怎么编的.我按照它的时序图写的程序,液晶根本没反映,很是急人. 答 11: 不知ST7920和单片机连接时是否需要上拉电阻 答 12: 我试了,必须要接上拉电阻,否则无法正常读写数据.
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 |