欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2426|回復: 5
打印 上一主題 下一主題
收起左側

這個單片機程序 為什么lcd不顯示呀,求大佬解密

[復制鏈接]
跳轉到指定樓層
樓主

#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit rs=P2^6;
sbit rw=P2^5;
sbit e=P2^7;
sbit beep=P3^7;
sbit dq=P3^6;
sbit led=P3^1;
sbit k1=P3^2;  
sbit k2=P3^4;  
sbit k3=P3^5;  
sbit k4=P3^3;  
uint8 num[]="0123456789.C";
uint8 d1[8]="Temper: ";
uint8 d2[2]="H:";
uint8 d3[2]="L:";
uint8 tm[5],tm1[5],tm2[5];
uint8 a,c,temp;
float dio;
uint16 k;
uint8 mode,sheding=0;
char wenduh=40,wendul=20;

void delay(uint16 i)
{
    while(i--);
}
void int0init()
{
    EA=1;
    EX0=1;
    IT0=1;
}
void int1init()
{
    EA=1;
    EX1=1;
    IT1=1;
}
void wrc(uint8 c)
{
    delay(1000);
    rs=0;
    rw=0;
    e=0;
    P0=c;
    e=1;
    delay(10);
    e=0;
}
void wrd(uint8 dat)
{
    delay(1000);
    rs=1;
    rw=0;
    e=0;
    P0=dat;
    e=1;
    delay(10);
    e=0;
    rs=0;
}
void init()
{
    delay(1000);
    wrc(0x38);
    wrc(0x38);
    wrc(0x38);
    wrc(0x06);
    wrc(0x0c);
    wrc(0x01);
}
//DS18B20?ì2a??
void ds18b20init()
{
    dq=1;
    delay(1);
    dq=0;
    delay(80);
    dq=1;
    delay(5);
    dq=0;
    delay(20);
    dq=1;
    delay(35);
}
void ds18b20wr(uint8 dat)  
{
    uint8 i;
    for(i=0;i<8;i++)
  {
        dq=0;
        dq=dat&0x01;
        dat>>=1;
        delay(8);
        dq=1;
        delay(1);
  }
}
uint8 ds18b20rd()
{
    uint8 value,i;
    for(i=0;i<8;i++)
    {
        dq=0;
        value>>=1;
        dq=1;
        if(dq==1)value|=0x80;
        delay(8);
    }
    return value;
}
uint8 readtemp()
{
        uint8 b;
        ds18b20init();  
        ds18b20wr(0xcc);
        ds18b20wr(0x44);
        delay(100);
        ds18b20init();  
        ds18b20wr(0xcc);
        ds18b20wr(0xbe);
        a=ds18b20rd();
        b=ds18b20rd();
        b<<=4;
        c=b&0x80;
        b+=(a&0xf0)>>4;
        a=a&0x0f;
        return b;
}
void time0init()
{
    TMOD=0x01;
    TH0=0xfc;
    TL0=0x18;
    TR0=1;
    EA=1;
    ET0=1;
}
void sound()
{
    uint8 i=100;
    while(i--)
    {
        beep=~beep;
        delay(100);  
    }
}     
void datapros()
{
    dio=a*0.0625;
    k=dio*10000;
    wrc(0x08+0x80);
    if(c==0x80)
    {
        wrd('-');
        temp=temp-1;
        temp=(~temp);
    }
  else
    {
        wrd('+');
        temp=(temp);
    }
    tm[0]=num[temp/100];
    tm[1]=num[temp%100/10];
    tm[2]=num[temp%100%10];
    tm[3]=num[10];
    tm[4]=num[k/1000];
    tm[5]=num[11];
        
    tm1[0]=num[wenduh/100];
    tm1[1]=num[wenduh%100/10];
    tm1[2]=num[wenduh%100%10];
        
    tm2[0]=num[wendul/100];
    tm2[1]=num[wendul%100/10];
    tm2[2]=num[wendul%100%10];
}
void display()
{
    uint8 i;
    wrc(0x80);
    for(i=0;i<8;i++)
    {
        wrd(d1[ i]);
    }
    wrc(0x09+0x80);  
    for(i=0;i<6;i++)
    {
        wrd(tm[ i]);
    }
    wrc(0x80+0x40);  
    for(i=0;i<2;i++)
    {
        wrd(d2[ i]);
    }
    for(i=0;i<3;i++)
    {
        wrd(tm1[ i]);
    }
    wrc(0x80+0x49);  
    for(i=0;i<2;i++)
    {
        wrd(d3[ i]);  
    }
    for(i=0;i<3;i++)
    {
        wrd(tm2[ i]);
    }
}
void keypros()
{
    if(mode==1)
    {
        if(k2==0)  
        {
            delay(1000);
            if(k2==0)
            {
                wenduh++;
                if(wenduh>=120)wenduh=120;
            }
        }
        if(k3==0)  
        {
            delay(1000);
            if(k3==0)
            {
                wenduh--;
                if(wenduh<=0)wenduh=0;
            }
        }
    }
    if(mode==2)
    {
        if(k2==0)  
        {
            delay(1000);
            if(k2==0)
            {
                wendul++;
                if(wendul>=120)wendul=120;
            }
        }
   
        if(k3==0)  
        {
            delay(1000);
            if(k3==0)
            {
                wendul--;
                if(wendul<=0)wendul=0;
            }
        }
    }
}

void data_change()  
{
    if(temp>=wenduh&&sheding==1)
    {
        led=1;
        sound();
    }
    if(temp<wendul&&sheding==1)
    {
        led=0;
    }
}
void main()  
{
    init();
    int0init();
    int1init();
    time0init();
    led=0;
    while(1)
    {
        temp=readtemp();
        keypros();
        datapros();
        display();  
        data_change();
    }
}
void int0() interrupt 0
{
        delay(1000);
        mode++;
        sheding=0;
        if(mode==3)
        {
            mode=1;
        }
}
void int1() interrupt 2
{
    delay(1000);
    mode=0;
    sheding=1;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:584814 發表于 2021-7-8 08:29 | 只看該作者
可能情況:
1、軟件方面:程序寫法有錯;
2、硬件方面:設計或連接有錯;
3、自己問題:使用盜版軟件去仿真又不會按實際調整....
建議:本壇內找個能用的就好。
回復

使用道具 舉報

板凳
ID:748788 發表于 2021-7-8 11:08 | 只看該作者
一步步來,先調試好1602,使其能正常顯示。
回復

使用道具 舉報

地板
ID:539024 發表于 2021-7-8 11:43 | 只看該作者
接線跟實物不一樣,
sbit rs=P2^6;
sbit rw=P2^5;
sbit e=P2^7;
在protues里面按照這樣接線,或者你也可以把程序改了。
總之仿真要跟實物對應
回復

使用道具 舉報

5#
ID:914633 發表于 2021-7-8 20:41 | 只看該作者
電源和地都沒連
回復

使用道具 舉報

6#
ID:885725 發表于 2021-7-9 08:28 | 只看該作者

和你的想法一樣。
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表