找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1684|回复: 7
收起左侧

单片机+1602显示程序问题

[复制链接]
ID:320097 发表于 2019-4-17 22:12 | 显示全部楼层 |阅读模式
以下是程序全文,能正常显示,但是一次只能显示一个字符,如果直接写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);
}
回复

使用道具 举报

ID:96682 发表于 2019-4-18 00:32 | 显示全部楼层
写法有问题,不能这么写
回复

使用道具 举报

ID:213173 发表于 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);
}
回复

使用道具 举报

ID:213173 发表于 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);
}
回复

使用道具 举报

ID:337069 发表于 2019-4-18 08:24 | 显示全部楼层
就是那个意思,屏上显示字符位置是可以设置为自加或者自减的,写个发送字符串的函数就行了。
回复

使用道具 举报

ID:164602 发表于 2019-4-18 08:31 | 显示全部楼层
功能当然是你的程序决定的
你的程序中,向1602写字符,就是写一个嘛,你想传两个当然不行。你可以改程序,一次传100个都是可以的,不过向1602写的时候,还是一个一个地写的,这是硬件的要求。
如果你写的内容是顺序写,可以不管指针,它会自动向下的,如果写位置不连续,则要指定位置。
回复

使用道具 举报

ID:303892 发表于 2019-4-18 08:57 | 显示全部楼层
void zifu(uchar fu)当然会报错改为这个试试void zifu(uint fu),我认为要显示多个字符应该用数组一个一个字符送
回复

使用道具 举报

ID:320097 发表于 2019-4-18 14:33 | 显示全部楼层
HC6800-ES-V2.0 发表于 2019-4-18 08:31
功能当然是你的程序决定的
你的程序中,向1602写字符,就是写一个嘛,你想传两个当然不行。你可以改程序, ...

请教大师,我的确不明白,写多个字符应该怎样处理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表