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

📄 main.c

📁 SPCE061A+SPCL051液晶显示汉字程序
💻 C
字号:
/****************************************************************
** fileName 	: main.c
** discription  : 将IOB8~IOB15端口与4*4键盘相连,  
				  IOA8~IOA15端口接SPLC051的DB0-DB7; IOA6,5,4->EP,RW,AO;CS1->GND
** IDE			: SUNPLUS u'nSPTM  IDE 2.5.5
** Library		:	(a) C-Lib:  (CMacro.lib);
** Date			: 07-08-10
** Author		: Yao
****************************************************************/
#include "SPCE061A.h"
#include "SPLC501User.h"							//包含液晶驱动的头文件
#include "DispChinese.h"							//包含字模数据头文件
#include "Key4x4AL.h"								//包含4*4键盘服务程序头文件
//#define	P_Watchdog_Clear	(unsigned int *)0x7012

unsigned int TimeMSec = 0;
unsigned int TimeSec = 0;
unsigned char Num[6] = {0, 0, 0, 0, 0, 0};

unsigned int  KeyVal;		//键值
unsigned int  KeyFlag;		//有无按键标志位 

/****************************************************************
** FunctionName : HEX_ASCII()
** discription  : 
** Library		: (a) C-Lib:  (CMacro.lib);
** Date			: 07-08-10
** Author		: Yao
****************************************************************/
unsigned int HEX_ASCII(unsigned int HEX)
{
	unsigned int ASCII;
	if((HEX >= 0) && (HEX <= 9))
		ASCII = HEX + 48;
	else if((HEX >= 10) && (HEX <= 15))
		ASCII = HEX + 55;
	return(ASCII);

}

/****************************************************************
** FunctionName : Delay_User(unsigned int Timers)
** discription  : 
** Library		:(a) C-Lib:  (CMacro.lib);
** Date			: 07-08-10
** Author		: Yao
****************************************************************/
void Delay_User(unsigned int Timers)
{
	unsigned int i;
	while(Timers)
	{
		for(i=0;i<0x0fff;i++)
		{
			*P_Watchdog_Clear = 0x0001;
		}
		Timers--;
	}
}
int main(void)

{
	
	unsigned int i;
	unsigned int  temp;
	*P_INT_Ctrl = 0x0010;		//开中断
	__asm("INT IRQ");
	
	Key_InitIO();
	KeyFlag = 0;				//无键按下
	
	LCD501_Init(0x00);									//初始化液晶
	LCD501_Bitmap(0,0,(unsigned int *)encoding_00);		//显示汉字:开
	LCD501_Bitmap(16,0,(unsigned int *)encoding_01);	//拓
	LCD501_Bitmap(32,0,(unsigned int *)encoding_02);	//创
	LCD501_Bitmap(48,0,(unsigned int *)encoding_03);	//新
	while(1)
	{
		/*for(i = 0 ; i < 64; i++)
		{
			LCD501_ScrollUp(1);
			Delay_User(2);
			*P_Watchdog_Clear = 0x0001;						//清看门狗
		}*/
		KeyFlag = KeyScan();
		while(KeyFlag)
		{
			KeyVal = GetKey(KeyFlag);
			KeyFlag = 0;
		}
		LCD501_PutChar(i*8,32,HEX_ASCII(KeyVal));
		
		LCD501_Bitmap(0,0,(unsigned int *)encoding_00);		//显示汉字:开
		LCD501_Bitmap(16,0,(unsigned int *)encoding_01);	//拓
		LCD501_Bitmap(32,0,(unsigned int *)encoding_02);	//创
		LCD501_Bitmap(48,0,(unsigned int *)encoding_03);	//新
		Num[5] = (TimeSec / 10) + 48;						//将数字转换成ASCII码
		*P_Watchdog_Clear = 0x0001;
		Num[4] = (TimeSec % 10) + 48;
		Num[3] = 58;										//显示":"
		Num[2] = (TimeMSec / 100) + 48;
		temp = TimeMSec /100;
		Num[1] = ((TimeMSec / 10) - temp*10) + 48;
		Num[0] = (TimeMSec % 10) + 48;
		
		for(i = 0 ; i < 6; i++)
		{
			LCD501_PutChar(i*8,16,Num[5-i]);
			*P_Watchdog_Clear = 0x0001;
		}
		
	}
}

//=====================================================================//
//函数:void IRQ4(void)
//描述:IRQ4中断入口程序
//参数:无
//返回:无
//注意:采用了1KHz中断
//=====================================================================//
void IRQ4(void)__attribute__((ISR));
void IRQ4(void)
{
	//unsigned int temp
	if(*P_INT_Ctrl&0x0010)
	{
		TimeMSec++;
		if(TimeMSec >= 1000)
		{
			TimeMSec = 0;
			TimeSec++;
		
		}
		if(TimeSec >= 60)
			TimeSec = 0;
		*P_INT_Clear = 0x0010;			//清中断标志位
		*P_Watchdog_Clear = 0x0001;
		//BMP_Play_IRQ_Service();		//调用动画显示的中断服务程序
	}
}

⌨️ 快捷键说明

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