jhd-12232d使用总结(与大多数12232相同)

本文档总结了使用jhd-12232d模块的心得,该模块在许多方面与常见的12232兼容。通过CMD命令进行操作,掌握延迟设置与字节处理技巧是关键。内容涵盖模块的基础配置、C语言编程接口及实际工作中遇到的问题与解决方案。
摘要由CSDN通过智能技术生成
概述:
JHD12232D与另外两款LCD,MG-12232与TG12232B,极为相似,他们使用的都是SED1520芯片,都是有18个接口,只是在个别的接口是高电平有效还是低电平有效上有一些区别。
 
参考文档(这些文档放在项目备份盘中)
JHD(晶汉达)公司网站上下载的三份相关PDF(接口以英文版为准)
MCU123.NET文件夹中的TG12232B.PDF与示例程序
SED1520.PDF中文版:这应该是某个公司为自己的产品写的文档,不是SED1520芯片的官方文档,但里面关于程序编写的流程很是实用
SED1520官方参考,官方参考一定是有用的
 
点阵的分布
JHD12232D的点阵布局
JHD12232D的两个SED芯片是左右分布的(好像有些别的型号的LCD是上下分布的),左右两个芯片各有一个指针指向当前要读写的显示RAM。所以要对某个显示RAM操作时,应设定其芯片的当前指针,具体要指定:设定在哪个芯片的哪页,设定在哪个芯片的哪列,在读写显示RAM时,要指定写到哪个芯片里去。如要将0XF3写到右边芯片的第二页的写40列,则应设置右边芯片的页为2,设置右边芯片的列为40,再把0XF3写到右边芯片中去。
 
引脚连线的问题
引脚的连线一定要参照LCD的官方文档,不同LCD的工作电压、接口都有可能是不同的。
RES : 当RES为高电平时,LCD正常工作,当其为低电平时,复位
Vo : 对比度调节,一般可以接低电平,如果需要调节对比度的话,可以将此接口接在滑动变阻器的滑动脚上,变阻器的另外两个脚分别接+5伏和-5伏,不过在调节时注意其电压,对于JHD12232D,其最小值为-5.5V。
LED+:应该连一个250欧电阻之后再接5V
 
程序的编写
SED1520.pdf中有程序流程图
当E1、E2为高电平时,数据被发送到总线上,当其在下降沿时,数据被锁存在SED1520中。
 
注意事项:
LCD要在程序初始化之后才能使用。
如果不改变页和列,不停地向一个芯片中写数据,当当前指针超出范围,之后的写操作不会引起LCD显示的改变。
 
 程序
// defs.h
#define  LCD_DATA    P1

#define  D0    P1_0
#define  D1    P1_1
#define  D2    P1_2
#define  D3    P1_3
#define  D4    P1_4
#define  D5    P1_5
#define  D6    P1_6
#define  D7    P1_7

#define  E1    P3_5
#define  E2    P3_4
#define  RW    P3_3
#define  A0    P3_7    

#define  LOW     0
#define  HIGH    1

#define  uchar     unsigned char
#define  uint    unsigned int
#define  byte    unsigned char

#define  LONGDELAY    for( i_loop = 0 ; i_loop < 300 ; ++i_loop )delay2(100);
#define  LONGLONGDELAY    for( i_loop = 0 ; i_loop < 10000 ; ++i_loop )delay2(100);

#define  CMD_DISPLAY_ON    0xAF
#define  CMD_DISPLAY_OFF    0xAE
#define  CMD_DISPLAY_START_LINE    0xC0     //  | ,when use it
#define  CMD_PAGE_ADDR_SET    0xB8         //  | ,when use it
#define  CMD_COLUMN_ADDR_SET    0x00         //  |, when use it
#define  CMD_RESET    0xE2    

#define  LCD_Reset(); LCD_Write_Cmd( CMD_RESET,1 );
#define  LCD_Display_ON();    LCD_Write_Cmd( CMD_DISPLAY_ON,1 );LCD_Write_Cmd( CMD_DISPLAY_ON,2 );    
#define  LCD_Display_OFF();    LCD_Write_Cmd( CMD_DISPLAY_OFF,1 );LCD_Write_Cmd( CMD_DISPLAY_OFF,2 );

 

// func.h
#include  " defs.h "
void  delay( uint  n);
void  delay2( uint  n);
void  LCD_Init( void );
void  LCD_Write_Cmd(  byte  cmd ,uchar E_Select);
void  LCD_Write_Data(  byte  cmd ,uchar E_Select);
void  LCD_Set_Page( uchar pnum, uchar E_Select );
void  LCD_Set_Col( uchar colnum, uchar E_Select );
void  LCD_Show_Char( uchar chNum, uchar row, uchar big_col );
void  LCD_Show_Str( uchar  *  pstr    );
void  LCD_Show_One_Char( uchar chnum , uchar SED );
void  LCD_Fill( uchar m_data);
void  LCD_Fill_Page( uchar  *  p_data , uchar page);
uchar LCD_Get_Char_Index( uchar szText );
void  LCD_Show_Str_2( uchar  *  pstr    );

 

 

// func.c
#include  " defs.h "
#include 
" func.h "
#include 
" at89x51.h "

/* ASCII字体,大小6X8,上到下D0~D7,左到右 */
unsigned 
char  code ASCII[][ 6 ] = { { 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 }, /* SPACE */
                               
{
0x00 , 0x7e , 0x21 , 0x21 , 0x21 , 0x7e }, /* A */
                               
{
0x00 , 0x7f , 0x49 , 0x49 , 0x49 , 0x36 }, /* B */
                               
{
0x00 , 0x3e , 0x41 , 0x41 , 0x41 , 0x22 }, /* C */
                               
{
0x00 , 0x7f , 0x41 , 0x41 , 0x22 , 0x1c }, /* D */
                               
{
0x00 , 0x7f , 0x49 , 0x49 , 0x49 , 0x49 }, /* E */
                               
{
0x00 , 0x7f , 0x09 , 0x09 , 0x09 , 0x01 }, /* F */
                               
{
0x00 , 0x3e , 0x41 , 0x49 , 0x49 , 0x7a }, /* G */
                               
{
0x00 , 0x7f , 0x08 , 0x08 , 0x08 , 0x7f }, /* H */
                               
{
0x00 , 0x41 , 0x7f , 0x41 , 0x00 , 0x00 }, /* I */
                               
{
0x00 , 0x20 , 0x40 , 0x41 , 0x3f , 0x01 }, /* J */
                               
{
0x00 , 0x7f , 0x08 , 0x14 , 0x22 , 0x41 }, /* K */
                               
{
0x00 , 0x7f , 0x40 , 0x40 , 0x40 , 0x40 }, /* L */
                               
{
0x00 , 0x7f , 0x02
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值