lcd12864代码
时间: 2023-07-02 08:06:06 浏览: 62
以下是一个基于Arduino的LCD12864代码示例:
```
#include <LCD12864.h>
LCD12864 lcd(8, 9, 10, 11, 12, 13);
void setup() {
lcd.begin();
lcd.print("Hello, world!");
}
void loop() {
// Do something here
}
```
请注意,此代码需要使用LCD12864库。该库可以从Arduino IDE的库管理器中安装。此外,还需要连接正确的引脚以与LCD屏幕进行通信。在上面的示例中,使用引脚8-13。
相关问题
IIC驱动lcd12864代码
以下是使用IIC驱动LCD12864的示例代码。请注意,此代码仅供参考,具体实现可能因硬件和软件环境而异。
```c
#include <Wire.h> // 引入 Wire 库
#define LCD_I2C_ADDR 0x27 // LCD12864 I2C 地址
void LCD_Init() {
Wire.beginTransmission(LCD_I2C_ADDR); // 开始传输数据
Wire.write(0x38); // 基本指令设置
Wire.write(0x0C); // 显示开、光标关、闪烁关
Wire.write(0x06); // 光标右移、字符不移动
Wire.write(0x01); // 显示清屏
Wire.endTransmission(); // 结束传输数据
}
void LCD_Clear() {
Wire.beginTransmission(LCD_I2C_ADDR);
Wire.write(0x01); // 显示清屏
Wire.endTransmission();
}
void LCD_Write_Char(char c) {
Wire.beginTransmission(LCD_I2C_ADDR);
Wire.write(0x40); // 数据指令设置
Wire.write(c);
Wire.endTransmission();
}
void LCD_Write_String(const char* s) {
while (*s) {
LCD_Write_Char(*s++);
}
}
void setup() {
Wire.begin(); // 初始化 I2C 总线
LCD_Init(); // 初始化 LCD
}
void loop() {
LCD_Clear(); // 清屏
LCD_Write_String("Hello, world!"); // 显示字符串
delay(2000); // 延时 2 秒
}
```
基于stm32的lcd12864代码
以下是基于STM32的LCD12864的代码,使用的是4位并行通信方式:
```c
#include "stm32f10x.h"
#include "delay.h"
#define LCD_RS GPIO_Pin_0
#define LCD_RW GPIO_Pin_1
#define LCD_EN GPIO_Pin_2
#define LCD_DATA GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6
void LCD_WriteCmd(uint8_t cmd);
void LCD_WriteData(uint8_t dat);
void LCD_Init(void);
void LCD_GotoXY(uint8_t x, uint8_t y);
void LCD_Clear(void);
int main(void)
{
LCD_Init();
LCD_WriteCmd(0x01); //清屏
LCD_GotoXY(0,0);
LCD_WriteData('S');
LCD_WriteData('T');
LCD_WriteData('M');
LCD_WriteData('3');
LCD_WriteData('2');
LCD_WriteData('F');
LCD_WriteData('1');
LCD_WriteData('0');
LCD_WriteData('x');
LCD_WriteData('x');
LCD_GotoXY(0,1);
LCD_WriteData('L');
LCD_WriteData('C');
LCD_WriteData('D');
LCD_WriteData('1');
LCD_WriteData('2');
LCD_WriteData('8');
LCD_WriteData('6');
LCD_WriteData('4');
while(1)
{
}
}
void LCD_WriteCmd(uint8_t cmd)
{
GPIO_ResetBits(GPIOB,LCD_RS);
GPIO_ResetBits(GPIOB,LCD_RW);
GPIO_SetBits(GPIOB,LCD_EN);
GPIO_Write(GPIOB,cmd<<3);
delay_us(1);
GPIO_ResetBits(GPIOB,LCD_EN);
delay_us(50);
}
void LCD_WriteData(uint8_t dat)
{
GPIO_SetBits(GPIOB,LCD_RS);
GPIO_ResetBits(GPIOB,LCD_RW);
GPIO_SetBits(GPIOB,LCD_EN);
GPIO_Write(GPIOB,dat<<3);
delay_us(1);
GPIO_ResetBits(GPIOB,LCD_EN);
delay_us(50);
}
void LCD_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = LCD_RS|LCD_RW|LCD_EN|LCD_DATA;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
delay_ms(50);
LCD_WriteCmd(0x30);
delay_ms(5);
LCD_WriteCmd(0x30);
delay_ms(1);
LCD_WriteCmd(0x30);
delay_ms(1);
LCD_WriteCmd(0x38);
LCD_WriteCmd(0x08);
LCD_WriteCmd(0x01);
LCD_WriteCmd(0x06);
LCD_WriteCmd(0x0C);
}
void LCD_GotoXY(uint8_t x, uint8_t y)
{
uint8_t addr;
if(y == 0)
{
addr = 0x80 + x;
}
else
{
addr = 0x80 + 0x40 + x;
}
LCD_WriteCmd(addr);
}
void LCD_Clear(void)
{
LCD_WriteCmd(0x01);
}
```
注意:以上代码仅供参考,具体实现需要根据实际情况进行修改。