?? 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 + -