数码之家

 找回密码
 立即注册
搜索
查看: 3131|回复: 3

折腾LCD 液晶屏亡灵and序曲

[复制链接]
发表于 2020-11-16 14:22:55 | 显示全部楼层 |阅读模式
本帖最后由 qwer1415926 于 2020-11-16 14:24 编辑

一盒LCD液晶屏在这需要感谢数码之家好坛友"亡灵and序曲"免费且包邮赠送的一盒拆机屏.
后续在研究其它屏的驱动

#ifndef dianzhen12864_h
#define dianzhen12864_h


#define uchar unsigned char
#define uint  unsigned int
#define cs1    PTFD_PTFD4                     //串行数据输入端
#define reset  PTFD_PTFD3                       //数据锁存端
#define rs    PTFD_PTFD2                       //时钟
#define sclk  PTFD_PTFD1                        //数据锁存端
#define sid    PTFD_PTFD0
     #include "tab1.h"
#include "tab2.h"


void DisplayNumber1608(unsigned char page, unsigned char column, uint a);
void DisplayString1608(int page,int column, unsigned char *p);
void display_graphic_8x16(int page,int column,char *dp)  ;

/*写指令到 LCD 模块*/
void transfer_command(int data1)
{
int i;
cs1=0;
rs=0;
for(i=0;i<8;i++)
{
sclk=0;
if(data1&0x80) sid=1;
else sid=0;
sclk=1;
data1=data1<<=1;
}
}
/*写数据到 LCD 模块*/
void transfer_data(int data1)
{
int i;
cs1=0;
rs=1;
for(i=0;i<8;i++)
{
sclk=0;
if(data1&0x80) sid=1;
  else sid=0;
sclk=1;
data1=data1<<=1;
}
}
/*延时*/
void delay1(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<70;k++);
}
//初始化液晶屏
void InitLCD(void)
{
cs1=0;
reset=0; /*低电平复位*/
delay1(100);
reset=1; /*复位完毕*/
delay1(20);
transfer_command(0xe2); /*软复位*/
delay1(5);
transfer_command(0x2f); /*升压*/
delay1(5);
transfer_command(0x23); /*粗调对比度,可设置范围 0x20~0x27*/
transfer_command(0x81); /*微调对比度*/
transfer_command(0x238); /*0x1a,微调对比度的值,可设置范围 0x00~0x3f*/
transfer_command(0xa2); /*1/9 偏压比(bias)*/
transfer_command(0xc8); /*行扫描顺序:从上到下*/
transfer_command(0xa0); /*列扫描顺序:从左到右*/
transfer_command(0x40); /*起始行:第一行开始*/
transfer_command(0xaf); /*开显示*/
cs1=1;
}
void lcd_address(int page,int column)
{
cs1=0;
column=column-1; //我们平常所说的第 1 列,在 LCD 驱动 IC 里是第 0 列。所以在这里减去 1.
page=page-1;
transfer_command(0xb0+page); /*设置页地址。每页是 8 行。一个画面的 64 行被分成 8 个页。
我们平常所说的第 1 页,在 LCD 驱动 IC 里是第 0 页,所以
在这里减去 1*/
transfer_command(((column>>4)&0x0f)+0x10); //设置列地址的高 4 位
transfer_command(column&0x0f); //设置列地址的低 4 位
}

/*全屏清屏*/
void clear_screen(void)
{
unsigned char i,j;
cs1=0;
for(i=0;i<9;i++)
{
lcd_address(1+i,1);
for(j=0;j<132;j++)
{
transfer_data(0x00);
}
  }
cs1=1;
}
//==================display a piture of 128*64 dots================
void full_display(void)
{
int i,j;
for(i=0;i<8;i++)
{
cs1=0;
lcd_address(i+1,0);
for(j=0;j<70;j++)
{
transfer_data(0xff);
}
}
}
/*显示 32x32 点阵图像、汉字、生僻字或 32x32 点阵的其他图标*/
void display_graphic_32x32(int page,int column,char *dp)
{
int i,j;
cs1=0;
for(j=0;j<4;j++)
{
lcd_address(page+j,column);
for (i=0;i<31;i++)
{
transfer_data(*dp); /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
dp++;
}
}
cs1=1;
}
/*显示 16x16 点阵图像、汉字、生僻字或 16x16 点阵的其他图标*/
void display_graphic_16x16(int page,int column,char *dp)
{
int i,j;
cs1=0;
for(j=0;j<2;j++)
{
lcd_address(page+j,column);
for (i=0;i<16;i++)
{
transfer_data(*dp); /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
dp++;
}
}
cs1=1;
}
/*显示 8x16 点阵图像、ASCII, 或 8x16 点阵的自造字符、其他图标*/
void display_graphic_8x16(int page,int column,char *dp)
{
int i,j;
cs1=0;
for(j=0;j<2;j++)
{
lcd_address(page+j,column);
for (i=0;i<8;i++)
{
transfer_data(*dp); /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
dp++;
}
}
cs1=1;
}




//在指定页、指定列显示尺寸为1608的数字
void DisplayNumber1608(unsigned char page, unsigned char column, uint a)
{
    char i=0, j;//注意这里用的是char,不是unsigned char


    for(i=1; i>0; i--)//判断数字数组是否结束
    {
        j = a % 10 + 16;//获取当数字加16后的值,这个值就是这个数字在精简版ASCII表中的序号
      display_graphic_8x16(page, (column + i*8), &tab2[j * 16]);//这里j*16以后就是它的图形的位置
      a /= 10;
    }
}


void DisplayString1608(int page,int column, unsigned char *p)
{
    unsigned char i=0, j;


    while(p > 0x00)//判断字符数组是否结束
    {
        j = p - 0x20;//获取当前字符减32后的值


      display_graphic_8x16(page, (column + 8), &tab2[j*16 ]  );
      i++;
    }
}


#endif

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 2家元 +80 收起 理由
亡灵and序曲 + 30 熱心助人
家睦 + 50

查看全部打赏

发表于 2020-11-17 20:22:59 | 显示全部楼层
能亮已经不错了,反正我是查百度一点都没查到有用的信息,估计比较偏门,也没人卖,我觉得最实用的就是做成闹钟看时间日期之类的,因为有背光嘛,其他的感觉也没啥好改造的
回复 支持 反对

使用道具 举报

发表于 2020-11-18 09:43:33 来自手机浏览器 | 显示全部楼层
带座子的…比较麻烦了…
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-18 15:54:45 | 显示全部楼层
亡灵and序曲 发表于 2020-11-17 20:22
能亮已经不错了,反正我是查百度一点都没查到有用的信息,估计比较偏门,也没人卖,我觉得最实用的就是做成 ...

确实资料不好找,尤其那种管脚多的没有原电路板或者数据手册根本没法下手。 好些彩色液晶屏可惜我没找到资料,先简单弄一下排线数量少的,过几天把实物弄好发一下,基本就是温度显示,电压电流显示。多个DS18B20挂单总线。一边折腾一边学习吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-22 02:16 , Processed in 0.390000 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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