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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么液晶處沒有顯示

  [復制鏈接]
回帖獎勵 5 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
這是僅僅有一小部分功能的計算器程序,但液晶去沒反應;求各位指出問題;


  #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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:288207 發表于 2018-3-6 15:12 | 只看該作者
我是進來學習的。
回復

使用道具 舉報

板凳
ID:125150 發表于 2018-3-6 22:00 | 只看該作者
你看看清屏代碼對了沒!
回復

使用道具 舉報

地板
ID:284007 發表于 2018-3-7 08:24 來自手機 | 只看該作者
小狗吃大白菜 發表于 2018-3-6 22:00
你看看清屏代碼對了沒!

沒有,0x01是清屏指令
回復

使用道具 舉報

5#
ID:284007 發表于 2018-3-7 13:46 | 只看該作者
哪位大神指導一下
回復

使用道具 舉報

6#
ID:97352 發表于 2018-3-7 14:22 | 只看該作者
好像是你的
sbit wr=P2^5;
沒在使用,是不是時序不對?
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

9#
ID:284007 發表于 2018-3-8 09:31 來自手機 | 只看該作者
fhx9999 發表于 2018-3-7 14:22
好像是你的
sbit wr=P2^5;
沒在使用,是不是時序不對?

因為只是寫所以這個口一直是設為低電平
回復

使用道具 舉報

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

是正確的應該是程序有問題
回復

使用道具 舉報

11#
ID:284007 發表于 2018-3-8 09:32 來自手機 | 只看該作者
beha 發表于 2018-3-7 15:33
程序有錯誤嗎

我還沒看出哪錯了
回復

使用道具 舉報

12#
ID:284007 發表于 2018-3-8 09:33 來自手機 | 只看該作者
fhx9999 發表于 2018-3-7 14:22
好像是你的
sbit wr=P2^5;
沒在使用,是不是時序不對?

時序沒問題
回復

使用道具 舉報

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





改后的程序:
#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延時程序********/
void delay(uint x)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=10;b>0;b--);
}
/*******1ms延時程序********/
/*
void delay(uint z)
{
        uint x,y;
        for(x=z;z>0;x--)
                for(y=110;y>0;y--);
}*/
/*******液晶寫指令程序**********/
void write_com(uchar com)
{
        len=0;
        rs=0;
        P0=com;
        delay(10);
        len=1;
        delay(10);
        len=0;        
}
/*******液晶寫數據程序********/
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;                        //按鍵有效標志
        static uint count=0;                //消抖計數變量                       
        uchar num0=0;                                //臨時變量
        P3=0xf0;                                        //賦值P3 1111 0000
        if(P3!=0xf0)                                //檢測有按鍵按下
        {
                count++;                                //消抖計數
                if((count>=500)&&(sign==0))//100~1000,根據主循環周期調整約10~20ms
                {                       
                        sign=1;                                //按鍵有效標志置1,防止重復響應
                        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;                                //按鍵有效標志清0
                count=0;                                //消抖計數清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, 下載次數: 65)

IMG_20180308_152953_看圖王.jpg
回復

使用道具 舉報

14#
ID:287655 發表于 2018-3-8 19:48 | 只看該作者
代碼應該沒毛病,只能是硬件問題了
回復

使用道具 舉報

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

使用道具 舉報

16#
ID:289477 發表于 2018-3-9 03:57 | 只看該作者
&#128522;&#128522;MSP430系列單片機實用C語言程序設計與MSP430單片機常用模塊與綜合系統實例精講等光盤資料分享,里面有很多有用的例程.


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

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

;----------------------
;下載內容使用說明
;----------------------

下載內容的程序需要采用C語言的編譯軟件打開閱讀,也可以使用“UltraEdit”等軟件打開閱讀或者編輯。
但是這些程序必須使用“Embedded Workbench”集成開發環境進行編譯調試。

下載內容的電路圖是用Protel99軟件畫成的,所以必須使用該軟件打
回復

使用道具 舉報

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

這么多錯誤這么看不到???







回復

使用道具 舉報

18#
ID:222006 發表于 2018-3-10 10:53 | 只看該作者
代碼細節還有很多錯誤,仔細調試吧
回復

使用道具 舉報

19#
ID:248050 發表于 2018-3-23 11:27 | 只看該作者
首先注意焊接有沒有問題,其次看一下程序,最后注意調接在屏幕上的電阻阻值。
回復

使用道具 舉報

20#
ID:158940 發表于 2018-3-23 16:03 來自手機 | 只看該作者
可能是程序錯吧
回復

使用道具 舉報

21#
ID:296096 發表于 2018-3-23 19:36 | 只看該作者
代碼粗略讀起來沒有大問題,建議再檢查一遍硬件連接與元器件
回復

使用道具 舉報

22#
ID:295217 發表于 2018-3-23 19:40 | 只看該作者
建議你買一本 郭天祥的《新概念 51單片機 C語言教程》的書來看看,附帶光盤有視頻講解
回復

使用道具 舉報

23#
ID:296402 發表于 2018-3-24 16:35 | 只看該作者
沒有文字庫
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产综合久久小仙女图片 | 91精品入口蜜桃 | 2019中文字幕视频 | 国产精品久久久久久吹潮 | 国产精品夜夜夜一区二区三区尤 | 九九精品在线 | 91精品中文字幕一区二区三区 | 国产我和子的乱视频网站 | 亚洲精品免费在线观看 | 日韩欧美在线免费观看视频 | 91亚洲国产成人久久精品网站 | 国产精品美女www爽爽爽视频 | 中文字幕一区二区三区不卡在线 | 天天操网| 亚洲一区二区日韩 | 高清不卡毛片 | 福利视频网 | 高清一区二区三区 | 久久伦理电影 | 免费在线一区二区 | www.五月天婷婷 | 国产精品爱久久久久久久 | 精品一区二区久久久久久久网精 | 亚洲高清在线观看 | 欧美一区二区三区小说 | 欧美日韩国产一区二区三区 | 中文字幕日韩欧美 | 中文字幕一区二区三区乱码在线 | 999久久久 | 日韩一区不卡 | 久久99深爱久久99精品 | 精品久久香蕉国产线看观看亚洲 | 我我色综合 | 91精品一区 | 久久久久亚洲国产| 欧美一级三级在线观看 | www.亚洲一区 | 女同videos另类| 国产精品一区二区三区四区 | 激情一区二区三区 | 亚洲一区欧美 |