lcd1602程序 lcd1602程序流程图描述

莫娜号 1

为什么把程序烧进去后LCD1602显示一排黑色方块

{unsigned char temp=0x80;

第15引脚是背光源正极,一般需要外接10欧的电阻。

lcd1602程序 lcd1602程序流程图描述lcd1602程序 lcd1602程序流程图描述


lcd1602程序 lcd1602程序流程图描述


if((scan1&0xf0)!=0xf0) //判键是否按下

第3引脚是液晶显示偏压信号,一般需要外接个10K的电位器,调节显示对比度。

}void lcd_init(void)

希望我的回答能够有所帮助。

我单片机上电后还没下程序,但是lcd1602却只能显示一行方框

LCD_RW = 0;

这个是正常的现象,因为板内接线的原因,你没有控制的情况下,如果那部分电路有别的地方用到,高低电平就会使有效的部分的类亮,在你初始化后,即控制下它就不会那样了,把程序下进去看一下,单步/跟一下哪里次灭了就是哪里/就是初始化了。

单片机LCD1602液晶程序问题,仿真没问题,实物不显示

{timer_init();

有时候是这样的,实物是要考虑外界干扰的,而仿真没有什么干扰,是理想情况,再继续调试,看好你的

比如你要行的前四个位子写1111。

空无一物?P0=com;1602里就是没程序,也应该在行出现16个5X8点阵黑块。

lcd1602怎么反复写数据,就是怎么次显示一堆数据后,第二次又显示其他的内容,中间需要什么程序?

leden=0;

不知道你的程序编的怎么样了。

write_com(0x80+0x00);

你会控制寄存器了吗?

就是当rs引脚为低电平的时候输入数据。

首先,这个你知道了吗?

当rs引脚为低电平的时候,数据口输入

0x10 字符不动,光标左移一个位置

0x14字符不动,光标右移一个位置

0x18字符和光标一起左移一个位置

0x1c字符和光标一起右移一个位置

如果在这种情况下,输入0x80,就代表接下来要在行的个位子写字符。

0x81就代表接下来要在行的第二个位子写字符。

0xc0就代表接下来要在第二行的个位子写字符。

0xc1就/ /代表接下来要在第二行的第二个位子写字符。

以此推类。

那么你又要把它改成2222,你就控制寄存器,写一个0x80,就代表你接下来要在行的个位子写字符。这样2就会把原来的1代替,字符就被改掉了。

知道了吗?

51单片机里面用定时器实现倒计时,在LCD1602上显示倒计时,写完程序发现时间不能实现时间自减,求大神

}void write_date(uchar date)

void main()

{delayms(15); //等待电源稳定

write_init();

#define uint unsigned int

{delay_ms(10);

write_date (Disp_Tab[a/600]);

write_date (Disp_Tab[a%600/60]);

write_date (Disp_Tab[10]);

write_date (Disp_Tab[a/10]);

}}

关于LCD1602程序的问题。求教。。为什么老是提示 error C141: syntax error near },还有重复定义等问题

/ /

你这个程序写的乱七八糟的。最起码write_com(0x08,1);要包含reg52.h,要不所有51单片机的寄存器都不能用。还有sfr是定义特殊寄存器的,你用sfr定义了一个DBPort给定了输出值,可是之后看你DBPort的用法又是当输入用的。另外,sfr DBPort = 0x80;这句之后又莫名其妙出来一对大括号,也没有函数名(估计应该是判忙函数)。

result = (bit)(LCD_DB_Port&0x80);

用lcd1602显示,显示程序没错,接线没错,就是显示不出来,求高人指点原因,369521148,这是我的qq,

/ /

1.可能是显示屏已经损坏,建议拿一个确保好的1602进行测试。

while(1)

2.程序可能还存在错误,建议进行单步查找,查看每一步的结果是不是与自己所想一致,这样{for(j=0;j<125;j++) ;才能确保程序真的没错。

3.检查接线,用万用表逐一检查导线,查看导线是否导通。接着再细致对照电路图进行接线检查,建议从一个出发一个部分一个部分的进行连接(或检查),进行整体的检查。

4.检查与1602连接的其他器件是否完好,如和单片机连接,查看单片机是否良好。

5.确保屏是好的前提下,如果全不亮,看一下15 16引脚的解法是否正确,它们主管显示屏的亮度 再看3它管对比度。

建议你先用protues仿真试试吧!!!如果还是没显示的话就是你的程度有问题

51单片机中怎么用按键控制lcd1602的光标移动,即每按一次按键光标向右移动一位?写出具体的程序

for(j=0;j<10; j++);

你可以定义一个函数

/光标移动是LCD指令,/光标移动是LCD指令...你可以定义一个函数...

自己摸索..这样才能学的快..

51单片机温度传感器ds18b20、lcd1602液晶C程序

{write_date(table[num]);

LCD1602驱动程序void delayms(uchar x)

{ uchar j;

while((x--)!=0)

}}

//

/ /

/检查LCD忙状态 /

/lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据 /

/ /

//

static bit lcd_busy()

{bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

dwrite_date (Disp_Tab[a%10]);elayNOP();

LCD_EN = 0;

return(result);

}//

/写指令数据到LCD /

/RS=L,RW=L,E=高脉冲,D0-D7=指令码。 /

void lcd_wcmd(uchar cmd)

{while(lcd_busy());

LCD_RS = 0;

LCD_EN = 0;

_nop_();

_nop_();

LCD_DB_Port = cmd;

delayNOP();

LCD_EN = 1; //上跳沿时输入数据

delayNOP();

LCD_EN = 0;

}//

/写显示数据到LCD /

/RS=H,RW=L,E=高脉冲,D0-D7=数据。 /

void lcd_wdat(uchar dat)

{while(lcd_busy());

LCD_RS = 1;

LCD_EN = 0;

LCD_DB_Port = dat;

delayNOP();

LCD_EN = 1;

delayNOP(); //上跳沿时输入数据

LCD_EN = 0;

}//

/ /

/ LCD初始化设定 /

/ /

//

void lcd_init()

lcd_wcmd(LCD_MODE); //设置显示模式

lcd_wcmd(LCD_MODE);

lcd_wcmd(LCD_MODE);

lcd_delayms(5);wcmd(0x0c); //显示开,关光标

lcd_wcmd(0x06); //移动光标

lcd_wcmd(0x01); //清除LCD的显示内容

}//

/ /

/ 设定显示位置 /

/ /

//

void lcd_PrPos(uchar row,uchar col)

{if(row == 0)

lcd_wcmd(col | 0x80); //数据指针=80+地址变量

if(row == 1)

lcd_wcmd(col | 0x80 | 0x40);

}

说明一下,这里的18B20加数码管的温度仿真,要是1602需要改一下

#include"reg52.h"

#define uchar unsigned char

it leden=P3^4;

it ledrs=P3^5;

it ledrw=P3^6;

it dual=P2^6;

it weal=P2^7;

uchar table[]="I Love You!";

uchar table1[]="Beli Me!";

void delay(uchar z)

{uchar i,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}void write_com(uchar com)

{ledrs=0;

delay(5);

leden=1;

delay(5);

{ledrs=1;

P0=date;

delay(5);

leden=1;

delay(5);

}void init()

{ledrw=0;

dual=0;

weal=0;

write_com(0x38); // 初始化显示模式

write_com(0x0f); // 开显示,显示光标并闪烁

write_com(0x06); // 光标自动移位

write_com(0x01); // 显示清屏

}void main()

{ uint num=0;

init();

for(num=0;num<11;num++)

delay(200);

}write_com(0x80+0x40);

for(num=0;num<11;num++)

{write_date(table1[num]);

delay(200);

}while(1);

}

求单片机实现4×4键盘输入,并用LCD1602显示键盘输入的数字的程序,

{delay(30); //延时30ms

#include /

#include

#define uchar unsigned char

#define DD P0

it Rs=P0^0;

it Rw=P0^1;

uchar key_led;

unsigned char code disp_code[]={"0123456789abcdef"};

unsigned char code key_code[]={

0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,

0xeb,0xdb,0xbb,0x7b,0xe7,it E=P0^2;0xd7,0xb7,0x77 };//注意这里你自己看下你电路是怎么连得,对应改一下表单里的值

/

/ 延时子程序

/

/

void delay(int ms)

{int i;

while(ms--)

{for(i = 0; i< ; i++)

{_nop_();

_nop_();

_nop_();

_nop_();

}}

}void delay_1ms(unsigned char i) //最小延时1ms

{ unsigned char j;

while(i--)

for(j=0;j<125; j++);

}void delay_10ns(unsigned char i) //最小延时10ns

{unsigned char j;

while(i--)

}void write_com(unsigned char com,bit p) //写指令

{if(p)

delay_10ns(5);

E=0;

Rs=0;

Rw=0;

DD=com;

delay_10ns(50); //>40ns

E=1;

delay_1ms(2); //>150ns

E=0;

delay_10ns(4); //>25+10ns

}void write_date(unsigned char DATA) //写数据

{delay_10ns(50);

E=0;

Rs=1;

Rw=0;

DD=DATA;

delay_10ns(50);

E=1;

delay_10ns(50);

E=0;

delay_10ns(4);

}void addr_x_y(unsigned char x,bit y) //写坐标,定位置

if(y)

{temp|=0x40;

}temp|=x;

write_com(temp,0);

}void desplay_char(unsigned char x,bit y,unsigned char p)

//在指定位置显示一个字符。

{addr_x_y(x,y);

write_date(p);

{delay_1ms(15);

write_com(0x38,0);

delay_1ms(5);

write_com(0x38,0);

delay_1ms(5);

write_com(0x38,0);

delay_1ms(5);

write_com(0x38,1);

write_com(0x01,1);

write_com(0x06,1);

write_com(0x0c,1);

}/

键盘扫描子函数

uchar keyscan()

{uchar scan1,scan2,keycode,j;

P1=0xf0;

scan1=P1;

scan1=P1;

if((scan1&0xf0)!=0xf0) //二次判键是否按下

{P1=0x0f;

scan2=P1;

keycode=scan1|scan2; //组合成键编码

for(j=0;j<=15;j++)

{if(keycode== key_code[j]) //查表得键值

{delay(30);

key_led=j;

}}

}}

else return(16) ;

}/

判键是否按下子函数

void keydown()

{P1=0xf0;

if((P1&0xf0)!=0xf0)

{keyscan();

}}

/

/ 主程序

/

/

void main(void)

{lcd_init(); // 初始化LCD

key_led=16;

{keydown();

desplay_char(0,0,disp_code[key_led]);

}}

最后修改时间:
王者荣耀剧本模仿剧 王者荣耀剧本游戏
上一篇
学生采风的含义 学校采风的一定要去吗
下一篇

相关文章