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

📄 vfd.i

📁 一个车载音响控制程序,包括高保真立体收部分,VFD驱动显示,4路音频电子切换, 红外遥控控制 采用51单片机
💻 I
字号:
#line 1 "vfd.c" /0          #line 1 "E:\KEIL\C51\INC\REG52.H" /0       sfr P0    = 0x80; sfr P1    = 0x90; sfr P2    = 0xA0; sfr P3    = 0xB0; sfr PSW   = 0xD0; sfr ACC   = 0xE0; sfr B     = 0xF0; sfr SP    = 0x81; sfr DPL   = 0x82; sfr DPH   = 0x83; sfr PCON  = 0x87; sfr TCON  = 0x88; sfr TMOD  = 0x89; sfr TL0   = 0x8A; sfr TL1   = 0x8B; sfr TH0   = 0x8C; sfr TH1   = 0x8D; sfr IE    = 0xA8; sfr IP    = 0xB8; sfr SCON  = 0x98; sfr SBUF  = 0x99;   sfr T2CON  = 0xC8; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2    = 0xCC; sfr TH2    = 0xCD;     sbit CY    = PSW^7; sbit AC    = PSW^6; sbit F0    = PSW^5; sbit RS1   = PSW^4; sbit RS0   = PSW^3; sbit OV    = PSW^2; sbit P     = PSW^0;     sbit TF1   = TCON^7; sbit TR1   = TCON^6; sbit TF0   = TCON^5; sbit TR0   = TCON^4; sbit IE1   = TCON^3; sbit IT1   = TCON^2; sbit IE0   = TCON^1; sbit IT0   = TCON^0;   sbit EA    = IE^7; sbit ET2   = IE^5;   sbit ES    = IE^4; sbit ET1   = IE^3; sbit EX1   = IE^2; sbit ET0   = IE^1; sbit EX0   = IE^0;   sbit PT2   = IP^5; sbit PS    = IP^4; sbit PT1   = IP^3; sbit PX1   = IP^2; sbit PT0   = IP^1; sbit PX0   = IP^0;   sbit RD    = P3^7; sbit WR    = P3^6; sbit T1    = P3^5; sbit T0    = P3^4; sbit INT1  = P3^3; sbit INT0  = P3^2; sbit TXD   = P3^1; sbit RXD   = P3^0;   sbit SM0   = SCON^7; sbit SM1   = SCON^6; sbit SM2   = SCON^5; sbit REN   = SCON^4; sbit TB8   = SCON^3; sbit RB8   = SCON^2; sbit TI    = SCON^1; sbit RI    = SCON^0;   sbit T2EX  = P1^1;   sbit T2    = P1^0;     sbit TF2    = T2CON^7; sbit EXF2   = T2CON^6; sbit RCLK   = T2CON^5; sbit TCLK   = T2CON^4; sbit EXEN2  = T2CON^3; sbit TR2    = T2CON^2; sbit C_T2   = T2CON^1; sbit CP_RL2 = T2CON^0;  #line 13 "vfd.c" /0   #line 1 "mylib.h" /0 extern void inidelay(); extern void sys_ini(); extern bit re_re; extern unsigned long rddata(void); extern wrdata(unsigned long x); extern unsigned int swdata(unsigned int dat); extern void wr1(void); extern void mack(); extern void wrone(); extern bit wrnbyt(unsigned char add,unsigned char start,unsigned char num,unsigned char a[]); extern bit rdnbyt(unsigned char add,unsigned char num,unsigned char start,unsigned char a[]); extern void delay50(); extern void radio(); extern void iniband1(unsigned char a); extern void iniband(); extern unsigned char remkey2; extern unsigned char delay_num; extern unsigned long stepserch(bit a,unsigned int b); extern vfddigit(unsigned int ch); extern void display(void); extern void wrvfd(unsigned char addr,unsigned char dat); extern unsigned long rdkey(); extern void inivfd(void); extern void band_step(bit direction); extern void band_change(void); extern void station_search(bit,bit); extern void station_change(bit direction); extern void vfd_clean(); extern void volcheack(void); extern void delaytime(unsigned int time); extern void vfd_test(); extern void display(); extern void sub_vol(unsigned char dirc); extern void channel(unsigned char fun); extern void wr_pt2313(unsigned char com); extern void vfd_volume(unsigned char fun); extern bit repeat(); extern unsigned char volume; extern unsigned char trb_vol; extern unsigned char bas_vol; extern unsigned char band; extern unsigned char delay_fun; extern void trb_vol_ct(bit dirc); extern void bas_vol_ct(bit dirc); extern void flash_eras(unsigned int band); extern void flash_read(unsigned char add,unsigned int band,unsigned char a[]); extern void flash_prog(unsigned char add,unsigned int band,unsigned char b[]); extern bit key_sta; extern bit key_long; extern bit key(); extern void taiwei(); extern void mute_(bit fun); extern void radio_change(); extern void band_change(void); extern void eqchange(); extern void eq_vfd(unsigned char eq);                    extern union   {  unsigned long all; struct {  unsigned char addr    :8;     unsigned int frq      :16;    unsigned char cankao  :4;     unsigned char xs      :1;     unsigned char cte     :1;     unsigned char inp     :2;    }in0; }in0; extern union  {  unsigned long da; struct {  unsigned char addr    :8;     unsigned char bnc     :1;     unsigned char stmo    :1;     unsigned char ifen    :1;     unsigned char band    :1;     unsigned char io      :2;     unsigned char  ioc     :2;     unsigned char dz      :2;     unsigned char ul      :2;     unsigned char doc     :3;     unsigned char dnc     :1;     unsigned char test    :3;     unsigned char ifs     :1;     unsigned char dlc     :1;     unsigned char tbc     :1;     unsigned char gt      :2;    }in1; }in1;#line 14 "vfd.c" /0        sbit dat=P1^7; sbit clk=P1^6; sbit stb=P1^5; sbit power_led=P1^0; sbit fun_vfd=P1^4; extern unsigned char remkey; extern unsigned char ab; #line 29 "vfd.c" /1  #line 31 "vfd.c" /0   unsigned char code dis[10]={0xee,0x48,0xd6,0xda,0x78,0xba,0xbe,0xc8,0xfe,0xfa};  union {  unsigned char dat; struct {  unsigned char dms: 3;    unsigned char dnc: 3;    unsigned char ad1: 2;   }co1; }co1; union  {  unsigned char dat; struct {  unsigned char fru: 2;    unsigned char mad: 1;    unsigned char mst: 1;    unsigned char dnc: 2;    unsigned char ad2: 2;   }co2; }co2; union {  unsigned char dat; struct {  unsigned char add: 5;    unsigned char dnc: 1;    unsigned char ad3: 2;   }co3; }co3; union {  unsigned char dat; struct {  unsigned char pwm: 3;    unsigned char dis: 1;    unsigned char dnc: 2;    unsigned char ad4: 2;   }co4; }co4;  void wrd(unsigned char disno,bit lei)    {  unsigned char a; if(lei) goto s; stb=1; stb=1; stb=0; s:  for(a=0;a<8;a++) { clk=1; clk=1; clk=0; clk=0; if(disno&0x01) dat=1; else dat=0; disno=disno>>1; clk=1; clk=1; clk=1; clk=1; } } void inivfd(void) {  co1.co1.dms=0x02;   co1.co1.ad1=0x00;  co2.co2.mad=0x01;   co2.co2.mst=0x00;   co2.co2.ad2=0x01;  co3.co3.ad3=0x03;  co4.co4.pwm=0x07;   co4.co4.dis=0x01;   co4.co4.ad4=0x02; }  void wrvfd(unsigned char addr,unsigned char dat)   { inivfd(); wrd(co1.dat,0); stb=1;  co2.co2.fru=0x00; wrd(co2.dat,0); stb=1;  co3.co3.add=addr; wrd(co3.dat,0); wrd(dat,1); stb=1; wrd(co4.dat,0); stb=1; }    vfddigit(unsigned int ch) {	 static unsigned int rot1=0x0800;  unsigned char h[6]; h[5]=(ab/10); h[4]=(ab%10); h[3]=((ch%10000)/1000); h[2]=((ch%1000)/100); h[1]=((ch%100)/10); h[0]=(ch%10);			  wrvfd(0x00,(dis[h[1]]>>1)|0x80); wrvfd(0x01,dis[h[0]]); wrvfd(0x03,dis[h[2]]); if(h[3]) wrvfd(0x02,dis[h[3]]>>1); else wrvfd(0x02,0x00);	     wrvfd(0x06,dis[h[5]]>>1); wrvfd(0x07,dis[h[4]]); if(band==0) wrvfd(0x05,0xb4); else wrvfd(0x05,0xfc); if(rot1) { wrvfd(10,~(rot1&0x00ff)); wrvfd(11,~(((rot1>>8)&0xff)|0xf0)); rot1=rot1>>1; if(rot1==0x00) rot1=0x0800; }  } void vfd_volume(unsigned char fun) {   unsigned char one=0x00;  unsigned char ten=0x00;  unsigned char c=0; fun_vfd=0;      if(fun==0) { one=volume%10; ten=volume/10; } else if(fun==3)  { if(trb_vol<7) { one=(14-(trb_vol+trb_vol))%10; ten=(14-(trb_vol+trb_vol))/10; } else if(trb_vol>7) { one=((trb_vol-7)*2)%10; ten=((trb_vol-7)*2)/10; }    } else if(fun==1)  { if(bas_vol<7) { one=(14-(bas_vol+bas_vol))%10; ten=(14-(bas_vol+bas_vol))/10; } else if(bas_vol>7) { one=((bas_vol-7)*2)%10; ten=((bas_vol-7)*2)/10; }    } for(c=2;c<9;c++)  { if(fun==0) if((c==2)||(c==4)||(c==5)) goto hh; wrvfd(c,0x00); hh: ; } wrvfd(0x00,0x00); if(fun==0) { wrvfd(0x02,0x13); wrvfd(0x05,0x1f); wrvfd(0x04,0x24); } if(fun==3) { wrvfd(0x06,0xc0); wrvfd(0x07,0x01);  } if(fun==1) { wrvfd(0x06,0x1f);  } if((fun==1)) { if((bas_vol<7)) wrvfd(0x00,0x08);  } if((fun==3)) { if((trb_vol<7)) wrvfd(0x00,0x08);  } wrvfd(0x09,dis[one]); wrvfd(0x01,dis[ten]); TH1=0X00; TL1=0X00; TR1=1; delay_num=20; } void eq_vfd(unsigned char eq) { if(band==2) fun_vfd=0; vfd_clean(); wrvfd(0x07,0xf8); wrvfd(0x06,0x5b); wrvfd(0x04,0x08); wrvfd(0x05,dis[eq+1]); delay_num=20; TR1=1; } void taiwei() {   unsigned char b[6]; b[5]=(ab/10); b[4]=(ab%10); wrvfd(0x06,dis[b[5]]>>1); wrvfd(0x07,dis[b[4]]); }   void vfd_clean() {  unsigned char a; for(a=0;a<16;a++) wrvfd(a,0x00); }            

⌨️ 快捷键说明

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