找回密码
 立即注册
查看: 4249|回复: 24

LCD1602, LCD12864, 求助

[复制链接]

3

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-4-3 10:23:03 | 显示全部楼层 |阅读模式
如何用STC32G12K128实现LCD1602的显示???
希望有大神可以帮帮忙,求求。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:45
  • 最近打卡:2025-02-14 13:39:49
已绑定手机

19

主题

273

回帖

2152

积分

金牌会员

积分
2152
QQ
发表于 2023-4-3 10:44:06 | 显示全部楼层
本帖最后由 红心A 于 2023-4-3 10:45 编辑

STC32G12K128 实验箱演示程序包 中有 LCD128*64, LCD1602的演示程序
1.png
https://www.stcai.com/syx
QQ:1638975601
手机:19952583876(微信同号)
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:45
  • 最近打卡:2025-02-14 13:39:49
已绑定手机

19

主题

273

回帖

2152

积分

金牌会员

积分
2152
QQ
发表于 2023-4-3 11:02:36 | 显示全部楼层
STC-ISP V6.91N中的调试接口可以来模拟 :LCD12864显示,

https://www.stcai.com/gjrj
QQ:1638975601
手机:19952583876(微信同号)
回复 支持 反对

使用道具 举报 送花

3

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-4-3 15:07:20 | 显示全部楼层
红心A 发表于 2023-4-3 10:44
STC32G12K128 实验箱演示程序包 中有 LCD128*64, LCD1602的演示程序

https://www.stcai.com/syx

哇!感谢!
回复 支持 反对

使用道具 举报 送花

3

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-4-3 16:18:49 | 显示全部楼层
哥,你可以帮我看看我的程序哪里出问题了么?
我利用51在proteus上仿真好了,但是移植到32上lcd1602只亮但是不显示字母。
#include <STC32G.h>
#include <intrins.h>

#define uchar unsigned char       
#define uint  unsigned int       

sbit LcdRs_P   = P7^2;                             
sbit LcdRw_P   = P7^1;                       
sbit LcdEn_P   = P7^0;               



void DelayMs(uint time)
{
        uint i,j;
        for(i=0;i<time;i++)
                for(j=0;j<112;j++);
}



void LcdWriteCmd(uchar cmd)
{
        LcdRs_P = 0;
        LcdRw_P = 0;
        LcdEn_P = 0;
        P0=cmd;
        DelayMs(2);
        LcdEn_P = 1;   
        DelayMs(2);
        LcdEn_P = 0;       
}


void LcdWriteData(uchar dat)
{
        LcdRs_P = 1;
        LcdRw_P = 0;
        LcdEn_P = 0;
        P0=dat;
        DelayMs(2);
        LcdEn_P = 1;   
        DelayMs(2);
        LcdEn_P = 0;
}


void LcdGotoXY(uchar line,uchar column)
{
       
        if(line==0)        
                LcdWriteCmd(0x80+column);
       
        if(line==1)        
                LcdWriteCmd(0x80+0x40+column);
}




void LcdPrintStr(uchar *str)
{
        while(*str!='\0')
                        LcdWriteData(*str++);
}



void LcdInit()
{
        LcdWriteCmd(0x38);        
        LcdWriteCmd(0x0C);      
        LcdWriteCmd(0x06);        
        LcdWriteCmd(0x01);        
}


void LcdOn()   
{
        LcdWriteCmd(0x0c);
}

void LcdOff()  
{
        LcdWriteCmd(0x08);
}


void LcdShowInit()
{
        LcdGotoXY(0,0);                                                                   
        LcdPrintStr("   LCD Test  ");
        LcdGotoXY(1,0);                                                                   
        LcdPrintStr("ABCDEFGHIJKLMNOP");       
}



void main()
{
          WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È
       
        P0M0 = 0x00;           
        P0M1 = 0x00;
    P7M1 = 0x00;
    P7M0 = 0x00;
       
//        P0 = 0xff
        //P0PU = 0xff;   
        //P7PU = 0xff;
       
        LcdInit();                                                       
        LcdShowInit();
       
        while(1)
        {
        }
}



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-4-3 19:09:34 | 显示全部楼层
前面都是给的 LCD12864的参考例子,其实STC8H8K64U的实验箱例程直接提供了LCD1602的例子
1.png

下载下来后,例程包中第53个例程 是LCD1602, 第36个例程 是LCD12864
2.png
你将STC8H的头文件换成STC32G的头文件,编译器从 KEIL C51 改成 KEIL C251 应该就搞定
1.png



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:521
  • 最近打卡:2025-05-01 01:11:54

10

主题

1159

回帖

5117

积分

论坛元老

积分
5117
发表于 2023-4-3 19:16:04 | 显示全部楼层
延时函数 要根据MCU时钟频率 ,   你的STC32频率是多少?

  1. void Delay1ms()                //STC32@12.000MHz
  2. {
  3.         unsigned long i;
  4.         _nop_();
  5.         _nop_();
  6.         _nop_();
  7.         i = 2998UL;
  8.         while (i) i--;
  9. }
复制代码
回复 支持 反对

使用道具 举报 送花

3

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-4-3 20:26:44 | 显示全部楼层
angm*** 发表于 2023-4-3 19:16
延时函数 要根据MCU时钟频率 ,   你的STC32频率是多少?

延时函数我改成这样的了


  1. #define MAIN_Fosc        24000000UL
  2. typedef         unsigned int        u16;
  3. void delay_ms(u16 ms)
  4. {
  5.     u16 i;
  6.     do{
  7.         i = MAIN_Fosc / 6000;
  8.         while(--i);
  9.     }while(--ms);
  10. }
复制代码
回复 支持 反对

使用道具 举报 送花

3

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-4-3 20:27:37 | 显示全部楼层
神*** 发表于 2023-4-3 19:09
前面都是给的 LCD12864的参考例子,其实STC8H8K64U的实验箱例程直接提供了LCD1602的例子

感谢,我研究一下
回复 支持 反对

使用道具 举报 送花

3

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-4-3 21:08:37 | 显示全部楼层
神*** 发表于 2023-4-3 19:09
前面都是给的 LCD12864的参考例子,其实STC8H8K64U的实验箱例程直接提供了LCD1602的例子

我用的stc32的话,大部分程序应该都是通用的吧?我是不是改改引脚就行?

点评

管脚是一样的,其他的看下手册哦  详情 回复 发表于 2023-4-4 08:37
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:54 , Processed in 0.168801 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表