From: www.ouravr.com
作者:gphs
注释个人觉得很清晰! #define uchar unsigned char #define uint unsigned int //定义HT1621的命令 #define ComMode 0x52 //4COM,1/3bias 1000 010 1001 0 #define RCosc 0x30 //内部RC振荡器(上电默认)1000 0011 0000 #define LCD_on 0x06 //打开LCD 偏压发生器1000 0000 0 11 0 #define LCD_off 0x04 //关闭LCD显示 #define Sys_en 0x02 //系统振荡器开 1000 0000 0010 #define Ctrl_cmd 0x80 //写控制命令 #define Data_cmd 0xa0 //写数据命令
//定义端口HT1621数据端口 #define WR1 sbi(PORTD, 7) #define WR0 cbi(PORTD, 7) #define DATA1 sbi(PORTD, 6) #define DATA0 cbi(PORTD, 6) #define CS1 sbi(PORTC, 0) #define CS0 cbi(PORTC, 0) #define ZA 10 #define ZB 11 #define ZC 12 #define ZD 13 #define ZE 14 #define ZF 15 #define H 16 #define L 17 #define T 18 #define N 19 #define SUBB 20 #define P 21 #define R 22 #define NO 23 const char num[]={0x5f,0x06,0x6b,0x2f,0x36,0x3d,0x7d,0x07,0x7f,0x3f, //0 1 2 3 4 5 6 7 8 9 0x77,0x7c,0x59,0x6e,0x79,0x71,0x76,0x58,0x51,0x57,0x20,0x73,0x60,0x00, // A B C D E F H L T N - P R NO }; uchar SMG1=0; //1号数码管 uchar SMG2=0; //2号数码管 uchar SMG3=0; //3号数码管 uchar SMG4=0; //4号数码管 uchar SMG5=0; //5号数码管 uchar SMG6=0; //6号数码管 uchar SIGN1=0; //标志1 uchar SIGN2=0; //标志2 #define ADD_SMG1 0x0 #define S1 (SMG1&0x80) #define S1_ON (SMG1|=0x80) //标志S1"ON" #define S1_OFF (SMG1&=0x7f)
#define ADD_SMG2 0x02 #define S2 (SMG2&0x80) #define S2_ON (SMG2|=0x80) //标志S2"OFF" #define S2_OFF (SMG2&=0x7f)
#define ADD_SMG3 0x04 //数码管3的地址00 010000 #define COL (SMG3&0x80) #define COL_ON (SMG3|=0x80) //标志COL":" #define COL_OFF (SMG3&=0x7f)
#define ADD_SMG4 0x06 //数码管4的地址 00 01 1000
#define ADD_SMG5 0x0a //数码管5的地址0010 1000 #define S14 (SMG5&0x80) #define S14_ON (SMG5|=0x80) //标志S14 #define S14_OFF (SMG5&=0x7f)
#define ADD_SMG6 0x0c #define S15 (SMG6&0x80) #define S15_ON (SMG6|=0x80) //标志S15,除霜标志 #define S15_OFF (SMG6&=0x7f)
#define ADD_SIGN1 0x08 //标志1 #define ADD_SIGN2 0x0e //标志2
#define S13_ON (SIGN1|=0x80) //标志S13,加热的中心标志 #define S13_OFF (SIGN1&=0x7f)
#define S10_ON (SIGN1|=0x40) //标志S10 #define S10_OFF (SIGN1&=0xbf)
#define S5_ON (SIGN1|=0x20) //标志S5 #define S5_OFF (SIGN1&=0xdf)
#define S11_ON (SIGN1|=0x10) //标志S11 #define S11_OFF (SIGN1&=0xef)
#define S9_ON (SIGN1|=0x08) //标志S9 #define S9_OFF (SIGN1&=0xf7)
#define S8_ON (SIGN1|=0x04) //标志S8 #define S8_OFF (SIGN1&=0xfb)
#define S7_ON (SIGN1|=0x02) //标志S7 #define S7_OFF (SIGN1&=0xfd)
#define S6_ON (SIGN1|=0x01) //标志S6,S5-S11风扇旋转标志 #define S6_OFF (SIGN1&=0xfe) /***************************************************************/ #define S20_ON (SIGN2|=0x80) //标志S20,"Lock"标志 #define S20_OFF (SIGN2&=0x7f)
#define S12_ON (SIGN2|=0x40) //标志S12,摄氏度标志 #define S12_OFF (SIGN2&=0xbf)
#define S4_ON (SIGN2|=0x20) //标志S4,"Warm"标志 #define S4_OFF (SIGN2&=0xdf)
#define S3_ON (SIGN2|=0x10) //标志S3,"Time"标志 #define S3_OFF (SIGN2&=0xef)
#define S19_ON (SIGN2|=0x08) //标志S19 #define S19_OFF (SIGN2&=0xf7)
#define S18_ON (SIGN2|=0x04) //标志S18 #define S18_OFF (SIGN2&=0xfb)
#define S17_ON (SIGN2|=0x02) //标志S17 #define S17_OFF (SIGN2&=0xfd)
#define S16_ON (SIGN2|=0x01) //标志S16,S16-s19,加热标志 #define S16_OFF (SIGN2&=0xfe)
/**------------------------------------------------------------------------- Name: SendBit_1621(送数据程序) ---------------------------------------------------------------------------*/ void SendBit_1621(uchar sdata,uchar cnt) //data 的高cnt 位写入HT1621,高位在前 { uchar i; for(i=0;i<cnt;i++) { WR0; if(sdata&0x80) DATA1; else DATA0; WR1; sdata<<=1; } } /**------------------------------------------------------------------------- Name: SendCmd(送命令) ---------------------------------------------------------------------------*/ void SendCmd_1621(uchar command) { CS0; SendBit_1621(0x80,4); //写入标志码“100”和9 位command 命令,由于 SendBit_1621(command,8); //没有使有到更改时钟输出等命令,为了编程方便 CS1; //直接将command 的最高位写“0” } /**------------------------------------------------------------------------- Name: Write_1621(送数据和命令程序) ---------------------------------------------------------------------------*/ void Write_1621(uchar addr,uchar sdata) { addr<<=2; CS0; SendBit_1621(0xa0,3); //写入标志码“101” SendBit_1621(addr,6); //写入addr 的高6位 SendBit_1621(sdata,8); //写入data 的8位 CS1; } /**------------------------------------------------------------------------- Name: all_off(清除1621显示) ---------------------------------------------------------------------------*/ void HT1621_all_off(void) { uchar i; uchar addr=0; for(i=0;i<8;i++) { Write_1621(addr,0x00); addr+=2; } } /**************************************************************************** Name: all_on(全部点亮1621) ****************************************************************************/ void HT1621_all_on(void) { uchar i; uchar addr=0; for(i=0;i<8;i++) { Write_1621(addr,0xff); addr+=2; } }
/**************************************************************************** Name: Init_1621(初始化1621) *****************************************************************************/ void Init_1621(void) { SendCmd_1621(Sys_en); SendCmd_1621(RCosc); SendCmd_1621(ComMode); SendCmd_1621(LCD_on); } /**************************************************************************** Name: LCDon(初始化1621) *****************************************************************************/ void LCDoff(void) { SendCmd_1621(LCD_off); } /**************************************************************************** Name: LCDon(初始化1621) *****************************************************************************/ void LCDon(void) { SendCmd_1621(LCD_on); } /**------------------------------------------------------------------------- Name: sun_turn1(太阳旋转标志处理) --------------------------------------------------------------------------**/ void sun_turn1(void) { S6_ON;S8_ON;S10_ON; S7_OFF;S9_OFF;S11_OFF; }
/**------------------------------------------------------------------------- Name: sun_turn2(太阳旋转标志处理) --------------------------------------------------------------------------**/ void sun_turn2(void) { S7_ON;S9_ON;S11_ON; S6_OFF;S8_OFF;S10_OFF; }
/**------------------------------------------------------------------------- Name: sun_turn12off(太阳旋转标志处理) --------------------------------------------------------------------------**/ void sun_turn12off(void) { S6_OFF;S8_OFF;S10_OFF;S7_OFF;S9_OFF;S11_OFF;S5_OFF; }
/**------------------------------------------------------------------------- Name: burn1(燃烧标志处理) --------------------------------------------------------------------------**/ void burn1(void) { S16_ON;S18_ON;S17_OFF;S19_OFF; } /**------------------------------------------------------------------------- Name: burn2(燃烧标志处理) --------------------------------------------------------------------------**/ void burn2(void) { S16_OFF;S18_OFF;S17_ON;S19_ON; } /**------------------------------------------------------------------------- Name: burn12off(燃烧标志处理) --------------------------------------------------------------------------**/ void burn12off(void) { S16_OFF;S18_OFF;S17_OFF;S19_OFF; }
/**------------------------------------------------------------------------- Name: Disp_RSTS(); --------------------------------------------------------------------------**/ void Disp_RSTS(void) { SMG1=R;SMG2=5;SMG3=T;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_RS__(); --------------------------------------------------------------------------**/ void Disp_RS__(void) { SMG1=R;SMG2=5;SMG3=SUBB;SMG4=SUBB; } /**------------------------------------------------------------------------- Name: Disp_CSTS(); --------------------------------------------------------------------------**/ void Disp_CSTS(void) { SMG1=ZC;SMG2=5;SMG3=T;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_CSOS(); --------------------------------------------------------------------------**/ void Disp_CSOS(void) { SMG1=ZC;SMG2=5;SMG3=0;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_ENTE(); --------------------------------------------------------------------------**/ void Disp_ENTE(void) { SMG1=ZE;SMG2=N;SMG3=T;SMG4=ZE; } /**------------------------------------------------------------------------- Name: Disp_ONOF(); --------------------------------------------------------------------------**/ void Disp_ONOF(void) { SMG1=0;SMG2=N;SMG3=0;SMG4=ZF; } /**------------------------------------------------------------------------- Name: Disp_HTTS(); --------------------------------------------------------------------------**/ void Disp_HTTS(void) { SMG1=H;SMG2=T;SMG3=T;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_CSTC(); --------------------------------------------------------------------------**/ void Disp_CSTC(void) { SMG1=ZC;SMG2=5;SMG3=T;SMG4=ZC; } /**------------------------------------------------------------------------- Name: Disp_STS8(); --------------------------------------------------------------------------**/ void Disp_STS8(void) { SMG1=5;SMG2=T;SMG3=5;SMG4=8; } /**------------------------------------------------------------------------- Name: Disp_08__(); --------------------------------------------------------------------------**/ void Disp_08__(void) { SMG1=0;SMG2=8;SMG3=SUBB;SMG4=SUBB; } /**------------------------------------------------------------------------- Name: Disp_10__(); --------------------------------------------------------------------------**/ void Disp_10__(void) { SMG1=SUBB;SMG2=SUBB;SMG3=1;SMG4=0; } /**------------------------------------------------------------------------- Name: Disp_DONH(); --------------------------------------------------------------------------**/ void Disp_DONH(void) { SMG1=ZD;SMG2=0;SMG3=N;SMG4=H; } /**------------------------------------------------------------------------- Name: Disp_DONF(); --------------------------------------------------------------------------**/ void Disp_DONF(void) { SMG1=ZD;SMG2=0;SMG3=N;SMG4=ZF; } /**------------------------------------------------------------------------- Name: Disp_DOFH(); --------------------------------------------------------------------------**/ void Disp_DOFH(void) { SMG1=ZD;SMG2=0;SMG3=ZF;SMG4=H; } /**------------------------------------------------------------------------- Name: Disp_DOFF(); --------------------------------------------------------------------------**/ void Disp_DOFF(void) { SMG1=ZD;SMG2=0;SMG3=ZF;SMG4=ZF; } /**------------------------------------------------------------------------- Name: Disp_LOCT(); --------------------------------------------------------------------------**/ void Disp_LOCT(void) { SMG1=L;SMG2=0;SMG3=ZC;SMG4=T; } /**------------------------------------------------------------------------- Name: Disp_ES(); --------------------------------------------------------------------------**/ void Disp_ES(void) { SMG5=ZE;SMG6=5; } /**------------------------------------------------------------------------- Name: Disp_EL(); --------------------------------------------------------------------------**/ void Disp_EL(void) { SMG5=ZE;SMG6=L; } /**------------------------------------------------------------------------- Name: Disp_EH(); --------------------------------------------------------------------------**/ void Disp_EH(void) { SMG5=ZE;SMG6=H; } /**------------------------------------------------------------------------- Name: Disp_EE(); --------------------------------------------------------------------------**/ void Disp_EE(void) { SMG5=ZE;SMG6=ZE; } /**------------------------------------------------------------------------- Name: Disp_NND(); --------------------------------------------------------------------------**/ void Disp_NND(void) { SMG1=NO;SMG2=NO;SMG3=ZD; } /**------------------------------------------------------------------------- Name: Disp_on(); --------------------------------------------------------------------------**/ void Disp_on(void) { SMG5=0;SMG6=N; } /**------------------------------------------------------------------------- Name: Disp_of(); --------------------------------------------------------------------------**/ void Disp_of(void) { SMG5=0;SMG6=ZF; } /**------------------------------------------------------------------------- Name: Disp_pb_t(); --------------------------------------------------------------------------**/ void Disp_pb_t(void) { SMG1=P;SMG2=ZB;SMG3=SUBB;SMG4=T; } /**------------------------------------------------------------------------- Name: Disp_PP(); --------------------------------------------------------------------------**/ void Disp_PP(void) { SMG5=P;SMG6=P; }
|
文章评论(0条评论)
登录后参与讨论