谁有LCD1602程序 发过来看看 自己写的测忙函数老是出b...
发布网友
发布时间:2023-11-14 20:13
我来回答
共1个回答
热心网友
时间:2024-07-23 11:58
本程序已通过实际电路检测
#include<reg52.h>
#define uchar unsigned char
sbit rs=P2^0; //lcd1602 rs端
sbit rw=P2^1; //lcd1602 rw端
sbit en=P2^2; //lcd1602 e端
uchar code table[]="wang yun";
uchar code tt1[]={0x1F,0x1F,0x04,0x0E,0x0E,0x04,0x1F,0x1F}; //王
uchar code tt2[]={0x0E,0x0E,0x00,0x1F,0x1F,0x0C,0x19,0x1F}; //云
///////////////////////////////////////
void delay(uchar H,uchar L) //定时器延时程序段
{ TF0=0;TH0=H;TL0=L;
while(!TF0);
}
////////////////////////////////////// 写指令程序段
void w_comd(uchar lcd1602_code)
{ en=1;rs=0;rw=0;
P0=lcd1602_code;
delay(0xff,0xd8);
en=0; //en端下降沿触发数据发送
delay(0xff,0xd8); //本程序没有 忙检测程序,所以此处必须给足够长的延时,保证数据发送完全
}
///////////////////////////////////////写数据程序段
void w_data(uchar lcd1602_data)
{ en=1;rs=1;rw=0;
P0=lcd1602_data;
delay(0xff,0xd8);
en=0; //en端下降沿触发数据发送
delay(0xec,0x78);
}
//////////////////////////////////// 初始化lcd1602
void set_lcd1602()
{ w_comd(0x01); //清屏
delay(0xf9,0x98);
w_comd(0x02); //地址指针归位
delay(0xf9,0x98);
w_comd(0x06); //
w_comd(0x0c); //开显示屏
w_comd(0x38); //8位传送数据 2行显示
}
/////////////////////////////////// 显示程序段
void view_lcd1602(uchar addr,uchar *i) //*i为所传字符串指针
{ int j;
w_comd(addr); //写入地址
while(*i>0)
{ w_data(*i); //写入数据
i++;
for(j=0;j<=100;j++)
delay(0x15,0xa0);
w_comd(0x18); //左移指令
}
}
/////////////////////////////////////// cgram写入程序段
void cgram_set_lcd1602(uchar addr,uchar*i)
{ int j;
w_comd(addr); //地址写入
for(j=0;j<8;j++)
{ w_data(*i); //自定义数据写入
i++;
}
}
////////////////////////////////////// 主程序
void main()
{
TMOD=0x00; //设定定时器
TR0=1; //定时器0开
set_lcd1602(); //初始化LCD1602
view_lcd1602(0x8f,table);
cgram_set_lcd1602(0x40,tt1);
cgram_set_lcd1602(0x48,tt2);
w_comd(0xca); w_data(0x00); w_data(0x01); //自定义字符显示
while(1);
}
LCD1602为什么有时要测忙
因为LCD1602控制芯片也是一个CPU,它在处理上位机发来的某些指令的时候,耗时较长。如复位命令,全屏清除命令等。另外,LCD1602的CPU速度较慢,上位机较快时,LCD1602CPU 来不及完成上条命令,会对后续命令不予理睬,这样就造成了命令序列不能正确完整地到达LCD1602CPU,以至于显示不正常。
stm32是什么?stm32的简介
STM32是一种32位的微控制器,由意法半导体(STMicroelectronics)公司设计和生产。STM32是一种非常常见的嵌入式系统芯片,广泛应用于物联网、汽车、工业控制、医疗设备等领域。STM32具有以下特点:1. 体积小巧:STM32 微控制器体积小巧,可以集成到各种电子设备中。2. 低功耗:STM32 微控制器功耗低,可以节省能源和电力成本。3. 高性能:STM32 微控制器性能优异,可以实现高速处理、复杂控制和高精度操作。4. 丰富的外设:STM32 微控制器拥有丰富的外设,例如GPIO、UART、SPI、I2C等,可以方便地连接外部器件。5. 强大的资源:STM32 微控制器内置了…STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服务、安防监控等应用领域,其优异的性能进一步推动了生活和产业智能化的发展。意法半导体致力于引领单片机技术和产品的创新,推动生态系统的建设,为用户提供满意的产品和技术服...
LCD1602,我一开始烧进51单片机后,1602第一行全黑,第二行亮着,就是显 ...
调节一下1602 第三个管脚接的滑动变阻器
这条lcd1602的C程序怎么总是有错误的?
showchar(l++,*(ptr+i));} /***ptr类型声明有问题吧,还有showchar两个参数之间要用逗号,要全小写,跟上面的保持一致,指针变量ptr要明确声明unsigned char *ptr,还有,如果你的字符串不够16个这样就不太好吧,改一下吧:***/ void ShowString(unsigned char line,unsigned char *ptr){ unsigne...
请问下面程序有什么错?LCD1602+AT89S52。结果上面一排全黑,下面一排...
LCD1602+AT89S52。结果上面一排全黑,下面一排无显示 #include<reg52.h>#defineLCDP0sbitRS=P3^7;sbitRW=P3^6;sbitEN=P3^5;bitCheckBusy()//LCD忙碌检测,忙碌返回1,空闲返回0{biti;LCD=0xFF;RS=0;RW=1;EN=1;if(LCD&0x80)i=1;elsei=0;EN=... #include<reg52.h>#define LCD P0sbit RS=P3^7...
lcd1602的启动时,需要先调用一次什么函数
lcd1602的启动时,需要先调用一次函数:LCD1602是一个可以显示两行字符的LCD显示器,每一行可以都写入40个字符。写入1602中要显示的数据好比油,如果以单片机的高运行速度向1602写数据就很可能造成上面所说的溢出,比如连续写入abc,结果只显示出了a,这是因为1602的显示芯片每次都要花时间来处理输入的ascii码...
LCD1602用C语言编程如何显示字符?
define _LCD_BIT_IS 4 //CPU与LCD1602间使用DB7-DB4这4根数据线进行传输 include <at89x51.h> //头文件 include <string.h>//strlen()函数头文件 void LCMInit(void); //LCM初始化化 void WriteDataLCM(unsigned char WDLCM);//写数据 void WriteCommandLCM(unsigned char WCLCM,int Buy...
LCD1602液晶显示出现乱码,求高手解惑!急!!!谢谢
LCD1602_delay();LCD1602_EN = 1;LCD1602_delay();LCD1602_EN = 0;} / 名称 : LCD1602_wdata(uchar del)功能 : 1602写数据函数 输入 : 需要写入1602的数据 输出 : 无 / void LCD1602_wdata(uchar del){ while(Busy());LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_EN = 0;LCD1602_delay(...
lcd1602液晶显示的程序
void SMC1602_WriteByte(bit write_type,uchar write_data)//1602液晶屏读函数 { uchar i=BusyReadCount;for(;i;i--);//延时操作,为写操作预留回复时间 while((SMC1602_Read(CommOperate)&BusyState) &&(++i<=BusyReadCount));//读取忙标志(BusyReadCount次),若均忙中,则不再读取忙标志,...
LCD1602第一行显示为16个小黑块,仿真没问题,但是烧写到板子里就有问题...
比如要显示abc,则这样操作,写a---判忙---写b---判忙---写c---判忙。这样就不会出错了。这几年推出的lcd,像手机的屏响应速度就比较快,而1602这个古董我用示波器测过,大约40us左右的忙处理时间,而很多速度快的单片机的指令周期都是ns级的。也就是说单片机相当一段时间都在‘等’LCD。incl...
AVR上面lcd1602只亮不显示,但是写入程序之后屏幕一直在闪烁
写个简单数字程序 看看先不显示数字 在检查一下温度传感器 其他都对 那就是温度传感器的问题 要不你现在开发板上面 看看 温度传感器好不好用!