久久久久久久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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 365夜爽爽欧美性午夜免费视频 | 日干夜干| 欧美国产激情 | 97日日碰人人模人人澡分享吧 | 亚洲激情综合 | 国产一级一片免费播放 | 国产伊人久久久 | 中文字幕日韩欧美 | 中文字幕一区二区三区四区 | 国产精品久久久久久久白浊 | 亚洲电影在线播放 | 波波电影院一区二区三区 | 国产一区二区三区精品久久久 | 成人免费小视频 | 欧美精品在线一区 | 免费xxxx大片国产在线 | 黄色国产 | 久久手机在线视频 | 免费精品 | 国产午夜视频 | 另类 综合 日韩 欧美 亚洲 | 福利视频二区 | 91视视频在线观看入口直接观看 | 日韩精品在线看 | 一级免费毛片 | 国产一二三区免费视频 | 日本精品一区 | 国产亚洲一区二区三区 | 国产成人小视频 | 福利网址 | 少妇午夜一级艳片欧美精品 | 色综合一区二区 | 91社区在线观看 | 久久伊人影院 | h视频在线免费观看 | 曰批视频在线观看 | 亚洲激情网站 | 久久久av一区 | 四色永久| 国产色黄 | 欧美自拍第一页 |