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

📄 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.
//========================================================================
//============================================================
//  工程名称:	ex5_LCD_DynamicGraphicMusic
//  实现功能: 	《实验仪指导书》综合实验5
//				SPLC501液晶显示模组驱动演示  音乐动画
//  涉及的库:	CMacro1016.lib
//				Sacmv26e.lib
//  组成文件:	main.c/PicData.c
//	   			SPLC501User.c
//     			SPLC501Driver_IO.asm/DataOSforLCD.asm 
//     			SPLC501User.h/SPLC501Driver_IO.inc/PicData.h
//	硬件连接:	LCD  DB0~DB7接IOA0~IOA7
//				LCD  EP   接IOB5
//				LCD  RW   接IOB4
//				LCD  A0   接IOB3
//				LCD  CS   接IOB2  或接地也可
//
//  维护记录:  2005-8-12 V1.0
//
//===============================================

//========================================================================
//	文件名称:	main.c
//	功能描述:	LCD显示及音乐播放主程序文件
//	维护记录:	2005-10-16	v1.0
//========================================================================

#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  
#define P_Watchdog_Clear    	(volatile unsigned int *)0x7012

#include "PicData.h"
#include "SPLC501User.h"
#include "A2000.h"

const unsigned int* BMP_Cartoon3[] = //动画帧数据链表(小人)
{(unsigned int*)9,(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_09};
//****上面的链接第一个值为表中有效的图像帧数,后面跟着都是各帧图像的字模数据首地址****//
unsigned int IRQ1KHz_Couter;	//定义一个全局的变量,作为计数的Counter
//========================================================================
//	语法格式:	int main(void)
//	实现功能:	主程序
//	参数:		无
//	返回值:	无
//========================================================================
int main(void)
{
	unsigned int uiTemp;
	int i=1;
	LCD501_Init(0x0000);		//初始化液晶
	SACM_A2000_Initial(1);		//初始化语音播放,为自动播放
	
	LCD501_SetPaintMode(4);		//设置LCD显示模式
	uiTemp = *P_INT_Ctrl_New;	//...
	uiTemp = uiTemp|0x0010;		
	*P_INT_Ctrl_New = uiTemp;	//打开1KHz中断
	__asm("IRQ ON");			//打开IRQ中断
	
	LCD501_Bitmap(16,0,(unsigned int *)BMP_Cartoon3[1]);	//先显示第一帧
	IRQ1KHz_Couter=0;			//计数器清零
	
	SACM_A2000_Play(0,3,3);
	while(1)
	{
		if(IRQ1KHz_Couter>=300)	//到达预定时延时
		{
			IRQ1KHz_Couter=0;						//清Counter
			LCD501_Bitmap(16,0,(unsigned int *)BMP_Cartoon3[i]);	//显示第i帧图像
			i++;									//自加
			if(i==10)								//到达上限,则m变为负数
			{
				i=1;								//i重新指为1
			}
		}
		if((SACM_A2000_Status()&0x0001)==0)			//判断,播放结束,则调用下列代码
		{
			SACM_A2000_Stop();						//把上次的停止
			SACM_A2000_Play(0,3,3);					//重新播放
		}
       	*P_Watchdog_Clear = 0x0001;					//清看门狗
	}
}
//
void BMP_Play_IRQ_Service(void)
{//动画显示程序中,在1KHz中断需要调用的子函数,作为计数用
	IRQ1KHz_Couter++;					//Counter自加1
	SACM_A2000_ServiceLoop();			//在中断服务程序中完成语音循环服务程序
}
//========================================================================
//	语法格式:	void IRQ4(void)
//	实现功能:	IRQ4中断服务程序
//	参数:		无
//	返回值:	无
//========================================================================
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 + -