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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機用4x4鍵盤控制12864寫入

[復制鏈接]
跳轉到指定樓層
樓主
ID:302040 發表于 2018-4-4 15:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
鍵盤0~9一共10個鍵,還有一個確認鍵,一個修改鍵。我照著書比葫蘆畫瓢自己寫了一個,怎么用protues仿真不成功呢,大佬們幫幫忙。
#include<reg52.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P3^2;                                                                                                  //修改
sbit wela=P3^3;
#define LCD_data P0                                                                                          //12864顯示用P0口
sbit LCD_RS=P3^5;
sbit LCD_RW=P3^6;
sbit LCD_EN=P3^4;
sbit LCD_PSB=P3^7;
uchar code dis1[]={"歡迎通行"};
uchar code dis2[]={"車牌號:"};
uchar code dis3[]={"每公里5元"};
void delay(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--)
}

void write_cmd(uchar cmd)                           //寫命令
{
        LCD_RS=0;
        LCD_RW=0;
        LCD_EN=0;
        P0=cmd;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}
void write_dat(uchar dat)                                  //寫數據
{
        LCD_RS=1;
        LCD_RW=0;
        LCD_EN=0;
        P0=dat;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}
void lcd_pos(uchar X,uchar Y)
{
        uchar pos;
        if(X==0)
                {X=0x80;}
        if(X==1)
                {X=0x90;}
        if(X==2)
                {X=0x88;}
        if(X==3)
                {X=0x98;}
        pos=X+Y;
        write_cmd(pos);
}
void lcd_init()                                                   //LCD初始化設定
{
        LCD_PSB=1;
        write_cmd(0x30);
        delay(5);
        write_cmd(0x0C);
        delay(5);
        write_cmd(0x01);
        delay(5);
        write_cmd(0x06);
        delay(5);
        lcd_pos(0,0);
        uchar i=0;
        while(dis2[i]!='\0')
        {
                write_dat(dis2[i]);
                i++;
        }
        lcd_pos(1,0);
        i=0;
        while(dis3[i]!='\0')
        {
                write_dat(dis3[i]);
                i++;
        }       
}                                                                       
void matrixkeyscan()                                 //鍵盤掃描程序,使用P2口
{
        uchar temp,key;
        P2=0xfe;
        temp=p2;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P2;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P2;
                        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=P2;
                                temp=temp&0xf0;
                        }
                        write_dat(key);
                }
        }
        P2=0xfd;
        temp=p2;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P2;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P2;
                        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=P2;
                                temp=temp&0xf0;
                        }
                        write_dat(key);
                }
        }
        P2=0xfb;
        temp=p2;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P2;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P2;
                        switch(temp)
                        {
                                case 0xeb:
                                        key=8;
                                        break;
                                case 0xdb:
                                        key=9;
                                        break;
                         }
                        while(temp!=0xf0)
                        {
                                temp=P2;
                                temp=temp&0xf0;
                        }
                        write_dat(key);
                }
        }
        P2=0xfb;
        temp=p2;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P2;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P2;
                        switch(temp)
                        {
                                case 0xbb:                                 //此鍵位為數字確認按鍵
                                        break;
                         }
                        while(temp!=0xf0)
                        {
                                temp=P2;
                                temp=temp&0xf0;
                        }
                        write_cmd(0x01);
                        delay(5);
                        lcd_pos(1,0);
                        uchar i=0;
                        while(dis1[i]!='\0')
                        {
                                write_dat(dis1[i]);
                                i++;
                        }
                         
                }
        }
        P2=0xfb;
        temp=p2;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
                delay(10);
                temp=P2;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P2;
                        switch(temp)
                        {
                                case 0x7b:                                 //此鍵位為數字修改按鍵
                                        break;
                         }
                        while(temp!=0xf0)
                        {
                                temp=P2;
                                temp=temp&0xf0;
                        }
                        lcd_init();
                        lcd_pos(0,8);
                }
        }
}
void main()                                                                          //主函數
{
        wela=0;
        dula=0;
        uchar i;
        delay(10);
        lcd_init();
        lcd_pos(0,8);
        while(1)
        {
        matrixkeyscan();
        }
}

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

使用道具 舉報

沙發
ID:302297 發表于 2018-4-5 10:29 | 只看該作者
·······························································共同進步·1······························
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区另类 | 国产精品揄拍一区二区 | 中国三级黄色录像 | 欧美aⅴ | 国产欧美在线视频 | 久久久久久久久综合 | 欧美日韩专区 | 亚洲一区国产 | 久久99国产精品久久99果冻传媒 | 亚洲大片在线观看 | 欧美日韩亚洲一区 | 国产精品一区二区在线 | 国产精品毛片久久久久久久 | 黄色三级免费网站 | 免费观看一级特黄欧美大片 | 精品久久久久国产免费第一页 | 中文字幕综合 | 黄色国产视频 | 精品九九 | 国产一级一片免费播放 | 国产精品一区在线 | 日韩电影免费在线观看中文字幕 | 国产精品美女久久久久久久久久久 | 在线免费国产 | 一级黄色毛片a | 欧美淫片| 97人人超碰| 欧美日韩看片 | 中午字幕在线观看 | 成人在线一区二区三区 | 夜夜操操操 | 一区二区免费 | 在线观看成人免费视频 | 色在线免费视频 | 中国一级大毛片 | 欧美亚洲视频 | 日韩91在线| 999久久久久久久久6666 | 一a一片一级一片啪啪 | 国产美女高潮 | 亚洲精色|