• 矩阵键盘+数码管动态显示


    我把矩阵键盘和数码管动态显示综合起来写了个程序。这个代码的意思是在一开始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;
    	
    }

  • 相关阅读:
    sublime如何自动保存
    什么是DQL、DML、DDL、DCL
    Linux Shall命令入门
    省市区地址三级联动jQuery插件Distpicker使用
    ThinkPHP3.2设置404跳转页面
    File.separator
    HiddenHttpMethodFilter
    SpringMVC环境搭建
    JVM介绍(一)
    some characters cannot be mapped using iso-8859-1 character encoding
  • 原文地址:https://www.cnblogs.com/eason9906/p/11755121.html
Copyright © 2020-2023  润新知