📄 main.c
字号:
PR1(LCD_X,LCD_Y,0x24);
PR11(CTAB_8_16[i],0xc0); // 写入左部字模数据
i++;
a = LCD_X + 0x20; // 修正地址
LCD_X = a;
a = (a >> 8);
LCD_Y = LCD_Y + a;
}
}
/* 写入8*8点阵数据 */
if(n == 3)
{
i = CODE * 8;
for(m=0;m<8;m++)
{
PR1(LCD_X,LCD_Y,0x24);
PR11(CTAB_8_8[i],0xc0); // 写入左部字模数据
i++;
a = LCD_X + 0x20; // 修正地址
LCD_X = a;
a = (a >> 8);
LCD_Y = LCD_Y + a;
}
}
}
/*
*********************************************************************************************************
** 函数名称 :Kaiji_Dis_()
** 函数功能 :开机显示子程序**
** 入口参数 :
** 出口参数 :无
*********************************************************************************************************
*/
void Kaiji_Dis(void)
{
uint8 i;
//uint8 b;
//uint8 x,y;
//uint16 a;
//uint8 addr_year
//Calendar Calendar = {2007,01,01,1,12,00,00,25};
//uint8 Addr_L;
PR1(0x00,0x0a,0x24); // 设置操作地址
PR12(0xb0); // 设置自动写方式
for(i=0;i<20;i++)
PR13(0xff);
PR12(0xb2);
PR1(0x80,0x15,0x24); // 设置操作地址
PR12(0xb0);
for(i=0;i<18;i++)
PR13(0xff);
PR12(0xb2);
PR1(0xa0,0x15,0x24); // 设置操作地址
PR12(0xb0);
for(i=0;i<20;i++)
PR13(0xff);
PR12(0xb2); // 设置自动写结束指令
//a = Calendar.year;
//a =
// WRI_CC(0,0,12,1);//好 从第0行开始
// WRI_CC(1,0,13,1);//人
// WRI_CC(2,0,14,1);//一
// WRI_CC(3,0,15,1);//生
// WRI_CC(4,0,16,1);//平
// WRI_CC(5,0,17,1);//安 第15行结束
WRI_CC(4,18,2,1);//2 年月日从第18行开始
WRI_CC(5,18,0,1);//0
WRI_CC(6,18,0,1);//0
WRI_CC(7,18,7,1);//7
WRI_CC(8,18,5,2);//年
WRI_CC(10,18,1,1);//1
WRI_CC(11,18,6,2);//月
WRI_CC(13,18,1,1);//1
WRI_CC(14,18,7,2);//日 第33行结束。
WRI_CC(6,43,1,1);//1
WRI_CC(7,43,2,1);//2
WRI_CC(8,43,10,1);//:
WRI_CC(9,43,0,1);//0
WRI_CC(10,43,0,1);//0
WRI_CC(11,43,10,1);//:
WRI_CC(12,43,0,1);//0
WRI_CC(13,43,0,1);//0
WRI_CC(4,73,8,2);//星
WRI_CC(6,73,9,2);//期
WRI_CC(8,73,11,2);//一
WRI_CC(11,73,2,1);//2
WRI_CC(12,73,5,1);//5
WRI_CC(13,73,10,2);//℃
WRI_CC(0,112,0,2);//操 从107行开始
WRI_CC(2,112,1,2);//作
WRI_CC(14,112,2,2);//通
WRI_CC(16,112,3,2);//讯
WRI_CC(18,112,4,2);//录 第127行结束(总共128行)
}
/*
*********************************************************************************************************
** 函数名称 :
** 函数功能 :按键处理子程序**
** 入口参数 :
** 出口参数 :无
*********************************************************************************************************
*/
void Key_Menu(void)
{ WRI_CC(0,90,0,2);}
void Key_Up(void)
{ WRI_CC(2,90,0,2);}
void Key_Back(void)
{ WRI_CC(4,90,0,2);}
void Key_Phone(void)
{ WRI_CC(6,90,0,2);}
void Key_Dn(void)
{ WRI_CC(8,90,0,2);}
void Key_Hangup(void)
{ WRI_CC(10,90,0,2);}
void Key_1(void)
{ WRI_CC(0,74,1,1);}
void Key_2(void)
{ WRI_CC(1,74,2,1);}
void Key_3(void)
{ WRI_CC(2,74,3,1);}
void Key_4(void)
{ WRI_CC(3,74,4,1);}
void Key_5(void)
{ WRI_CC(4,74,5,1);}
void Key_6(void)
{ WRI_CC(5,74,6,1);}
void Key_7(void)
{ WRI_CC(6,74,7,1);}
void Key_8(void)
{ WRI_CC(7,74,8,1);}
void Key_9(void)
{ WRI_CC(8,74,9,1);}
void Key_F1(void)
{ WRI_CC(9,74,1,1);}
void Key_0(void)
{ WRI_CC(10,74,0,1);}
void Key_F3(void)
{ WRI_CC(11,74,2,1);}
/*
*********************************************************************************************************
** 函数名称 :Key_Scan()
** 函数功能 :6*3按键扫描子程序** 行按键(KEY_A~KEY_F)占用P0.26~P0.31六个IO口,设置为输出,
** 列按键(KEY_1~KEY_3)占用P1.19,P1.20,P1.21三个IO口.设置为输入
** 入口参数 :
** 出口参数 :无
*********************************************************************************************************
*/
void Key_Scan(void)
{
uint8 scan_value;
IO0DIR = 0x84F00000 | BEEP | 1;// P0.20~P0.23,P0.26,P0.31六个IO口,设置为输出
IO1DIR = 0x00000000; // P1.19,P1.20,P1.21设置为输入
IO0CLR = 0x84F00000;
IO0SET = 0x84F00000; // 行扫描,输出高电平
if((IO1PIN & 0x00380000 ) != 0x00000000)
{
DelayNS(1); // 如果有按键按下,调用延时去抖
IO0CLR = 0x84F00000;
IO0SET = 0x84F00000; // 再次进行行扫描,输出高电平
if((IO1PIN & 0x00380000 ) != 0x00000000)
{
// 确实有按键按下
IO0CLR = 0x84F00000;
IO0SET = KEY_A;
scan_value = (IO1PIN >> 19) & 0x07;
if(scan_value != 0x00)
{
switch(scan_value)
{
case 1 : Key_Menu(); break ;
case 2 : Key_Up(); break ;
case 4 : Key_Back(); break ;
}
}
//***********************************
IO0CLR = 0x84F00000;
IO0SET = KEY_B;
scan_value = (IO1PIN >> 19) & 0x07;
if(scan_value != 0x00)
{
switch(scan_value)
{
case 1 : Key_Phone(); break ;
case 2 : Key_Dn(); break ;
case 4 : Key_Hangup(); break ;
}
}
//***********************************
IO0CLR = 0x84F00000;
IO0SET = KEY_C;
scan_value = (IO1PIN >> 19) & 0x07;
if(scan_value != 0x00)
{
switch(scan_value)
{
case 1 : Key_1(); break ;
case 2 : Key_2(); break ;
case 4 : Key_3(); break ;
}
}
//***********************************
IO0CLR = 0x84F00000;
IO0SET = KEY_D;
scan_value = (IO1PIN >> 19) & 0x07;
if(scan_value != 0x00)
{
switch(scan_value)
{
case 1 : Key_4(); break ;
case 2 : Key_5(); break ;
case 4 : Key_6(); break ;
}
}
//***********************************
IO0CLR = 0x84F00000;
IO0SET = KEY_E;
scan_value = (IO1PIN >> 19) & 0x07;
if(scan_value != 0x00)
{
switch(scan_value)
{
case 1 : Key_7(); break ;
case 2 : Key_8(); break ;
case 4 : Key_9(); break ;
}
}
//***********************************
IO0CLR = 0x84F00000;
IO0SET = 0x80000000; //(KEY_F)
scan_value = (IO1PIN >> 19) & 0x07;
if(scan_value != 0x00)
{
switch(scan_value)
{
case 1 : Key_F1(); break ;
case 2 : Key_0(); break ;
case 4 : Key_F3(); break ;
}
}
}
}
}
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :实现数字时钟功能
** 调试说明 :需将跳线JP10~JP19短接。
*********************************************************************************************************
*/
int main (void)
{
//uint32 k;
//k = PINSEL2;
//k = 0x00000000; // 设置管脚连接GPIO
//PINSEL2 = k;
PINSEL0 = 0x00000000;
/***********************************/
IO0DIR = BEEP | 1; // P0.0 is set output
IO0SET = BEEP;
/***********************************/
/* LCD is inited */
INI();
CLEAR();
IRQEnable(); // IRQ中断使能
RTCInit();
/* 定时器0初始化 */
T0TC = 0; /* 定时器设置为0 */
T0PR = 0; /* 时钟不分频 */
T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志 */
T0MR0 = Fpclk / 25; /* 0.5秒钟定时 */
T0TCR = 0x01; /* 启动定时器 */
VIC_Init();
Kaiji_Dis();
Dis_Page = 26;
while(1)
{
Key_Scan();
//IO0SET = 1;
//DelayNS(2);
//IO0CLR = 1;
//DelayNS(2);
}
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -