原创 [原创]怎样从ST7920里读数据

2007-8-23 15:32 7628 8 15 分类: MCU/ 嵌入式

ST7920是一款带中文字库的点阵液晶图形液晶驱动芯片,市场有很多用此控制器成产液晶模块。我有手头就有一款型号为TS12864的液晶模块,其特点是带中文字库,显示中文汉字比较方便,另外还有3线串行驱动模式可以用于管脚少的场合。
既然是图形液晶我们就会用他的绘图功能,有时候为了不破坏原有图形(在现有图形上叠加),这个时候就需要读出原有图形数据然后加工后再次写入。官方手册上对读数据写的不够详细,在网上搜索也找不到例程,使我坡费了一般周折,还好终于搞定!现在吧详细读数据方法和步骤呈上,希望能对大家有所帮助。


点击看大图


官方文档的读数据描述


点击看大图


官方文档并行读数据时序


下面是AVR M48 8M振荡频率下并行读数据的关键部分代码:


#define ST7920_DB_PORT    PORTD    //ST7920数据输入
#define ST7920_DB_PIN    PIND    //ST7920数据输出 
#define ST7920_DB_PORT_SET_OUT  DDRD = 0xFF;  //设置数据端口为输出
#define ST7920_DB_PORT_SET_IN  DDRD = 0x00;  //设置数据端口为输入
#define ST7920_ReadBF  (PIND&(1 << PIND7))  //读忙碌标志位
#define ST7920_RST_SET   PORTB |= (1 << PB0)  //复位置位
#define ST7920_RST_CLR   PORTB &= ~(1 << PB0)  //复位清零
#define ST7920_E_SET   PORTB |= (1 << PB1)  //读写使能置位
#define ST7920_E_CLR   PORTB &= ~(1 << PB1) //读写使能清零
#define ST7920_RW_SET   PORTB |= (1 << PB2)   //读写置位       
#define ST7920_RW_CLR   PORTB &= ~(1 << PB2)    //读写清零
#define ST7920_RS_SET   PORTB |= (1 << PB3)  //显示/命令置位
#define ST7920_RS_CLR   PORTB &= ~(1 << PB3) //显示/数据清零


************************************************************************
名称: unsigned char ST7920_ReadData(void)                  
功能: 从ST7920读数据                   
参数: 无                                      
返回: uchRevData 读取的一字节数据                
************************************************************************  
*/
unsigned char ST7920_ReadData(void)
 {
  unsigned char uchRevData;
  ST7920_CheckBusy();                     //忙碌检测 
  ST7920_DB_PORT = 0xFF;           //打开上拉电阻
  ST7920_DB_PORT_SET_IN;        //设置为输入 
  ST7920_RS_SET;
  ST7920_RW_SET;
  ST7920_E_SET;
  asm("nop":;
  asm("nop":;
  uchRevData =  ST7920_DB_PIN;
  ST7920_E_CLR;
  return uchRevData;
 }
/*
************************************************************************   
名称: unsigned int ST7920_ReadGDRAMData(unsigned char uchX ,
          unsigned char uchY)                   
功能: 从GDRAM指定地址读取两字节数据                                    
参数: uchX水平地址(0-127) uchY垂直地址(0-63)                                                                       
返回: 读取两字节数据                                                
************************************************************************                       
*/
unsigned int ST7920_ReadGDRAMData(unsigned char uchX ,unsigned char uchY)
 {
  unsigned int uiReadData = 0;
  ST7920_GDRAMLocate(uchX, uchY);          //设定GDRAM地址
  ST7920_ReadData();                                     //先预读一次
  uiReadData = ST7920_ReadData();               //读设定地址高字节数据
  uiReadData = uiReadData << 8 | ST7920_ReadData();          //读设定地址低字节数据
  ST7920_WriteCMD(0x36);          
  ST7920_WriteCMD(0x30);
  return uiReadData;  
 } 


注意:在设定好要读的地址后,要先空读一次,然后才能依次读出两个字节的数据。如果还有不明白的地方可以QQ交流。

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

用户1447181 2009-7-31 00:20

呵呵,看来我进度挺快,先看说明书,E文的。 然后2天搞定

用户216996 2009-7-22 21:07

非常好,谢谢!

用户1381877 2009-4-20 14:01

谢了

用户1129670 2008-1-3 21:17

十分感谢

我看说明书 读取了一个礼拜的数据  还是没有读取出来   十分郁闷

原来要空读一次

用户1079511 2007-9-29 16:28

7920串行模式的数据传输方向是单向,顾不能读取数据,不要再此浪费时间了,更何况7920的绘图很麻烦!

用户1079511 2007-8-30 17:40

串行我没试过,但我的好多网友都说串行不能读数据!

用户1327242 2007-8-30 10:54

串行接法的时候如何读取资料?
相关推荐阅读
用户1079511 2009-07-10 16:08
Mega16读取SD卡内的FAT16文件
最近一直在学习FAT文件系统,在网络上找了一些资料加上参考别人写的程序,现在已经可以读取SD/MMC卡指定的文件,有些东西自己也不是很懂,回头还得慢慢研究。程序比较简单,就是读取SD卡的基本信息和初始...
用户1079511 2009-04-14 08:38
[原创]AVR M16热敏电阻测温LCM12864显示
https://static.assets-stash.eet-china.com/album/old-resources/2009/4/14/d085d878-6d8f-4245-acdb-cf44...
用户1079511 2009-04-08 11:34
Mega16 Bootloader+PC端上位机
AVR的Bootloader功能很方便产品的在线升级,以前参考网上的资料写过下位机的程序,标准的XMODEM协议,用超级终端来升级程序。最近在学习C#,所以用C#写个简单的上位机软件,配合以前的boo...
用户1079511 2009-01-22 16:15
Mega16热敏电阻测温上位机曲线显示
最近在一直学习用C#做上位机,把以前的做的m16热敏电阻测温的程序翻出来,稍加修改通过串口发给PC;PC端用c#2008写程序,接收数据后通过ZedGraph绘图控件实时显示出曲线图。ZedGraph...
用户1079511 2009-01-09 09:25
[原创]c#的Hex转Bin小程序
最近在搞AVR的bootloader,程序已经写好了,参考网上的代码用的是XMODEM协议用XP自带的超级终端。问题是xmodem支持bin格式的文件,一般用编译器生成的是hex文件不用直接使用,需要...
用户1079511 2008-12-31 10:42
[学习]用595驱动LED实现灰度调节
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />前一段时间在ouravr论坛里闲逛的...
EE直播间
更多
我要评论
7
8
关闭 站长推荐上一条 /3 下一条