各位大哥哥,大姐姐我刚买了一块12864液晶,是(st7920芯片的),我用mega16 驱动了一个星期。
各位大哥哥,大姐姐我刚买了一块12864液晶,是(st7920芯片的),我用mega16 驱动了一个星期。就是不显示,希望各位给一个驱动程序。外围器件是怎么接的呀!希望各位路过的神仙,帮帮忙 姐姐,本坛很多的,搜一搜吧http://www.ourdev.cn/bbs/bbs_list.jsp?search_text=st7920&search_mode=1&bbs_id=9999&Submit2=+%CB%D1+%CB%F7+
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=498829&bbs_page_no=1&search_mode=1&search_text=st7920&bbs_id=9999 给你参考下吧,自己写的,已经通过
-----------------------------------------------------------------------------------------------------------------------
//接线方式:(ST7920)
//LCD_RS ----->PB2
//LCD_WR ----->PB1
//LCD_EN ----->PB0
//LCD_PSB----->VCC(默认输出1并口)
//LCD_RST----->VCC(默认输出1置位)
//LCD_DB ----->PA
//定义MCU与LCD接口
#define LCD_CR PORTB //LCD控制位端口
#define LCD_DB PORTA //LCD数据位端口
#define LCD_DD DDRA //LCD数据位方向
#define LCD_DI PINA //BF输入方向
#define LCD_BUSY BIT(7) //BF状态位
#define KEY_CH PINC //8位单按键
#define LCD_RS_H() LCD_CR|= BIT(2) //LCD写数据
#define LCD_RS_L() LCD_CR&=~BIT(2) //LCD写指令
#define LCD_RW_H() LCD_CR|= BIT(1) //LCD写操作
#define LCD_RW_L() LCD_CR&=~BIFLCD_EN ----->PB0
//LCD_PSB----->VCC(默认输出1并口)
//LCD_RST----->VCC(默认输出1置位)
//LCD_DB ----->PA
//定义MCU与LCD接口
#define LCD_CR PORTB //LCD控制位端口
#define LCD_DB PORTA //LCD数据位端口
#define LCD_DD DDRA //LCD数据位方向
#define LCD_DI PINA //BF输入方向
#define LCD_BUSY BIT(7) //BF状态位
#define KEY_CH PINC //8位单按键
#define LCD_RS_H() LCD_CR|= BIT(2) //LCD写数据
#define LCD_RS_L() LCD_CR&=~BIT(2) //LCD写指令
#define LCD_RW_H() LCD_CR|= BIT(1) //LCD写操作
#define LCD_RW_L() LCD_CR&=~BIT(1) //LCD读操作
#define LCD_EN_H() LCD_CR|= BIT(0) //LCD使能关闭
#define LCD_EN_L() LCD_CR&=~BIT(0) //LCD使能开启
//*****************************************************************LCD显示函数段
void lcd_init()//LCD初始化
{
delay_ms(1);
lcd_write(0,0X01);//清屏
lcd_write(0,0X0C);//开显示关游标(0X0F开游标)
lcd_write(0,0X80);//显示光标移动设置
}
void lcd_write(unsigned char cord,unsigned char data)//LCD写操作
{
lcd_check_busy();
LCD_EN_L();//使能开启
if(!cord)
LCD_RS_L();//0写指令
else
LCD_RS_H();//1写数据
LCD_RW_L();//写操作
LCD_DB=data;//传送数据
LCD_EN_H();//使能关闭
delay_ms(1);
LCD_EN_L(); //使能开启
}
void lcd_check_busy()//LCD查忙
{
LCD_DD&=~LCD_BUSY;//配置DB7对应口的方向为输入
LCD_RS_L();//写指令
delay_ms(1);
LCD_RW_H();//读操作
LCD_EN_H();//使能关闭
while(!(LCD_DI&LCD_BUSY))//检查DB7判断忙否
LCD_EN_L();//使能开启
LCD_DD|=0XFF;
}
void lcd_set_grid(unsigned char x,unsigned char y)//为写内置字符选择地址8*4
{
unsigned char addr;
switch(y)
{
case 0:addr=0X80+x;break;//第1行
case 1:addr=0X90+x;break;//第2行
case 2:addr=0X 你的图纸呢?发上来也好帮你看看啊, 看这个!!!点击此处下载 ourdev_622204G29ZHW.rar(文件大小:4.41M) (原文件名:12864液晶.rar) st7920还是很好编写驱动的,先用并行模式操作一下,并行模式对时序要求相对串行模式低的多,更容易些。并行模式调试成功后再改成串行模式的。另外注意两点,一是字符灰度可变电阻的调整,二是参照模块说明中串、并行驱动短接焊点的设置。 如果是还是没驱动起来,请怀疑你的硬件有问题。
曾经我买过2块ST7920的12864,结果就是液晶问题,导致耽误了3天时间。 我买到过并行没法驱动起来的7920,建议试试串行的 回复【7楼】qingqng
-----------------------------------------------------------------------
严重同意,我那个屏的串并选择端始终为低电平,只能串行了 回复【楼主位】tepaiyuan
各位大哥哥,大姐姐我刚买了一块12864液晶,是(st7920芯片的),我用mega16 驱动了一个星期。就是不显示,希望各位给一个驱动程序。外围器件是怎么接的呀!希望各位路过的神仙,帮帮忙
-----------------------------------------------------------------------
你买屏的时候人家给你程序了吧?先用人家的程序试试? 有些液晶背面的PCB上要改跳点选择通讯方式的,估计你的驱动方式没搞对 我04年的时候买的2块7920的屏,点了一年也没点亮,后来还是看了芯片资料才发现板上有4个电容没有焊. 5年前开始学51做实验到现在产品量产一直用的成都飞宇达 12864 0402B 带字库的ST7920 没发现驱动不起来 真是谢谢各位大哥哥,大姐姐啦!小妹感激不尽,昨晚驱动出来啦!大家说的都有道理,我先把硬件检查了一下,没问题,后来是程序出错啦! 哈哈 我把这个也挖出来
页:
[1]