共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网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |