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

📄 main.c

📁 利用凌阳61单片机实现输液的智能监控及语音报警
💻 C
字号:
//main.c
//===============================================================================
// IOA[2:0]接键盘,IOA[15:8]接数码管的SEG,IOB[15:8]接数码管的DIG。
//使用时基中断TMB1_64HZ扫描键盘,使用TMB2_256HZ动态数码管显示
//使用外部中断检测液滴速度和液面
//===============================================================================
#include "spce061a.h"
#include "Sound.h"
#include "Key.h"
#define ch_Addr				(unsigned int *)0xF000			//定义床位号存放的地址
int numb=0x0100;
int DispTbl[17]={0x3F00,0x0600,0x5B00,0x4F00,0x6600,		//0,1,2,3,4
			     0x6D00,0x7D00,0x0700,0x7F00,0x6f00,        //5,6,7,8,9
			     0x7700,0x7C00,0x3900,0x5e00,0x7900,0x7100,0xFF00};	
int led_buf[6]={3,2,1,6,5,4};//数码管显示缓存
int flat=0;                  // 床位号调整标志  
int ch_num=3;                //床位号调整的位数
unsigned key_value=0;        //键值
unsigned Speed=0;            //液滴速度
unsigned Time=1;
int finish=0;
int warning=0;
int i=0;

void F_FlashWrite1Word(int addr,int Value);
void F_FlashErase(unsigned int sector);
void Save_chw(void);
//===============================================================================
//延时程序
//===============================================================================
void delay()
    {
    	int delayvalue=0;
    	for(delayvalue=0;delayvalue<0x50;delayvalue++)
    		*P_Watchdog_Clear=1;
    }

    			   
int main()
{
	int n=0;
    *P_IOA_Dir =0xff00;          
	*P_IOA_Attrib =0xffff;        
	*P_IOA_Data =0;
	*P_IOB_Dir=0xff00;          
	*P_IOB_Attrib=0xFFFF;
	*P_IOB_Data=0x0000;
	Key_Init();
	for(n=0;n<3;n++)
	{
		led_buf[3+n]=*(ch_Addr+n)%10;
	}
	while(1)
	{
//===========================================================================================================
//液位检测	
//===========================================================================================================  		
		if((*P_IOB_Data&0x0001)!=0)
		{
			++finish;
			if(finish>=50)
				finish=1;
		}
		else
		   warning=1;
//===========================================================================================================
//键盘处理	
//===========================================================================================================  			
		 key_value=Key_Get();
	     if(key_value!=0)
	     	switch(key_value)
	     	{
	     		case 1:
	     		{
	     			if(led_buf[ch_num]==0)
	     			led_buf[ch_num]=9;
	     		    else
	     		   --led_buf[ch_num];
	     		   break;
	     		}
	     		case 2:
	     		{
	     			if(led_buf[ch_num]==9)
	     			led_buf[ch_num]=0;
	     		    else
	     		   ++led_buf[ch_num];
	     		   break;
	     		}
	     		case 4:
	     		{
	     			if(ch_num==5)
	     			  ch_num=3;
	     		    else
	     		      ++ch_num;
	     		      break;
	     		}
	     		case 9:
	     		{
	     			if(led_buf[ch_num]==0)
	     			led_buf[ch_num]=9;
	     		    else
	     		   --led_buf[ch_num];
	     		   break;
	     		}
	     		case 10:
	     		{
	     			if(led_buf[ch_num]==9)
	     			led_buf[ch_num]=0;
	     		    else
	     		   ++led_buf[ch_num];
	     		   break;
	     		}
	     		case 12:
	     		{
	     			flat=~flat;
	     			if(flat==0)
	     				Save_chw();
	     			break;
	     		}
	     }
//===========================================================================================================
//语音报警	
//===========================================================================================================    
	     if(warning!=0)
	     	switch(warning)
	     	{
	     		case 1:
	     		{
	     			PlaySnd(0);
	     			warning=0;
	     			break;
	     		}
	     		case 2:
	     		{
	     			PlaySnd(1);
	     			warning=0;
	     			break;
	     		}
	     		case 3:
	     		{
	     			PlaySnd(2);
	     			warning=0;
	     			break;
	     		}
	     	}
		 
       *P_Watchdog_Clear=1;
	 }
	return 0;
}

//========================================================
//	语法格式:	void Save_Password(void)
//	实现功能:	保存床位号
//	参数:		无
//	返回值:	无
//========================================================
void Save_chw(void)
{
	unsigned int n;
	F_FlashErase((unsigned int)ch_Addr);			//擦除存放床位号的Flash空间
	for(n=0;n<3;n++)
	{
		F_FlashWrite1Word((unsigned int)(ch_Addr+n),led_buf[3+n]);
	}
}

⌨️ 快捷键说明

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