Ⅰ 利用51单片机控制LCD12864显示一串数字比如:123456789可以通过一个按键控制显示的数字一个一个删除吗
可以的,直接定位,和写数字一样,只是写的0x00就可以,
Ⅱ 关于单片机的LCD显示问题
1.LCD1602是并行数据接口,就要D0~D7同时输入8位数,不可以只送一位数。所以,接单片机的四个并行口P0,P1,P2,P3的任一个都行,只是习惯上都接在P0口上,但不是固定这样的。
2.必须同时给8位数,如果只给一位,LCD1602也会按8位数接收的,其余7位就是未知的,也就没有意了。
3.D0~D7送出的数据分命令字和显示字符,显示的字符是ASCll码形式。要显示浮点数,需要把每一位数转换成字符。例,数字1,内部计算是0X01,但要变成字符'1',即0X31。
4.在哪行显示,先要写一个命令字确定位置,不会自动换行。
最后,你还是先看看有关1602的一些介绍,有个初步了解,很多基础的东西看了就明白,否则,提问的都是很低级的东西。
Ⅲ 单片机怎么把一个实时的数字显示到液晶屏12864(带字库)上
可以直接赋值,代码如下 ,
写指令显示那一行 void lcd_wcmd(0x80)第一行 ,
数据void lcd_wcmd(temp )
Ⅳ 做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看
程序只是没有逻辑错误和语法错误,但液晶的控制貌似有些问题。给你一段1602的驱动程序做参考。
#define LCD1602_FLAG
#define LCD1602_PORT P1
#include<reg52.h>
#include<stddef.h>
#include"dtype.h"
sbit lcd1602_rs=P3^7;
sbit lcd1602_e=P3^5;
sbit lcd1602_rw=P3^6;
sbit lcd1602_busy=P1^7;
/*
************************************
* 函数名称:lcd1602_CheckBusy()
* 函数功能:状态查询
************************************
*/
void lcd1602_CheckBusy()
{
do
{
lcd1602_busy=1;
lcd1602_rs=0;
lcd1602_rw=1;
lcd1602_e=0;
lcd1602_e=1;
}
while(lcd1602_busy);
}
/*
***************************************
* 函数名称: lcd1602_WriteCmd()
* 函数功能:写命令
* 入口参数:命令字
* 出口参数:无
***************************************
*/
void lcd1602_WriteCmd(const INT8U cmd)
{
lcd1602_CheckBusy();
lcd1602_rs=0;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=cmd;
lcd1602_e=0;
}
/*
*******************************************
* 函数名称:lcd1602_WriteData()
* 函数功能:写数据
* 入口参数:c--待写数据
* 出口参数:无
*********************************************
*/
void lcd1602_WriteData(const INT8U c)
{
lcd1602_CheckBusy();
lcd1602_rs=1;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=c;
lcd1602_e=0;
}
/*
***********************************************
* 函数名称:lcd1602_Init()
* 函数功能:初始化LCD
* 入口参数:无
* 出口参数:无
***********************************************
*/
void lcd1602_Init()
{
lcd1602_WriteCmd(0x38); //显示模式为8位2行5*7点阵
lcd1602_WriteCmd(0x0f); //display enable,flag enable,flash enable,
lcd1602_WriteCmd(0x06); //flag move to right,screen don't move
lcd1602_WriteCmd(0x01); //clear screen
}
/*
************************************************
* 函数名称:lcd1602_Display()
* 函数功能: 字符显示
* 入口参数:ptr--字符或字符串指针
* 出口参数:无
* 说 明:用户可通过以下方式来调用:
* 1)lcd1602_Display("Hello,world!");
* 2) INT8U 存储类型 txt[]="要显示的字符串";
* 或者 INT8U 存储类型 txt[]={'t','x','t',..,'\0'};
* INT8U *ptr;
* ptr=&txt;
* lcd1602_Display(ptr);
* 或 lcd1602_Display(txt);
* 或 lcd1602_Display(&txt);
************************************************
*/
void lcd1602_Display(const INT8U *ptr)
{
INT8U data i=0;
INT8U *data q;
q=ptr;
lcd1602_WriteCmd(0x80);
while(q!=NULL && (*q!='\0') && i<16)
{
lcd1602_WriteData(*q);
q++;
i++;
}
lcd1602_WriteCmd(0xc0);
while(q!=NULL && (*q!='\0') && i>=16 && i<32)
{
lcd1602_WriteData(*q);
q++;
i++;
}
}
Ⅳ c51单片机怎样让液晶显示数字999
这是我的程序,不过 不同的板子程序是不一样的,具体要看你的I/O口了
#include<reg52.h>
#define uchar unsigned char
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit la=P2^6;
sbit wela=P2^7;
void write_com(uchar);
void write_date(uchar);
void init();
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
init();
write_date('999');
while(1);
}
void init()
{
la=0;
wela=0;
lcdrs=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
Ⅵ 51单片机lcd1602如何显示数字变量
1602是可以显示字符的,如'1','2'等,可以设置一个字符串,如char AA[]={'0123456789'}
那么设置一个变量i, AA[i]就行了,
Ⅶ 关于单片机用液晶屏显示数字的问题
用液晶显示数字比起用数码管来说更方便,采用7段数码管来显示,需要定时扫描,打个类似的比方:就犹如动态RAM和静态RAM一样,用液晶显示,只要初始化后,送位置和显示内容就可以了。总体价格更便宜,比如1602液晶,不到20元钱,但可以显示两行共32个字符,而32个数码管,总的价格要到50元左右,相差还是很大的。