📄 hd7279.c
字号:
#include<reg66x.h>//#include<share.h>#include"lcjmain.h"#include"hd7279.h"//在下面添加相应的包含getbit()的头文件//#include"test7279main.h"#define xsfh 16#define xsO 17#define xsL 18#define xsM 19uchar code ledtab[20]={ 0x7e, //显示0 0x30, //显示1 0x6d, //显示2 0x79, //显示3 0x33, //显示4 0x5b, //显示5 0x5f, //显示6 0x70, //显示7 0x7f, //显示8 0x7b, //显示9 0x77, //显示A 0x1f, //显示b 0x4e, //显示C 0x3d, //显示d 0x4f, //显示E 0x47, //显示F 0x01, //显示-, 16 0x7e, //显示O, 17 0x0e, //显示L, 18 0x00, //不显示, 19};uchar keyzalt; //变化的键所在的位置 //0x04 横梁上升键状态改变 //0x08 横梁下降键状态改变 //0x10 点动上升键状态改变 //0x20 点动下降键状态改变 //0x40 速度上升键状态改变 //0x80 速度下降键状态改变uchar keyzsta; //键的状态 //1--按下 //0--没按下bit havekey; //=1 有键按下过//extern sta165;void write7279(uchar cmd, uchar dta){// EA=0; send_byte (cmd); send_byte (dta);// EA=1;}uchar read7279(uchar command){// EA=0; send_byte(command); return(receive_byte());}void send_byte(uchar out_byte){ uchar data i;// cs7279=0; P2=(P2&0x1f)|cs7279; long_delay(); for (i=0;i<8;i++) { if (out_byte&0x80) dat7279=1; else dat7279=0; clk7279=1; short_delay(); clk7279=0; short_delay(); out_byte=out_byte<<1; } dat7279=0;}uchar receive_byte(void){ uchar data i, data in_byte; dat7279=1; long_delay(); for (i=0;i<8;i++) { clk7279=1; short_delay(); in_byte=in_byte<<1; if (dat7279) { in_byte=in_byte|0x01; } clk7279=0; short_delay(); } dat7279=0; return (in_byte);}void long_delay(void){ uchar data i; for (i=0;i<0x30;i++);}void short_delay(void){ uchar data i; for (i=0;i<8;i++);}void init7279(void){ uint data x; for(x=0;x<0x2000;x++); send_byte(CMD_RESET);// send_byte(CMD_TEST);// while(1); keyzalt=0; keyzsta=0; havekey=0;}bit fbit;void setkey(BYTE led,int f,int v){ uchar data fxs[8]; uchar data i;/* { WORD x; x=f; i=(x>>12)&0x0f; fxs[0]=ledtab[i]; i=(x>>8)&0x0f; fxs[1]=ledtab[i]; i=(x>>4)&0x0f; fxs[2]=ledtab[i]; i=x&0x0f; fxs[3]=ledtab[i]; x=v; i=(x>>12)&0x0f; fxs[4]=ledtab[i]; i=(x>>8)&0x0f; fxs[5]=ledtab[i]; i=(x>>4)&0x0f; fxs[6]=ledtab[i]; i=x&0x0f; fxs[7]=ledtab[i]; for(i=0;i<8;i++) { write7279(0x97-i, fxs[i]); }// write7279(0x97, fxs[0]); return; }*/ if(f<0) { fbit=1; f=-f; } else fbit=0; if(f>=2000) { fxs[0]=ledtab[xsM]; fxs[1]=ledtab[xsM]; fxs[2]=ledtab[xsO]; fxs[3]=ledtab[xsL]; } else { i=f/1000; fxs[0]=ledtab[i]; i=(f%1000)/100; fxs[1]=ledtab[i]; i=(f%100)/10; fxs[2]=ledtab[i]|0x80; i=(f%10); fxs[3]=ledtab[i]; if(f<100) { fxs[0]=ledtab[xsM]; fxs[1]=ledtab[xsM]; } else if(f<1000) { fxs[0]=ledtab[xsM]; } } if(fbit==1) { fxs[0]=fxs[0]|ledtab[xsfh]; } fxs[4]=ledtab[xsM]; i=(v%1000)/100; fxs[5]=ledtab[i]; i=(v%100)/10; fxs[6]=ledtab[i]; i=v%10; fxs[7]=ledtab[i]; if(v<10) { fxs[4]=ledtab[xsM]; fxs[5]=ledtab[xsM]; fxs[6]=ledtab[xsM]; } else if(v<100) { fxs[4]=ledtab[xsM]; fxs[5]=ledtab[xsM]; } else if(v<1000) { fxs[4]=ledtab[xsM]; } if(led==1) { fxs[3]=fxs[3]|0x80; fxs[7]=fxs[7]&0x7f; } else if(led==2) { fxs[3]=fxs[3]&0x7f; fxs[7]=fxs[7]|0x80; } else { fxs[3]=fxs[3]&0x7f; fxs[7]=fxs[7]&0x7f; } for(i=0;i<8;i++) { write7279(0x97-i, fxs[i]); } write7279(0x97, fxs[0]);}WORD getkey(WORD st){ bool data keyflaga; uchar data keyz; uint data keysta; keyflaga=getbit(st,0); if(!havekey) { if(keyflaga) { keyz=read7279(CMD_READ); havekey=1; if(keyz==hlupkey) { keyzalt=hlupalt; keyzsta=0; keyzsta=hlupalt; } else if(keyz==hldownkey) { keyzalt=hldownalt; keyzsta=0; keyzsta=hldownalt; } else if(keyz==ddupkey) { keyzalt=ddupalt; keyzsta=0; keyzsta=ddupalt; } else if(keyz==dddownkey) { keyzalt=dddownalt; keyzsta=0; keyzsta=dddownalt; } else if(keyz==vupkey) { keyzalt=vupalt; keyzsta=0; keyzsta=vupalt; } else if(keyz==vdownkey) { keyzalt=vdownalt; keyzsta=0; keyzsta=vdownalt; } } else { keyzalt=0; keyzsta=0; } } else { if(!keyflaga) { havekey=0; keyzsta=0; } } keysta=(keyzalt<<8)+keyzsta; return keysta;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -