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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2548|回復: 4
收起左側

關于天祥單片機開發板接口沖突問題

[復制鏈接]
回帖獎勵 15 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
ID:466435 發表于 2019-2-19 22:01 | 顯示全部樓層 |閱讀模式
想用郭天祥的tx-1c開發板做矩陣鍵盤輸入數字+lcd1602的顯示,但發現P3.4和P3.5口是共用的,P3.5的lcdrs不是問題,但P3.4的lcden是使能端,鍵盤掃描的時候按下的按鍵如果在P3.4這一欄下的話會讓液晶屏直接寫入數據,想問一下這個該如何解決?最好是通過編程的技巧來解決,謝謝!
回復

使用道具 舉報

ID:96682 發表于 2019-2-20 04:42 | 顯示全部樓層
開發板和程序是配套的,需要的只是設置好板上的端口
回復

使用道具 舉報

ID:213173 發表于 2019-2-20 14:53 | 顯示全部樓層
TX-1C開發板由于LCD1602占用了P3.4和P3.5口,導致板子上4*4矩陣鍵盤與LCD1602不能同時使用。板子上也沒有可供選擇的跳線。就現有硬件結構想通過編程技巧完成兩者共用達不到理想的顯示效果(也許給P0賦一個無效值會改善)。如果改寫成2*4矩陣鍵盤與LCD1602共用則沒有任何問題。
回復

使用道具 舉報

ID:463518 發表于 2019-2-20 15:10 | 顯示全部樓層
你是自己改程序的話,可以先不用4*4的鍵盤,3*4也可以的,你是簡單的顯示驗證,你驗證好之后想做個計算器什么的,可以再重新畫板,去做一個真正的實物。

評分

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

查看全部評分

回復

使用道具 舉報

ID:213173 發表于 2019-2-20 18:04 | 顯示全部樓層
寫一個適合TX-1C開發板電路的2*4矩陣鍵盤+LCD1602示例程序給你參考,仿真電路圖與TX-1C開發板相關電路相同。
無標題.jpg


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS=P3^5;        //液晶屏RS口  寫指令低,寫數據高
sbit LCD_EN=P3^4;        //液晶屏EN口  高脈沖使能寫指令/數據,低跳變執行
sbit code0=P3^0;        //2*4矩陣端口
sbit code1=P3^1;
sbit code2=P3^2;
sbit code3=P3^3;
sbit code4=P3^6;
sbit code5=P3^7;

uchar key=0;//定義鍵值全局變量
bit flag=0;        //按鍵操作標志
/*******100us延時程序********/
void delay(uint x)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=10;b>0;b--);
}

void PX(uchar i)//寫入2*4矩陣端口數據
{
        code0=i&0x01;i>>=1;       
        code1=i&0x01;i>>=1;
        code2=i&0x01;i>>=1;
        code3=i&0x01;i>>=1;
        code4=i&0x01;i>>=1;
        code5=i&0x01;
}

uchar PD()                //讀取2*4矩陣端口數據
{
        uchar i;
        i=code5;
        i=(i<<1)|code4;
        i=(i<<1)|code3;
        i=(i<<1)|code2;
        i=(i<<1)|code1;
        i=(i<<1)|code0;
        return i;
}
/*******液晶寫指令程序********/
void write_com(uchar com)
{
        LCD_EN=0;        //初始設置LCD_EN低電平
        LCD_RS=0;        //允許寫指令
        P0=com;                //傳遞指令
        delay(10);        //延時1ms
        LCD_EN=1;        //使能寫入
        delay(10);        //延時1ms
        LCD_EN=0;        //低跳變執行       
}
/*******液晶寫數據程序********/
void write_date(uchar date)
{
//        LCD_EN=0;        //初始設置LCD_EN低電平
        LCD_RS=1;        //允許寫數據
        P0 =date;        //傳遞數據
        delay(10);        //延時1ms
        LCD_EN=1;        //使能寫入
        delay(10);        //延時1ms
        LCD_EN=0;        //低跳變執行
       
}
/*******液晶初始化程序********/
void init()                //設置顯示模式、
{
        write_com(0x38);//設置16*2顯示,5*7點陣,8位數據接口
        write_com(0x01);//顯示清零,數據指針清零
        write_com(0x0c);//設置開顯示,不顯光標
        write_com(0x06);//設置寫一個字符后地址指針加1
}

void keyscan()                                        //按鍵掃描程序
{
        static bit sign=0;                        //按鍵自鎖標志
        static uint count=0;                //消抖計數變量                       
        uchar num=0;                                //臨時變量
        PX(0x30);                                        //先給矩陣端口賦一個初值0011 0000
        if(PD()!=0x30)                                //檢測有按鍵按下
        {
                if((++count>=500)&&(sign==0))//100~1000,根據主循環周期調整約10~20ms
                {                       
                        sign=1;                                //按鍵自鎖標志置1
                        num=PD();                        //保存PD高2位00xx 0000,x為0或1
                        PX(num|0x0f);                //再給矩陣端口賦一個值00xx 1111
                        num=PD();                        //保存PD()值  00xx xxxx
                        switch(num)
                        {
                                case 0x2e: key= 1; break;
                                case 0x2d: key= 2; break;
                                case 0x2b: key= 3; break;
                                case 0x27: key= 4; break;
                                case 0x1e: key= 5; break;
                                case 0x1d: key= 6; break;
                                case 0x1b: key= 7; break;
                                case 0x17: key= 8; break;
                        }
                        flag=1;                        //按鍵操作標志置1
                }
        }
        else                                                //鍵抬起
        {
                sign=0;                                //按鍵自鎖標志清0
                count=0;                                //消抖計數清0
        }
}
/**********************主程序*************************/
void main()
{
        init();                                                //初始化LCD程序
        write_com(0x80);                        //數據指針第一行起始0x80位置
        write_date(key+'0');                //寫一個字節數據       
        while(1)
        {
                keyscan();                                //2*4矩陣鍵盤掃描
                if(flag==1)                                //按鍵操作標志1刷新LCD
                {
                        flag=0;                                //按鍵操作標志清0
                        write_com(0x80);                //數據指針第一行起始0x80位
                        write_date(key+'0');        //寫一個字節數據                               
                }
        }
}


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频在线播放 | 超碰人人插 | 日本精品一区二区 | 国产亚洲精品美女久久久久久久久久 | 一级做a爰片性色毛片16美国 | 国产a区| 日韩不卡视频在线观看 | 久久国产精品72免费观看 | 91精品国产欧美一区二区 | 国产精品亚洲一区二区三区在线 | 成人在线视频网 | 97av在线| 性做久久久久久免费观看欧美 | 中文字幕精品一区二区三区精品 | 天堂一区 | 中文字幕亚洲一区二区三区 | 日韩视频专区 | 一区二区三区免费观看 | 国产精品不卡一区二区三区 | 日韩国产在线 | 午夜小视频在线观看 | 亚洲综合99| 毛色毛片免费看 | www.国产精 | 在线看免费 | 亚洲欧美日韩精品久久亚洲区 | 男人天堂网址 | 亚洲综合电影 | 91亚洲国产 | 91久久久久久久久久久 | 国产视频一视频二 | 亚洲三区在线播放 | 国产精品久久国产精品久久 | 久久精品黄色 | 婷婷五月色综合香五月 | 激情欧美一区二区三区中文字幕 | www.99热这里只有精品 | 黄页网址在线观看 | 欧美一区二区在线观看 | 欧美日韩视频在线播放 | 尤物在线精品视频 |