📄 main.c
字号:
//=====================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//======================================================================
//=========================================================================
// 工程名称: ex2_Led_4Mul4_Key
// 功能描述: 《实验指导书》综合实验
// 数码管显示与4*4键盘
// 涉及的库: CMacro1016.lib
// 组成文件: main.c
// isr.asm,Dig.asm,Key.asm
// Dig.inc,SPCE061A.inc,Key.inc
// Dig.h,SPCE061A.h,Key.h
// 硬件连接: IOA口低8位连接1*8数码管的段选
// IOB口IOB15 、IOB14、IOB13、IOB12、IOB2、IOB1、IOB0连接位选
// IOA口高8位连接4*4键盘
// 维护记录: 2005-10-14 v1.0
//
//===========================================================================
//========================================================
// 文件名称: main.c
// 功能描述: 数码管显示
// 维护记录: 2005-10-14 v1.0
//========================================================
#include "SPCE061A.h"
#include "Dig.h"
#include "Key.h"
unsigned int g_Data[11] = {0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f};
//0, 1, 2, 3, 4, 5, 6, 7, 8, 9
//========================================================
// 语法格式: int main(void)
// 实现功能: 数码管显示
// 参数: 无
// 返回值: 无
//========================================================
int main(void)
{
int Ent_Flag = 0;
unsigned int uiKey;
unsigned int uiData[6] = {1,0,0,0,0,1};
uiData[0] = 0;
uiData[5] = 0;
Key_Init();
DIG_Init();
while(1)
{
uiKey = Key_Get();
switch(uiKey)
{
case KEY_0: //数字“7”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 7; //第六位数码管显示“7”
}
break;
case KEY_1: //数字“8”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 8; //第六位数码管显示“8”
}
break;
case KEY_2: //数字“9”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 9; //第六位数码管显示“9”
}
break;
case KEY_3: //保留“F1”键
break;
case KEY_4: //数字“4”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 4; //第六位数码管显示“4”
}
break;
case KEY_5: //数字“5”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 5; //第六位数码管显示“5”
}
break;
case KEY_6: //数字“6”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 6; //第六位数码管显示“6”
}
break;
case KEY_7: //保留“F2”键按下
break;
case KEY_8: //数字“1”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 1; ////第六位数码管显示“1”
}
break;
case KEY_9: //数字“2”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 2; //第六位数码管显示“2”
}
break;
case KEY_A: //数字“3”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 3; //第六位数码管显示“3”
}
break;
case KEY_B: //保留“F3”键按下
break;
case KEY_C: //功能“DEL”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[5] = uiData[4]; //显示数字右移一位
uiData[4] = uiData[3];
uiData[3] = uiData[2];
uiData[2] = uiData[1];
uiData[1] = uiData[0];
uiData[0] = 0; //第一位数码管显示“0”
}
break;
case KEY_D: //数字“0”键按下
if(Ent_Flag == 0) //判断“ENT”键是否按下,即确认键是否按下?
{
uiData[0] = uiData[1]; //显示数字左移一位
uiData[1] = uiData[2];
uiData[2] = uiData[3];
uiData[3] = uiData[4];
uiData[4] = uiData[5];
uiData[5] = 0; //第六位数码管显示“0”
}
break;
case KEY_E: //保留“F4”键按下
break;
case KEY_F: //功能“ENT”键按下
Ent_Flag = 1;
break;
default:
break;
}
DIG_Set(1,g_Data[uiData[0]]); //第一位数码管显示
DIG_Set(2,g_Data[uiData[1]]); //第二位数码管显示
DIG_Set(3,g_Data[uiData[2]]); //第三位数码管显示
DIG_Set(4,g_Data[uiData[3]]); //第四位数码管显示
DIG_Set(5,g_Data[uiData[4]]); //第五位数码管显示
DIG_Set(6,g_Data[uiData[5]]); //第六位数码管显示
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -