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

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

QQ登錄

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

搜索
查看: 3941|回復(fù): 22
打印 上一主題 下一主題
收起左側(cè)

為什么液晶處沒(méi)有顯示

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 5 黑幣 回復(fù)本帖可獲得 1 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
這是僅僅有一小部分功能的計(jì)算器程序,但液晶去沒(méi)反應(yīng);求各位指出問(wèn)題;


  #include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit wr=P2^5;
sbit len=P2^7;
uchar annum,num,date;
uchar dis[16];

void delay(uint z)
{
        uint x,y;
        for(x=z;z>0;x--)
                for(y=110;y>0;y--);
}

void  write_com(uchar com)
{
        rs=0;
        P0=com;
        delay(5);
        len=1;
        delay(5);
        len=0;
       
}

void write_date(uchar date)
{
        rs=1;
        P0=date;
        delay(5);
        len=1;
        delay(5);
        len=0;
}

void keyscan()
{
        uchar temp,key;
        P3=0xfe;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                         temp=P3;
                        switch(temp)
                        {
                                case 0xee:
                                num=0;
                                break;
                                annum++;
                                case 0xde:
                                num=1;
                                annum++;
                                break;
                                case 0xbe:
                                num=2;
                                annum++;
                                break;
                                case 0x7e:
                                num=3;
                                annum++;
                                break;
                        }
                        while(temp!=0xf0);
                        {
                                P3=temp;
                                temp=temp&0xf0;
                        }                       
                }
        }
        P3=0xfd;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(5);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                case 0xed:
                                num=4;
                                annum++;
                                break;
                                case 0xdd:
                                num=5;
                                annum++;
                                break;
                                case 0xbd:
                                num=6;
                                annum++;
                                break;
                                case 0x7d:
                                num=7;
                                annum++;
                                break;
                        }
                        while(temp!=0xf0)
                        {
                       
                                temp=P3;
                                temp=temp&0xf0;
                        }
                }
        }
        P3=0xfb;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                case 0xeb:
                                num=8;
                                annum++;
                                break;
                                case 0xdb:
                                num=9;
                                annum++;
                                break;
                                case 0xbb:
                                num=10;
                                break;
                                case 0x7b:
                                num=11;
                                break;


                        }
                        while(temp!=0xf0)
                        {
                                temp=P3;
                                temp=temp&0xf0;
                        }
                }
        }
        P3=0xf7;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                case 0xe7:
                                num=12;
                                break;
                                case 0xd7:
                                num=13;
                                case 0xb7:
                                num=14;
                                break;
                                case 0x77:
                                num=15;
                                break;
                        }
                        while(temp!=0xf0)
                        {
                                temp=P3;
                                temp&0xf0;

                        }
                }


        }

}

uchar keysuan(uchar date)
{
          if(num==0)
                date=date+(num*annum*10);
        if(num==1)       
                date=date+(num*annum*10);
        if(num==2)
                date=date+(num*annum*10);
        if(num==3)
                date=date+(num*annum*10);
        if(num==4)
                date=date+(num*annum*10);
        if(num==4)
                date=date+(num*annum*10);
        if(num==5)
                date=date+(num*annum*10);
        if(num==6)
                date=date+(num*annum*10);
        if(num==7)
                date=date+(num*annum*10);
        if(num==8)
                date=date+(num*annum*10);
       
        if(num==9)
                {date=date+(num*annum*10);}
                return date;
          
}

void jisuan()
{
        write_com(0x80+0x40+16);
        dis[0]=date%10+0x30;
        dis[1]=date/10%10+0x30;
        dis[2]=date/100%10+0x30;
        dis[3]=date/1000%10+0x30;
        dis[4]=date/10000%10+0x30;
        dis[5]=date/100000%10+0x30;
        dis[6]=date/1000000%10+0x30;
        dis[7]=date/10000000%10+0x30;
        dis[8]=date/100000000%10+0x30;
        dis[9]=date/1000000000%10+0x30;
        dis[10]=date/10000000000%10+0x30;
}

void display()
{
  uchar i=0;
        write_com(0x80+0x50);
        while(dis[i]!='\0')
        {
                write_date(dis[i]);
                i++;
        }
        i=0;
}

void init()
{
    date=0;
        wr=0;
        write_com(0x38);
        write_com(0x0f);
        write_com(0x04);
        write_com(0x01);
}

void main()
{
        init();
        while(1)
        {
          keyscan();
          keysuan();
          jisuan();
          display();

        }

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

使用道具 舉報(bào)

沙發(fā)
ID:288207 發(fā)表于 2018-3-6 15:12 | 只看該作者
我是進(jìn)來(lái)學(xué)習(xí)的。
回復(fù)

使用道具 舉報(bào)

板凳
ID:125150 發(fā)表于 2018-3-6 22:00 | 只看該作者
你看看清屏代碼對(duì)了沒(méi)!
回復(fù)

使用道具 舉報(bào)

地板
ID:284007 發(fā)表于 2018-3-7 08:24 來(lái)自手機(jī) | 只看該作者
小狗吃大白菜 發(fā)表于 2018-3-6 22:00
你看看清屏代碼對(duì)了沒(méi)!

沒(méi)有,0x01是清屏指令
回復(fù)

使用道具 舉報(bào)

5#
ID:284007 發(fā)表于 2018-3-7 13:46 | 只看該作者
哪位大神指導(dǎo)一下
回復(fù)

使用道具 舉報(bào)

6#
ID:97352 發(fā)表于 2018-3-7 14:22 | 只看該作者
好像是你的
sbit wr=P2^5;
沒(méi)在使用,是不是時(shí)序不對(duì)?
回復(fù)

使用道具 舉報(bào)

7#
ID:271398 發(fā)表于 2018-3-7 15:07 | 只看該作者
檢查一下液晶的連線是否正確。
回復(fù)

使用道具 舉報(bào)

8#
ID:287754 發(fā)表于 2018-3-7 15:33 | 只看該作者
程序有錯(cuò)誤嗎
回復(fù)

使用道具 舉報(bào)

9#
ID:284007 發(fā)表于 2018-3-8 09:31 來(lái)自手機(jī) | 只看該作者
fhx9999 發(fā)表于 2018-3-7 14:22
好像是你的
sbit wr=P2^5;
沒(méi)在使用,是不是時(shí)序不對(duì)?

因?yàn)橹皇菍?xiě)所以這個(gè)口一直是設(shè)為低電平
回復(fù)

使用道具 舉報(bào)

10#
ID:284007 發(fā)表于 2018-3-8 09:31 來(lái)自手機(jī) | 只看該作者
844574875 發(fā)表于 2018-3-7 15:07
檢查一下液晶的連線是否正確。

是正確的應(yīng)該是程序有問(wèn)題
回復(fù)

使用道具 舉報(bào)

11#
ID:284007 發(fā)表于 2018-3-8 09:32 來(lái)自手機(jī) | 只看該作者
beha 發(fā)表于 2018-3-7 15:33
程序有錯(cuò)誤嗎

我還沒(méi)看出哪錯(cuò)了
回復(fù)

使用道具 舉報(bào)

12#
ID:284007 發(fā)表于 2018-3-8 09:33 來(lái)自手機(jī) | 只看該作者
fhx9999 發(fā)表于 2018-3-7 14:22
好像是你的
sbit wr=P2^5;
沒(méi)在使用,是不是時(shí)序不對(duì)?

時(shí)序沒(méi)問(wèn)題
回復(fù)

使用道具 舉報(bào)

13#
ID:213173 發(fā)表于 2018-3-8 15:50 | 只看該作者
你原來(lái)的程序根本不能通過(guò)編輯,修改錯(cuò)誤后得到的結(jié)果如下,這就是你想要的顯示效果?





改后的程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit wr=P2^5;
sbit len=P2^7;
uchar annum,num,date;
uchar dis[16];
/*******100us延時(shí)程序********/
void delay(uint x)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=10;b>0;b--);
}
/*******1ms延時(shí)程序********/
/*
void delay(uint z)
{
        uint x,y;
        for(x=z;z>0;x--)
                for(y=110;y>0;y--);
}*/
/*******液晶寫(xiě)指令程序**********/
void write_com(uchar com)
{
        len=0;
        rs=0;
        P0=com;
        delay(10);
        len=1;
        delay(10);
        len=0;        
}
/*******液晶寫(xiě)數(shù)據(jù)程序********/
void write_date(uchar date)
{
        rs=1;
        P0=date;
        delay(10);
        len=1;
        delay(10);
        len=0;
}
/*******液晶初始化程序********/
void init()
{
        date=0;
        wr=0;
        write_com(0x38);
        write_com(0x01);
//        write_com(0x0c);
//        write_com(0x06);
        write_com(0x0f);
        write_com(0x04);
        write_com(0x80);
}
void keyscan()                                        //按鍵掃描程序
{
        static bit sign=0;                        //按鍵有效標(biāo)志
        static uint count=0;                //消抖計(jì)數(shù)變量                       
        uchar num0=0;                                //臨時(shí)變量
        P3=0xf0;                                        //賦值P3 1111 0000
        if(P3!=0xf0)                                //檢測(cè)有按鍵按下
        {
                count++;                                //消抖計(jì)數(shù)
                if((count>=500)&&(sign==0))//100~1000,根據(jù)主循環(huán)周期調(diào)整約10~20ms
                {                       
                        sign=1;                                //按鍵有效標(biāo)志置1,防止重復(fù)響應(yīng)
                        num0=P3;                                //保存P3值xxxx 0000,x為0或1
                        num0|=0x0f;                        //保存num按位或0x0f值xxxx 1111
                        P3=num0;                                //賦值P3 xxxx 1111
                        num0=P3;                                //保存P3值xxxx xxxx
                        switch(num0)
                        {
                                case 0xee: num= 0;annum++; break;
                                case 0xde: num= 1;annum++; break;
                                case 0xbe: num= 2;annum++; break;
                                case 0x7e: num= 3;annum++; break;
                                case 0xed: num= 4;annum++; break;
                                case 0xdd: num= 5;annum++; break;
                                case 0xbd: num= 6;annum++; break;
                                case 0x7d: num= 7;annum++; break;
                                case 0xeb: num= 8;annum++; break;
                                case 0xdb: num= 9;annum++; break;
                                case 0xbb: num=10; break;
                                case 0x7b: num=11; break;
                                case 0xe7: num=12; break;
                                case 0xd7: num=13; break;
                                case 0xb7: num=14; break;
                                case 0x77: num=15; break;
                        }
                }
        }
        else                                                //鍵抬起
        {
                sign=0;                                //按鍵有效標(biāo)志清0
                count=0;                                //消抖計(jì)數(shù)清0
        }
}

uchar keysuan(uchar date)
{
        if(num==0)
               date=date+(num*annum*10);
        if(num==1)        
               date=date+(num*annum*10);
        if(num==2)
               date=date+(num*annum*10);
        if(num==3)
               date=date+(num*annum*10);
        if(num==4)
               date=date+(num*annum*10);
        if(num==4)
               date=date+(num*annum*10);
        if(num==5)
               date=date+(num*annum*10);
        if(num==6)
               date=date+(num*annum*10);
        if(num==7)
               date=date+(num*annum*10);
        if(num==8)
               date=date+(num*annum*10);       
        if(num==9)
               date=date+(num*annum*10);
        return date;
         
}

void jisuan()
{
        write_com(0x80+0x40+16);
        dis[0]=date%10+0x30;
        dis[1]=date/10%10+0x30;
        dis[2]=date/100%10+0x30;
        dis[3]=date/1000%10+0x30;
        dis[4]=date/10000%10+0x30;
        dis[5]=date/100000%10+0x30;
        dis[6]=date/1000000%10+0x30;
        dis[7]=date/10000000%10+0x30;
        dis[8]=date/100000000%10+0x30;
        dis[9]=date/1000000000%10+0x30;
        dis[10]=date/10000000000%10+0x30;
}
void display()
{
        uchar i=0;
        write_com(0x80+0x50);
        while(dis!='\0')
        {
                write_date(dis);
                i++;
        }
        i=0;
}
void main()
{
        init();
        while(1)
        {
                keyscan();
                date=keysuan(num);
                jisuan();
                display();
        }
}

IMG_20180308_152953_看圖王.jpg (40.95 KB, 下載次數(shù): 65)

IMG_20180308_152953_看圖王.jpg
回復(fù)

使用道具 舉報(bào)

14#
ID:287655 發(fā)表于 2018-3-8 19:48 | 只看該作者
代碼應(yīng)該沒(méi)毛病,只能是硬件問(wèn)題了
回復(fù)

使用道具 舉報(bào)

15#
ID:57831 發(fā)表于 2018-3-8 23:33 | 只看該作者
檢查一下液晶的連線是否正確。
回復(fù)

使用道具 舉報(bào)

16#
ID:289477 發(fā)表于 2018-3-9 03:57 | 只看該作者
&#128522;&#128522;MSP430系列單片機(jī)實(shí)用C語(yǔ)言程序設(shè)計(jì)與MSP430單片機(jī)常用模塊與綜合系統(tǒng)實(shí)例精講等光盤(pán)資料分享,里面有很多有用的例程.


下載內(nèi)容
---------------------
下載內(nèi)容包括3個(gè)文件夾:“程序代碼”、“實(shí)例插圖”、“電路圖”3個(gè)文件夾。
其中各個(gè)文件夾主要有以下內(nèi)容。

“程序代碼”文件夾里面的內(nèi)容為各實(shí)例章的程序源代碼。
“實(shí)例插圖”文件夾里面的內(nèi)容為各實(shí)例章的插圖,為bmp格式。
“實(shí)例電路圖”文件夾里面的內(nèi)容為各實(shí)例章的電路圖,由Protel99軟件制成。

;----------------------
;下載內(nèi)容使用說(shuō)明
;----------------------

下載內(nèi)容的程序需要采用C語(yǔ)言的編譯軟件打開(kāi)閱讀,也可以使用“UltraEdit”等軟件打開(kāi)閱讀或者編輯。
但是這些程序必須使用“Embedded Workbench”集成開(kāi)發(fā)環(huán)境進(jìn)行編譯調(diào)試。

下載內(nèi)容的電路圖是用Protel99軟件畫(huà)成的,所以必須使用該軟件打
回復(fù)

使用道具 舉報(bào)

17#
ID:213173 發(fā)表于 2018-3-9 15:22 | 只看該作者
本帖最后由 wulin 于 2018-3-9 16:42 編輯
july0 發(fā)表于 2018-3-8 09:32
我還沒(méi)看出哪錯(cuò)了

這么多錯(cuò)誤這么看不到???







回復(fù)

使用道具 舉報(bào)

18#
ID:222006 發(fā)表于 2018-3-10 10:53 | 只看該作者
代碼細(xì)節(jié)還有很多錯(cuò)誤,仔細(xì)調(diào)試吧
回復(fù)

使用道具 舉報(bào)

19#
ID:248050 發(fā)表于 2018-3-23 11:27 | 只看該作者
首先注意焊接有沒(méi)有問(wèn)題,其次看一下程序,最后注意調(diào)接在屏幕上的電阻阻值。
回復(fù)

使用道具 舉報(bào)

20#
ID:158940 發(fā)表于 2018-3-23 16:03 來(lái)自手機(jī) | 只看該作者
可能是程序錯(cuò)吧
回復(fù)

使用道具 舉報(bào)

21#
ID:296096 發(fā)表于 2018-3-23 19:36 | 只看該作者
代碼粗略讀起來(lái)沒(méi)有大問(wèn)題,建議再檢查一遍硬件連接與元器件
回復(fù)

使用道具 舉報(bào)

22#
ID:295217 發(fā)表于 2018-3-23 19:40 | 只看該作者
建議你買(mǎi)一本 郭天祥的《新概念 51單片機(jī) C語(yǔ)言教程》的書(shū)來(lái)看看,附帶光盤(pán)有視頻講解
回復(fù)

使用道具 舉報(bào)

23#
ID:296402 發(fā)表于 2018-3-24 16:35 | 只看該作者
沒(méi)有文字庫(kù)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩高清在线观看 | 韩国av一区二区 | 日韩伦理一区二区 | 午夜成人在线视频 | 91麻豆产精品久久久久久夏晴子 | 欧美一区二区在线观看 | 一区二区三区国产精品 | 成人一区二区三区 | 91xx在线观看 | 免费av直接看 | 中文字幕动漫成人 | 欧美日韩亚洲视频 | 午夜视频在线观看一区二区 | 午夜精品在线 | 天天夜夜人人 | 午夜激情影院 | 美日韩免费 | 嫩草视频在线 | 日韩在线综合网 | 国产一区二区精品 | 精品一区二区三区四区五区 | 久久精品视频一区二区 | 国产精品亚洲精品 | 日韩在线91 | aaa在线观看| 国产免费让你躁在线视频 | 日日日色 | 91精品国产综合久久久久 | h网站在线观看 | 国产精品一级 | 午夜网| 成年女人免费v片 | 久久99久久久久 | 在线观看黄视频 | 亚洲一区二区在线播放 | 欧美二区三区 | a毛片| 一区在线视频 | 国产一级片久久久 | 亚洲国产精品一区二区www | av中文字幕网 |