导航:首页 > 操作系统 > 单片机lcd屏显示字符

单片机lcd屏显示字符

发布时间:2022-05-13 12:19:59

A. 单片机LCD左移显示字符显示不全

#include<reg52.h>

unsigned char code s[]={"Hello everyone! Welcome to Beijing"}; //显示字符

sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;

void delay(int i)//延时函数
{
while(i--);
}

void w_command(unsigned char w) //写入指令
{
rs=0;
rw=0;
P3=w;
e=1;
delay(3000);
e=0;
}

void init_lcd() //1602液晶初始化设定
{
w_command(0x38);// 16*2显示,5*7点阵,8位数据接口
w_command(0x0c);// 开显示,关光标,不闪烁
w_command(0x06);// 指针加1,显示不移动
w_command(0x01);// 清屏
}

void w_data(unsigned char num)//写入字符显示
{
rs=1;
rw=0;
P3=num;
e=1;
delay(3000);
e=0;
}

void main()
{
int i;

init_lcd();

while(1)
{
w_command(0x80);
i=0;

while(s[i]!='\0')
{
w_data(s[i]);
delay(6000);
w_command(0x1c);
i++;
if(i==16)w_command(0xc0);
}
}
}

B. 单片机如何驱动LCD显示字符

首先你要确定你的LCD是什么型号,是否有字库 等等, 而后对应找这个型号的datasheet 查看怎么驱动他。一般都会有例子,多逛逛单片机论坛吧 有用的。别老来网络问些不知道怎么回答的问题
下面我给一个单片机驱动1602液晶的部分代码,希望有用。
/*******************************************************************************
1602LCD
*******************************************************************************/
#include <reg51.h>
#include <intrins.h>
#define unit unsigned int
#define char unsigned char

sbit rs = P2^1;
sbit rw = P2^2;
sbit ep = P2^0;
char code ask[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xb0};
/* 0 1 2 3 4 5 6 7 8 9 - */
char code dis1[] = {"welcome!"};
char code dis2[] = {"pzowen love you!"};

//***********************************************//
//***********************************************//
///////////////////////////////////////////////////
///////////////////////////////////////////////////
delay(char ms)
{ // 延时子程序
char i;
while(ms--)
{
for(i = 0; i<250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

lcd_wcmd(char cmd)
{ // 写入指令数据到LCD
delay(1);
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;

}

lcd_pos(char pos)
{ //pos=0x40; //设定显示位置
lcd_wcmd(pos|0x80);
//lcd_wcmd(pos);

}

lcd_wdat(char dat)
{ //写入字符显示数据到LCD
delay(1);
rs = 1;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;

}

lcd_init()
{
delay(1); //LCD初始化设定
lcd_wcmd(0x38); //显示模式设置:单行,8字符,5x7点阵
delay(1);
delay(1);
lcd_wcmd(0x0c); //开显示,关光标,不闪烁
delay(1);
delay(1);
lcd_wcmd(0x06); //设置输入模式:光标增量移动,显示不移位
delay(1);
delay(1);
//lcd_wcmd(0x01); //清除LCD显示的内容
//delay(1);

}

void main()
{
char i;
char k;
lcd_init(); // 初始化LCD
delay(10);
lcd_pos(0x04); // 设置显示位置为第一行的第5个字符
i = 0;
while(dis1[i]!='\0')
{ // 显示字符"welcome!"
lcd_wdat(dis1[i]);
//lcd_wdat(ask[xianshi[i]]);
delay(30);
i++;
}
//lcd_wdat(xianshi[1]);
//delay(30);

delay(20);
lcd_init();
delay(10);
lcd_pos(0x40); // 设置显示位置为第二行第二个字符
delay(10);
i = 0;
while(dis2[i]!='\0')
{
lcd_wdat(dis2[i]); // 显示字符" "
//lcd_wdat(ask[xianshi[i]]);
delay(30);
i++;
}

C. 单片机做1602液晶显示,显示字符错误,代码如下:

你好,只要说你的单片机能工作起来,就没有问题,如果单片机都没有工作起来,那就谈不上驱动了!在单片机能动作的前提下,要是保证程序没有错的情况下,应该是液晶屏的那个调压电阻没有调好的原因,使液晶的显示对比度不好,看不见字符的原因。驱动1602的程序网上很多的,下一个就可以用的,主要是硬件的那个液晶的显示对比调节要调节好才能看到!希望能帮上你!这个链接是程序:
http://download.csdn.net/source/1580412

D. 单片机怎么把整型数据转化成字符型由LCD屏显示

将整形数据转换为字符型很简单,就是将数字变成ASCII形态就可以了。如果是汇编的话,方法是:
1、将数据转换为BCD码。
2、将每一个BCD码加30H。
3、将结果送显示
如果是C语言的话,更简单,直接分离每一位数,然后加0x30就可以了。
举例如下。
比如无符号整型量送显。
disp(unsigned
int
x)
{
unsigned
char
a,b,c,d,e;
a=x/10000+0x30;
b=(x/1000)%10+0x30;
c=(x/100)%10+0x30;
d=(x/10)%10+0x30;
e=x%10+0x30;
......................
}

E. 上位机给51单片机传送ASCII码,单片机如何在液晶中显示出来对应的字符呀

如果液晶能直接显示ASCII码的啊,比如上位机向单片机传送‘HELLO’字符串,这就是ASCII码组成的,即直接送到液晶上显示即可。
但是有的液晶不能直接显示,那就把ASCII码对应的字模送到屏幕上显示了。

F. 51单片机如何在1602液晶屏上显示一个字母

/*-----------------------------------------------
名称:LCD1602
内容:通过标准程序静态显示字符
引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>

sbit RS = P2^4; //定义端口
sbit RW = P2^5;
sbit EN = P2^6;

#define RS_CLR RS=0
#define RS_SET RS=1

#define RW_CLR RW=0
#define RW_SET RW=1

#define EN_CLR EN=0
#define EN_SET EN=1

#define DataPort P0
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
判忙函数
------------------------------------------------*/
bit LCD_Check_Busy(void)
{
DataPort= 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit)(DataPort & 0x80);
}
/*------------------------------------------------
写入命令函数
------------------------------------------------*/
void LCD_Write_Com(unsigned char com)
{
while(LCD_Check_Busy()); //忙则等待
RS_CLR;
RW_CLR;
EN_SET;
DataPort= com;
_nop_();
EN_CLR;
}
/*------------------------------------------------
写入数据函数
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
{
while(LCD_Check_Busy()); //忙则等待
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
}

/*------------------------------------------------
清屏函数
------------------------------------------------*/
void LCD_Clear(void)
{
LCD_Write_Com(0x01);
DelayMs(5);
}

/*------------------------------------------------
写入字符函数
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xC0 + x);
}
LCD_Write_Data( Data);
}
/*------------------------------------------------
初始化函数
------------------------------------------------*/
void LCD_Init(void)
{
LCD_Write_Com(0x38); /*显示模式设置*/
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08); /*显示关闭*/
LCD_Write_Com(0x01); /*显示清屏*/
LCD_Write_Com(0x06); /*显示光标移动设置*/
DelayMs(5);
LCD_Write_Com(0x0C); /*显示开及光标设置*/
}

/*------------------------------------------------
主函数
------------------------------------------------*/
void main(void)
{
LCD_Init();
LCD_Clear();//清屏
while (1)
{
LCD_Write_Char(7,0,'o');
LCD_Write_Char(8,0,'k');
while(1);
}
}

G. 单片机中 LCD1602不能显示字符



#include<reg52.h>//51单片机相关库
typedefunsignedintuint;//数据类型重新定义
typedefunsignedcharuchar;
sbitLCD_RS=P2^0;//数据/命令选择位
sbitLCD_RW=P2^1;//读/写选择位
sbitLCD_EN=P2^2;//使能信号
ucharlcd_tab[]={"www.mcuc.com.cn"};//第一行显示的字符串
ucharlcd_tab1[]={"ILOVEMCU"};//第二行显示的字符串
/**********************************************************************
*函数名称:_delay_ms
*输入:uintx
*输出:无
*功能:延时函数
**********************************************************************/
void_delay_ms(uintx)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
/**********************************************************************
*函数名称:LCD_Write_Command
*输入:ucharcmd
*输出:无
*功能:向LCD1602写指令
**********************************************************************/
voidLCD_Write_Command(ucharcmd)
{
LCD_RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令
LCD_RW=0;
LCD_EN=0;//EN置低电平
P0=cmd;//将数据送入P2口,即写入指令或地址
LCD_EN=1;//EN置高电平
_delay_ms(1);//稍延时,给硬件反应时间
LCD_EN=0;//当EN由高电平跳变成低电平时,液晶模块开始执行命令
}
/**********************************************************************
*函数名称:LCD_Write_Data
*输入:uchardat
*输出:无
*功能:向LCD1602写数据
**********************************************************************/
voidLCD_Write_Data(uchardat)
{
LCD_RS=1;//RS为高电平,RW为低电平时,可以写入数据
LCD_RW=0;
LCD_EN=0;//EN置低电平
P0=dat;//将数据送入P0口,即将数据写入液晶模块
LCD_EN=1;//EN置高电平
_delay_ms(1);//稍延时,给硬件反应时间
LCD_EN=0;//当EN由高电平跳变成低电平时,液晶模块开始执行命令
}
/**********************************************************************
*函数名称:Init_LCD
*输入:无
*输出:无
*功能:初始化LCD1602
**********************************************************************/
voidInit_LCD(void)
{
LCD_Write_Command(0x38);//显示模式设置:16×2显示,5×7点阵,8位数据接口
_delay_ms(1);
LCD_Write_Command(0x06);//显示模式设置:光标右移,字符不移
_delay_ms(1);
LCD_Write_Command(0x0c);//显示模式设置:显示开,无光标,光标不闪烁
_delay_ms(1);
LCD_Write_Command(0x01);//清屏幕指令,将以前的显示内容清除
_delay_ms(1);

}
/**********************************************************************
*函数名称:LCD_POS
*输入:ucharpos
*输出:无
*功能:字符显示位置
**********************************************************************/
voidLCD_POS(ucharpos)
{
LCD_Write_Command(0x80|pos);//显示位置的确定方法规定为"80H+地址码x"
}
/**********************************************************************
*函数名称:Show_String
*输入:uchar*str
*输出:无
*功能:LCD1602显示字符串处理函数
**********************************************************************/
voidShow_String(uchar*str)
{
while(*str!='')//只要没有写到结束标志,就继续写
LCD_Write_Data(*str++);//将字符常量写入LCD,并指向下一个字符
}
/**********************************************************************
*函数名称:main
*输入:无
*输出:无
*功能:函数主体
**********************************************************************/
voidmain(void)
{
Init_LCD();
while(1)
{
LCD_POS(0);//第一行第一列开始显示
Show_String(lcd_tab);//将lcd_tab数组字符串写入LCD显示出
LCD_POS(0x40);//第二行第一列开始显示
Show_String(lcd_tab1);//将lcd_tab1数组字符串写入LCD显示
}
}
/*
代码讲解:本程序是以51单片机的LCD1602液晶屏显示字符串,第一行将显示

,第二行将显示ILOVEMCU,本程序主要是掌握LCD1602液晶屏的时序操作,
*/

H. 51单片机如何一边用蜂鸣器播放音乐,一边用LCD显示字符啊

看你的这个设计意图,好像是要设计一个能显示歌词的音频播放器。这样的东西,你可以这样考虑,每播放一个小节的谱子,然后给LCD送这一个段的歌词。顺便让整个屏幕的歌词移动一定的距离。这样要看具体的歌曲,你要仔细规划下歌词的显示次序。
对于51系列的单片机属于单cpu的器件。要实现这样的多任务,就是变播放变显示,只有一个办法,那就是分时复用。简单来说就是主要时间播放音乐,每一个小节的间隙给LCD送显示内容,然后立即又返回去播放音乐。。。如此循环。
如果是2个人合作的,那要不就弄2个51单片机。一个用来播放音乐,一个用来显示。2个之间可以通过串口共享数据资源。这样就相当于现在的双核的桌面PC/

I. 单片机是怎样在液晶上显示字符

常用的LCD有1602,可以查找其硬件电路,其程序也很容易找到,这是其常用的子程序:
sbit
rw=P1^4;//定义管脚,3个控制引脚
1个8位数据口
sbit
rs=P1^3;
sbit
lcden=P1^5;
#define
db
P2
void
write_com(uchar
com)//液晶屏写命令

J. 怎么用单片机让LCD显示呢

用单片机让LCD显示,一要保证电路正确,二是程序必须与电路相符,程序中的LCD的控制脚必须与实物相符。否则,液晶屏只亮并不显示字符。你主程序中的液晶屏初始化语句应放在第一行。你现在是放在最后了,假如前面语句显示了,可初始化后就全没了。

阅读全文

与单片机lcd屏显示字符相关的资料

热点内容
超声雾化器与压缩雾化器 浏览:641
模拟实现进程调度算法 浏览:388
现在的压缩包都是加密 浏览:331
施工员找工作去哪个app 浏览:632
安卓手机的游戏怎么打开 浏览:200
pdf扫描转文字 浏览:532
微机室里面的云服务器 浏览:108
excel能编程吗 浏览:931
android系统框架的介绍 浏览:947
无盘系统服务器如何配置 浏览:836
背负贷款如何缓解压力 浏览:82
linux获取日期时间 浏览:881
搬砖问题最合适的算法 浏览:446
小米安卓机密码忘记了如何解锁 浏览:910
产电plc编程手册 浏览:761
vscodephp 浏览:535
阿里云linux桌面 浏览:754
php二维数组搜索 浏览:116
ps快捷命令工具箱 浏览:253
c4d教程pdf 浏览:462