改造ETC液晶屏(HEM12832-19B3)


ChangeCode
原创
发布时间: 2025-06-11 10:06:14 | 阅读数 0收藏数 0评论数 0
封面
起因:前不久跟着公司领导去给车上换装ETC,在装ETC的场地捡了一个别人扔下的ETC整体,还是带屏幕的,顺手捡了回来,准备DIY。 目的:准备先用89C52点亮试试,后续再添加/改造成其他用途的工具

准备工作:

材料:

材料名称
数量
备注
STC89C52RC主板
1
/
ETC屏幕
1
/
洞洞板
1
/
线
若干
1

拆壳

捡回来先拆外壳

2

屏幕型号

LCD屏幕大小为48mm15mm,加上白色外壳有50mm23mm

确定屏幕型号为:HEM12832-19B3 1604

找了很久,终于找到这么一张有关的图片:

PDF文件通过蓝奏云分享:https://qyfalse.lanzouy.com/imqY31ejy6wh

3

屏幕参数

查看规格得知 Vop=6.5V,Vdd=3.3 ~ 0.2V

驱动IC是ST7567

图片中有和我们屏幕一样的引脚编号,查看fpc pin def就行

4

51单片机

我用的是这款单片机

5

51单片机接线

将二者全部置放于洞洞板上,并使用线将单片机与屏幕引脚相连接

这里我接了三个按钮开关,你可以加也可以不加

很好,估计看到这儿你已经懵了,不要着急,你只需要按照我给出的连接方式连接即可



ETC屏幕

stc89c52rc

1

CS1

<———>

P12

2

RES

<———>

P13

3

AO

<———>

P14

4

SCK

<———>

P10

5

SDA

<———>

P11

6

VDD

<—>按钮<—>

5V

7

VSS

<———>

GND

8

VG

—||—

GND

加了个按钮 这里的电容为1uf




9

A

<—>按钮<—>

5V

10

K

<———>

GND


6

屏幕驱动IC

  1. 根据规格图中得知屏幕的驱动IC是ST7567,那我们直接百度download一个ST7567的示例程序,下载好之后,通过左上角的file→open→选择刚才下载的文件,导入进我们的keil5软件,
  2. 双击main.c打开程序
7

程序调试

再经过短暂的程序调试,我们得到了一个不多不少的显示小车的程序:

本人程序通过蓝奏云分享:https://qyfalse.lanzouy.com/iViT21ejy2wd

或者可以通过下方复制:

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char

sbit cs=P1^2; //CS
sbit sda=P1^1; //SDA
sbit sclk=P1^0; //SCLK
sbit rst=P1^3; //RST
sbit rs=P1^4; //RS »ò AO

unsigned char code hz0[128]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x78,0x08,0x00,0x00,0x00,0x00,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0xE0,0xF0,0x70,0x60,0x00,0x00,0x00,
0x00,0x02,0x02,0x02,0x02,0xE2,0xFF,0xFF,0x0F,0x02,0x02,0xF2,0xFF,0xFF,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFE,0x03,0x01,0x00,0x00,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x20,0x3C,0x3F,0x67,0x40,0xC0,0xE0,0xFE,0xFF,0x8F,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
0x00,0x40,0x40,0x60,0x30,0x18,0x0C,0x0E,0x07,0x03,0x01,0x03,0x07,0x0F,0x0E,0x00,
0x10,0x10,0x30,0x30,0x70,0x7F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"ºÃ",0*/

};

unsigned char code hz1[128]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x78,0x08,0x00,0x00,0x00,0x00,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0xE0,0xF0,0x70,0x60,0x00,0x00,0x00,
0x00,0x02,0x02,0x02,0x02,0xE2,0xFF,0xFF,0x0F,0x02,0x02,0xF2,0xFF,0xFF,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFE,0x03,0x01,0x00,0x00,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x20,0x3C,0x3F,0x67,0x40,0xC0,0xE0,0xFE,0xFF,0x8F,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
0x00,0x40,0x40,0x60,0x30,0x18,0x0C,0x0E,0x07,0x03,0x01,0x03,0x07,0x0F,0x0E,0x00,
0x10,0x10,0x30,0x30,0x70,0x7F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"ºÃ",1*/

};

unsigned char code hz2[128]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0xF0,0xE0,0xC0,0x00,0x04,0x3C,0xF8,
0xF0,0xE0,0x00,0x00,0x00,0xC0,0xF0,0x7C,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x7C,0x7C,0x3C,0x84,0x84,0x85,0x85,0x85,0x84,0x84,0x84,0x85,
0x85,0x84,0x84,0x84,0x87,0xC7,0xC5,0xC4,0x84,0x24,0x34,0x1E,0x1E,0x0E,0x04,0x00,
0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFC,
0xFC,0xFC,0x24,0x26,0x23,0x21,0x21,0x20,0x20,0x20,0x30,0x38,0x38,0x30,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x30,0x70,0x7F,
0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"ѧ",2*/

};

unsigned char code hz3[128]={

0x00,0x00,0x00,0x00,0x20,0x60,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xE0,0xF0,0xF0,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x0C,0x1C,0x78,0x78,
0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xE0,0x60,0x30,0x30,0x10,0x18,
0x08,0x0C,0x04,0x06,0x02,0x02,0x02,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x04,0x0C,0x08,0x08,0x18,0x38,0x38,0x3F,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,/*"ϰ",3*/

};

unsigned char code bmp[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
0xC0,0xC0,0xE8,0xB0,0x90,0x88,0x8C,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x80,0x80,0xC0,0xC0,0x40,0x40,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x60,0x60,0x70,0x70,0xF0,0xB8,0x98,0xB8,0x3C,0x3C,0xB4,0x36,0x36,0x3E,0x27,0x27,
0x23,0x23,0x23,0x23,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFF,0x2E,0x20,0x20,0x21,0x21,0x21,
0x21,0x21,0x21,0x23,0x22,0x2B,0x27,0x25,0xA5,0xAF,0xAB,0xEB,0x7A,0x76,0x46,0x26,
0x0C,0x0C,0x1C,0x18,0x78,0x78,0x70,0x70,0x70,0x60,0xE0,0x40,0xC0,0x80,0x80,0x80,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x78,0xF8,0xC8,0x8C,0x06,0x07,0x07,
0x05,0x13,0xE3,0xF1,0xF8,0xFC,0x1C,0xEE,0x1E,0x1E,0x0E,0x0E,0xCE,0xEE,0xCE,0x2E,
0x5E,0x1E,0xBE,0xEC,0x3C,0xFC,0xF8,0xF5,0xC9,0x03,0x02,0x0C,0xB8,0xF0,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0xF0,0xB8,0x8C,0x06,0x03,0x81,0xE1,0xF8,0xF8,0xFC,0xDC,0xFE,0x1E,0x1E,
0x0E,0x4E,0xEE,0xEE,0x4E,0x0E,0x1E,0x1E,0xFE,0xDC,0xFD,0xF9,0xFB,0xE3,0x87,0x87,
0x87,0x83,0xC6,0xC4,0x7C,0x38,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x05,0x05,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x03,0x07,0x07,0x0E,0x0F,0x0F,0x0E,0x1E,0x1E,0x1E,0x1E,0x0E,
0x0E,0x0F,0x0F,0x0E,0x07,0x07,0x03,0x01,0x03,0x03,0x03,0x03,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x07,0x07,0x0F,0x0D,0x0E,
0x0E,0x1E,0x1E,0x1E,0x1E,0x0E,0x0E,0x0D,0x0F,0x07,0x07,0x03,0x03,0x01,0x01,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
} ;

void delay(int m) //ÑÓʱԼ0.5ms
{
unsigned char h,l;
for(l=0;l<=m;l++)
for(h=249;h>0;h--);
}

//void write_byte(uchar byte) //д×Ö½Ú
//{

//}
//ÃüÁîдÈ뺯Êý
void write_com(uchar com)
{
int i,j;
j = 0x80;
cs = 0;
rs = 0;
for(i=0;i<8;i++)
{
sclk = 0;
if(com&j)
sda = 1;
else
sda = 0;
sclk = 1;
j=j>>1;
}
}

//Êý¾ÝдÈ뺯Êý
void write_data(uchar data1) //дÊý¾Ý
{
int i,j;
j = 0x80;
cs = 0;
rs = 1;
for(i=0;i<8;i++)
{
sclk = 0;
if(data1&j)
sda = 1;
else
sda = 0;
sclk = 1;
j=j>>1;
}
}

void led_set_pos(uchar x, uchar y)
{
write_com(0xb0|y); //Ò³µØÖ·0£¬12832×ܹ²4Ò³£¨0~3£©
write_com(((x&0xf0)>>4)|0x10); //ÁеØÖ·¸ß4λ0x1£¿
write_com((x&0x0f)|0x01); //ÁеØÖ·µÍ4λ0x0£¿
}

void led_clear(uchar dispdata)
{
uchar x,y;
for(y=0;y<4;y++)
{
write_com(0xb0|y);
write_com(0x01);
write_com(0x10);
for(x=0;x<128;x++)
write_data(dispdata);
}
}

void led_init()
{
rst=0; //µÍµçƽ¸´Î»
delay(100);
rst=1; //¸´Î»Íê±Ï
delay(100);
write_com(0xe2); //Èí¸´Î»
delay(5);
write_com(0xae); //¿ªÏÔʾ
write_com(0x2f); //Éýѹ
delay(5);
write_com(0x21); //´Öµ÷¶Ô±È¶È£¬¿ÉÉèÖ÷¶Î§0x20¡«0x27 23
write_com(0x81); //΢µ÷¶Ô±È¶È
write_com(0x20); //΢µ÷¶Ô±È¶ÈµÄÖµ£¬¿ÉÉèÖ÷¶Î§0x00¡«0x3f 20
write_com(0xa2); //1/9 ƫѹ±È£¨bias£©
write_com(0xc8); //ÐÐɨÃè˳Ðò£º´ÓÉϵ½ÏÂ
write_com(0xa0); //ÁÐɨÃè˳Ðò£º´Ó×óµ½ÓÒ
write_com(0x40); //ÆðʼÐУºµÚÒ»ÐпªÊ¼
write_com(0xaf); //¿ªÏÔʾ
led_clear(0x00);
}

//ÏÔʾ32*32ºº×Ö£¬xȡֵ0,32,64,96 yÖ»ÄÜȡֵ0
void led_show32hz(uchar x,uchar y,uchar *hz)
{
uchar i,j;
for(i=0;i<4;i++)
{
led_set_pos(x,y+i);
for (j=0;j<32;j++)
{
write_data(*hz);
hz++;
}
}
}

//»­Í¼
void led_draw(uchar x,uchar y,uchar *bmp)
{
int i,j;
for(i=0;i<4;i++)
{
led_set_pos(x,y+i);
for(j=0;j<128;j++)
{
write_data(*bmp);
8

勾选生成HEX文件

接下来需要上传我们的程序到单片机上

点击这里的小锤子:

  1. 在弹出来的框中,点击Output
  2. 勾选"生成HEX文件"
  3. 再点击ok关闭
9

编译程序

再点击这个按钮编译程序

10

查看控制台内容

紧接着,控制台会输出以下内容

  1. 0 ERROR即可,Warning不用管
11

烧录工具设置

上传程序时,需要通过stc-isp软件上传,这里就不过多赘述了。。。

打开我们的stc-isp软件

1.选择我们的单片机,我的是STC89C52RC

2.选择你的端口号,

3.默认我们的波特率为115200

12

添加烧录文件

当这些选择好后,还需要选择刚才生成的HEX文件

点击“打开程序文件”

在弹出的框中选择你自己的HEX文件,

以我的为例,在“桌面→12832→Objects→12832.hex”,

选中后点击打开

13

烧录文件

点击下载/编程

点击后,右侧控制台输出“正在检测目标单片机 ...”

我的单片机需要将电源开关关闭再打开便可以上传了,


操作成功!!!


14

细节演示

在看我们的成品前,我讲过,我又加了三个按钮,分别控制LCD屏幕的总电源,LCD的背光电源,以及一个暗色背景开关:

15

成品展示

那么,最后看一下我们的成品

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载