导航:首页 > 操作系统 > 单片机大液晶屏显示数字

单片机大液晶屏显示数字

发布时间:2022-12-21 04:13:30

A. 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;
}

B. 做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看

程序只是没有逻辑错误和语法错误,但液晶的控制貌似有些问题。给你一段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++;
}
}

C. 单片机控制液晶屏显示

解决方法:1.单片机更换为5V的单片机;2.液晶更换为3.3V的液晶;3.将单片机管脚高电平抬高至5V。
原因说明:我们现在所用的绝大多数的可编程芯片(这里面包含了你的单片机和液晶驱动芯片)均为CMOS芯片。5V供电的液晶屏,内部搭载了5V的CMOS驱动芯片来让液晶屏显示东西。CMOS器件有这样一个规定:高电平,即数字信号“1”的电压范围是3.5V-5V,低电平,即数字信号“0”的电压范围是0-1.5V。在这两个电压范围之外的,CMOS芯片将无法判别是高电平还是低电平。
所以,3.3V的单片机在输出低电平时可以被液晶CMOS芯片识别,而输出高电平时,单片机管脚为3.3V(单片机的工作电压3.3V,无法输出更高的电压)这不在CMOS期间的电平识别范围内,无法判别信号是0还是1。所以,液晶工作不正常。

D. 如何用51单片机在LCD12864上显示数字

利用51单片机控制lcd12864显示一串数字比如:123456789可...
际上很简单,刷新而已,你让他按一下就在程序里去一个数字,然后刷新lcd的显示不就得了。

E. 单片机怎么把一个实时的数字显示到液晶屏12864(带字库)上

可以直接赋值,代码如下 ,
写指令显示那一行 void lcd_wcmd(0x80)第一行 ,
数据void lcd_wcmd(temp )

F. 51 单片机1602 液晶显示数字

1602显示要转换为ANSI码
如:
1602液晶要显示数字5-----
把0x35送1602的显示RAM(因为数字5的ANSI码是0x35)

G. 51单片机lcd1602如何显示数字变量

1602是可以显示字符的,如'1','2'等,可以设置一个字符串,如char AA[]={'0123456789'}
那么设置一个变量i, AA[i]就行了,

H. 用51单片机控制1602液晶显示10进制数字~~

我自己函数库里面的,加点端口定义就o了unsigned char line1[16]={" Calculator "}; //液晶屏第一行内容
unsigned char line2[16]={" 0"}; //液晶屏第二行内容
unsigned char yuan[16];
unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9'}; /********TIME DELAY********/
void delay5ms()
{unsigned int i; <br>for (i=0;i<1000;i++); <br>}

void delay50us()
{register int i; <br>for (i=0;i<20;i++); <br>}

void delay()
{unsigned char m,n; <br>for(m=50;m>0;m--) <br>for(n=255;n>0;n--);} /****************************************
函数名:WR_COM
功能:向FM1602C写入控制字符
入口参数:控制字符
出口参数:
****************************************/
void wr_com(unsigned char comm)//控制字符写入
{
LCDE=0;
RS=0;
RW=0;
LCDE=1;
Ddata=comm;
RS=0;
RW=0;
LCDE=0;
}
/****************************************
函数名:WR_DATA
功能:向FM1602C送入数据
入口参数:写入字符
出口参数:
****************************************/
void wr_data(unsigned char dat)//数据写入
{
LCDE=0;
RS=0;
RW=0;
RS=1;
RW=0;
LCDE=1;
Ddata=dat;
LCDE=0;
RS=0;
RW=0;
}
/****************************************
函数名:BUSYCHECK
功能:检测FM1602C状态
入口参数:
出口参数:i=0 空闲;i=1 忙
****************************************/
unsigned char busycheck()//忙状态检查
{
unsigned char i;
LCDE=0;
RS=0;
RW=0;
RS=0;
RW=1;
LCDE=1;
i=Ddata;
LCDE=0;
return(i);
}
/****************************************
函数名:INIT
功能:初始化FM1602C
入口参数:
出口参数:
特殊说明:显示模式8位双行显示
AC加一计数,禁止画面滚动
****************************************/
void init() //LCD初始化
{
wr_com(0x38); //显示模式设置三次
delay5ms();
wr_com(0x38);
delay5ms();
wr_com(0x38);
delay5ms();
wr_com(0x01);
delay5ms();
busycheck();
delay5ms();
wr_com(0x06);
delay5ms();
busycheck();
delay50us();
wr_com(0x38);
delay50us();
busycheck();
delay50us();
wr_com(0x0c); //开启画面显示
delay50us();
busycheck();
delay50us();
wr_com(0x40);
delay50us();
delay50us();
}

/****************************************
函数名:DISPLAY
功能:将双行数据从P0口输出
入口参数:
出口参数:
****************************************/
void display()
{
unsigned char i;

wr_com(0x80);
delay50us();
busycheck();
delay50us();
for(i=0;i<16;i++)
{
wr_data(line1[i]);
delay50us();
busycheck();
}

busycheck();
delay50us();

wr_com(0xc0);
delay50us();
busycheck();
delay50us();
for(i=0;i<16;i++)
{
wr_data(line2[i]);
delay50us();
busycheck();
}
}

I. 【单片机】如何用1602液晶显示十六进制数

嗯,大概就是这个样子...
可能会有拼写错误,自己检查下...
//-----------------------------------------
unsigned char hex_table[16] =
{
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
};
//------------------------------------------
void display_num(unsigned int num)
{
unsigned int a, b, c, d;

a = (num/256)/16; //取高字节的高4位
b = (num/256)%16; //取高字节的低4位

c = (num%256)/16; //取低字节的高4位
d = (num%256)%16; //取低字节的低4位

write_com(0x80); //显示的初始地址

// write_data('n');
// write_data('u');
// write_data('m');
// write_data('=');
// write_data('0');
// write_data('x');
write_data(hex_table[a]);
write_data(hex_table[b]);
write_data(hex_table[c]);
write_data(hex_table[d]);
}
//------------------------------------------

J. 关于单片机用液晶屏显示数字的问题

用液晶显示数字比起用数码管来说更方便,采用7段数码管来显示,需要定时扫描,打个类似的比方:就犹如动态RAM和静态RAM一样,用液晶显示,只要初始化后,送位置和显示内容就可以了。总体价格更便宜,比如1602液晶,不到20元钱,但可以显示两行共32个字符,而32个数码管,总的价格要到50元左右,相差还是很大的。

阅读全文

与单片机大液晶屏显示数字相关的资料

热点内容
如何知道服务器有什么漏洞 浏览:902
java电商订单支付源码 浏览:102
android手机鼠标 浏览:465
php支付项目经验 浏览:929
中国人民银行在哪里下载app 浏览:560
松饼pdf 浏览:667
萌新如何获得命令 浏览:138
java设计模式及代码 浏览:7
命令恢复数据库 浏览:192
linuxoracle11gr2 浏览:972
携程APP签到在哪里 浏览:389
dwg解压方法 浏览:422
云服务器数据沟通 浏览:849
android地图定位源码 浏览:632
鸿蒙系统如何解除app安装限制 浏览:497
阿里云服务器应用镜像选哪个 浏览:343
win7策略更新命令 浏览:299
android源码分析之设计模式 浏览:294
qq邮箱上的文件怎么解压在电脑上 浏览:504
业余学python是如何挣钱的 浏览:416