本文分以下几个部分:
第一部分:并口传输显示中英文
第二部分:并口传输显示图片
第三部分:串口传输
首先说明,我使用的LCD12864是采用ST7920控制器芯片的,操作LCD12864其实是在操作ST7920


第一部分 并口传输显示中英文

主要是以下几个函数:

首先:写一个LCD_write函数来给LCD发送数据.根据时序图,发送数据是RW要置0,E要产生下降沿,RS置1为数据,RS置0为命令,由于是并口传输PSB置1.

其次:能够给LCD发命令后,我们就要使用LCD_init函数发送初始化命令。初始化命令至少包括:1、设置显示,2、功能设定,3、初始化清屏3个部分。

写命令时注意每个命令都有自己的运行时间,记得保证足够延时。

第三:写一个LCD_display函数可以分行分列显示内容。

        void LCD_write(u8 data,u8 cmd_flag);
void LCD_init(void);
void LCD_display(u8 row,u8 col,u8 *string);

一、并口方式理论及资料

1.先上时序图:

这里要注意的是 PWeh 要大于450ns 以STM8S208MB内部16M RC振荡器计算,每次执行时间为: 1s/(16M/8分频) =500ns 所以必须延时保证E引脚上升区域大于450ns。

同理 tdsw也需要延时。

2.指令表

ST7920指令集分为2种,第一种:10种基础指令集RE=0,第二种:6种高级指令集RE=0

第一部分是显示中英文,所以只需用到基础指令集RE=0

3.引脚图和硬件电路

4.为什么每行可以写八个汉字或16个英文/数字?

因为每个汉字需要占2个字节。

此外还要留意,第一行和第三行的内存地址是连在一起的,不控制光标的话,写完第一行就会换行到第三行。(光标写完是自动加一的)

5.程序代码

        //------------------------------header------------------------------------------
#include "iostm8s208mb.h"
//------------------------------common datatype---------------------------------
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
//------------------------------macros------------------------------------------
#define LCDRS PF_ODR_ODR0
#define LCDRW PF_ODR_ODR3
#define LCDEN PF_ODR_ODR4
#define LCDPSB PF_ODR_ODR5
#define LCDDATA PB_ODR
//------------------------------function declare--------------------------------
void delay(u8 count);
void GPIO_init(void);
void LCD_write(u8 data,u8 cmd_flag);
void LCD_init(void);
void LCD_display(u8 row,u8 col,u8 *string);
//------------------------------global------------------------------------------
//------------------------------main--------------------------------------------
void main( void )
{GPIO_init();LCD_init();LCD_display(1,0,"熊爸的学习时间");LCD_display(2,0,"================");LCD_display(3,0,"使用LCD12864显示");LCD_display(4,0,"屏来并口显示数据");}
//------------------------------functions---------------------------------------
void delay(u8 count)
{u8 i,j;while (count--){for(i=0;i<50;i++)for(j=0;j<20;j++);}
}
void GPIO_init(void)
{//lcd DB0~DB7
  PB_DDR |=0XFF;PB_CR1 |=0XFF;PB_CR2 &=0X00;PB_ODR &=0X00;//LCD RS RW EN PSB
  PF_DDR |=0X39;PF_CR1 |=0X39;PF_CR2 &=0XC6;PF_ODR &=0XC6;LCDPSB=1;LCDRW=0;
}
void LCD_write(u8 data,u8 cmd_flag)
{LCDRS=cmd_flag;LCDEN=0;delay(1);LCDEN=1;LCDDATA=data;delay(1);       //delay保证E的周期
  LCDEN=0;delay(1);
}
void LCD_init(void)
{LCD_write(0X0C,0);delay(1);LCD_write(0X30,0);delay(1);LCD_write(0X01,0);delay(1);
}
void LCD_display(u8 row,u8 col,u8 *string)
{switch (row){case 1:row=0X80;break;case 2:row=0X90;break;case 3:row=0X88;break;case 4:row=0X98;break;default:row=0X80;}LCD_write(row+col,0);while (*string != '\0'){LCD_write(*string,1);string++;}
}

5.实验效果


第二部分 并行显示图片

1、指令集

使用绘图功能需要打开扩展指令集

2、绘画步骤

1.使用扩展指令集并关闭绘图显示功能 0X34
2.设置垂直地址
3.设置水平地址
4.写D15~D8位
5.写D7~D0位
6.打开绘图显示功能 0X36
7.返回基本指令集

垂直地址:表示方法 第几行+偏移量 例如: 0x80+j

水平地址:第一行0X80 第二行0X90 第三行0X88 第四行0X98

这部分处理函数如下:

        void LCD_pic(u8 *pic)
{u8 i,j,k;LCD_write(0X34,0);delay(10);for ( i = 0; i <2; i++){for ( j = 0; j <32; j++){LCD_write(0X80+j,0);LCD_write(0X80+8*i,0);for ( k = 0; k <16; k++){LCD_write(*pic++,1);}}}LCD_write(0X36,0);delay(10);LCD_write(0X30,0);delay(10);
}

3、再来看GDRAM

其实12864 只用了GDRAM的一半

Y坐标取值范围:0X80+0-31

X坐标取值范围:0X80或者0X88

        //------------------------------header------------------------------------------
#include "iostm8s208mb.h"
//------------------------------common datatype---------------------------------
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
//------------------------------macros------------------------------------------
#define LCDRS PF_ODR_ODR0
#define LCDRW PF_ODR_ODR3
#define LCDEN PF_ODR_ODR4
#define LCDPSB PF_ODR_ODR5
#define LCDDATA PB_ODR
//------------------------------function declare--------------------------------
void delay(u8 count);
void GPIO_init(void);
void LCD_write(u8 data,u8 cmd_flag);
void LCD_init(void);
void LCD_pic(u8 *pic);
//------------- -----------------global------------------------------------------
u8 dis[]={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,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,
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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFC,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x3F,0xF8,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xC3,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xFF,0xC7,0x8F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFE,0x3F,0xF1,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFC,0x3F,0xF0,0xFF,0x80,0x03,0x00,0x00,0x00,0x30,0x60,0x00,0x00,0x00,0x00,
0x07,0xE3,0xFF,0xFF,0x1F,0x80,0x03,0x00,0x63,0xFC,0x30,0xE0,0x30,0xC4,0x08,0x60,
0x07,0xE3,0xFF,0xFF,0x8F,0x80,0xFF,0xFC,0x63,0x0C,0x30,0xC0,0xC6,0xFC,0x7C,0xF8,
0x07,0x8F,0xFC,0xFF,0xE7,0x80,0xC0,0x0C,0x63,0x0C,0xFD,0xFC,0xFF,0xC8,0xF8,0x5C,
0x07,0x8F,0xF0,0x3F,0xE7,0x80,0xC6,0x0D,0xFB,0x0C,0xCD,0x8C,0x02,0xCC,0x4F,0xE0,
0x07,0x8F,0xC0,0x0F,0xE7,0x80,0x06,0x00,0x5B,0xFC,0xCF,0x8C,0xFE,0xFC,0x0F,0xE0,
0x07,0x8F,0x80,0x07,0xE7,0x80,0x0E,0x00,0xDB,0x00,0xCD,0x0C,0xC6,0xC5,0xFF,0xFE,
0x07,0x8F,0xC0,0x0F,0xE7,0x81,0xFF,0xFE,0xDB,0x60,0xCC,0x8C,0xFE,0xDC,0xF0,0x1C,
0x07,0x8F,0xF0,0x3F,0xE7,0x80,0x18,0x70,0xDB,0x6C,0xFD,0xCC,0xC6,0xF8,0x7F,0xF8,
0x07,0x8F,0xFC,0xFF,0xE7,0x80,0x38,0x60,0xDB,0x7C,0xCC,0xCC,0xFE,0xC4,0x63,0x18,
0x07,0x8F,0xFF,0xFF,0xE7,0x80,0x3E,0xE0,0xF3,0x78,0xCC,0xEC,0xC6,0xCC,0x63,0x18,
0x07,0x8F,0xFF,0xFF,0xE7,0x80,0x0F,0xC0,0x3F,0x70,0xCC,0x6C,0xDE,0xFC,0x7F,0xF8,
0x07,0x8F,0xFF,0xFF,0xE7,0x80,0x07,0xC0,0x7E,0x64,0xCC,0x4C,0x4C,0x98,0x60,0x0E,
0x07,0x8F,0x3F,0xF3,0xE7,0x80,0x1E,0xF0,0xF6,0x66,0xCC,0x0C,0xCC,0xCC,0x60,0x0C,
0x01,0x8F,0x0F,0xC3,0xE6,0x00,0x7C,0x39,0xCE,0x6C,0xFC,0x0C,0xCC,0xCC,0x70,0x1C,
0x00,0x8F,0x03,0x03,0xE4,0x00,0xE0,0x0C,0x84,0x7C,0xCC,0xF8,0x80,0x04,0x3F,0xF8,
0x06,0x0F,0x00,0x03,0xE1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0x0F,0x00,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xE3,0x00,0x03,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xF1,0x00,0x02,0x3F,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
0x07,0xFE,0x00,0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFF,0x00,0x03,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
0x01,0xFF,0xC0,0x0F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0xE0,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0xF8,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,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,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,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,0x00,0x00,0x00,0x00,0x00};
//------------------------------main--------------------------------------------
void main( void )
{CLK_CKDIVR=0X00;delay(100);GPIO_init();LCD_init();LCD_pic(dis);
}
//------------------------------functions---------------------------------------
void delay(u8 count)
{u8 i,j;while (count--){for(i=0;i<50;i++)for(j=0;j<20;j++);}
}
void GPIO_init(void)
{//lcd DB0~DB7
  PB_DDR |=0XFF;PB_CR1 |=0XFF;PB_CR2 &=0X00;PB_ODR &=0X00;//LCD RS RW EN PSB
  PF_DDR |=0X39;PF_CR1 |=0X39;PF_CR2 &=0XC6;PF_ODR &=0XC6;LCDPSB=1;LCDRW=0;
}
void LCD_write(u8 data,u8 cmd_flag)
{LCDRS=cmd_flag;LCDEN=0;delay(1);LCDDATA=data;LCDEN=1;delay(1);LCDEN=0; delay(1);
}
void LCD_init(void)
{LCD_write(0X0C,0);delay(1);LCD_write(0X34,0);delay(1);LCD_write(0X01,0);delay(1);
}
void LCD_pic(u8 *pic)
{u8 i,j,k;LCD_write(0X34,0);delay(10);for ( i = 0; i <2; i++){for ( j = 0; j <32; j++){LCD_write(0X80+j,0);LCD_write(0X80+8*i,0);for ( k = 0; k <16; k++){LCD_write(*pic++,1);}}}LCD_write(0X36,0);delay(10);LCD_write(0X30,0);delay(10);
}

实验效果:

这里说一下怎么得到DIS数组的

用PS制作一张128*64的BMP图片

然后将其导入 字模提取 软件中 用C51格式取模即可


第三部分 串口传输

串口传输非常省GPIO,可以做到用两个GPIO控制整块显示屏。非常给力!

选择串口通讯模式需要把PSB置0(或接GND)

此时 RS变为了片选端口 我们直接置1(或接VDD)

RW变成了SDIO 我们用它来发送数据 (接GPIO)

把EN变成了SCLK 我们用它来给通讯时钟(接GPIO)

1. 串口输出时序图

比如 我们发送一个命令 0X34到LCD,可以

11111 0 0 0 (命令控制字)0XF8

0011 0000 ( 0X34的高4位) 0X30

0100 0000( 0X34的低4位) 0X40

通过仔细观察时序图,我们发现:时钟为0时可以改变数据,时钟为1时采集。所以大体思路是在CLK=0时装载,在CLK=1时发射。

2. 需要写的函数

通过上面的分析总结出我们需要以下函数:

① 一个将命令/数据分解成3个字节并发送的处理函数

        void LCD_write(u8 data,u8 cmd_flag)
{if(cmd_flag)LCD_send_byte(0XFA);elseLCD_send_byte(0XF8);LCD_send_byte(data & 0XF0);LCD_send_byte((data<<4) & 0XF0);
}

②一个控制时钟引脚并将数据在SDIO口逐位发送的函数

        LCD_send_byte(u8 byte)
{for (u8 i = 0; i < 8; i++){LCDCLK=0;if ((byte<<i) & 0X80)LCDDIO=1;elseLCDDIO=0;LCDCLK=1;}
}            

3.程序(用并行显示图片程序改的)

        //------------------------------header------------------------------------------
#include "iostm8s208mb.h"
//------------------------------common datatype---------------------------------
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
//------------------------------macros------------------------------------------
#define LCDCS PF_ODR_ODR0
#define LCDDIO PF_ODR_ODR3
#define LCDCLK PF_ODR_ODR4
#define LCDPSB PF_ODR_ODR5
//------------------------------function declare--------------------------------
void delay(u8 count);
void GPIO_init(void);
void LCD_write(u8 data,u8 cmd_flag);
void LCD_init(void);
void LCD_pic(u8 *pic);
void LCD_send_byte(u8 byte);
//------------- -----------------global------------------------------------------
u8 dis[]={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,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,
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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFC,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x3F,0xF8,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xC3,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xFF,0xC7,0x8F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFE,0x3F,0xF1,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFC,0x3F,0xF0,0xFF,0x80,0x03,0x00,0x00,0x00,0x30,0x60,0x00,0x00,0x00,0x00,
0x07,0xE3,0xFF,0xFF,0x1F,0x80,0x03,0x00,0x63,0xFC,0x30,0xE0,0x30,0xC4,0x08,0x60,
0x07,0xE3,0xFF,0xFF,0x8F,0x80,0xFF,0xFC,0x63,0x0C,0x30,0xC0,0xC6,0xFC,0x7C,0xF8,
0x07,0x8F,0xFC,0xFF,0xE7,0x80,0xC0,0x0C,0x63,0x0C,0xFD,0xFC,0xFF,0xC8,0xF8,0x5C,
0x07,0x8F,0xF0,0x3F,0xE7,0x80,0xC6,0x0D,0xFB,0x0C,0xCD,0x8C,0x02,0xCC,0x4F,0xE0,
0x07,0x8F,0xC0,0x0F,0xE7,0x80,0x06,0x00,0x5B,0xFC,0xCF,0x8C,0xFE,0xFC,0x0F,0xE0,
0x07,0x8F,0x80,0x07,0xE7,0x80,0x0E,0x00,0xDB,0x00,0xCD,0x0C,0xC6,0xC5,0xFF,0xFE,
0x07,0x8F,0xC0,0x0F,0xE7,0x81,0xFF,0xFE,0xDB,0x60,0xCC,0x8C,0xFE,0xDC,0xF0,0x1C,
0x07,0x8F,0xF0,0x3F,0xE7,0x80,0x18,0x70,0xDB,0x6C,0xFD,0xCC,0xC6,0xF8,0x7F,0xF8,
0x07,0x8F,0xFC,0xFF,0xE7,0x80,0x38,0x60,0xDB,0x7C,0xCC,0xCC,0xFE,0xC4,0x63,0x18,
0x07,0x8F,0xFF,0xFF,0xE7,0x80,0x3E,0xE0,0xF3,0x78,0xCC,0xEC,0xC6,0xCC,0x63,0x18,
0x07,0x8F,0xFF,0xFF,0xE7,0x80,0x0F,0xC0,0x3F,0x70,0xCC,0x6C,0xDE,0xFC,0x7F,0xF8,
0x07,0x8F,0xFF,0xFF,0xE7,0x80,0x07,0xC0,0x7E,0x64,0xCC,0x4C,0x4C,0x98,0x60,0x0E,
0x07,0x8F,0x3F,0xF3,0xE7,0x80,0x1E,0xF0,0xF6,0x66,0xCC,0x0C,0xCC,0xCC,0x60,0x0C,
0x01,0x8F,0x0F,0xC3,0xE6,0x00,0x7C,0x39,0xCE,0x6C,0xFC,0x0C,0xCC,0xCC,0x70,0x1C,
0x00,0x8F,0x03,0x03,0xE4,0x00,0xE0,0x0C,0x84,0x7C,0xCC,0xF8,0x80,0x04,0x3F,0xF8,
0x06,0x0F,0x00,0x03,0xE1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0x0F,0x00,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xE3,0x00,0x03,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xF1,0x00,0x02,0x3F,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
0x07,0xFE,0x00,0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFF,0x00,0x03,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
0x01,0xFF,0xC0,0x0F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0xE0,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0xF8,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,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,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,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,0x00,0x00,0x00,0x00,0x00};
//------------------------------main--------------------------------------------
void main( void )
{CLK_CKDIVR=0X00;delay(100);GPIO_init();LCD_init();LCD_pic(dis);
}
//------------------------------functions---------------------------------------
void delay(u8 count)
{u8 i,j;while (count--){for(i=0;i<50;i++)for(j=0;j<20;j++);}
}
void GPIO_init(void)
{//LCD CS DIO CLK PSB
  PF_DDR |=0X39;PF_CR1 |=0X39;PF_CR2 &=0XC6;PF_ODR &=0XC6;LCDPSB=0;LCDCS=1;
}
void LCD_write(u8 data,u8 cmd_flag)
{if(cmd_flag)LCD_send_byte(0XFA);elseLCD_send_byte(0XF8);LCD_send_byte(data & 0XF0);LCD_send_byte((data<<4) & 0XF0);
}
void LCD_init(void)
{LCD_write(0X0C,0);delay(1);LCD_write(0X34,0);delay(1);LCD_write(0X01,0);delay(1);
}
void LCD_pic(u8 *pic)
{u8 i,j,k;LCD_write(0X34,0);delay(10);for ( i = 0; i <2; i++){for ( j = 0; j <32; j++){LCD_write(0X80+j,0);LCD_write(0X80+8*i,0);for ( k = 0; k <16; k++){LCD_write(*pic++,1);}}}LCD_write(0X36,0);delay(10);LCD_write(0X30,0);delay(10);
}
void LCD_send_byte(u8 byte)
{for (u8 i = 0; i < 8; i++){LCDCLK=0;if ((byte<<i) & 0X80)LCDDIO=1;elseLCDDIO=0;LCDCLK=1;}
}

STM8控制LCD12864液晶屏实验相关推荐

  1. 物联网开发笔记(84)- 使用Micropython开发ESP32开发板之控制LCD12864液晶屏和AHT10温度传感器

    一.目的 这一节我们学习如何使用我们的ESP32开发板来学习LCD12864液晶屏和AHT10温度传感器的操作.  二.环境 ESP32 + Thonny + LCD12864液晶屏 + AHT10温 ...

  2. c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...

  3. Arduino UNO通过SPI串行方式驱动LCD12864液晶屏

    LCD12864液晶屏简介 LCD12864带中文字库图形点阵式液晶显示器,可配合各种单片机可完成中文汉字.英文字符和图形显示,可构成全中文人机交互图形界面,模块具有功耗低.显示内容丰富等特点而应用广 ...

  4. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...

  5. 51单片机-LCD12864液晶屏

    lcd12864液晶屏,有点复杂,只有基本的显示. #include <reg52.h> #include <intrins.h> #define uint unsigned ...

  6. stm32驱动LCD12864液晶屏驱动程序,亲测可行,复制直接能用!

    废话不多说,直接贴程序,你自己复制过去即可,免得我通过把工程上传的方式,你下载还得需要c币,这个现在很贵呀!!! 就两个文件,LCD12864.h和LCD12864.c,自己复制过去后,改一下引脚即可 ...

  7. stm32f103vet6利用fsmc控制LIL9341液晶屏

    作为初学者,我看的是原子的视频,用的是stm32f103vet6的板,所以这个问题纠结了好久,终于在今天解决了,虽然只是第一步,但是已经迈出第一步了.在这里分享给有需要的同学们,祝你们好运. 1.FS ...

  8. 合泰lcd的c语言程序,合泰单片机HT66F70A LCD12864液晶屏驱动 汇编和c语言都有

    #include #include "delay.h" #define IO_12864   _pc //定义12864的数据端口 #define IO_12864_C   _pc ...

  9. 液晶屏 LCD12864 / LCD12232 串行 / 并行接口驱动

    液晶屏 LCD12864 / LCD12232 串行 / 并行接口驱动 一.LCD12864 / LCD12232 1.LCD12864 2.LCD12232 3.接线图 二.ST7920 1.接口时 ...

最新文章

  1. 最全面的 python 字符串拼接总结(带注释版)
  2. YARN部件以及执行流程
  3. 图片保存到数据库以及从数据库中Load图片
  4. bootstrap插件(对话框)bootbox参数和自定义弹出框宽度设置
  5. golang控制台颜色输出(for windows)
  6. 使用WiX制作具有时间限制的安装包
  7. 熊猫猪新系统測试之二:Mac OS X 10.10 优胜美地
  8. AForge 拍照 GetCurrentVideoFrame().GetHbitmap 内存不足
  9. TAOCP中最大公约数算法理解
  10. 关于8.0出现Only fullscreen opaque activities can request orientation
  11. vue实战项目-ego商城
  12. linux下 fat32转ntfs,NTFS和FAT32区别和转换
  13. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第7天 2018/11.1
  14. 直播软件系统搭建技术分享
  15. DNA甲基化数据分析专题
  16. 饥荒 阿里云服务器搭建记录
  17. 计算机的主要配件是哪两个,组成计算机cpu的两大部件是什么
  18. emlog某涛娱乐资源网源码 自带200多条数据打包
  19. 互联网广告人--联合御寒--品牌,代理,平台,达人 多方携手御寒
  20. ARM Translation 下载 | ARM Translation Download

热门文章

  1. 灰狼算法(GWO)优化xgboost的分类预测模型,多输入单输出模型,GWO-xgboost分类预测。
  2. 对话推荐CRS论文精读KBRD:Towards Knowledge-Based Recommender Dialog System
  3. Oracle之数据对象(同义词、序列、视图、表空间、索引)
  4. 【论文阅读】Detecting concurrency memory corruption vulnerabilities
  5. ❤️Python制作表白小程序,七夕能不能脱单就全靠它了!❤️(附源码)
  6. html选择按键点击后锁死输入框_js Dom为页面中的元素绑定键盘或鼠标事件
  7. python黑魔法指南_Python黑魔法大全
  8. 计算机二级有没有年龄,九龄童通过全国计算机二级 创年龄最小纪录(图)_新闻中心_新浪福建_新浪网...
  9. 卷尺精度标准_卷尺的精度为多少mm 卷尺测量误差的原因有哪些
  10. 颜色英文单词总汇(申明:来自于360)