找回密码
 立即注册
查看: 705|回复: 4

求助大佬,我屏幕不正常工作。

[复制链接]

该用户从未签到

1

主题

2

回帖

23

积分

新手上路

积分
23
发表于 2023-5-29 08:44:42 来自手机 | 显示全部楼层 |阅读模式
有没有大佬知道,怎样让这块屏幕正常工作,是在屠龙刀上用的,屏幕的规格书我也放下面了,我试了几次,屏幕是亮了,但没显示任何字符,我是新手,还请各位大佬帮帮忙,
IMG20230524101252.jpg
IMG20230524101303.jpg
IMG20230526115112.jpg

12864B-V2.2中文说明书.pdf

2.1 MB, 下载次数: 28

屏幕规格书

回复 送花

使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 130 天

    [LV.7]常住居民III

    26

    主题

    1297

    回帖

    4029

    积分

    论坛元老

    积分
    4029
    发表于 2023-5-29 09:22:44 | 显示全部楼层
    实验箱上有这种屏的接口,屠龙刀板子需要飞线,可以参考实验箱对应接口进行飞线测试:

    1.png

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    回帖

    23

    积分

    新手上路

    积分
    23
     楼主| 发表于 2023-5-29 09:41:08 来自手机 | 显示全部楼层
    好的,谢谢,等下班了,我回家继续试试。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    9

    主题

    836

    回帖

    3261

    积分

    论坛元老

    积分
    3261
    发表于 2023-5-29 10:13:08 | 显示全部楼层
    你这个屏幕是ST7920驱动的。

    1. /*---------------------------------------------------------------------*/
    2. /* --- STC MCU Limited ------------------------------------------------*/
    3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
    4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
    5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
    6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
    7. /* --- Web: www.STCAI.com ---------------------------------------------*/
    8. /* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
    9. /* --- BBS: www.STCAIMCU.com  -----------------------------------------*/
    10. /* --- QQ:  800003751 -------------------------------------------------*/
    11. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
    12. /*---------------------------------------------------------------------*/
    13. /*************  功能说明    **************
    14. 本例程基于STC8H8K64U为主控芯片的实验箱9进行编写测试,STC8G、STC8H系列芯片可通用参考.
    15. 128*64的LCD显示程序
    16. 显示图形,汉字,英文,数字
    17. 下载时, 选择时钟 24MHz (用户可自行修改频率).
    18. ******************************************/
    19. #include "stc8h.h"       //包含此头文件后,不需要再包含"reg51.h"头文件
    20. #include "intrins.h"
    21. #define     MAIN_Fosc       24000000L   //定义主时钟
    22. typedef     unsigned char   u8;
    23. typedef     unsigned int    u16;
    24. typedef     unsigned long   u32;
    25. sbit    LCD_RS = P4^5;  //定义引脚
    26. sbit    LCD_RW = P4^2;
    27. sbit    LCD_E  = P4^4;
    28. sbit    PSB    = P3^5;      //PSB脚为12864的串、并通讯功能切换,我们使用8位并行接口,PSB=1
    29. sbit    LCD_RESET   =   P3^4;   //  17---RESET  L-->Enable
    30. #define LCD_Data P6
    31. #define Busy    0x80 //用于检测LCD状态字中的Busy标识
    32. void    delay_ms(u16 ms);
    33. void    WriteDataLCD(u8 WDLCD);
    34. void    WriteCommandLCD(u8 WCLCD,BuysC);
    35. u8      ReadDataLCD(void);
    36. u8      ReadStatusLCD(void);
    37. void    LCDInit(void);
    38. void    LCDClear(void);
    39. void    LCDFlash(void);
    40. void    DisplayOneChar(u8 X, u8 Y, u8 DData);
    41. void    DisplayListChar(u8 X, u8 Y, u8 code *DData);
    42. void    DisplayImage (u8 code *DData);
    43. u8  code uctech[] = {"南通国芯微电子  "};
    44. u8  code net[]    = {" stcmcudata.com "};
    45. u8  code mcu[]    = {"专业制造51单片机"};
    46. u8  code qq[]     = {" QQ: 800003751  "};
    47.     //128*64点阵图形数据
    48. code u8 gImage_gxw[1024] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
    49. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
    50. 0X00,0X3F,0X03,0XF0,0X3F,0X03,0XF0,0X00,0X00,0X00,0X0C,0X00,0X00,0X00,0XC0,0X00,
    51. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X00,0X0C,0X00,0X18,0XFF,0XE0,0X00,
    52. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X00,0X08,0X1C,0X1C,0X1B,0X00,0X00,
    53. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X1F,0XFF,0XFE,0X0C,0X0E,0X00,0X00,
    54. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X00,0X0C,0X00,0X00,0X8C,0X60,0X00,
    55. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X04,0X0C,0X10,0X00,0XFF,0XF0,0X00,
    56. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X07,0XFF,0XF8,0X0C,0XCC,0X60,0X00,
    57. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X06,0X63,0X18,0X7E,0XCC,0X60,0X00,
    58. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X06,0X33,0X98,0X0C,0XFF,0XE0,0X00,
    59. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X06,0X32,0X18,0X0C,0XCC,0X60,0X00,
    60. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X05,0XD8,0X0C,0XCC,0X60,0X00,
    61. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0XFF,0X78,0X0C,0XFF,0XE0,0X00,
    62. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X08,0XD8,0X0C,0XCC,0X60,0X00,
    63. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X07,0XFF,0XF8,0X0C,0XCC,0X60,0X00,
    64. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X0C,0XCF,0XE0,0X00,
    65. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X3E,0X80,0X40,0X00,
    66. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X73,0XC0,0X00,0X00,
    67. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0D,0XF0,0X20,0X7F,0XF8,0X00,
    68. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X00,0X30,0X00,0X00,0X00,0X00,
    69. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
    70. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
    71. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X00,0X18,0X01,0X84,0X00,0X00,
    72. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X07,0XFF,0XFC,0X01,0XC6,0X00,0X00,
    73. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X00,0X58,0X01,0X86,0X30,0X00,
    74. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X07,0XFF,0XD8,0X7F,0XFF,0XF8,0X00,
    75. 0X60,0X00,0XFD,0X1F,0XF0,0X7A,0X00,0X18,0X00,0X06,0X0C,0X18,0X01,0X86,0X00,0X00,
    76. 0X60,0X01,0X87,0X13,0X30,0XC6,0X00,0X18,0X00,0X06,0X0C,0X18,0X01,0X86,0X00,0X00,
    77. 0X60,0X03,0X03,0X33,0X11,0X83,0X00,0X18,0X00,0X06,0X0C,0X18,0X00,0X40,0X00,0X00,
    78. 0X60,0X03,0X03,0X03,0X01,0X83,0X00,0X18,0X00,0X06,0X0C,0XD8,0X00,0X30,0X00,0X00,
    79. 0X60,0X03,0X80,0X03,0X03,0X80,0X00,0X18,0X00,0X06,0XFF,0XF8,0X03,0X38,0X00,0X00,
    80. 0X60,0X01,0XC0,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0F,0X18,0X0B,0X98,0X80,0X00,
    81. 0X60,0X00,0X78,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0D,0X98,0X0B,0X18,0XC0,0X00,
    82. 0X60,0X00,0X1E,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0C,0XD8,0X1B,0X00,0X70,0X00,
    83. 0X60,0X00,0X07,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X1B,0X01,0X30,0X00,
    84. 0X60,0X00,0X03,0X03,0X03,0X80,0X00,0X18,0X00,0X06,0X0C,0XD8,0X3B,0X01,0X30,0X00,
    85. 0X60,0X03,0X03,0X03,0X03,0X83,0X00,0X18,0X00,0X07,0XF7,0XB8,0X33,0X01,0X80,0X00,
    86. 0X60,0X03,0X03,0X03,0X01,0X82,0X00,0X18,0X00,0X06,0X00,0X18,0X03,0X01,0X80,0X00,
    87. 0X60,0X01,0XC6,0X03,0X01,0XC6,0X00,0X18,0X00,0X07,0XFF,0XF8,0X01,0XFF,0X80,0X00,
    88. 0X60,0X01,0X7C,0X07,0XC0,0X7C,0X00,0X18,0X00,0X06,0X00,0X18,0X00,0X00,0X00,0X00,
    89. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X04,0X00,0X00,0X00,0X00,0X00,0X00,
    90. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
    91. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
    92. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
    93. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X21,0X86,0X00,0X07,0X00,0X00,0X00,0X10,
    94. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X31,0X86,0X00,0X07,0X00,0X03,0XFF,0XF8,
    95. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X65,0X66,0X00,0X02,0X00,0X00,0X00,0X68,
    96. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0XC7,0X7C,0X00,0X02,0X08,0X00,0X00,0XC0,
    97. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X95,0X6C,0X41,0XFF,0XFC,0X00,0X03,0X80,
    98. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X19,0X3D,0X6F,0XE1,0X82,0X0C,0X00,0X0E,0X00,
    99. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X3E,0XE9,0XA1,0X82,0X0C,0X00,0X0E,0X00,
    100. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X60,0X59,0X81,0X82,0X0C,0X00,0X0C,0X0C,
    101. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X6F,0XFD,0X81,0XFF,0XFC,0X1F,0XFF,0XFE,
    102. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0XE0,0X15,0X81,0X82,0X0C,0X00,0X0C,0X02,
    103. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XA6,0X45,0X81,0X82,0X0C,0X00,0X0C,0X00,
    104. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0X27,0XC7,0X01,0X82,0X0C,0X00,0X0C,0X00,
    105. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0X47,0X01,0XFF,0XFC,0X00,0X0C,0X00,
    106. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0X5F,0X01,0X82,0X0B,0X00,0X0C,0X00,
    107. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0X77,0X01,0X02,0X03,0X00,0X0C,0X00,
    108. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0XEF,0X80,0X02,0X03,0X00,0X0C,0X00,
    109. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X24,0X59,0XC0,0X02,0X03,0X00,0X0C,0X00,
    110. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X38,0X30,0XE0,0X03,0XFF,0X80,0X7C,0X00,
    111. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X38,0XE0,0X00,0X00,0X00,0X00,0X18,0X00,
    112. 0X00,0X3F,0X03,0XF0,0X3F,0X03,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
    113. };
    114. void main(void)
    115. {
    116.     P_SW2 |= 0x80;  //扩展寄存器(XFR)访问使能
    117.     P0M1 = 0x30;   P0M0 = 0x30;   //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
    118.     P1M1 = 0x30;   P1M0 = 0x30;   //设置P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V)
    119.     P2M1 = 0x3c;   P2M0 = 0x3c;   //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V)
    120.     P3M1 = 0x50;   P3M0 = 0x50;   //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
    121.     P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    122.     P5M1 = 0x0c;   P5M0 = 0x0c;   //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
    123.     P6M1 = 0xff;   P6M0 = 0xff;   //设置为漏极开路(实验箱加了上拉电阻到3.3V)
    124.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    125.     delay_ms(100); //启动等待,等LCD讲入工作状态
    126.     LCDInit(); //LCM初始化
    127.     delay_ms(5); //延时片刻(可不要)
    128.     while(1)
    129.     {
    130.         LCDClear();
    131.         DisplayImage(gImage_gxw);//显示图形
    132.         delay_ms(5000);
    133.         LCDClear();
    134.         DisplayListChar(0,1,uctech);    //显示字库中的中文数字
    135.         DisplayListChar(0,2,net);       //显示字库中的中文数字
    136.         DisplayListChar(0,3,mcu);       //显示字库中的中文
    137.         DisplayListChar(0,4,qq);        //显示字库中的中文数字
    138.         delay_ms(5000);
    139.     }
    140. }
    141. //========================================================================
    142. // 函数: void delay_ms(u8 ms)
    143. // 描述: 延时函数。
    144. // 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
    145. // 返回: none.
    146. // 版本: VER1.0
    147. // 日期: 2013-4-1
    148. // 备注:
    149. //========================================================================
    150. void delay_ms(u16 ms)
    151. {
    152.      u16 i;
    153.      do{
    154.           i = MAIN_Fosc / 10000;
    155.           while(--i)    ;   //10T per loop
    156.      }while(--ms);
    157. }
    158. //******************************************
    159. void LCD_delay(void)
    160. {
    161.     _nop_();
    162.     _nop_();
    163.     _nop_();
    164.     _nop_();
    165.     _nop_();
    166.     _nop_();
    167.     _nop_();
    168.     _nop_();
    169.     _nop_();
    170.     _nop_();
    171. }
    172. //写数据
    173. void WriteDataLCD(u8 WDLCD)
    174. {
    175.     ReadStatusLCD(); //检测忙
    176.     LCD_RS = 1;
    177.     LCD_RW = 0;
    178.     LCD_Data = WDLCD;
    179.     LCD_delay();
    180.     LCD_E = 1;
    181.     LCD_delay();
    182.     LCD_E = 0;
    183. }
    184. //写指令
    185. void WriteCommandLCD(u8 WCLCD,BuysC) //BuysC为0时忽略忙检测
    186. {
    187.     if (BuysC) ReadStatusLCD(); //根据需要检测忙
    188.     LCD_RS = 0;
    189.     LCD_RW = 0;
    190.     LCD_Data = WCLCD;
    191.     LCD_delay();
    192.     LCD_E = 1;
    193.     LCD_delay();
    194.     LCD_E = 0;  
    195. }
    196. //读状态
    197. u8 ReadStatusLCD(void)
    198. {
    199.     LCD_Data = 0xFF;
    200.     LCD_RS = 0;
    201.     LCD_RW = 1;
    202.     LCD_delay();
    203.     LCD_E = 1;
    204.     LCD_delay();
    205.     while (LCD_Data & Busy); //检测忙信号
    206.     LCD_E = 0;
    207.     return(LCD_Data);
    208. }
    209. void LCDInit(void) //LCM初始化
    210. {
    211. //  PSB = 1;    //并口
    212. //  PSB = 0;    //SPI口
    213.     delay_ms(10);
    214.     LCD_RESET = 0;
    215.     delay_ms(10);
    216.     LCD_RESET = 1;
    217.     delay_ms(100);
    218.    
    219.     WriteCommandLCD(0x30,1); //显示模式设置,开始要求每次检测忙信号
    220.     WriteCommandLCD(0x01,1); //显示清屏
    221.     WriteCommandLCD(0x06,1); // 显示光标移动设置
    222.     WriteCommandLCD(0x0C,1); // 显示开及光标设置
    223. }
    224. void LCDClear(void) //清屏
    225. {
    226.     WriteCommandLCD(0x01,1); //显示清屏
    227.     WriteCommandLCD(0x34,1); // 显示光标移动设置
    228.     WriteCommandLCD(0x30,1); // 显示开及光标设置
    229. }
    230. //按指定位置显示一串字符
    231. void DisplayListChar(u8 X, u8 Y, u8 code *DData)
    232. {
    233.     u8 ListLength,X2;
    234.     ListLength = 0;
    235.     X2 = X;
    236.     if(Y < 1)   Y=1;
    237.     if(Y > 4)   Y=4;
    238.     X &= 0x0F; //限制X不能大于16,Y在1-4之内
    239.     switch(Y)
    240.     {
    241.         case 1: X2 |= 0X80; break;  //根据行数来选择相应地址
    242.         case 2: X2 |= 0X90; break;
    243.         case 3: X2 |= 0X88; break;
    244.         case 4: X2 |= 0X98; break;
    245.     }
    246.     WriteCommandLCD(X2, 1); //发送地址码
    247.     while (DData[ListLength] >= 0x20) //若到达字串尾则退出
    248.     {
    249. //        if (X <= 0x0F) //X坐标应小于0xF
    250.         {
    251.             WriteDataLCD(DData[ListLength]); //
    252.             ListLength++;
    253.             X++;
    254.         }
    255.     }
    256. }
    257. //图形显示122*32
    258. void DisplayImage (u8 code *DData)
    259. {
    260.     u8 x,y,i;
    261.     unsigned int tmp=0;
    262.     for(i=0;i<9;)       //分两屏,上半屏和下半屏,因为起始地址不同,需要分开
    263.     {
    264.         for(x=0;x<32;x++)   //32行
    265.         {
    266.             WriteCommandLCD(0x34,1);
    267.             WriteCommandLCD((0x80+x),1);//列地址
    268.             WriteCommandLCD((0x80+i),1);    //行地址,下半屏,即第三行地址0X88
    269.             WriteCommandLCD(0x30,1);        
    270.             for(y=0;y<16;y++)   
    271.                 WriteDataLCD(DData[tmp+y]);//读取数据写入LCD
    272.             tmp+=16;        
    273.         }
    274.         i+=8;
    275.     }
    276.     WriteCommandLCD(0x36,1);    //扩充功能设定
    277.     WriteCommandLCD(0x30,1);
    278. }
    复制代码
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    4 小时前
  • 签到天数: 58 天

    [LV.5]常住居民I

    3

    主题

    538

    回帖

    712

    积分

    高级会员

    积分
    712
    发表于 2024-3-13 11:28:52 | 显示全部楼层
    可调电阻调了吗?出厂默认对比度都很低看不到字
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 13:47 , Processed in 0.062568 second(s), 47 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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