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

📄 main.c

📁 电压控制程序,符合各种设备需要,核心程序,IBm专属
💻 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.
//=========================================================================

//=========================================================================
//	工程名称:	ex3_LCD501_Graphic
//	功能描述:	《实验指导书》模组实验,
//              LCD动态图片显示
//				显示旋转的凌阳标志动画
//	涉及的库:	CMacro1016.lib
//	组成文件:	main.c/SPLC501User.c/Sunplus_Table.c
//     			SPLC501Driver_IO.asm/DataOSforLCD.asm 
//     			SPLC501User.h/Sunplus_Table.h
//				SPLC501Driver_IO.inc
//
//	硬件连接:	LCD  DB0~DB7接IOA0~IOA7
//				LCD  EP     接IOB5
//				LCD  RW     接IOB4
//				LCD  A0     接IOB3
//				LCD  /CS    接IOB2  或接地也可
//
//	维护记录:	2005-09-20	v1.0
//	注意事项:	1.SPLC501的驱动程序为新版程序,2005年9月发布的版本
//				2.IO高电平:3.3V
//=============================================================================

//========================================================
//	文件名称:	main.c
//	功能描述:	LCD501显示动画
//				显示旋转的凌阳标志动画
//	维护记录:	2005-09-20	v1.0
//========================================================
#include "SPLC501User.h"				//包含SPLC501液晶模组驱动程序的用户接口API函数声明的头文件
#include "Sunplus_Table.h"				//包含BMP图像数据表的头文件

#define P_Watchdog_Clear		(volatile unsigned int *)0x7012
#define P_SystemClock       	(volatile unsigned int *)0x7013 
#define P_INT_Ctrl				(volatile unsigned int *)0x7010   
#define P_INT_Clear				(volatile unsigned int *)0x7011 
#define P_INT_Ctrl_New			(volatile unsigned int *)0x702D  

const unsigned int* BMP_Cartoon3[] = //动画帧数据链表(sunplus标志)
{(unsigned int*)18,(unsigned int*)encoding_00,(unsigned int*)encoding_01,
(unsigned int*)encoding_02,(unsigned int*)encoding_03,(unsigned int*)encoding_04,
(unsigned int*)encoding_05,(unsigned int*)encoding_06,(unsigned int*)encoding_07,
(unsigned int*)encoding_08,(unsigned int*)encoding_08,(unsigned int*)encoding_07,
(unsigned int*)encoding_06,(unsigned int*)encoding_05,(unsigned int*)encoding_04,
(unsigned int*)encoding_03,(unsigned int*)encoding_02,(unsigned int*)encoding_01,
(unsigned int*)encoding_00};
//表中定义第一个数为动画的帧数,以无符指针定义,但实际上当无符数使用
//后面的每个标号为指向该帧动画的图像......

//========================================================
//	语法格式:	int main(void)
//	实现功能:	LCD501显示动画
//				显示旋转的凌阳标志动画
//	参数:		无
//	返回值:	无
//========================================================
unsigned int IRQ1KHz_Counter;	//定义一个全局的变量,作为计数的Counter
int main(void)
{
	unsigned int uiTemp;
	int i=1;
	LCD501_Init(0x00);						//初始化液晶
	*P_SystemClock = 0x0088;				//设置系统时钟以及CPU时钟
	
	LCD501_SetPaintMode(4);					//设置LCD显示模式
	uiTemp = *P_INT_Ctrl_New;				//...
	uiTemp = uiTemp|0x0010;		
	*P_INT_Ctrl_New = uiTemp;				//打开1KHz中断
	__asm("IRQ ON");						//打开IRQ中断
	
	LCD501_Bitmap(48,10,(unsigned int *)BMP_Cartoon3[1]);	//先显示第一帧
	IRQ1KHz_Counter=0;						//计数器清零
	
	while(1)
	{
		if(IRQ1KHz_Counter>=200)			//到达预定时延时
		{//到达预定时间时,更换一帧画面
			IRQ1KHz_Counter=0;				//清Counter
			LCD501_Bitmap(48,10,(unsigned int *)BMP_Cartoon3[i]);	//显示第i帧图像
			i++;							//自加
			if(i==19)						//到达上限,
			{
				i=1;						//i重新指为1
			}
		}
		*P_Watchdog_Clear = 0x0001;			//清看门狗
	}
}
//=====================================================================//
//	语法格式:	void BMP_Play_IRQ_Service(void)
//	实现功能:	计数器Counter自加1
//	参数:		无
//	返回:		无
//	注意:		动画显示程序中,在1KHz中断需要调用的子函数,作为计数用
//=====================================================================//
void BMP_Play_IRQ_Service(void)
{
	IRQ1KHz_Counter++;						//Counter自加1
}
//=====================================================================//
//	语法格式:	void IRQ4(void)
//	实现功能:	IRQ4中断入口程序
//	参数:		无
//	返回:		无
//	注意:		采用了1KHz中断
//=====================================================================//
void IRQ4(void)__attribute__((ISR));
void IRQ4(void)
{
	if(*P_INT_Ctrl&0x0010)
	{
		*P_INT_Clear = 0x0010;
		BMP_Play_IRQ_Service();				//调用动画显示的中断服务程序
	}
}

⌨️ 快捷键说明

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