久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

1602顯示兩行白塊是什么原因,仿真顯示沒(méi)有問(wèn)題,實(shí)際電路和仿真電路是一樣的

[復(fù)制鏈接]
ID:1043226 發(fā)表于 2022-8-29 15:46 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#define ucharunsigned char
#define uintunsigned int
int LCD_init();    //聲明初始化函數(shù)
int write_com(unsignedchar);//聲明寫(xiě)命令函數(shù)
intwrite_date(unsigned char);//聲明寫(xiě)數(shù)據(jù)函數(shù)
intdelay(unsigned char);//聲明延遲函數(shù)
voidtlc5615(unsigned int dat);// TLC5615轉(zhuǎn)換函數(shù)
voidLCD_send(unsigned char,unsigned char,unsigned char[],unsigned char);//聲明LCD函數(shù)
sbit addKey =P1^0;//用于增加目標(biāo)電壓按鍵
sbit subKey =P1^1;//用于減小目標(biāo)電壓按鍵
sbit CS=P3^5;//定義ADC0832腳位
sbit CLK=P3^7;//定義ADC0832腳位
sbit DO= P3^6;//定義ADC0832腳位
sbit DI=P3^4;//定義ADC0832腳位
sbit LED=P1^2;//定義LED燈腳位
sbit RS =P2^2;//定義LCD腳位
sbit RW =P2^1;//定義LCD腳位
sbit EN =P2^0;//定義LCD腳位
sbit CS5615=P1^6;//定義DAC5615腳位
sbitSCLK5615=P1^5;//定義DAC5615腳位
sbitDATA5615=P1^7;//定義DAC5615腳位
ucharvoltage[6]="0.00 V";//lcd顯示負(fù)載電壓
uchar end[6]="4.30V";//lcd顯示目標(biāo)電壓
unsigned longint val;//(負(fù)載電壓)用于單片機(jī)電壓比較
unsigned longint endVal=430;//(目標(biāo)電壓)用于單片機(jī)電壓比較
voiddelay2ms(void)   //晶振12M,誤差 0us,含調(diào)用
{
    unsigned char a,b;
    for(b=133;b>0;b--)
    for(a=6;a>0;a--);
}
uchar AD0832()
{     
       uchar V =0,i = 0;
        CS=0; //片選信號(hào),低電平有效
        DO=0;    //DO為高阻態(tài),這里置低為后續(xù)讀取做準(zhǔn)備
        delay2ms();
                     
       //前三個(gè)脈沖為配置設(shè)置
       CLK=0;
        delay2ms();
        DI=1;
        CLK=1;//第一個(gè)脈沖,起始位
        delay2ms();
        CLK=0;
        delay2ms();
        DI=1;
        CLK=1;//第二個(gè)脈沖,該位為“1”時(shí)是單端輸入模式,為“0”時(shí)是差分輸入模式
        delay2ms();
        CLK=0;
        delay2ms();
        DI=0; //第三個(gè)脈沖,DI=1表示選擇通道1(CH2),DI=0表示選擇通道0(CH1)
        CLK=1;
        delay2ms();
        
        DI=0; //DI轉(zhuǎn)為高阻態(tài),狀態(tài)無(wú)關(guān)緊要,這里給低方便下一輪讀取
        DO=1; //DO口恢復(fù)默認(rèn)上拉,準(zhǔn)備接收信號(hào)
        CLK=1;
        delay2ms();
        CLK=0; //第一個(gè)下降沿,為去數(shù)做準(zhǔn)備
        delay2ms();//等待芯片接收下降沿并切換輸出模式
        
                            //接收8位信號(hào)并轉(zhuǎn)換
        for(i=0;i<8;i++)
        {
          CLK = 1;
                delay2ms();
                CLK = 0;
                if(DO)//如果DO為高電平,相應(yīng)的位數(shù)是1
                                                               V= V | 1<<(7-i);
        }
        CS = 1;//關(guān)閉片選,結(jié)束一個(gè)轉(zhuǎn)換周期
        return V;
}
void Tran(uchardigit)//用于顯示lcd顯示負(fù)載電壓
{
              val = (unsigned longint)5*100*digit/256;
        voltage[0] ='0'+ val/100;//百位
        voltage[2] ='0'+ val/10%10;//十位
        voltage[3] ='0'+ val%10;//個(gè)位
}
void key()//識(shí)別按鍵
{
      
              if(addKey==0);//按鍵按下
              {
                     delay(5);//延時(shí)
                      if(addKey==0)//按鍵按下
                      {
                           endVal=endVal+10;//增加目標(biāo)電壓
                      }
              }
              if(subKey==0)//按鍵按下
              {
                     delay(5);//延時(shí)
                      if(subKey==0)//按鍵按下
                      {
                           endVal=endVal-10;//減少目標(biāo)電壓
                      }
              }     
               if(endVal>480)//電壓值不大于4.80V
               {
                   endVal=480;//電壓值不大于4.80V
               }
                            end[0] ='0'+endVal/100;//百位
                      end[2]='0'+ endVal/10%10;//十位
                      end[3]='0'+ endVal%10;//個(gè)位
                       }
void nowEnd()//負(fù)載電壓與目標(biāo)電壓比較
{
if(val>=endVal)//val為負(fù)載電壓,endVal為目標(biāo)電壓
{
tlc5615(0);//5615電壓輸出為0
LED=0;//關(guān)閉LED燈
}
}
              
voidLCD_send(unsigned char i,unsigned char j,unsigned char str[],unsigned char n)
{
       //輸入:顯示行數(shù)i,列數(shù)j,輸出字符,輸出字符長(zhǎng)度n
       unsigned char x=0;
       if(i==1)
       {write_com(0x80+j);}
       else
       {write_com(0x80+0x40+j);}
    for(x=0;x<n;x++)
    {
         write_date(str[x]);
    }
}
              
int LCD_init()//初始化函數(shù)體
{
    EN = 0;
    write_com(0X38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
    write_com(0X0C);//設(shè)置開(kāi)顯示,不顯示光標(biāo)
    write_com(0X06);//寫(xiě)一個(gè)字符時(shí),整屏右移
    write_com(0X01);//顯示清零
    return 0;
}
intwrite_com(unsigned char com)//寫(xiě)命令的函數(shù)體
{
    RS = 0;
    RW = 0;
    P0 = com;
    delay(5);
    EN = 1;
    delay(5);
    EN = 0;
    return 0;
}
intwrite_date(unsigned char data1)//寫(xiě)數(shù)據(jù)的函數(shù)體
{
    RS = 1;
    RW = 0;
    P0 = data1;
    delay(5);
    EN = 1;
    delay(5);
    EN = 0;
    return 0;
}
intdelay(unsigned char xms)//延遲函數(shù)
{
    unsigned char x,y;
    for(x=xms;x>0;x--)
        for(y=110;y>0;y--);
    return 0;
}   
voidtlc5615(unsigned int dat)//控制5615電壓輸出
{
unsigned char i;
CS5615=1;
DATA5615=0;
SCLK5615=0; //CS高電平期間,SCLK為低電平
dat<<=6;// 數(shù)字量dat左移6位,保留原dat低10位。新dat的高10位有效,低6位全0。
CS5615=0; // CS片選有效,開(kāi)始接收數(shù)據(jù)
SCLK5615=0;
for(i=0;i<12;i++)// 發(fā)送10位數(shù)據(jù)和2位0,從最高位開(kāi)始發(fā)送。
{ // 非級(jí)聯(lián)方式,只需要輸入12位數(shù)據(jù)。
if((dat&0x8000)==0x8000)
DATA5615=1;
else
DATA5615=0;
SCLK5615=1; //SCLK上升沿,數(shù)據(jù)輸入
dat<<=1;
SCLK5615=0; //SCLK恢復(fù)低電平
}
CS5615=1; // CS上升沿,數(shù)據(jù)送到DAC寄存器
// CS的上升沿和下降沿只有在SCLK為低的時(shí)候有效
SCLK5615=0;
DATA5615=0;// 拉高片選端,拉低時(shí)鐘端與數(shù)據(jù)端,回到初始狀態(tài)
}
void main()//主函數(shù)  
{            
       tlc5615(430);
       LCD_init();
       LCD_send(1,0,"Now:",4);
       LCD_send(2,0,"End:",4);
       while(1)  
       {                  
              Tran(AD083());
              LCD_send(1,6,voltage,6);
              LCD_send(2,6,end,6);
              key();
              nowEnd();
       }   
}
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2022-8-29 20:21 | 顯示全部樓層
仿真上沒(méi)問(wèn)題不代表實(shí)物上也能正常運(yùn)行,樓主都沒(méi)曬實(shí)物電路圖問(wèn)題不好找

樓主 :1/建議你檢查電路是否存在虛焊
           2/你看一下軟件的字符排布是否正確(可能會(huì)存在錯(cuò)位情況)


回復(fù)

使用道具 舉報(bào)

ID:59202 發(fā)表于 2022-8-29 22:18 | 顯示全部樓層
你這種情況很大可能是1602初始化不完全,可以參考一下這個(gè)資料

1602液晶幾種典型顯示狀態(tài)及解決方案.pdf

171.02 KB, 下載次數(shù): 11

回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-8-30 06:26 | 顯示全部樓層
樓主這個(gè)錯(cuò)漏百出的代碼“仿真顯示沒(méi)有問(wèn)題”?
回復(fù)

使用道具 舉報(bào)

ID:121859 發(fā)表于 2022-8-30 08:50 | 顯示全部樓層
背光調(diào)調(diào)吧,應(yīng)該是背光電壓不合適。
回復(fù)

使用道具 舉報(bào)

ID:16255 發(fā)表于 2022-8-30 09:32 | 顯示全部樓層
我認(rèn)為是對(duì)比度沒(méi)調(diào)好
回復(fù)

使用道具 舉報(bào)

ID:21069 發(fā)表于 2022-8-30 11:19 | 顯示全部樓層
1602是非常基礎(chǔ)的一個(gè)器件!自己完全可以檢查這些問(wèn)題的。先只作一個(gè)簡(jiǎn)單的顯示功能,來(lái)判斷是電路還是代碼的問(wèn)題,網(wǎng)上大把的代碼,可以下一個(gè)別人調(diào)好的代碼作個(gè)判斷
回復(fù)

使用道具 舉報(bào)

ID:61876 發(fā)表于 2022-8-30 11:39 | 顯示全部樓層
換一塊1602看看吧。我曾經(jīng)遇到過(guò)同樣問(wèn)題,換了塊1602 馬上就解決了。
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2022-8-30 13:30 | 顯示全部樓層
1602速度很慢,注意是不是速度太快了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合视频一区 | 国产农村妇女毛片精品久久麻豆 | 水蜜桃久久夜色精品一区 | 久久91av| 黄网站在线播放 | 欧美一级在线观看 | 91精品国产综合久久久久久 | 日本三级全黄三级a | 精品国产乱码久久久久久蜜柚 | 国产精品久久久久久婷婷天堂 | 综合久久久 | 国产精品久久久久久久7777 | 91九色视频在线 | 91久久精品一区 | 日本免费黄色 | 中文字幕一级 | 日韩在线免费播放 | 欧美激情一区二区三级高清视频 | 亚洲精品欧美 | 色爱综合网 | 亚洲一区二区视频在线观看 | 免费在线看黄 | 黄色福利 | 久久一 | 国产二区av | 欧美日韩亚洲一区二区 | 欧美日韩中文在线观看 | 高清视频一区二区三区 | 欧美日韩电影一区二区 | 日本不卡免费新一二三区 | 999久久久免费精品国产 | 超碰成人av | h网站在线观看 | 久久久av | 一区二区三区四区国产精品 | 久久亚洲国产精品 | 亚洲精品高清视频在线观看 | 亚洲一区精品在线 | 羞羞网站在线观看 | av黄色免费在线观看 | 亚洲国产精品久久久 |