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

標題: 51單片機用4x4鍵盤控制12864寫入 [打印本頁]

作者: rocky0521    時間: 2018-4-4 15:28
標題: 51單片機用4x4鍵盤控制12864寫入
鍵盤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();
        }
}


作者: yinjianchao    時間: 2018-4-5 10:29
·······························································共同進步·1······························




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产高清在线精品 | 桃色五月 | 国产第一区二区 | 污片在线免费观看 | 在线播放第一页 | 久久一区视频 | 日本激情视频在线播放 | 国产精品久久久久久久久久妇女 | 日韩欧美视频网站 | 成人性视频免费网站 | 国产一区二区三区久久久久久久久 | 中文字幕久久精品 | 日韩一二三区视频 | 日韩电影在线一区 | 91精品国产综合久久婷婷香蕉 | 欧美高清免费 | 中文字幕一区二区三区不卡 | 亚洲视频在线免费观看 | 国产精品久久久久久吹潮 | 天天色综| 久久91| 99热这里| 国产一区二区欧美 | 亚洲欧美日韩网站 | a精品视频 | 91视频一区二区 | 日韩av三区 | 国产亚洲精品久久情网 | 色就干 | 精品日韩一区二区 | 久久久精品影院 | 九九导航| 久在线| 成人亚洲网 | 成人亚洲视频 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲国产精品99久久久久久久久 | 伊人精品在线视频 | 国产 欧美 日韩 一区 | 在线精品观看 | 爱操影视 |