📄 av_n5088.c
字号:
/***************************** 第二片VFD(6311) 显示部分 ******************************/
#define TDIG1 0xc0 /*OK DIG14 address */
#define TDIG2 0xc3 /*OK DIG13 address */
#define TDIG3 0xc6 /*OK DIG12 address */
#define TDIG4 0xc9 /*OK DIG11 address */
#define TDIG5 0xcc /* DIG10 address */
#define TDIG6 0xcf /* DIG9 address */
#define TDIG7 0xd2 /* DIG8 address */
#define TDIG8 0xd5 /* DIG7 address */
#define TDIG9 0xd8 /* DIG6 address */
#define TDIG10 0xdb /* DIG5 address */
#define TDIG11 0xde /* DIG4 address */
#define TDIG12 0xe1 /* DIG3 address */
/*uchar dig_offset[4]; DIG2-DIG6 的显示字符串寄存数组 */
uchar idata tdig_offset[50]; /* DIG2-DIG6 的显示字符串寄存数组 */
void input_data_scroll(void);
uchar screen_num; /* 不同的走屏设置*/
void display_do(void);
/* VFD的总显示输出函数,主程序每次循环就刷新一个栅格, 共11个(G1-G11) */
void display_stronly_do(void); /*用于开机走屏*/
/* VFD的字符显示输出函数(G4-G11), 仅显示字符串, 其它显示关闭 */
uchar string_att; /***** 各字符串显示方式寄存 *****/
#define STRING_MACH 0 /* 机器方式(固定) */
#define STRING_PROMPT 1 /* 提示方式 */
#define STRING_ADJ 2 /* 调节方式 */
#define STRING_SCROLL 3 /* 滚屏方式 */
uint string_num; /* 各显示状态下要显示的字符串在表中的编号,也用于区分状态下
的子状态, 或存滚屏时的每步移动到滚屏字表中的字节数组号 */
void string_refdo(void); /* 各种字符串显示方式的执行 */
void string_snext(void); /* 现在的字符显示方式结束, 设置下一显示方式, 准备进入 */
/***** 该计时数用于屏幕暂留、走屏速度控制 *****/
uchar string_del; /* 显示部分的计时器计数数 */
#define STRDEL_MACH 0xff /*0x80 机器方式的停留时间 25S */
#define STRDEL_PA3 12 /* 提示方式、调节方式的停留时间 --1.5S */
#define STRDEL_PA 8 /* 提示方式、调节方式的停留时间 --1.5S */
#define STRDEL_PA2 14 /* 提示方式、调节方式的停留时间2 --0.5S */
#define STRDEL_SCR 3 /* 滚屏速度 0.3S */
uchar string_scr_step; /* 滚屏步计数数 */
bit string_scr_do(void); /* 滚屏处理, 每次移动一步, 如果走到最后一步时, 返回位值=1 */
void dis_seterr( void); /* 设显示为E R R O R的提示显示 */
void start_dis(void); /* 开机走屏显示程序 */
void dig_bin2bcd1(uchar);
/*8位二进制数-- 转BCD码及输出显示字符寄存数组,dig_offset[10],dig_offset[11]*/
void copy_string(uchar code *);
/* 复制--表字符串到DIG4-DIG11 的显示字符串寄存数组 */
/*基于程序存贮器的指针(CODE *)*/
uchar code *tab_string1_p(uchar); /*指针函数*/
/* 查tab_string1表, 输入字串号, 返回表中字串头CODE地址 */
void tab_ascii_do(uchar);
/* 查tab_ascii表
参数:表中字串号
返回:par[2] -- 高8位数
par[1] -- 低8位数 */
void tab_bar_do2(uchar);
void tab_bar_do(uchar); /*处理DIG4,为单一的中置频谱,不需要合成,C*/
/* 查表得--该频谱的6311显示实数
参数: 格数
返回:par[1] -- 低位数
par[2] -- 中位数 */
extern void wvfd_6311(void); /*汇编子程序*/
/* 写6311显示内存
参数1: PAR 要写的显存地址(MSB: 1 1 B5,B4,B3,B2,B1,B0 :LSB)(B5-B0 MEM START ADDRESS)
参数2: PAR+02H 写的高8位数据
参数3: PAR+01H 写的低8位数据 (先送出, 且从bit0位开始)
参数4: B_P17 写最高1位*/
extern void setup_6311(void); /*汇编子程序*/
/* 初始化6311 --段数格数 11 digits,17 segments*/
extern void dim_vfd(void); /*汇编子程序*/
/* 打开荧光显示 */
extern void wled_6311(void); /*汇编子程序*/
/* 打开荧光显示 */
//tmp extern void input_det(void); /*汇编子程序,主音量控制*/
/**************第二片PT6311**************/
extern void twvfd_6311(void); /*汇编子程序*/
/* 写6311显示内存
参数1: PAR 要写的显存地址(MSB: 1 1 B5,B4,B3,B2,B1,B0 :LSB)(B5-B0 MEM START ADDRESS)
参数2: PAR+02H 写的高8位数据
参数3: PAR+01H 写的低8位数据 (先送出, 且从bit0位开始)
参数4: B_P17 写最高1位*/
/* 送数据到6311的LED口
参数: PAR 要送入的数据 */
extern void tsetup_6311(void); /*汇编子程序*/
/* 初始化6311 --段数格数 11 digits,17 segments*/
extern void tdim_vfd(void); /*汇编子程序*/
/* 打开荧光显示 */
extern void twled_6311(void); /*汇编子程序*/
/************** 咪侦察处理 ******************/
void dsp_display(void);
/********************************** 按键部分 *********************************/
void key_jmp(void); /*按键散转*/
bit bkey_bnce;
uchar old_key; /* 键盘旧按键键值寄存器 */
uchar pwr_key_del; /* 键盘旧按键键值寄存器 */
uchar kdel; /* 连续按同一个键计数器 */
#define KTIME1 1 /* 按键自动连动间隔时间 0.3 */
#define KTIME2 2 /* 按键自动连动间隔时间 0.6 */
#define KTIME3 3 /* 按键自动连动间隔时间 1S */
#define KTIME4 0xff /* 按键自动连动间隔时间,最慢 */
extern void getkey_6311(void); /*汇编子程序*/
/* 读键盘按键子程序
返回: PAR 键值,0=无按键 */
/******** 高低音恢复子程序 ********/
void tre_bass_restore(void);
/******** 存贮高低音子程序 ********/
void tre_bass_save(void);
void key_do (void);
/*主按键调用程序,由主函数调用*/
/*........ 按键子程序 ...........*/
void key_dsp(bit lr_flag);
void key_stereo(void); void key_surround(void);
void key_3_stereo(void); void key_mode(void);
void key_dim(void); void key_ch_mode(bit lr_flag);
void key_night(void); void key_dim_sub(void);
void mic_delay_add(void);
void mic_delay_sub(void);
void mic1_vol_add(void);
void mic1_vol_sub(void);
void mic2_vol_add(void);
void mic2_vol_sub(void);
void mic_tre_add(void);
void mic_tre_sub(void);
void mic_bass_add(void);
void mic_bass_sub(void);
void mic_echo_add(void);
void mic_echo_sub(void);
void cen_vol_add(void);
void cen_vol_sub(void);
void sl_vol_add(void);
void sl_vol_sub(void);
void sr_vol_add(void);
void sr_vol_sub(void);
void bass_add(void);
void bass_sub(void);
void treble_add(void);
void treble_sub(void);
void disp_add(void);
void disp_sub(void);
/********************************** 遥控键部分 *********************************/
bit b_rkey; /* 有remote key时被置1, 注:主程序检测该位后清0 */
uchar rkey_num; /* 现遥控键值寄存 */
uchar rkey_keep; /* 连发的监控计时数 */
uchar rkey_speed; /* 连发灵敏度计数, 开机时初始化 */
#define RKEY_SP1 1 /* 连发速度1 */
#define RKEY_SP2 2 /* 连发速度2 */
#define RKEY_SP3 4 /* 连发速度3 */
#define RKEY_SP4 0xff /* 连发速度4 */
uchar rmbyte_in[4]; /* 遥控完整读入的4个字节存放数组###
第1字节 -- 用户码1存放 ,RMBYTE_IN
第2字节 -- 用户码2存放 ,RMBYTE_IN+01H
第3字节 -- 键码存放 ,RMBYTE_IN+02H
第4字节 -- 键码的反码存放 ,RMBYTE_IN+03H */
void remote_do(void);
/* 遥控键主调用程序 */
/*........ 部分遥控键子程序 ...........*/
void rkey_balan_l(void);
void rkey_balan_r(void);
void key_mute(void);
/******************上电恢复原先的数据*************/
void restore(void);
/*************** 编码电位器2变量 ********************/
bit icw1_flg; /* 正转起始标志位, 开机时清0 !!! */
//bit icw2_flg; /* 正转到位标志位(*作为函数返回值), 开机时清0 !!! */
bit iccw1_flg; /* 反转起始标志位, 开机时清0 !!! */
//bit iccw2_flg; /* 反转到位标志位(*作为函数返回值), 开机时清0 !!! */
uchar lrk_del; /* 1=为正向,2=为反向, 方向暂存 */
bit blrk_process; //lr_key process flag
bit blrk_direct; //lr_key direct flag
void read_lr_key(void);
void china_scroll(void);
/***************************** ac3输入 ***************************************/
sbit bc_4051a=P1^5; /* */
sbit bc_4051b=P1^4;
sbit bc_4051c=P1^3;
sbit bc_inputa=P2^4; /*=1高电平为全机(包括KALA OK)静音*/
sbit bc_inputb=P2^5; /*=1高电平为全机(包括KALA OK)静音*/
sbit bc_jin=P3^2;
sbit bc_jout=P2^3;
sbit bc_mic=P1^7; /*KALA OK检测*/
sbit bc_okmute=P1^6; /*KALA OK静音控制*/
bit b_mic; /*kala ok检测标志*/
void mic_det(void);
void adpro_add_display(void);
uchar adpro_num; /*频谱增益自动调节0,7*/
uchar wath_dog_num;
void clear_wathdog(void); /*经过一定的时间重新设置看门狗*/
bit get_peng_flg;
bit auto_select_flg; /*自动音源选择标志*/
uchar auto_cout; /*经过一定时间进入音源自动选择*/
#define AUTO_COUNT1 25
void auto_source_select(void); /*自动音源选择*/
void clear_adin(void); /*过程静音清除频谱采样数据*/
bit peng_flg;
/**************************** 24c01--外存储器部分定义 ****************************/
/************* 各种音量调节值 *****************/
uchar a24_start;
bit b_ack_24c01; /* 24C01的应答位值寄存 */
uchar err_24c01; /* 24C01的错误码寄存,!!!!!! 开机时清0 !!! */
extern void read_abyte(void); /*汇编子程序*/
/* 24c01,在约定地址读出一数据
参数: PAR 读出数在24c01中的地址
返回: PAR 读出数 */
extern void write_abyte(void); /*汇编子程序*/
/* 24c01,在约定地址写一数据, 占用20ms
参数1: PAR 24c01中的地址
参数2: PAR+01H 写入数 */
/**************做出厂设置*******************************/
void setmach(void);
void setup_use(void); /*** 开机的用户状态初始化 ***/
void save_program(void);
uchar add_delay;
uchar idata adpro_delay; /*多长时间没有频谱,则显示音源输入*/
uchar adpro_screen_delay; /*没有音源输入,显示音源输入次数大于3则走屏显示*/
void clear_tdig_offset(void);
void china_disp(void);
void led_control(void);
uchar idata singal_time; /*2002-07-31 01:11PM*/
void fresh_input(void);
/*================================ 外部程序 ====================================*/
#include <table.c> /* 表文件 */
#include <main.c> /* 主函数公共程序文件 */
#include <control.c> /* 各内部控制处理程序文件 */
#include <display.c> /* 显示部分程序 */
#include <remkey.c> /* 按键及遥控程序 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -