用89C52单片机驱动1602液晶,怎么才能瞬间显示一行字母?(用汇编和用C,有区别吗)

作者&投稿:空泼 (若有异议请与网页底部的电邮联系)
AT89c52单片机液晶显示(1602为例)显示一行字~

#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LIKE MCU!";
uchar code table1[]="WWW.TXMCU.COM";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;


void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}

void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x10);
}
void main()
{
init();
for(num=0;num<11;num++)
{
write_data(table[num]);
delay(20);
}
//write_com(1);
write_com(0x80+0x53);
for(num=0;num<13;num++)
{
write_data(table1[num]);
delay(20);
}
for(num=0;num<16;num++)
{
write_com(0x18);
delay(20);
}
while(1);
}

#include
#include
#define uc unsigned char
#define ut unsigned int
uc a;
uc code table[]={"BEYOND HKTK"};
uc code table1[]={"happiness"};
sbit rs=P2^2;
sbit rw=P2^3;
sbit en=P2^4;
/*
#define rs P2_2
#define rw P2_3
#define en P2_4 */
void delay(ut x) //延时函数
{
ut i,j;
for(i=x;i>0;i--)
for(j=124;j>0;j--);
}
void write_com(uc com) //写指令函数
{
rw=0;
rs=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
void write_dat(uc dat) //写数据函数
{
rw=0;
rs=1;
P0=dat;
delay(5);
en=1;
delay(5);
en=0;
}
void lcd_init() //液晶初始化
{
rw=0;
en=0;
write_com(0x38); //设定16*2显示 5*7点阵 8位数据接口
write_com(0x0c); //设置开显示,不显示光标 // write_com(0x0e); //显示光标 不闪烁
write_com(0x06); //写一个字符后地址指针加1
write_com(0x80+0x01);
write_com(0x01); //显示清0 数据指针清 0
}
void main() //主函数
{
lcd_init();
for(a=0;a<11;a++)
{
write_dat(table[a]);
delay(100);
}
//write_com(0x01);
delay(500);
write_com(0x80+0x44); //换行指令
for(a=0;a<9;a++)
{
write_dat(table1[a]);
delay(100);
}
while(1);
}

啥叫瞬间显示啊?

如果是闪一下,可以先显示再擦除。(不过有啥用呢?测试相机?)

如果问题是不知道如何显示,方法一般是:先使能;再进行模块初始化;再写控制字;再写数据;写操作不要忘记判忙(busy=1)。

汇编与c对于但片机没有任何区别,对于使用者,比如你,也不应该有本质的区别。好的工程师是应该知道一条c语句编译出什么样的汇编语句的,所以他们在写c语句的时候是在选择更高效率的语句和结构。

#include<reg51.h>
#include <intrins.h>

typedef unsigned char BYTE;
typedef bit BOOL;

sbit LCD_RS = P2^5;
sbit LCD_RW = P2^6;
sbit LCD_EP = P2^7;
char num;
unsigned char code table[]="I Love Yuo";
unsigned char code table1[]="Do You Love Me?";

/*延时程序*/
void delay2(unsigned char i)
{while(--i);}

void delay8(unsigned int t)
{while(--t);}

void delay_50ms(unsigned int i)
{
int j;
while(--i)
for(j=6245;j>0;j--)
{;}
}

BOOL lcd_bz()
{ // 测试LCD忙碌状态
BOOL result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EP = 1;
delay2(2);
result = (BOOL)(P0 & 0x80);
LCD_EP = 0;
return (result);
}

lcd_wcmd(BYTE cmd)
{ // 写入指令数据到LCD
while(lcd_bz());
LCD_RS = 0;
LCD_RW = 0;
LCD_EP = 0;
P0 = cmd;
//delay2(2);
LCD_EP=1;
delay2(4);
LCD_EP=0;
}
/* lcd_pos(BYTE pos)
{ //设定显示位置
lcd_wcmd(pos | 0x80);
} */

lcd_wdat(BYTE dat)
{ //写入字符显示数据到LCD
while(lcd_bz());
LCD_RS = 1;
LCD_RW = 0;
LCD_EP = 0;
P0 = dat;
LCD_EP=1;
delay2(4);
LCD_EP=0;
}

lcd_init()
{
delay8(1900); //LCD初始化设定
lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
delay8(625);
lcd_wcmd(0x0c); //显示开,关光标
delay8(625);
lcd_wcmd(0x06); //移动光标
delay8(625);
lcd_wcmd(0x01); //清除LCD的显示内容
delay8(625);
}

/*main()
{
delay8(1900);
lcd_init();
lcd_wdat(tab[1]);
delay8(1000);
{
while(1);
}

} */
void main()
{
lcd_init();

for(num=0;num<11;num++)
{
lcd_wdat(table[num]);
delay_50ms(10);
}
lcd_wcmd(0x80+0x40);
for(num=0;num<16;num++)
{
lcd_wdat(table1[num]);
delay_50ms(10);

}
delay_50ms(10);

}

用C很方便 逐字和一起都可以!!!有需要可以给个程序给你参考

在你的延时程序上吧

将显示每个字符后的延时时间缩短,试试吧

把QQ告诉我,Q上谈


89c52多少v驱动
89c525v驱动。该芯片支持电平范围为2.7V-3.6V,过电平造成损坏芯片,而89C52的IO电平为5V。利用电脑的USB接口可以提供5V电压来驱动单片机。

单片机89c52如何控制多个数码管?
1.用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。2.用P3口的4位接一个BCD译码器控制数码管的段码,再P3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。3.用P3口的两根串行线接串并转换IC,来驱动数码管。

89c52单片机,点阵8*8 这样驱动妥不妥,哪还不很妥,求大神
P1口供电不行啊,要加上驱动电路的,朋友!否则电流不够,亮度会很低的。

单片机89C52连接4位共阴极数码管实现动态显示需要加负载驱动吗?_百度...
89C52的输出电流能力很若,吸收电流能力很强。因此,采用共阴极数码管需要加负载驱动,你若采用共阳极的数码管(低电平驱动),就无需驱动了,实际好需要加电阻限流。

89C52单片机可以控制伺服电机吗?
控制电机肯定是可以。但控制伺服电机,不确定性能够不够,控制周期长,对系统性能肯定有影响。

89c52单片机怎么用4个针脚控制几个4相5线步进电机
89c52单片机用4个针脚控制几个4相5线步进电机的方法:1、用两片74HC595,串转并,扩展出16个端口,可以控制4个步进电机;2、可以给同时几个驱动模块发电平,可以驱动无数个电机的,输出4路PWM,然后再用一片89C52。因为即使用专用的步进电机驱动芯片,也至少得2个IO控制一个电机。89C52是INTEL公司MCS-...

请问89c52单片机一个IO口可以带动多少颗LED?
最多4颗,两两串联再并联,每一路电流不超过10ma, 2 路合起来电流不超过20ma 对于蓝色和白色LED,由于其工作电压在2.5V以上,如果说串联,5V电压不能驱动,因此,只能两个并联。实际上应用中,一般一个IO口只驱动一个发光二极管,以保证单片机的安全和发光二极管的亮度,虽然单个IO引脚下的输出 电流...

求89c52驱动蜂鸣器电路
目前此设计已成功应用于钻井模拟器实验室室温控制。 本文作者创新观点:采用的单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度的方法非常简洁且精度高、测试范围较广。 参考文献 [1]林伸茂.8051单片机彻底研究基础篇 北京:人民邮电出版社 2004 [2]范风强等....

89C52单片机驱动步进电机的C程序?
include "reg52.h"\/\/Motor sbit F1 = P1^0;sbit F2 = P1^1;sbit F3 = P1^2;sbit F4 = P1^3;\/\/\/ \/\/步进电机驱动 unsigned char MotorStep=0;unsigned int MotorTimer = 0;unsigned int TIM,CT;void InitMotor(){ F1 = 1;F2 = 1;F3 = 1;F4 = 1;} void SetMotor(){ \/\/ ...

89C52驱动喇叭
专业解答:1:上图接法,喇叭对单片机的影响最小,单片机可以接很多类似的喇叭负载。2:下图,单片机直接驱动喇叭,89C52驱动能力有限,喇叭音量会很小,且容易导致单片机复位。3:上图的C4用于消除喇叭的感性负载,实际中可以去掉。补充:不存在说PNP功耗大的问题,NPN和PNP同理,区别只在单片机的驱动电平...

密云县18339083500: 89C52连接一个1602液晶求电路解释! -
詹才京必: 单片机这个线都是走数据的 一共8 条 CON16是1602液晶的, 第一个是液晶的负极 第二个是液晶正极 第三个是对比度,就是调节显示的字体的亮度 第四个是输入信号的 第五个一般不用 6-13都是走数据,传输显示的数据, 15是背光的就是液晶也会有灯的负极 16是灯的正极

密云县18339083500: 单片机89c52+lcd1602 -
詹才京必: 我也遇到过这种情况,不过不用测忙一样的用,如果要进行读数据的话还是要加上的.void busy_check(){rs=0;rw=1;en=1;delay_ms(1);while((P0&0x80)==0x80);}

密云县18339083500: 单片机89c52那些引脚对应LCD1602液晶? -
詹才京必: 这个没有固定的配置,自己定就行了,一般取一排IO口,(如P0口)作为1602数据输入端,其他三个引脚自己再选3个,比如选RW = P2^5;RS = P2^6;EN = P2^7就行了,当然 选别的也行 如果是已经现成的板子,就得按他的原理图了

密云县18339083500: 为什么我用89c52控制的LCD1602不显示字符,程序和电路图都没问题,之前做过可以,板子用 -
詹才京必: 有可能是程序错误,你没先用仿真器试一下啊.

密云县18339083500: stc89c52rcP0口驱动1602液晶屏需要上拉电阻吗 -
詹才京必: 你好:P0口必须有上拉电阻.其余的口内部有上拉所以不需外接.希望我的回答能帮助到你.

密云县18339083500: 51单片机程序问题 单片机型号:STC89C52RC 我需要一个1602液晶的显示函数,要求向函 -
詹才京必: #define LCD1602_FLAG#define LCD1602_PORT P0#include<reg51.h>#include<stddef.h>#define INT8U unsigned char sbit lcd1602_rs=P2^0; sbit lcd1602_e=P3^6; sbit lcd1602_rw=P2^1; sbit lcd1602_busy=P0^7; INT8U str[]=" My Name Is: ...

密云县18339083500: 利用89C52和tlc2543进行模数转换,之后将结果在1602显示. -
詹才京必: 供你参考,适当改改端口配置就可以用了/************************************** TLC2543驱动程序*************************************/#include #include #include #define uint unsigned int#define uchar unsigned char/**************************************2543...

密云县18339083500: STC89C52单片机的P0口驱动LCD1602 -
詹才京必: 上拉一般都是10k..实在没有也要1k才可以..470是不行的

密云县18339083500: 89c52使用1602液晶的问题 -
詹才京必: 我也遇到这样的问题了,现在也没解决,除了好好看看芯片资料,我推测有可能是晶振的频率,必须用11.0592MHZ的,不然数据会发得有误差,很多人都使用的是12MHZ的,这样误差太大,我搞串口通讯是也是的,不能正确发送和接收数据,因为一直没时间就一直没做过实验,呵呵...一起加油!!!

密云县18339083500: 我问下STC89C52P0口接LCD1602需要上拉电阻吗? -
詹才京必: 需要接上.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网