找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1373|回復(fù): 3
收起左側(cè)

那位大佬幫忙看看,這1602讀數(shù)為啥不行啊

[復(fù)制鏈接]
ID:837156 發(fā)表于 2021-1-24 17:15 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#include<intrins.h>       
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^6;
sbit RW=P2^5;
sbit EN=P2^7;
uchar t, i;
void delay(uint z)
{
        uint x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}

//判斷液晶忙不忙,忙則等待 、
void read_busy()
{
        uchar busy;
        P0=0xff;        //給與高電位
        RS=0;                //1 數(shù)據(jù) 0命令
        RW=1;           //1 讀 0寫
        do
        {
                 EN=1;        //使能
                busy=P0;
                EN=0;
        }while(busy &0x80);
}
//1602命令
void write_cmd(uint cmd)
{
        read_busy();
        RS=0;
        RW=0;
        P0=cmd;
        EN=1;
        EN=0;
}
//1602 數(shù)據(jù)
void write_dat(uint dat)
{
        read_busy();
        RS=1;
        RW=0;
        P0=dat;
        EN=1;
        EN=0;
}
void timer_init()
{

        TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開啟動(dòng)。
        TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
        TL0=0X68;       
        ET0=1;//打開定時(shí)器0中斷允許
        EA=1;//打開總中斷
        TR0=1;//打開定時(shí)器                       
}

void main()
{

        timer_init();
        write_cmd(0x38);//設(shè)置16*2顯示
        write_cmd(0x0f); //開顯示
        write_cmd(0x06); //指針地址右加一  0x04左
//        write_cmd(0x01); //清屏
        write_cmd(0x80|0x06 ); //顯示地址
        write_cmd(0x01); //清屏         
        while(1);
        {
           if(t<1000)
           {
                        write_cmd(0x80 | 0x06);
                        write_dat(t/10+'0');
                                        //顯示十位數(shù)字
                        write_cmd(0x80 | 0x07);
                                //顯示個(gè)位數(shù)字
                        write_dat(t%10+'0');
                }
        }               
                  
}
void Timer0() interrupt 1
{

        TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
        TL0=0X68;
        i++;
        if(i==1000)
        {
                i=0;
                t++;
        }
       
       
}

回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-1-24 21:05 | 顯示全部樓層
樓主注意變量的數(shù)據(jù)類型選擇要恰當(dāng),while(1);多了分號。給你略改了一點(diǎn),顯示1位小數(shù)。 無標(biāo)題.jpg

  1. #include<reg52.h>
  2. #include<intrins.h>        
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit RS=P2^6;
  6. sbit RW=P2^5;
  7. sbit EN=P2^7;
  8. uint i;
  9. uchar t;
  10. /*
  11. void delay(uint z)
  12. {
  13.         uint x,y;
  14.         for(x = z; x > 0; x--)
  15.                 for(y = 114; y > 0 ; y--);
  16. }*/
  17. //判斷液晶忙不忙,忙則等待 、
  18. void read_busy()
  19. {
  20.         uchar busy;
  21.         P0=0xff;        //給與高電位
  22.         RS=0;                //1 數(shù)據(jù) 0命令
  23.         RW=1;           //1 讀 0寫
  24.         do
  25.         {
  26.                 EN=1;        //使能
  27.                 busy=P0;
  28.                 EN=0;
  29.         }while(busy &0x80);
  30. }
  31. //1602命令
  32. void write_cmd(uint cmd)
  33. {
  34.         read_busy();
  35.         RS=0;
  36.         RW=0;
  37.         P0=cmd;
  38.         EN=1;
  39.         EN=0;
  40. }
  41. //1602 數(shù)據(jù)
  42. void write_dat(uint dat)
  43. {
  44.         read_busy();
  45.         RS=1;
  46.         RW=0;
  47.         P0=dat;
  48.         EN=1;
  49.         EN=0;
  50. }
  51. void timer_init()
  52. {
  53.         TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開啟動(dòng)。
  54.         TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
  55.         TL0=0X68;        
  56.         ET0=1;//打開定時(shí)器0中斷允許
  57.         EA=1;//打開總中斷
  58.         TR0=1;//打開定時(shí)器                        
  59. }

  60. void main()
  61. {
  62.         timer_init();
  63.         write_cmd(0x38);//設(shè)置16*2顯示
  64.         write_cmd(0x01); //清屏
  65.         write_cmd(0x0c); //開顯示不顯示光標(biāo)
  66.         write_cmd(0x06); //指針地址右加一  0x04左
  67. //        write_cmd(0x01); //清屏
  68. //        write_cmd(0x80|0x06 ); //顯示地址

  69.         while(1)//;
  70.         {
  71.                 if(t>999)
  72.                         t=0;
  73.                 write_cmd(0x80+6);
  74.                 write_dat(t/100%10+'0');//顯示十位數(shù)字
  75.                 write_dat(t/10%10+'0');//顯示個(gè)位數(shù)字
  76.                 write_dat('.');                //顯示小數(shù)點(diǎn)
  77.                 write_dat(t%10+'0');//顯示小數(shù)
  78.         }
  79. }
  80. void Timer0() interrupt 1
  81. {
  82.         TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
  83.         TL0=0X68;
  84.         i++;
  85.         if(i==100)
  86.         {
  87.                 i=0;
  88.                 t++;
  89.         }
  90. }
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

ID:390416 發(fā)表于 2021-1-24 21:18 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

ID:847443 發(fā)表于 2021-1-25 16:40 | 顯示全部樓層
變量的數(shù)據(jù)類型選擇要實(shí)型,還要注意語法。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表