標(biāo)題: 單片機(jī)+1602顯示程序問題 [打印本頁]

作者: 歐陽云天    時(shí)間: 2019-4-17 22:12
標(biāo)題: 單片機(jī)+1602顯示程序問題
以下是程序全文,能正常顯示,但是一次只能顯示一個(gè)字符,如果直接寫zifu("52") 那就報(bào)錯(cuò)了,除非把52拆開來寫,這樣就行,是我的寫法有問題,還是1602也得像數(shù)碼管動態(tài)顯示那樣,寫一個(gè)字符,變換一下指針,再寫字符。。。。。
#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( )            //判忙函數(shù)
{
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);    //設(shè)置顯示模式,16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)口
  zhiling(0X0C);        //光標(biāo)設(shè)置(顯示光標(biāo),且閃爍)
  zhiling(0X04);        //整屏不移動
  zhiling(0XC0);    //第二排顯示
  zifu('2');
  //zhiling(0XC1);
  //zifu("56");
  while(1);
}

作者: wc86110    時(shí)間: 2019-4-18 00:32
寫法有問題,不能這么寫
作者: wulin    時(shí)間: 2019-4-18 05:37
本帖最后由 wulin 于 2019-4-18 10:57 編輯

void main()
{
        EN=0;
        RS=1;
        RW=0;
        zhiling(0X38);    //設(shè)置顯示模式,16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)口
        zhiling(0X01);        //顯示清零,數(shù)據(jù)指針清零
        zhiling(0x0c);        //設(shè)置開顯示,不顯光標(biāo)
        zhiling(0X06);  //設(shè)置寫一個(gè)字符后地址指針加1
        
        zhiling(0XC0);    //第二排顯示
        zifu('2');
        zifu('5');
        zifu('6');
        while(1);
}
作者: wulin    時(shí)間: 2019-4-18 05:45
void main()
{
        EN=0;
        RS=1;
        RW=0;
        zhiling(0X38);    //設(shè)置顯示模式,16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)口
        zhiling(0X01);        //顯示清零,數(shù)據(jù)指針清零
        zhiling(0x0c);        //設(shè)置開顯示,不顯光標(biāo)
        zhiling(0X06);  //設(shè)置寫一個(gè)字符后地址指針加1
       
        zhiling(0XC0);    //第二排顯示
        zifu('2');
        zifu('5');
        zifu('6');
        while(1);
}
作者: chtyise    時(shí)間: 2019-4-18 08:24
就是那個(gè)意思,屏上顯示字符位置是可以設(shè)置為自加或者自減的,寫個(gè)發(fā)送字符串的函數(shù)就行了。
作者: HC6800-ES-V2.0    時(shí)間: 2019-4-18 08:31
功能當(dāng)然是你的程序決定的
你的程序中,向1602寫字符,就是寫一個(gè)嘛,你想傳兩個(gè)當(dāng)然不行。你可以改程序,一次傳100個(gè)都是可以的,不過向1602寫的時(shí)候,還是一個(gè)一個(gè)地寫的,這是硬件的要求。
如果你寫的內(nèi)容是順序?qū)懀梢圆还苤羔,它會自動向下的,如果寫位置不連續(xù),則要指定位置。
作者: xuxiaochunabcd    時(shí)間: 2019-4-18 08:57
void zifu(uchar fu)當(dāng)然會報(bào)錯(cuò)改為這個(gè)試試void zifu(uint fu),我認(rèn)為要顯示多個(gè)字符應(yīng)該用數(shù)組一個(gè)一個(gè)字符送
作者: 歐陽云天    時(shí)間: 2019-4-18 14:33
HC6800-ES-V2.0 發(fā)表于 2019-4-18 08:31
功能當(dāng)然是你的程序決定的
你的程序中,向1602寫字符,就是寫一個(gè)嘛,你想傳兩個(gè)當(dāng)然不行。你可以改程序, ...

請教大師,我的確不明白,寫多個(gè)字符應(yīng)該怎樣處理




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1