学习单片机点亮LCD

点亮LCD主要就是有RS(设置是数据和指令) RW(设置读和写的模式) 以及E(使能)和数据口(D0-D7)我们分别要写他的数据模式和指令模式看看下面的程序吧

#include "LCD1602.h"
#include <REGX52.H>
#include <INTRINS.H>

sbit LCD_RS = P2^6;
sbit LCD_RW = P2^5;
sbit LCD_E = P2^7;

#define LCD_DatrPort P0
//延时函数
void Delay1ms_1()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}
//写指令函数
void LCD_WriteCommand(unsigned char Command)
{
	LCD_RS = 0;//设置指令模式
	LCD_RW = 0;//设置写模式
	LCD_DatrPort = Command;//写指令
	LCD_E = 1; //打开使能
	Delay1ms_1();
	LCD_E = 0;
	
}

//写数据函数

void LCD_WriteData(unsigned char Data)
{
	LCD_RS = 1;//设置数据模式
	LCD_RW = 0;//设置写模式
	LCD_DatrPort = Data;//写指令
	LCD_E = 1; //打开使能
	Delay1ms_1();
	LCD_E = 0;
	
}
//初始化函数
void LCD_Init()
{
	LCD_WriteCommand(0x38);//配置八位数据接口
	LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关
	LCD_WriteCommand(0x06);//光标加一,画面不动
	LCD_WriteCommand(0x01);//清屏
	
}

//
void LCD_showchar(unsigned char Line, unsigned char Columu, unsigned char arr)//传输的数据是行 列 数据
{
		if(Line == 1)
		{
			LCD_WriteCommand(0x80 | (Columu -1));
		}
		else
		{
			LCD_WriteCommand(0x80 | ((Columu -1)+0x40));
		}
		LCD_WriteData(arr);
}

这个是LCD的块后面再通过mian函数点亮LEC吧

int main()
{
	LCD_Init();
	LCD_showchar(1,1,'r');
	while(1)
	{

	}
  return 0;
}

点亮TFTLCD屏幕,需要先了解一下涉及到的硬件和通信协议。TFTLCD屏幕通常使用的是SPI协议进行通信,所以需要先配置好51单片机的SPI模块。另外还需要了解TFTLCD屏幕的显示原理和控制信号的含义。 以下是一个简单的51单片机C语言代码实现点亮TFTLCD屏幕的示例: ```c #include <reg52.h> #include <intrins.h> // 定义SPI引脚 sbit LCD_CS = P1^0; // 片选信号 sbit LCD_RS = P1^1; // 数据/命令选择 sbit LCD_WR = P1^2; // 写信号 sbit LCD_RD = P1^3; // 读信号 sbit LCD_RST = P1^4; // 复位信号 // 定义SPI时序延时函数 void delay_us(unsigned int us) { while (us--) { _nop_(); _nop_(); _nop_(); _nop_(); } } // SPI写数据函数 void LCD_Write_Data(unsigned char dat) { LCD_RS = 1; // 选择数据寄存器 LCD_CS = 0; // 片选TFTLCD屏幕 P0 = dat; // 将数据写入P0口 LCD_WR = 0; // 写信号置低 delay_us(1); // 延时一段时间 LCD_WR = 1; // 写信号置高 LCD_CS = 1; // 取消片选 } // SPI写命令函数 void LCD_Write_Cmd(unsigned char cmd) { LCD_RS = 0; // 选择命令寄存器 LCD_CS = 0; // 片选TFTLCD屏幕 P0 = cmd; // 将命令写入P0口 LCD_WR = 0; // 写信号置低 delay_us(1); // 延时一段时间 LCD_WR = 1; // 写信号置高 LCD_CS = 1; // 取消片选 } // TFTLCD屏幕初始化函数 void LCD_Init() { LCD_CS = 1; // 初始状态下取消片选 LCD_RST = 0; // 复位信号置低 delay_us(100); // 延时一段时间 LCD_RST = 1; // 复位信号置高 delay_us(100); // 延时一段时间 // 初始化TFTLCD屏幕 LCD_Write_Cmd(0x01); // 软复位 delay_us(100); LCD_Write_Cmd(0x11); // 退出睡眠模式 delay_us(100); LCD_Write_Cmd(0x3A); // 配置像素格式 LCD_Write_Data(0x55); delay_us(100); LCD_Write_Cmd(0x36); // 配置扫描方向 LCD_Write_Data(0x08); delay_us(100); LCD_Write_Cmd(0x29); // 打开显示 } // 主函数 void main() { LCD_Init(); // TFTLCD屏幕初始化 // 在此处添加绘制图像的代码 while (1); } ``` 以上代码实现了TFTLCD屏幕的初始化和SPI通信的基本操作,实际使用时还需要根据具体的要求进行修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值