标题:
单片机+1602显示程序问题
[打印本页]
作者:
欧阳云天
时间:
2019-4-17 22:12
标题:
单片机+1602显示程序问题
以下是程序全文,能正常显示,但是一次只能显示一个字符,如果直接写zifu("52") 那就报错了,除非把52拆开来写,这样就行,是我的写法有问题,还是1602也得像数码管动态显示那样,写一个字符,变换一下指针,再写字符。。。。。
#include <STC89C5xRC.H>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^2;
sbit RW=P2^1;
sbit EN=P2^0;
void delay(uint a)
{
uint x,y;
for(x=a;x>0;x--)
for(y=114;y>0;y--);
}
uchar mang( ) //判忙函数
{
P0=0xFF;
RS=0;
RW=1;
EN=0;
delay(1);
EN=1;
return (P0 & 0x80);
}
void zhiling(uchar com) //写命令
{
while(mang( ));
RS=0;
RW=0;
P0=com;
delay(10);
EN=1;
delay(10);
EN=0;
}
void zifu(uchar fu) //写字符
{
while(mang( ));
RS=1;
RW=0;
P0=fu;
delay(10);
EN=1;
delay(10);
EN=0;
}
void main()
{
EN=0;
RS=1;
RW=0;
zhiling(0X38); //设置显示模式,16*2显示,5*7点阵,8位数据口
zhiling(0X0C); //光标设置(显示光标,且闪烁)
zhiling(0X04); //整屏不移动
zhiling(0XC0); //第二排显示
zifu('2');
//zhiling(0XC1);
//zifu("56");
while(1);
}
作者:
wc86110
时间:
2019-4-18 00:32
写法有问题,不能这么写
作者:
wulin
时间:
2019-4-18 05:37
本帖最后由 wulin 于 2019-4-18 10:57 编辑
void main()
{
EN=0;
RS=1;
RW=0;
zhiling(0X38); //设置显示模式,16*2显示,5*7点阵,8位数据口
zhiling(0X01); //显示清零,数据指针清零
zhiling(0x0c); //设置开显示,不显光标
zhiling(0X06); //设置写一个字符后地址指针加1
zhiling(0XC0); //第二排显示
zifu('2');
zifu('5');
zifu('6');
while(1);
}
作者:
wulin
时间:
2019-4-18 05:45
void main()
{
EN=0;
RS=1;
RW=0;
zhiling(0X38); //设置显示模式,16*2显示,5*7点阵,8位数据口
zhiling(0X01); //显示清零,数据指针清零
zhiling(0x0c); //设置开显示,不显光标
zhiling(0X06); //设置写一个字符后地址指针加1
zhiling(0XC0); //第二排显示
zifu('2');
zifu('5');
zifu('6');
while(1);
}
作者:
chtyise
时间:
2019-4-18 08:24
就是那个意思,屏上显示字符位置是可以设置为自加或者自减的,写个发送字符串的函数就行了。
作者:
HC6800-ES-V2.0
时间:
2019-4-18 08:31
功能当然是你的程序决定的
你的程序中,向1602写字符,就是写一个嘛,你想传两个当然不行。你可以改程序,一次传100个都是可以的,不过向1602写的时候,还是一个一个地写的,这是硬件的要求。
如果你写的内容是顺序写,可以不管指针,它会自动向下的,如果写位置不连续,则要指定位置。
作者:
xuxiaochunabcd
时间:
2019-4-18 08:57
void zifu(uchar fu)当然会报错改为这个试试void zifu(uint fu),我认为要显示多个字符应该用数组一个一个字符送
作者:
欧阳云天
时间:
2019-4-18 14:33
HC6800-ES-V2.0 发表于 2019-4-18 08:31
功能当然是你的程序决定的
你的程序中,向1602写字符,就是写一个嘛,你想传两个当然不行。你可以改程序, ...
请教大师,我的确不明白,写多个字符应该怎样处理
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1