⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 panel.c

📁 51单片机最小系统用的C语言程序
💻 C
字号:
/******************************************************************************
	PANEL.C
	按键与显示子程序
	Copyright (c) 2007.09.11
	All rights reserved.
******************************************************************************/
#define panel_c
#include "main.h"

/******************************************************************************
函数名称:KeyScan()
函数功能:键盘扫描子程序
注意事项:
提示说明:
输    入:无
返    回:无
******************************************************************************/
void KeyScan()
{
	unsigned char i,j,k;
	unsigned int m;	
//		portd|=0xf0;				//高4位为输入
//        portc|=0x07;
//		portc&=0xfe;       			//读下行
		i=0x05;while(i--){;}		//8+3*(i-1)延时20
//		j=(portd^0xf0)&0xf0;
        j=j>>4;
        
//        portc|=0x07;
//		portc&=0xfd;				//读中行
		i=0x05;while(i--){;}
//		j+=((portd^0xf0)&0xf0);

//        portc|=0x07;
//		portc&=0xfb;				//读上行
		i=0x05;while(i--){;}	
//		k=((portd^0xf0)&0xf0);
        k=k>>4;
//        portc|=0x07;

		//以下是去抖动				j\k分别为key1、key2的BUF
		if(j|k)					//有键
		{	
		 	if(key_Cnt>=0x08)		//采样到8次都为高电平
			{
				key.halfkey[0]=j;			//则赋当前值
				key.halfkey[1]=k;
				key_Cnt=0x00;
			}
			else 					//没采样到8次
			{
				key_Cnt++;
				key.allkey=lastkey.allkey;
			}
		}			
		else						//没键
		{			
			key.allkey=0x0000;
			key_Cnt=0x00;
		}
			m=key.allkey;				//以下是键后处理,键前沿检出
			key.allkey=key.allkey&(lastkey.allkey^key.allkey);
			lastkey.allkey=m;
}
/******************************************************************************
函数名称:display()
函数功能:
注意事项:
提示说明:
输    入:无
返    回:无
******************************************************************************/
void Display(void)
{
    uchar i;
    i=Bit_Select&0x03;
    porta=0xff;
//    portc=portc|0xf0;
    if(i&0x02)
    {
        if(i&0x01)
        {
            porta=LED8[((dsbuf[1]&0x0f)+0x10)];
            if(dspoint&0x80)
            {
                if(Bit_Select&0x80){porta=0xff;}
            }
            if(dspoint&0x08){porta&=0x7f;}
//            portc&=0x7f;
        }
        else
        {
            porta=LED8[((dsbuf[1]>>4)&0x0f)+0x20];
            if(dspoint&0x40)
            {
                if(Bit_Select&0x80){porta=0xff;}
            }
            if(dspoint&0x04){porta&=0xfe;}
//            portc&=0xbf;
        }
    }
    else
    {
        if(i&0x01)
        {
            porta=LED8[(dsbuf[0]&0x0f)+0x10];
            if(dspoint&0x20)
            {
                if(Bit_Select&0x80){porta=0xff;}
            }
            if(dspoint&0x02){porta&=0x7f;}
//            portc&=0xdf;
        }
        else
        {
            porta=LED8[(dsbuf[0]>>4)&0x0f];
            if(dspoint&0x10)
            {
                if(Bit_Select&0x80){porta=0xff;}
            }
            if(dspoint&0x01){porta&=0xef;}
//            portc&=0xef;
        }
    }
    Bit_Select++;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -