108K加湿器开发方案 单片机 NY8A051F 单片机开发设计开发

NY8A051F是台湾九齐科技股份公司推出的以EPROM为记忆体的8位微控制器,专为多I/O口产品的应用而设计,例如遥控器,风扇,灯光控制或者游戏机周边等等。代码指令简单,适合初学者学习之用。


NY8A051F是台湾九齐科技股份公司推出的以EPROM为记忆体的8位微控制器,专为多I/O口产品的应用而设计,例如遥控器,风扇,灯光控制或者游戏机周边等等。采用CMOS制程并同时提供客户低成本,高性能等显著优势。NY8A051F内核建立在RISC指令集架构,可以很容易编程和学习,仅55条指令。除了少数指令需要2个机器周期,大多数均为单机器指令周期,可以让客户方便编程以适用于不同低记忆容量的应用。#include <ny8.h>
#include "ny8_constant.h"
#define UPDATE_REG(x)	__asm__("MOVR _" #x ",F")  
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define C_PWM_DUTY_25 0x0f

#define WHP110KHZ 110  //

#define ON  1	//开
#define OFF  0	//关闭
#define WHON { PWM1DUTY =C_PWM_DUTY_25; ;  }//
#define WHOFF { PWM1DUTY =0 ;  }//C_PWM_DUTY_25;
#define LEDOFF {  PORTB |=0x31; ;}	//045高电平
#define LEDRON { PORTB &=0xef;   }	//4低电平
#define LEDGON { PORTB &=0xDF;   }	//5低电平
#define LEDBON { PORTB &=0xfe;   }	//0低电平

#define LEDROFF { PORTB |=0x10;   }	//4高电平
#define LEDGOFF { PORTB |=0x20;   }	//5高电平
#define LEDBOFF { PORTB |=0x01;   }	//0高电平

#define CHARIN PORTBbits.PB1	//充电输入,开启上拉
#define KEY1 PORTBbits.PB3 		 //按键输入
#define WHDO PORTBbits.PB2 	//雾化片,高电平有效
#define LEDB PORTBbits.PB0	
#define LEDR PORTBbits.PB4
#define LEDG PORTBbits.PB5
uchar sysmode=0;
__sbit dsdl1b = sysmode:0; 
__sbit t1m1b  = sysmode:1;    
__sbit kqds1b = sysmode:2;   
__sbit ldbit  = sysmode:3;	
__sbit gjcf1b = sysmode:4;  
__sbit key1b  = sysmode:5;    
__sbit t0zd1b = sysmode:7;
   
uchar sys2mode=0;
__sbit fz1b   = sys2mode:0; 
__sbit fz2b   = sys2mode:1;
__sbit fz3b   = sys2mode:2;  
__sbit cd1b   = sys2mode:3; 
__sbit cdcr1b = sys2mode:4;  	//充电刚插入
__sbit cdbc1b = sys2mode:5;  	//充电拔出解除

uchar js1r=0; 
uchar js2r=0;
uchar js3r=0;
uchar js1rg=0; 
uchar js2rg=0;
uchar js3rg=0;
uchar js1rb=0; 
uchar js2rb=0;
uchar js3rb=0;
uchar changantime=0;

uchar t1miaoj=0;	
uint time1mjia=0;
uchar dangwei=0;	
uchar keyztai=0;
uchar keymdtime=0;
uchar TIME6H=0;
uchar TIME18H=0;
uint t01msjs=0;

#define TIME3H  1080   //3小时	
#define TIME4H  1440   //4小时
#define TIME8H  2880   //8小时

uint TIMEDSH=0;

uchar  RGBmode=0;
uchar  jshi6m=0;
uchar  huxijiange1=0;
uchar  huxijiange2=0;
uchar  huxijiange3=0;
uchar  HXtime=3;

void dingsqing0(void);
void wuhuaqd110khz(void);
void huxidengR1(void);
void huxidengG2(void);
void huxidengB3(void);
void huxihchuzhi(void);	
void cdjc(void)	;            //充电检测
void wuhuaqudong(void);	     //雾化驱动
void wuhuaqd108OFFkhz(void); //108khz
void wuhuaqd108ONkhz(void);	 //108khz
void wuhuaqudongON(void);	 //雾化驱动//3.75 
void wuhuaqudongOFF(void);	 //雾化驱动 //样品5.625 
uint miao1jia=0;
void key2scan(void)
{
static uchar keytime2=0;
	if((KEY1==0)&&(keyztai==0))
	{	
		if(++keytime2>2)
		{	keytime2=0;
			if(KEY1==0)
	 		{ 	keyztai=1;
	 			changantime=50;	
			}
		}
	}
	else if((keyztai==1))	
	{
		if((KEY1==0)&&(changantime==0))		//开关七彩灯
		{	
			 if(dangwei>0)  { ldbit=~ldbit; }	
			keyztai=0;
			key1b=1;
			//while(KEY1==0)  { CLRWDT(); }	
		}
		else if((KEY1==1))
		{  
			keyztai=0;
			kqds1b=1;
			TIMEDSH=TIME4H;
			gjcf1b=0;
			jshi6m=0; t01msjs=0;
			LEDOFF;
			if(++dangwei>2)	
			{ dangwei=0;  kqds1b=0; ldbit=0;gjcf1b=1;
			  dingsqing0(); 
			}	//1挡默认4小时
			if(dangwei==1)	
			{ 
			   ldbit=1;
			   dingsqing0();
			}	  //恢复开灯
			if(dangwei==2)	
			{ TIMEDSH=TIME8H;  }
			if((cd1b==0)&&(ldbit==1)) 
			{ huxihchuzhi();LEDB=1;LEDR=0;}	  //呼吸初始值
		}	
	}
 if(KEY1==1)
  { 
 	keytime2=0;keyztai=0;
  }
}


void main(void)
{
   uchar t10msjia=0;
   uchar j=0;
   uint yans1r=0;

	IOSTB  =(C_PB3_Input|C_PB1_Input);	
    BPHCON =0X04;//2不开,其他开。
	WHDO=0;LEDOFF;
	DISI();
	PCON1 &= 0xfe;	
	TMR0 = 0x00;
	T0MD = C_PS0_TMR0 | C_PS0_Div256;
    TMR1 = 0x24;				
	PWM1DUTY = 0;	

	T1CR1 = C_TMR1_Reload | C_TMR1_En |C_PWM1_En;
	T1CR2 = C_TMR1_ClkSrc_Inst | C_PS1_Div2;	
	INTE = C_INT_TMR0| C_INT_PBKey;//|C_INT_TMR1
	PCON1 = C_TMR0_En;
	INTE |=C_INT_PBKey;
	BWUCON = C_PB3_Wakeup;	
	UPDATE_REG(PORTB);		
	INTF = 0;	
	ENI();
	LEDR=0;
	j=36;
	while(j>0)
	{	t0zd1b=0;
		while(t0zd1b==0);	
		t0zd1b=0;
		j--;
	}
	LEDR=1; LEDG=0;
	j=36;
	while(j>0)
	{	t0zd1b=0;
		while(t0zd1b==0);	
		t0zd1b=0;
		j--;
	}
	LEDG=1; LEDB=0;
	j=36;
	while(j>0)
	{	t0zd1b=0;
		while(t0zd1b==0);	
		t0zd1b=0;
		j--;
	}
	LEDB=1;
	DISI();
	T0MD = C_PS0_TMR0 | C_PS0_Div4;
	sysmode=0;		
	keyztai=0;
	dangwei=0;
	kqds1b=0;
	ldbit=0;
	gjcf1b=1;
	ENI();
	while(1)
	{
		CLRWDT();	//喂狗
	    if(t0zd1b)	//128us
		{	t0zd1b=0;
			
		    if(++yans1r>236)	//30ms
		    {	yans1r=0;
		    	//cdjc();	//充电检测
				if((key1b==1)&&(KEY1==1)) { key1b=0; }
				if(key1b==0)  { key2scan(); }
				if(changantime>0) { changantime--;   }
				if(keymdtime>0) { keymdtime--;  }
				if(huxijiange1>0) { huxijiange1--;	}
				if(huxijiange2>0) { huxijiange2--;	}
				if(huxijiange3>0) { huxijiange3--;	}
				if(dangwei==2)
				{
					if((++t01msjs)>66)	//2秒钟
					{	t01msjs=0;
						if(++jshi6m>4)  { jshi6m=0;  }
					}
				}
			}
			if((dangwei>0))		//充电或者喷雾时
			{
				if(huxijiange1==0) 
				{ 
					if((ldbit==1)||(cd1b==1)) 
					{  huxidengR1(); }
					else
					{ LEDR=1;	}
				}
				if((cd1b==0)&&(ldbit==1))		//不充电且开灯时
				{
					if(huxijiange2==0) 
					{ huxidengG2();}
					if(huxijiange3==0)
					{ huxidengB3();}
				}
				else  
				{	 LEDB=1;LEDG=1; }
			}
			//else { LEDOFF;   }
		}
		if(dangwei==1)	{ WHON ;}
		else if(dangwei==2)		//喷4秒 停6秒
			{ 	if(jshi6m<2)  { WHON ; }
				else   { WHOFF; 	 WHDO=OFF;  }  //关闭
			}
			else	//关机
			{   WHOFF; WHDO=OFF;
			    if((cd1b==0)&&(dangwei==0)&&(keymdtime==0)&&(KEY1==1)) 
			    { WHOFF; LEDOFF; key1b=0;  NOP(); NOP();SLEEP(); NOP();NOP();}  
			}

	}
}

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值