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

📄 main.c

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 C
📖 第 1 页 / 共 2 页
字号:
//===========================================================================
//	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_LED_Dots_Key  
//  功能描述:  《实验指导书》综合实验
//              4*4键盘在8*8LED点阵上的应用
//              键值在LED点阵上显示 				
//  涉及的库:	CMacro1016.lib           	
//  组成文件:	main.c
//				isr.asm/key.asm/system.asm
//				SPCE061A.h/Key.h
//      		Resource.inc/SPCE061A.inc/Key.inc
//  硬件连接: 	IOA低八位连接GRE-
//              IOA高八位连接RED-
//              IOB低八位连接4*4键盘
//              IOB高八位连接COM+
//  修订纪录:	2002-5-15(建立)
//				2003-6-16(添加版本说明及版权声明)
//				2003-7-16(代码标准化)
//              2005-10-17(注释标准化)
//==============================================================================
#include "SPCE061A.h"
#include "Key.h"
#define GREEN  0x00ff
#define RED    0xff00
#define HaveKey  1
#define NoKey    0
unsigned int ColorBar[8] =
{0xffff,0xffff,0x1f00,0x3,0x3f3f,0x00ff,0x0300,0x001f};
unsigned int DT0_9[10][5] ={                            // 显示0,1,2,3,4,5,6,7,8,9 数组
{0x3c00,0x2400,0x2400,0x2400,0x3c00},                   //0
{0x1000,0x1800,0x1000,0x1000,0x3800},                   //1 
{0x3c00,0x2000,0x3c00,0x0400,0x3c00},                   //2
{0x3c00,0x2000,0x3c00,0x2000,0x3c00},                   //3
{0x2400,0x2400,0x3c00,0x2000,0x2000},                   //4
{0x3c00,0x0400,0x3c00,0x2000,0x3c00},                   //5
{0x3c00,0x0400,0x3c00,0x2400,0x3c00},                   //6
{0x3c00,0x2000,0x2000,0x2000,0x2000},                   //7
{0x3c00,0x2400,0x3c00,0x2400,0x3c00},                   //8
{0x3c00,0x2400,0x3c00,0x2000,0x3c00},                   //9
};
unsigned char Keycode; 
unsigned char KeyFlag;                                  //按键标识       

//============================================================================================
//语法格式:void InitialPort(void)
//实现功能:初始化IO口
//参数:	无
//返回值:	无
//============================================================================================
void InitialPort()
{
	SP_Init_IOB(0xff00,0xff00,0xff00); 		            //设置B口高十二位为同相高电平输出,低四位为带下拉电阻输入	
	SP_Init_IOA(0xffff,0xffff,0x0000); 		            //设置A口为反相的低电平输出
}

//============================================================================================
//语法格式:void delay(char n)
//实现功能:延时子程序
//参数:	char n-延时长度控制
//返回值:	无
//============================================================================================
void delay(char n)
{
	int i,j ;	
	for(i=0;i<n;i++)
	     
	{
		for(j = 0;j<50;j++);
		F_ClearWatchdog();	                           //清看门狗	
	}
	
}

//============================================================================================
//语法格式:void DisplayVal(unsigned char keyVal)
//实现功能:显示键值
//参数:	待显示的键值
//返回值:	无
//============================================================================================
void DisplayVal(unsigned char keyVal)
{
	unsigned char i,k,BarMask=0x0200;
    for(k=0;k<100;k++)
    {	
		for(i=0;i<5;i++)
		{
		     F_ClearWatchdog();	                              //清看门狗	     
		     SP_Export(P_IOB_Data,BarMask);
		     SP_Export(P_IOA_Data,DT0_9[keyVal][i]);       //显示图片
		     delay(1);
		     BarMask = BarMask<<1;
	    }
	    BarMask=0x0200;	
    } 
}

//============================================================================================
//语法格式:void TestLed(void)
//实现功能:测试LED,依次点亮红灯,绿灯,红绿灯
//参数:	无
//返回值:	无
//============================================================================================
void TestLed(void)
{
	

	SP_Export(P_IOA_Data,0x00ff);	                  // 点亮红灯
	SP_Export(P_IOB_Data,0xff00);	
	delay(400);
	SP_Export(P_IOA_Data,0xff00);	                  //点亮绿灯
	SP_Export(P_IOB_Data,0xff00);
	delay(400);
	SP_Export(P_IOA_Data,0xffff);	                  // 点亮红绿灯
	SP_Export(P_IOB_Data,0xff00);	 
	delay(400);
	
}
//============================================================================================
//语法格式:void walkman(void)
//实现功能:移动图标函数
//参数:	无
//返回值:	无
//============================================================================================
void WalkMan(void)
{
	char state = 0;
	unsigned int i,j,k,l=0,SelCol = 2,Reload = 1;	
	unsigned char ManIcon[8] = { 0x2000,0x9400,0xCA00,0x7A00,0xCA00,0x9400,0x2000,0x0000 };	
	for(j=0;j<20;j++)
	{
		F_ClearWatchdog();	                               //清看门狗	     
		switch(state)
		{
			case 0:		                                   //状态0,图形向右移动
				Reload = Reload << 1;
				if(Reload == 0)
				{
					Reload = 0x8000;
					state = 1;
				}
				break;
			case 1:		                                   //状态1,图形向左移动
				Reload = Reload >> 1;
				if(Reload == 0)
				{				
					Reload = 0x0001;
					state = 2;
				}
				break;
			case 2:		                                   //状态2,图形向左溢出屏幕
				l++;
				Reload = 1;
				if(l==8)
				{									
					state = 0;
					l = 0;
				}				
				break;
		}	
		for(k=0;k<8;k++)
		{
			SelCol = Reload;
			for(i = l;i<8;i++)
			{	
			
				SP_Export(P_IOA_Data,SelCol);              //显示
				SP_Export(P_IOB_Data,ManIcon[i]);
				delay(1);
				SelCol = SelCol<<1;
			}
		}
	}
}

//============================================================================================
//语法格式:void colorCol(void)
//实现功能:移动彩色条
//参数:	无
//返回值:	无
//============================================================================================
void colorCol ()
{
	unsigned char j,BarMask=0x0100;
	unsigned char i;
	for(j=0;j<8;j++)
	{  
		   F_ClearWatchdog();	                           //清看门狗	     
		   SP_Export(P_IOB_Data,BarMask);               //显示  
		   SP_Export(P_IOA_Data,ColorBar[j]);           
	  
		delay(40);
		BarMask = BarMask<<1;			
	}
}

//============================================================================================
//语法格式:void ColorLineUp(void)
//实现功能:彩条上移
//参数:	无
//返回值:	无
//============================================================================================                                                          
void ColorLineUp()
{
	unsigned char SelRow = 0x8000,j;
	for(j=0;j<8;j++)
	{
		F_ClearWatchdog();	                           //清看门狗	     
		SP_Export(P_IOA_Data,0xffff);               //显示
		SP_Export(P_IOB_Data,SelRow);
		delay(40);
		SelRow = SelRow>>1;                            //上移
	}
}

//============================================================================================
//语法格式:void ColorLineOff(void)

⌨️ 快捷键说明

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