📄 kouxian.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 + -