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

📄 display.c

📁 一个流量控制仪器的源码
💻 C
字号:
/************************************************************************************/
/* G7000 V3 数码管显示												*/
/* MCU 型号: Philips P89C668														*/
/* 时钟频率: 11.0592 MHz	6 CLOCK														    */
/* 开发环境: Keil C51 V7.06a															*/
/* 开发日期: 2003.08.23													        	*/
/* 程序编写: BaoFang  鲍方															*/
/* 系统版本: V3.30																	*/
/************************************************************************************/

#include <REG668.H>
#include <G7000.H>
#include <7279A_P2.H>
#include <General.H>


#define uchar unsigned char
#define uint unsigned int

//显示变量定义

idata uchar ucDisplayState;	//系统显示状态,参考预定义的符号

idata uchar ucKeyInput;                       //重要的键盘输入值,0xFF表示没有,或者已经处理

/*定义系统软件的版本号与开发时间等信息*/
const uchar code uc4_SystemVer[4]={0,3,6,4};	/*版本显示缓冲区*/


//显示缓冲区

typedef struct
{
        uchar ucDisplayBuf[8];		//显示缓冲区
        uchar ucDisplayDk;		//显示闪烁控制
        uchar ucDisplayFlash;		//刷新控制
}    DisplayBufStruct;

//为每一个显示内容都建立一个BUF,空间足够的话。。。。
idata DisplayBufStruct DisplayBufList[3]=
{
	{{0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f},0,0},
	{{0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f},0,0},
	{{0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f},0,0}
};

//键盘变量定义
bit	bKeyDown=0;


/*******************************************************************
		显示键盘模块初始化
函数原型: void	fnInit_DisplayKeyBaord()
功能: 	HD7279A芯片初始化
********************************************************************/
void	fnInit_DisplayKeyBaord()
{
        uint i;

        HD7279_INIT();
        bKeyDown = 0;


        ucDisplayState = Display_02Turn;  //系统显示状态  时段显示

        //系统软件版本显示
        DisplayBufList[Display_02Turn].ucDisplayBuf[0] = 0x0a;
        DisplayBufList[Display_02Turn].ucDisplayBuf[1] = 0x0a;

        DisplayBufList[Display_02Turn].ucDisplayBuf[3] = uc4_SystemVer[1]+0x80;
        DisplayBufList[Display_02Turn].ucDisplayBuf[4] = uc4_SystemVer[2];
        DisplayBufList[Display_02Turn].ucDisplayBuf[5] = uc4_SystemVer[3];

        DisplayBufList[Display_02Turn].ucDisplayBuf[6] = 0x0a;
        DisplayBufList[Display_02Turn].ucDisplayBuf[7] = 0x0a;

       	HD7279_DISP(DisplayBufList[Display_02Turn].ucDisplayBuf);


		//延时显示版本号
        for (i=0;i<40000;i++)        
                ;

		//蜂鸣器
        fnBeep(1);

        for (i=0;i<10000;i++)        
                ;

        fnBeep(0);

		//延时显示版本号
        for (i=0;i<40000;i++)        
                ;

}


/*******************************************************************
		获取所需显示缓冲区指针函数
函数原型: uchar *fnDisplayBufSet(uchar ucDisplayBufN)
功能: 	获取所需显示缓冲区指针函数
********************************************************************/
uchar *fnDisplayBufSet(uchar ucDisplayBufN)
{
        return(DisplayBufList[ucDisplayBufN].ucDisplayBuf);
}

/*******************************************************************
		显示指定缓冲区函数
函数原型: void fnDisplayTheBuf(uchar ucDisplayBufN)
功能: 	显示指定缓冲区
********************************************************************/
void fnDisplayTheBuf(uchar ucDisplayBufN)
{
       	HD7279_DISP(DisplayBufList[ucDisplayBufN].ucDisplayBuf);
	HD7279_DK(~DisplayBufList[ucDisplayBufN].ucDisplayDk);
}

/*******************************************************************
		设置指定缓冲区闪烁控制函数
函数原型: void	fnDisplaySetDk(uchar ucDiskplayDk);
功能: 	设置指定缓冲区闪烁控制
********************************************************************/
void	fnDisplaySetDk(uchar ucDisplayBufN,uchar ucDiskplayDk)
{
        DisplayBufList[ucDisplayBufN].ucDisplayDk = ucDiskplayDk;
}

/*******************************************************************
		键盘无暂停检测函数
函数原型: uchar fnKeyboardRead()
功能: 	键盘无暂停检测,返回KEY_NOKey,表示无按键。
注意:  检测无暂停,当有键盘按下时,直到同样的键松开,或者其它键按下
      才检测。需要检测循环短。??
********************************************************************/
uchar fnKeyboardRead()
{
	uchar Key;

        //检测按键按下,防止连击
	if((!KEY) &&(!bKeyDown) )
	{
		
		Key = HD7279_GETKEY();; //读入键值

                bKeyDown = 1;
		
		
		return Key;
	}

        //检测按键松开,防止连击
        if((KEY) &&(bKeyDown) )	
        //if(KEY)
	{
                bKeyDown = 0;

	}

	return KEY_NOKey;
}

/*******************************************************************
                键盘码数字检测函数:
函数原型: uchar fnKeyboardNumCheck();
功能:  检测当前键盘码是否为数字键,返回0-9数字值,返回0xFF,表示非数字键
注意:  函数只检测ucKeyInput变量,不直接读入键盘。
        如果检测到数字键,则清空ucKeyInput为KEY_NOKey,表示已处理。
********************************************************************/
uchar fnKeyboardNumCheck()
{
	switch (ucKeyInput)
	{
	
	case KEY_0:		ucKeyInput = KEY_NOKey;
                                return(0);
					break;	
	case KEY_1:		ucKeyInput = KEY_NOKey;
                                return(1);
					break;
	case KEY_2:		ucKeyInput = KEY_NOKey;
                                return(2);
					break;
	case KEY_3:		ucKeyInput = KEY_NOKey;
                                return(3);
					break;
	case KEY_4:		ucKeyInput = KEY_NOKey;
                                return(4);
					break;	
	case KEY_5:		ucKeyInput = KEY_NOKey;
                                return(5);
					break;
	case KEY_6:		ucKeyInput = KEY_NOKey;
                                return(6);
					break;
	case KEY_7:		ucKeyInput = KEY_NOKey;
                                return(7);
					break;
	case KEY_8:		ucKeyInput = KEY_NOKey;
                                return(8);
					break;
	case KEY_9:		ucKeyInput = KEY_NOKey;
                                return(9);
					break;

	default:		return(0xff);
				
	}
}

⌨️ 快捷键说明

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