sulajintan 发表于 2024-5-20 11:34:05

求液晶屏12232B程序,求14432B-5液晶屏程序

找不到12232B液晶屏程序,无锡市斯迈诺科技有限公司厂家给的例程没用,不知道问题出在哪里。生产厂家也没有懂51编程的技术人员,求哪位好心人给个例程。

晓飛飛 发表于 2024-5-22 20:26:50

不管是12232B还是14432B,都需要通过厂家咨询显示模块的主控芯片型号以及模块的接口定义,一般来说官方给的例程一定是可用的,即使不能直接用通过简单移植也就没问题了。

soma 发表于 2024-5-22 21:55:30

感觉和1602差不多一样的控制方式

angmall 发表于 2024-5-23 10:37:55

给你一个官方给的例程

/*
CH14432B-ST7920 并口源程序


*/
/*$$$$$$$$$$$$$$$$$

Module      :   CH12864B/D               
InterfaCS   :   68008 BIT Bus
soft      :   KeilC51 Ver7.0
Control IC:   ST7920
------------------------------------------------------------------
Note:
1.Parallel bus drive programme.

2.Default Crystal 12.000Mhz.

3.This is a new program.

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/

#include <reg52.h>
#include <intrins.h>
#include "int/tupian.c"

#define uchar unsigned char
#define uintunsigned int


sbit RS=P2^3;
sbit RW=P2^4;
sbit E   =P2^5;
sbit REST =P0^1;
sbit LED = P0^6;


#define lcd_data P1

//================================================================


void DELAY_CLS(void);
void delay_ms(uint ms_value);
void delay_us(uchar us_value);
void wr_data(uchar wdata);
void wr_cmd(uchar cmd);      
void LCD_CLS(void);
void wr_cmd_data( uchar cmd,uchar dat1,uchar dat2);
void gotoxy(uint row, uint col);
void SendStr(uchar code *ptString);
void SendStr1(uchar code *ptString);


void init_lcd(void);
void disp_Graphic();
void disp_fangkuang(void );
voidtestshow(uchar fst, uchar snd);
void CallBuiltinChar(void);


//----------------------------------------------------------------

void delay_us(uchar us_value)      //delay about 1 us
{
    while(us_value--)
    {
            _nop_();
            _nop_();
    }
}

//----------------------------------------------------------------

void delay_ms(uint ms_value)      //delay about 1 ms
{
    uint k;

    for(k=0;k<ms_value;k++)
    {
            delay_us(200);
    }
}


//----------------------------------------------------------------

void wr_cmd(uchar cmd)
{
   
    lcd_data = 0xff;      // Set the port as Output      
    RS = 0;               
    RW = 0;
    E = 1;
    lcd_data = cmd;
    delay_us(10);    //此处必需延时
    E = 0;
    RW = 1;
    delay_us(10);   //此处必需延时
    //      lcd_data = 0xFF;
}

//----------------------------------------------------------------

void wr_data(uchar wdata)
{

    lcd_data = 0xFF;      // Set the port as Output
   
    RS = 1;               
    RW = 0;
    E = 1;
    lcd_data = wdata;
    delay_us(10);   //此处必需延时
    E = 0;
    RW = 1;
    delay_us(10);   //此处必需延时
    //      lcd_data = 0xFF;
}


//----------------------------------------------------------------

void DELAY_CLS()
{
    delay_ms(100);
    LCD_CLS();

}

//----------------------------------------------------------------

void LCD_CLS()
{
        wr_cmd(0x30);    // 8-bit interface, Extended instruction
      wr_cmd(0x01);
      delay_ms(5);
}

//----------------------------------------------------------------

void SendStr(uchar code *ptString)
{
      while((*ptString)!='\0')
      {
                wr_data(*ptString++);
      }
}

//----------------------------------------------------------------

void SendStr1(uchar code *ptString)
{
      while((*ptString)!='\0')
      {
                wr_data( *ptString++);
      delay_ms(30);
      }
}


//----------------------------------------------------------------

void init_lcd(void)
{
    //delay_ms(40);
      wr_cmd(0x30);         //设定为8位控制,基本指令起动

    wr_cmd(0x34);            //设定为8位控制,扩充指令起动
      
      wr_cmd(0x0c);            // 显示打开

      LCD_CLS();                //清屏
         
      wr_cmd(0x06);                  // 设定AC加1         
}

//----------------------------------------------------------------

void gotoxy(uint row, uint col)
{
    switch(row)
    {
      case 1: wr_cmd(0x80+col);break;
      case 2: wr_cmd(0x90+col);break;
      case 3: wr_cmd(0x88+col);break;
      case 4: wr_cmd(0x98+col);break;
    }
}

//----------------------------------------------------------------

//----------------------------------------------------------------

voidtestshow(uchar fst, uchar snd)
{
uchar x,y,i,k;
   
   for(i=0;i<10;i+=8)            //当i=0时显示上面128×32,当i=8时显示下面12*3
      for(y=0;y<32;y++)
      {   if((y%2)==1)
               k=fst;
            else
               k=snd;
            for(x=0;x<10;x++)
            {
               wr_cmd(0x36);   //扩充指令 绘图显示
               wr_cmd(y+0x80);    //行地址
               wr_cmd(x+0x80+i);    //列地址            
               wr_data(k);
               wr_data(k);
      wr_cmd(0x30);               //扩充指令 绘图关闭
            }
       }   
}
/////////////---------------显示方框-----------------------
void disp_kuang()
{
uchar i,j;
wr_cmd(0x36);   //扩充指令打开
    for(i=0;i<1;i++)
   {
    wr_cmd(0x80);    //行地址
    wr_cmd(0x80+i);    //列地址            
    wr_data(0xff);
    wr_data(0xff);
   }
      for(j=1;j<16;j++)
   {
   for(i=0;i<9;i++)
      {
       wr_cmd(0x80+j);    //行地址
       wr_cmd(0x80+i);    //列地址
         if(i==0) {wr_data(0x80);wr_data(0x00); }         
            if(i==8) {wr_data(0x00);wr_data(0x01); }
         else{wr_data(0x00);wr_data(0x00); }
       }
   }   //第一排完

      for(j=0;j<15;j++)
   {
   for(i=0;i<9;i++)
      {
       wr_cmd(0x90+j);    //行地址
       wr_cmd(0x90+i);    //列地址
         if(i==0) {wr_data(0x80);wr_data(0x00); }         
            if(i==8) {wr_data(0x00);wr_data(0x01); }
         else{wr_data(0x00);wr_data(0x00); }
       }
   }   
         for(i=0;i<1;i++)
   {
    wr_cmd(0x9f);    //行地址
    wr_cmd(0x90+i);    //列地址            
    wr_data(0xff);
    wr_data(0xff);
   }         //第二排完

        wr_cmd(0x30);               //扩充指令 绘图关闭
}


//-------------------------------------------------
// ^_^      功 能 说 明: 显示128*64取模图片   ^_^ 数据扫描方向:水平扫描
//-------------------------------------------------
void display_pic(uchar *pic)
{

uchar x,y,i,j=0;
   
   for(i=0;i<9;i+=8)   
      for(y=0;y<32;y++)
      {   
            for(x=0;x<8;x++)
            {
               wr_cmd(0x36);   //扩充指令 绘图显示打开
               wr_cmd(y+0x80);    //行地址
               wr_cmd(x+0x80+i);    //列地址         
               wr_data(*pic++);
               wr_data(*pic++);   
            }
       }   
}


// Call built-in Charactors
void CallBuiltinChar(void)
{
    uint i,j;
    // 0xA140 ~ 0xA15F
    gotoxy(2,0);
    for (i = 0; i < 32; i++)
    {
            wr_data(0xA1);
            wr_data(0x40 + i);
    }
    gotoxy(3,0);
    for (j = 0; j < 16; j++)
    {
            wr_data(0xA2);
            wr_data(0x45 + j);
    }
}

//================================================================

void main()
{
    uint i;
    delay_ms(100);
    REST=0;
    delay_ms(200);
    REST=1;
   
    init_lcd();

    while(1)
        {
           LED = 0;
           delay_ms(500);
           LED = 1;
           delay_ms(500);
                LED = 0;
               DELAY_CLS();

                          


                       display_pic(b);
                  delay_ms(3500);
           DELAY_CLS();

           testshow(0xaa,0x55);   //雪花
           delay_ms(3500);
           DELAY_CLS();
        //
        testshow(0xff,0xff);   //全显
        delay_ms(2000);
           DELAY_CLS();



        //testshow(0x00,0x00);   //空白
        // delay_ms(4500);
        // DELAY_CLS();
        //testshow(0xff,0x00);   //横显
        // delay_ms(2500);
        //   DELAY_CLS();
        //testshow(0x00,0xff);//横显
        // delay_ms(2500);
        //   DELAY_CLS();
        //testshow(0x55,0x55);   //竖显
        // delay_ms(2500);
        //   DELAY_CLS();
        //testshow(0xAA,0xAA);   //竖显
        // delay_ms(2500);
        //   DELAY_CLS();
        //testshow(0xaa,0x55);   //雪花
        // delay_ms(2500);
        //DELAY_CLS();


                        gotoxy(1,0);
                SendStr("航航航航航航航航航");
                        gotoxy(2,0);
                SendStr("显显显显显显显显显");
           delay_ms(4500);
                DELAY_CLS();

                disp_kuang();
                        delay_ms(4500);
                DELAY_CLS();

                        gotoxy(1,0);
                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                        gotoxy(2,0);
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                                                                        wr_data(0xd2);
                wr_data(0xbc);/*壹D2BC*/
                        delay_ms(4500);
                DELAY_CLS();

                  
                        gotoxy(1,0);
                        for(i=0;i<18;i++)
                        {
                wr_data(0x30+i);
                        }
                        gotoxy(2,0);
                        for(i=0;i<18;i++)
                        {
                wr_data(0x41+i);
                        }
                        delay_ms(4500);
                DELAY_CLS();
        }

}




网老四 发表于 2024-5-23 12:10:25

ST7920驱动芯片的驱动例程网上大把,只要管脚连接争取,初始化参数按照厂家给的值配置,很容易点亮的

sulajintan 发表于 2024-5-29 15:35:15

收到,谢谢,原因找到,是不同单片机型号IO速度有区别,太快了,液晶屏反应不过来,需要在液晶屏的使能端加足够的延时。
页: [1]
查看完整版本: 求液晶屏12232B程序,求14432B-5液晶屏程序