zoukankan      html  css  js  c++  java
  • 矩阵键盘+数码管动态显示

    我把矩阵键盘和数码管动态显示综合起来写了个程序。这个代码的意思是在一开始8个数码管什么也不显示,因为p0的初始值是0x00,当我们按下矩阵按键里的按键时,8个数码管动态显示该按键的键值,直到按下了下一个按键,8个数码管显示的内容才可能改变。


    #include<reg52.h>//目的是每按下一个按键,8个数码管就动态显示对应的键值
    sbit lsa=P2^2;
    sbit lsb=P2^3;
    sbit lsc=P2^4;
    #define duanxuan P0
    #define keyboard P1
    int zxm[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    int x,y;
    void delay(int i)
    {
    	while(i--);
    }
    void keyproc()
    {
        int a=0;
    	P1=0x0f;//检测是哪一列有按键按下;
    	if(P1!=0x0f)
    	{
    		delay(1000);
    		if(P1!=0x0f)
    		{
    			P1=0x0f;
    			switch(P1)
    			{
    				case(0x07):y=1;break;
    				case(0x0b):y=2;break;
    				case(0x0d):y=3;break;
    				case(0x0e):y=4;break;
    			}
    		}
    		P1=0xf0;//检测是哪一行有按键按下
    		switch(P1)
    		{
    			case(0x70):x=1;break;
    			case(0xb0):x=2;break;
    			case(0xd0):x=3;break;
    			case(0xe0):x=4;break;
    		}
    		P0=zxm[(x-1)*4+y-1];
    		
    		
    
    	}
    }
    int main()
    {
    	P0=0x00;
    	while(1)
    	{   
    	    lsa=0;lsb=0;lsc=0;//位选选了第1个
    		lsa=1;lsb=0;lsc=0;//位选选了第2个
    		lsa=0;lsb=1;lsc=0;//位选选了第3个
    		lsa=1;lsb=1;lsc=0;//位选选了第4个
    		lsa=0;lsb=0;lsc=1;//位选选了第5个
    		lsa=1;lsb=0;lsc=1;//位选选了第6个
    		lsa=0;lsb=1;lsc=1;//位选选了第7个
    		lsa=1;lsb=1;lsc=1;//位选选了第8个
    		keyproc();
    
    		
    
    		
    		
    		
    	}
    	return 0;
    	
    }

  • 相关阅读:
    HTML5 向网页嵌入视频和音频
    HTML5中History.back()页面后退刷新页面
    阻止表单的默认提交事件
    SQL Server 2008带字段注释导入Power Designer 9.5
    CodeSmith将模板文件批量生成文件的方法(转)
    Nhibernate学习心得
    邮件发送代码
    Json的一些了解
    有关js的一个问题
    在IIS上启用Gzip压缩(HTTP压缩)
  • 原文地址:https://www.cnblogs.com/eason9906/p/11755122.html
Copyright © 2011-2022 走看看