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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

麻煩各位大神幫忙看看 矩陣鍵盤在1602上不顯示

[復制鏈接]
跳轉到指定樓層
樓主
#include<reg52.h>                                                                                                       
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit rw=P3^6;
sbit lcden=P3^7;

void Delay100ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 180;
        j = 73;
        do
        {
                while (--j);
        } while (--i);
}

void Delay10ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 18;
        j = 235;
        do
        {
                while (--j);
        } while (--i);
}


void write_com(uchar com)                                                                     //寫命令
{
rs=0;                                          
rw=0;
lcden=0;
P0=com;
Delay100ms();
lcden=1;
Delay100ms();
lcden=0;
}
void write_date(uchar date)                                                                 //寫數據
{
rs=1;
rw=0;
lcden=0;
P0=date;
Delay100ms();
lcden=1;
Delay100ms();
lcden=0;
}
void init()                                                                                         //初始化函數
{         
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);  
}
void keyscan()
{
  uchar temp,key;
  P3=0xfe;
  temp=P3;
  temp=temp&0xf0;
  if(temp!=0xf0)
  {
   Delay10ms();
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
    temp=P3;
        switch(temp)
        {
         case 0xee:key=0;break;
         case 0xde:key=1;break;
         case 0xbe:key=2;break;
         case 0x7e:key=3;break;
        }
        while(temp!=0xf0)
        {
         temp=P3;
         temp=temp&0xf0;
        }
        write_com(0x80+0x40+4);
   }
}
  P3=0xfd;
  temp=P3;
  temp=temp&0xf0;
  if(temp!=0xf0)
  {
   Delay10ms();
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
    temp=P3;
        switch(temp)
        {
         case 0xed:key=4;break;
         case 0xdd:key=5;break;
         case 0xbd:key=6;break;
         case 0x7d:key=7;break;
        }
        while(temp!=0xf0)
        {
         temp=P3;
         temp=temp&0xf0;
        }
        write_com(0x80+0x40+4);
   }
}
P3=0xfb;
  temp=P3;
  temp=temp&0xf0;
  if(temp!=0xf0)
  {
   Delay10ms();
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
    temp=P3;
        switch(temp)
        {
         case 0xeb:key=8;break;
         case 0xdb:key=9;break;
         case 0xbb:key=10;break;
         case 0x7b:key=11;break;
        }
        while(temp!=0xf0)
        {
         temp=P3;
         temp=temp&0xf0;
        }
        write_com(0x80+0x40+4);
   }
}
P3=0xf7;
  temp=P3;
  temp=temp&0xf0;
  if(temp!=0xf0)
  {
   Delay10ms();
   temp=P3;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
    temp=P3;
        switch(temp)
        {
         case 0xe7:key=12;break;
         case 0xd7:key=13;break;
         case 0xb7:key=14;break;
         case 0x77:key=15;break;
        }
        while(temp!=0xf0)
        {
         temp=P3;
         temp=temp&0xf0;
        }
        write_com(0x80+0x40+4);
   }
}                                                                                               
}

void main()                                                                                                                                                                                          //主函數
  {
  init();
  while(1)
  {
   keyscan();
  }
}


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

使用道具 舉報

沙發
ID:149451 發表于 2017-5-11 08:43 | 只看該作者
初步看,鍵盤掃描里最終執行的僅有向LCD寫命令的函數,沒有寫數據的函數;另P3口與LCD控制端共用也存疑問,需考慮合適否。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:198338 發表于 2017-5-11 15:47 | 只看該作者
w1179benp 發表于 2017-5-11 08:43
初步看,鍵盤掃描里最終執行的僅有向LCD寫命令的函數,沒有寫數據的函數;另P3口與LCD控制端共用也存疑問, ...

能幫忙改下嗎
回復

使用道具 舉報

地板
ID:111634 發表于 2017-5-11 18:35 | 只看該作者
本帖最后由 zl2168 于 2017-5-11 19:13 編輯

需先解決2個問題:鍵掃描和1602顯示
實例62 4×4矩陣式鍵盤
實例67  LCD1602顯示屏顯示
先Proteus仿真一下,確認有效。
實例61 LCD1602顯示屏顯示.rar (49.26 KB, 下載次數: 9)
實例62 4×4矩陣式鍵盤.rar (44.79 KB, 下載次數: 5)


以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

5#
ID:381421 發表于 2018-11-1 21:23 | 只看該作者
解決了嗎? 我也是矩陣鍵盤與1602拼在一起 不能顯示
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕一区二区 | 久久久久国产精品免费免费搜索 | 中文字幕在线观看视频网站 | 中文字幕av第一页 | 99影视| 操久久 | 色秀网站| 亚洲精品国产一区 | 日韩在线小视频 | 国产精品一区二区三区在线 | 99精品久久久 | 欧美一区二区在线视频 | 免费黄色在线观看 | 久久人| 综合久久一区 | 99精品国产一区二区青青牛奶 | 精品视频一区二区 | 国产一区二区三区视频免费观看 | 免费一区二区三区 | 91福利网址 | 成年免费视频 | 欧美亚洲成人网 | 综合九九 | 亚洲精品视频一区二区三区 | 成人中文网 | 精品一区二区三区免费视频 | 中文字幕av在线 | 国产在线精品一区二区三区 | av网站免费在线观看 | 天堂久久网| 久久成人国产 | 色婷婷激情 | 免费三级网站 | 91在线最新| 亚洲欧美一区二区三区情侣bbw | 欧美日韩中文在线 | h视频免费在线观看 | 在线观看亚洲专区 | 天天操网 | 精品亚洲一区二区三区 | 成人一区在线观看 |