导航:首页 > 操作系统 > 51单片机所驱动的显示屏种类

51单片机所驱动的显示屏种类

发布时间:2023-07-29 02:49:37

① 51单片机LCD显示

你说的是那类液晶!1602?这类基于HD44780液晶芯片,操作上都大同小异
都是通过写入命令,读出数据,界面数据变化时通过不断的刷新变化,忙闲查询可以用命令,也可以用延时函数5ms就可以了,下面是个简单的例子

想要复杂点的可以去我网络空间里面找
#include<AT89X51.H>

sbit lcden=P3^4;
sbit lcdrs=P3^5;
unsigned char code tab[]="libinQQ490251568";
unsigned char code tab1[]="51binyf.com" ;
void delay(unsigned char z);
void into();
void xie_com(unsigned char com);
void xie_date(unsigned char date);
void main()
{ unsigned char num;
into();
for(num=0;num<16;num++)
{
xie_date(tab[num]);
delay(20);
}
xie_com(0x40+0x80+0x03); //使数据指针指到第二行 起始,+1----16可以使它在屏幕的任意位置显示,
for(num=0;num<11;num++)
{
xie_date(tab1[num]);
delay(20);
}
while(1);
}

void delay(unsigned char z)
{unsigned i,k;
for(i=z;i>0;i--)
for(k=110;k>0;k--);
}
void into()// 此函数中写入一些显示前的准备数据
{
lcden=0;//写指令之前为E为低电平,
xie_com(0x38);//8为数据传送,显示2行,5x7点阵显示字符
xie_com(0x0f);//开显示,有光标且闪动 0f光标闪烁,0e光标不闪烁
xie_com(0x06);//写入一个字符后光标+1,指针也+1。字符整屏不移动
xie_com(0x80);//数据指针初始化即在第一行最左边,后面每个字符地址就加一,第二行首地址是C0
xie_com(0x01);//清屏指令
}

void xie_com(unsigned char com) //写指令函数
{
lcdrs=0; //RS=0写指令
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void xie_date(unsigned char date) //写数据 函数
{
lcdrs=1;//RS=1写数据
P0=date;
delay(5);
lcden=1;//资料上说E端有一个高脉冲时候执行一次指令,实际应用中他内部
delay(5);//检测到E端有一个电平跳变就可以执行指令
lcden=0;
}

② 8051单片机怎么驱动TFT液晶屏

8051不能直接驱动TFT液晶屏,需要增加一块TFT驱动芯片,当然也可以用FPGA或CPLD自己设计一块TFT驱动芯片。

③ 单片机用串口液晶显示屏(汉显)

一、OCM12864液晶显示模块概述
1. OCM12864液晶显示模块是128×64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线。采用KS0107控制IC。
2. 外观尺寸:113×65×11mm(ocm12864-1), 93×70×10mm(ocm12864-2)
78×70×10mm(ocm12864-3),
3. 视域尺寸:73.4×38.8mm(ocm12864-1) 70.7×38mm(ocm12864-2),
64×44mm(ocm12864-3)
4. 重量:大约 g
l 补充说明:外观尺寸可根据用户的要求进行适度调整。
二、最大工作范围
1、逻辑工作电压(Vcc):4.5~5.5V
2、电源地(GND):0V
3、LCD驱动电压(Vee):0~-10V
4、输入电压:Vee~Vdd
5、工作温度(Ta):0~55℃(常温) / -20~70℃(宽温)
6、保存温度(Tstg):-10~65℃
三、电气特性(测试条件 Ta=25,Vdd=5.0+/-0.25V)
1、输入高电平(Vih):3.5Vmin
2、输入低电平(Vil):0.55Vmax
3、输出高电平(Voh):3.75Vmin
4、输出低电平(Vol):1.0Vmax
5、工作电流:2.0mAmax
四、接口说明
1. 12864-1,12864-2接口说明表
管脚号 管脚 电平 说明
1 VSS 0V 逻辑电源地。
2 VDD 5.0V 逻辑电源正。
3 V0 LCD驱动电压,应用时在VEE与V0之间加一2K可调电阻。
4 D/I H/L 数据\指令选择:高电平:数据D0-D7将送入显示RAM;
低电平:数据D0-D7将送入指令寄存器执行。
5 R/W H/L 读\写选择: 高电平:读数据;低电平:写数据。
6 E H.H/L 读写使能,高电平有效,下降沿锁定数据。
7 DB0 H/L 数据输入输出引脚。
8 DB1 H/L 数据输入输出引脚。
9 DB2 H/L 数据输入输出引脚。
10 DB3 H/L 数据输入输出引脚。
11 DB4 H/L 数据输入输出引脚。
12 DB5 H/L 数据输入输出引脚。
13 DB6 H/L 数据输入输出引脚。
14 DB7 H/L 数据输入输出引脚。
15 CS1 H/L 片选择信号,低电平时选择前64列。
16 CS2 H 片选择信号,低电平时选择后64列。
17 RET L 复位信号,低电平有效。
18 VEE -10V LCD驱动电源。
19 BL AC 背光电源,LED+。
20 BL AC 背光电源,LED-。

2. 12864-3A接口说明表
管脚号 管脚 电平 说明
1 CSA H/L 片选择信号,低电平时选择前64列。
2 CSB H 片选择信号,低电平时选择后64列。
3 GND 0V 逻辑电源地。
4 VCC 5V 逻辑电源。
5 VEE -10V LCD驱动电源。
6 D/I H/L 数据\指令选择,高电平:数据D0-D7将送入显示RAM;
低电平:数据D0-D7将送入指令寄存器执行。
7 R/W H/L 读\写选择,高电平:读数据;低电平:写数据。
8 E H.H/L 读写使能,高电平有效,下降沿锁定数据。
9 DB0 H/L 数据输入输出引脚。
10 DB1 H/L 数据输入输出引脚。
11 DB2 H/L 数据输入输出引脚。
12 DB3 H/L 数据输入输出引脚。
13 DB4 H/L 数据输入输出引脚。
14 DB5 H/L 数据输入输出引脚。
15 DB6 H/L 数据输入输出引脚。
16 DB7 H/L 数据输入输出引脚。

3. 12864-3B接口说明表
管脚号 管脚 电平 说明
1 CSA H/L 片选择信号,低电平时选择前64列。
2 CSB H 片选择信号,低电平时选择后64列。
3 GND 0V 逻辑电源地。
4 VCC 5V 逻辑电源。
5 V0 -10V LCD驱动电源。
6 D/I H/L 数据\指令选择,高电平:数据D0-D7将送入显示RAM;
低电平:数据D0-D7将送入指令寄存器执行。
7 R/W H/L 读\写选择,高电平:读数据;低电平:写数据。
8 E H.H/L 读写使能,高电平有效,下降沿锁定数据。
9 DB0 H/L 数据输入输出引脚。
10 DB1 H/L 数据输入输出引脚。
11 DB2 H/L 数据输入输出引脚。
12 DB3 H/L 数据输入输出引脚。
13 DB4 H/L 数据输入输出引脚。
14 DB5 H/L 数据输入输出引脚。
15 DB6 H/L 数据输入输出引脚。
16 DB7 H/L 数据输入输出引脚。
17 RET L 复位信号,低电平有效。
18 VEE -10V LCD驱动电源。
19 BL AC 背光电源,LED+。
20 BL AC 背光电源,LED-。

五、指令描述
1、显示开/关设置
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L L L H H H H H H/L

功能:设置屏幕显示开/关。
DB0=H,开显示;DB0=L,关显示。不影响显示RAM(DD RAM)中的内容。
2、设置显示起始行
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L H H 行地址(0~63)

功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。

3、设置页地址
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L H L H H H 页地址(0~7)

功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。页地址就是DD RAM 的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。
DD RAM地址映像表
Y 地址
0 1 2 ……………………… 61 62 63
DB0
∫ PAGE0
DB7 X=0
DB0
∫ PAGE1
DB7 X=1




DB0
∫ PAGE6
DB7 X=7
DB0
∫ PAGE7
DB7 X=8

4、设置列地址
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L L H 列地址(0~63)

功能: DD RAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DD RAM进行读写操作后,Y地址自动加一。
5、状态检测
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
H L BF L ON/OFF RST L L L L

功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。
BF=H:内部正在执行操作; BF=L:空闲状态。
RST=H:正处于复位初始化状态; RST=L:正常状态。
ON/OFF=H:表示显示关闭; ON/OFF=L:表示显示开。
6、写显示数据
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L H D7 D6 D5 D4 D3 D2 D1 D0

功能:写数据到DD RAM,DD RAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DD RAM前,要先执行“设置页地址”及“设置列地址”命令。
7、读显示数据
CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
H H D7 D6 D5 D4 D3 D2 D1 D0

功能:从DD RAM读数据,读指令执行后Y地址计数器自动加1。从DD RAM读数据前要先执行“设置页地址” 及“设置列地址”命令。
六、接口时序
1.写操作时序

时序1

4. 读操作时序
************************************************************
串行连接操作程序
新势力单片机网站:[url]www.xinshili.net[/url]
对外函数列表:
void LCD_Init( void ); //初始化
void LCD_PutStr(unsigned char row,unsigned char col,unsigned char *puts); //写入文本
void LCD_PutBMP(unsigned char *puts); //写入图片
void LCD_ClearTXT( void ); //清除文本
void LCD_ClearBMP( void ); //清除图片
***********************************************************/

#define LCDNOP() NOP();NOP()

//以下配置IO管脚
//=========================================================
#define LCDSIDPORT PORTE //SID PORT
#define LCDSIDDDR DDRE //SID DDR
#define LCDSIDPIN PINE //SID PINE
#define LCDSIDIO 2 //SID IO

#define LCDSCLKPORT PORTE
#define LCDSCLKDDR DDRE
#define LCDSCLKPIN PINE
#define LCDSCLKIO 3

#define LCDRSTPORT PORTE
#define LCDRSTDDR DDRE
#define LCDRSTPIN PINE
#define LCDRSTIO 4
//========================================================
#define OUTLCDSCLK() LCDSCLKDDR |= 1 << LCDSCLKIO //设置输出
#define SETLCDSCLK() LCDSCLKPORT |= 1 << LCDSCLKIO //拉高
#define CLRLCDSCLK() LCDSCLKPORT &= ~(1 << LCDSCLKIO) //拉低

#define OUTLCDSID() LCDSIDDDR |= 1 << LCDSIDIO //设置输出
#define INLCDSID() LCDSIDDDR &= ~(1 << LCDSIDIO); LCDSIDPORT |= 1 << LCDSIDIO //设置输入
#define SETLCDSID() LCDSIDPORT |= 1 << LCDSIDIO //拉高
#define CLRLCDSID() LCDSIDPORT &= ~(1 << LCDSIDIO) //拉低
#define GETLCDSID() ((LCDSIDPIN & (1 << LCDSIDIO)) >> LCDSIDIO) //读IO值

const unsigned char AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行汉字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, //第四行汉字位置
};

//串口发送一个字节
void LCD_WriteByte(unsigned char Dbyte)
{
unsigned char i;
OUTLCDSCLK();
OUTLCDSID();

for(i=0;i<8;i++)
{
CLRLCDSCLK();

Dbyte=Dbyte<<1; //左移一位
if (SREG & 1)
SETLCDSID();
else
CLRLCDSID();

SETLCDSCLK();
LCDNOP();
CLRLCDSCLK();
}
return;
}

//串口接收一个字节
//仅在读取数据的时候用到
//而读出的数据是一次只能读出4bit的
unsigned char LCD_ReadByte(void)
{
unsigned char i,temp1,temp2;
temp1=temp2=0;
OUTLCDSCLK();
INLCDSID();

for(i=0;i<8;i++)
{
temp1=temp1<<1;

CLRLCDSCLK();
LCDNOP();
SETLCDSCLK();
LCDNOP();
CLRLCDSCLK();

if(GETLCDSID()) temp1++;
}
for(i=0;i<8;i++)
{
temp2=temp2<<1;

CLRLCDSCLK();
LCDNOP();
SETLCDSCLK();
LCDNOP();
CLRLCDSCLK();

if(GETLCDSID()) temp2++;
}
return ((0xf0&temp1)+(0x0f&temp2));
}

void LCD_CheckBusy( void )
{
LCDNOP();
return;

do LCD_WriteByte(0xfc); //11111,RW(1),RS(0),0
while(0x80&LCD_ReadByte()); //BF(.7)=1 Busy
}

void LCD_WriteCmd( unsigned char Cbyte )
{
//LCD_CS = 1;
LCD_CheckBusy();
LCD_WriteByte(0xf8); //11111,RW(0),RS(0),0
LCD_WriteByte(0xf0&Cbyte); //高四位
LCD_WriteByte(0xf0&Cbyte<<4);//低四位(先执行<<)
//LCD_CS = 0;
}

void LCD_WriteData( unsigned char Dbyte )
{
//LCD_CS = 1;
LCD_CheckBusy();
LCD_WriteByte(0xfa); //11111,RW(0),RS(1),0
LCD_WriteByte(0xf0&Dbyte); //高四位
LCD_WriteByte(0xf0&Dbyte<<4);//低四位(先执行<<)
//LCD_CS = 0;
}

unsigned char LCD_ReadData( void )
{
LCD_CheckBusy();
LCD_WriteByte(0xfe); //11111,RW(1),RS(1),0
return LCD_ReadByte();
}

void LCD_Init( void )
{
LCD_WriteCmd(0x30); //8BitMCU,基本指令集合
LCD_WriteCmd(0x03); //AC归0,不改变DDRAM内容
LCD_WriteCmd(0x0C); //显示ON,游标OFF,游标位反白OFF
LCD_WriteCmd(0x01); //清屏,AC归0
LCD_WriteCmd(0x06); //写入时,游标右移动
}

//文本区清RAM函数
void LCD_ClearTXT( void )
{
unsigned char i;
LCD_WriteCmd(0x30); //8BitMCU,基本指令集合
LCD_WriteCmd(0x80); //AC归起始位
for(i=0;i<64;i++)
LCD_WriteData(0x20);
}

//图形区和文本区显示在两个不同的RAM区
//图形区清RAM函数
void LCD_ClearBMP( void )
{
unsigned char i,j;
LCD_WriteCmd(0x34); //8Bit扩充指令集,即使是36H也要写两次
LCD_WriteCmd(0x36); //绘图ON,基本指令集里面36H不能开绘图
for(i=0;i<32;i++) //12864实际为256x32
{
LCD_WriteCmd(0x80|i); //行位置
LCD_WriteCmd(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
LCD_WriteData(0);
}
}

void LCD_PutStr(unsigned char row,unsigned char col,unsigned char *puts)
{
LCD_WriteCmd(0x30); //8BitMCU,基本指令集合
LCD_WriteCmd(AC_TABLE[8*row+col]); //起始位置
while(*puts != '\0') //判断字符串是否显示完毕
{
if(col==8) //判断换行
{ //若不判断,则自动从第一行到第三行
col=0;
row++;
}
if(row==4) row=0; //一屏显示完,回到屏左上角
LCD_WriteCmd(AC_TABLE[8*row+col]);
LCD_WriteData(*puts); //一个汉字要写两次
puts++;
if (*puts != '\0')
{
LCD_WriteData(*puts);
puts++;
}else{break;}
col++;
}
}

void LCD_PutBMP(unsigned char *puts)
{
unsigned int x=0;
unsigned char i,j;
LCD_WriteCmd(0x34); //8Bit扩充指令集,即使是36H也要写两次
LCD_WriteCmd(0x36); //绘图ON,基本指令集里面36H不能开绘图
for(i=0;i<32;i++) //12864实际为256x32
{
LCD_WriteCmd(0x80|i); //行位置
LCD_WriteCmd(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
{ //列位置每行自动增加
LCD_WriteData(puts[x]);
x++;
}
}
}

本文转自:新势力单片机 [url]http://www.XinShiLi.net[/url]

④ 51单片机能是2.4寸的TFT彩屏整屏显示吗

完全可以的,理论上可以驱动任何尺寸的彩屏,只是速度很慢,越大越慢。
点阵液晶屏是用一个字节驱动8个像素点,一个点是一位,所以只有亮和灭,两种状态。
彩色液晶屏是用两个字节驱动一个像素点,所以一个点可以有65536种颜色。
彩色液晶屏大都是16位的位宽,你用51单片机8位驱动必须要买带锁存器的液晶屏。
一般来讲用51单片机从SD卡中读出一张彩图,写到TFT彩屏里面需要接近十秒的时间。
所以说驱动彩屏,还是用ARM7这个级别的MCU比较靠谱。

⑤ 基于51系列单片机的LED显示屏开发技术的内容简介

在简要讲述普通51单片机和C51编程的基础上,《基于51系列单片机的LED显示屏开发技术》还对具有40MHz工作频率、单指令周期的增强型51单片机——VRS51L3074及其在LED显示屏控制系统中的应用做了详细介绍。《基于51系列单片机的LED显示屏开发技术》是国内第一本针对铁电单片机的书籍,为初学铁电单片机或是希望了解该单片机的读者提供了较为全面的资料和开发例程。此外还对通用LED显示屏上位机控制软件设计、LED显示屏控制系统常用时钟芯片DS1302、温度传感器DS18B20、二极管等模块控制程序和硬件电路进行分析和讲解。这些内容是作者近几年来部分开发工作的实践总结,有些是根据实际生产产品的提炼和推广。
《基于51系列单片机的LED显示屏开发技术》内容丰富实用,图文并茂,适用于从事单片机开发和应用以及从事LED控制系统的研发人员和工程技术人员使用,也可以作为单片机爱好者、铁电单片机初学者,以及使用C51编程的研究生、本科生、专科生毕业设计的参考用书。

⑥ 本人想用51单片机做一个电子相册不知道用什么显示屏

可以选用带驱动的彩色LCD屏,分辨率宽判扰至少320X240。由冲虚于图像数据较多,单片机慎旦至少需要扩展32kB外部存储器。

⑦ 单片机显示器都有哪些

nokia5110,2.4寸TFT彩屏,12864,1602,数码管,我就用过这么几个,都是 51单片机用的。
不过一般用的都是都三个。做一个项目要看成本的,用于显示什么,用什么显示器最省钱来决定选用的显示器

⑧ 你好,我是看你的回答所以来请教你的,stc51单片机都能驱动什么液晶,彩色的可以吗

你好,STC51单片机是可以驱动彩色液晶的。
是要是MPU(CPU)接族袜雹口的液晶 都可以用单片机来驱动,包括I80并口8BIT 和16BIT ,或是SPI 串口 3线串口和4线串口,这中接口都是可以驱动的。
其他需要控制器的LCD 和一些高速接兆帆口的液晶 单片机是好唤驱动不了的,比如RGB接口 MIPI 接口 EDP接口 等等
网上有很多案例例程可以参考,可以上wlklcd.1688.com,会有提供

阅读全文

与51单片机所驱动的显示屏种类相关的资料

热点内容
stc仿真器编程器 浏览:155
服务器销售怎么做好 浏览:87
什么是com编程 浏览:848
算法工程师最新资讯 浏览:608
邮政银行卡怎么在app签约绑定 浏览:49
压缩卷一直转 浏览:976
初一编程小程序怎么做 浏览:826
bt软件文件夹名称 浏览:157
unix创建命令 浏览:622
devc是多少位的编译器 浏览:980
怎么样能快点升安卓系统 浏览:976
奇迹mu用什么服务器 浏览:605
如何让软件在多个安卓系统上运行 浏览:574
java判断半角 浏览:880
java判断正负 浏览:320
刷头条程序员的日常 浏览:103
吉林程序员吐槽 浏览:243
单片机温度范围 浏览:420
程序员为什么素质低 浏览:897
可爱的程序员小姐姐 浏览:147