📄 display.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 + -