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

📄 kouxian.c

📁 热饮现调机控制程序01,可实现饮料的选择和饮料的泡冲
💻 C
字号:

//------------------------定义头文件----------------
#include          	<iom162v.h>
#include          	<macros.h>		
#include 		  	<math.h>	
#include		  	<eeprom.h>

//-------------------------定义常量-----------------
#define mima1	    11		//设置一级密码
#define mima2	    22	    //设置二级密码
#define mima3	    33		//设置三级密码
#define mima1time	100	 	//设置一级密码时间//单位小时
#define mima2time	150	    //设置二级密码时间//单位小时
#define mima3time	200		//设置三级密码时间//单位小时

#define pinbaoopen  0x65    //启动屏保的组合按键 0x65 向左向右,主轴启动,方式转换//按住时上电子有效
#define pinbaooff   0xa6    //停止屏保的组合按键 0xa6 向左向右,主轴停止,系统总清//按住时上电子有效

#define OPENBZ	  	0X55							
#define CLOSEBZ	  	0XAA	
#define CE	        0X20	
#define CLK	        0X08
#define DI	        0X10	
#define yearhz      0x0e
#define monthhz     0x10
#define dayhz       0x12
#define maohaohz    0x0c
#define weekhz      0x14	
//----------------------宏定义----------------------
#define  DI0      	 PORTC&=0Xfd						
#define	 DI1         PORTC|=0X02 

#define  RW0      	 PORTC&=0Xfe					
#define	 RW1         PORTC|=0X01

#define  A90      	 PORTC&=0Xfb						
#define	 A91         PORTC|=0X04 

#define  CS2450      PORTC&=0Xf7						
#define	 CS2451      PORTC|=0X08 

#define  kCS10       PORTC&=0Xef						
#define	 kCS11       PORTC|=0X10  

#define  kCS20       PORTC&=0Xdf						
#define	 kCS21       PORTC|=0X20 

#define eor_resc  	PORTD^=BIT(PD0)	 
	
//----------------------定义绝对地址空间------------
#define CS1_ADDRESS     (*(volatile unsigned char *)0xE600)
#define CS2_ADDRESS     (*(volatile unsigned char *)0xD600)
#define code_ADDRESS    (*(volatile unsigned char *)0xF400)
#define data_ADDRESS    (*(volatile unsigned char *)0xF600)		 
#define inport0         (*(volatile unsigned char *)0x8b00)
#define inport1         (*(volatile unsigned char *)0x4b00)		 	 			 		  	   			 //16c650
void  dis_control_mode(unsigned char line,unsigned char column, unsigned char lcd_csx);    
void  delay(unsigned int n);
void  init_disp(void);
void  strat_scarn(void);
void  write_code(unsigned char w_code);
void  write_data(unsigned char wdata);
void  write_cs1(unsigned char cs1_data);
void  write_cs2(unsigned char cs2_data);
void  set_xy(unsigned char x_page,unsigned char y);
void  set_xytemp(unsigned char x_page,unsigned char y);
void  SetOnOff(unsigned char onoff);
void  PARAMETER_SETDISP(void);
void  PARAMETER_SET(void);
void  PJZCS(void);
void  init_time0(void);
void  clear_lcd(void);
void  display_number(unsigned char x_line,unsigned char y_line,unsigned char lcd_x );
void  display_number_decimal(void);
void  disp_number(unsigned char x_line,unsigned char y_line,unsigned char lcd_x,unsigned char jj );
void  init_lcd(void);
void DISPLY_CLOCK (void);
void oil_pump_open (void);
void oil_pump_off (void);
void main_axis_open (void);
void main_axis_off (void);
void electricity_valve_open (void);
void electricity_valve_off (void);
unsigned char RTEEPROMReady(void);

unsigned char HB1=6,HB2=0,HB3=0,HB4=2,HB5=0;
unsigned char keycytemp;
unsigned char pjyx_flag[20]={0,0,0,0,0,0,0,0,0,0,OPENBZ,0,0,0,0};  //按键子程序暂存值
unsigned char setupdisp_flag=0,setupitem_flag=0;
unsigned char valve_state_flag=OPENBZ,halfauto_state=0,auto_state=0;
unsigned char ryear=11,rmonth=11,rday=11,rhour=11,rminute=11,rsecond,rweek;
unsigned char wyear=12,wmonth=12,wday=12,whour=12,wminute=12,wsecond,wweek;
unsigned char maojietime=0,maojietime_plan,zhuangangle=0,zhuangangle_plan;
unsigned int  temp,geishusum=0,geishusumtemp=55,user_password=4,passwordtime=0;
unsigned int  passwrodjishu=0,geishusum1=0,geishusumtemp1=55;
unsigned char passstate=0;
unsigned char  time0=0,time1=0;time2=0,time3=0,time4=0;
unsigned char  cortrolMODEL=0,temp1,main_flag;


const unsigned char control_mode[]={ //控制方式
0xBA,0xCE,0xD1,0xEE,0xB9,0xE2,0xC1,0xD9,0xA1,0xA0,0xA1,0xA0,0xA1,0xA0,
0xB3,0xA4,0xC9,0xB3,0xB8,0xDF,0xD7,0xBF,0xC1,0xA2,0xB9,0xE2,0xB5,0xE7
};


void TIMER1_INIT(void)
{	 CLI();
     TCCR1A=0;
	 TCCR1B=0x02;  //8分频
	 TCNT1=0x00;  //;从(0-30D4)匹配
	 OCR1A=0x30d4;//1M主频8分频 基本定时单元
	 TIMSK= 0x40; //;定时中断时间100MS,定时常数为30D4
	 SEI();
}  
#pragma interrupt_handler ZDCS1:14  
void ZDCS1(void)                          //0.1s定时
{ unsigned char i,j;
TCNT1=0x00;
if (time1>0)  time1=time1-1;
if (time0>9)                            //1s进来一次
    {if (time2>0)  time2--;
 	 if (time3>0)  time3--;
 	 if (time4>0)  time4--;
	 time0=0; 
	}
time0++;
//eor_resc;
	
if (maojietime_plan>0)  maojietime_plan--;
if (zhuangangle_plan>0)  zhuangangle_plan--; 
 

}

 //}
/*****************************************************************
* 名称:delay()
* 延时n个ms
* 入口参数:n
* 出口参数:无
*****************************************************************/
void  delay(unsigned int n)
{
 unsigned int i,j;
 for(i=1;i<=n;i++)
 {
 for(j=1;j<=10;j++)
 ;
 } 
}
void delay_10us(void)
{
  unsigned char y;
    for (y=0; y<20; y++)
	    {
	     ;
	    }    
 }
 
 unsigned char RTEEPROMReady(void)
{
	return !(EECR & 0x02);
} 

void WC(unsigned char da_data)
 {CS2450; //74HC245片选
  DI0;
  RW0;
  delay(200);
  PORTA=da_data;
  delay(10);
  A91;
  delay(50);
  A90;
  DI1;
  RW1;
  A91;
  CS2451;
  delay(200);
  }
void WD(unsigned char da_data)
{ CS2450;
  DI1;
  RW0;
  delay(200);
  PORTA=da_data;
  A91;
  delay(50);
  A90;
  DI1;
  RW1;
  A91;
  CS2451;
  delay(200);
  }
void DEM(void)
{unsigned char i,j;
 WC(0x80);
 for(i=0;i<14;i++)
 {
  WD(control_mode[i]);
  delay(50);
  }
 WC(0x90);
  for(i=14;i<28;i++)
 {
  WD(control_mode[i]);
  delay(50);
  }
  delay(200);
} 
void  DIS(void)
{unsigned char ii=2,jj=60,kk=20;
DIS2:
 WC(0x80);
DIS0:
 WD(ii);
 ii=ii+1;
 jj=jj-1;
 if(jj!=0) goto DISA;
 else goto exit;
DISA:
    kk=kk-1;
 if(kk!=0) goto DIS0;
    kk=20;
	WC(0x90);
 DIS1:
	WD(ii);
	jj=jj-1;
	kk=kk-1;
	if(kk!=0) goto DIS1;
	else {delay(200);
          goto DIS2;
		  }
exit:
   ;
 } 
void DISP(void)
{unsigned char ii=4,jj=10,dph=0xb0,dpl=0xa0;
 WC(0X80);
 
 
}
/*****************************************************************
* 名称: clear_lcd())
* 
* 入口参数:n
* 出口参数:无
*****************************************************************/
void  clear_lcd()
{unsigned char i,j;
  CS2450;
  DI0;
  RW0; //功能1设置
  PORTA=0x30;
  CS2451;
 for(i=0;i<5;i++)
    {A91;
	 delay(20);
	 A90;
	}
  DI1;
  delay(10);
  WC(0x0c);
  WC(0x06);
  //WC(0x30);
  WC(0x01);
  DEM();
  delay(50);
  //WC(0x01);
  //delay(50);
  //DIS();
  //delay(200);
  //WC(0x01);
  //delay(200);
}

 //**************主程序***************
void  main(void)
{unsigned char i=0xaa,j=0;
SP=0X45F;
MCUCR=0x00;
SFIOR|=0X40;
TIMER1_INIT();
SEI();
DDRA=0XFF;
PORTA=0XFF;
DDRB=0X7E;
PORTB=0XFF;
DDRC=0XFF;
PORTC=0XFF;
DDRD=0XFF;
PORTD=0Xff;	
DDRE=0XFF;
PORTE=0XFF;						
delay(50); 
clear_lcd();
while(1)
{delay(10);}
			
}

⌨️ 快捷键说明

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