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

📄 newlcdtest_1127.c

📁 8051f020的屏显和控制文件包含头文件。开发环境可选用KEIL
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "stdio.h" 
#include "c8051F020.h"
#include "string.h"

///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////宏定义////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
#define  LCMDATA     P4      //液晶并行数据  
#define  SDATA       P5      //与信号板交换的并行数据  
#define  KEY         P6      //按键  
#define  LEDSTATE    P7      /*LED:P7.7__________________________________P7.0
                                   |保护|失锁|射频|外环|内环|10MHz|秒脉冲|音频|
                                   |____|____|____|____|____|_____|______|____|*/
                                   
#define  PARADEFAULT 0x00    //恢复默认值 
#define  LAUDIO      0x01    //左声道电平 
#define  RAUDIO      0x02    //右声道电平  
#define  PILOT       0x03    //导频频偏 
#define  CONT        0x04    //调制度                 
#define  EN_RF       0x05    //射频开关(1bit表示开关,0bit表示内部还是外部10M,2bit表示削波设置)       
#define  FREQ_M      0x06    //载波频率高16位    
#define  FREQ_L      0x07    //载波频率低16位  
#define  TUNNEL      0x08    //音频输入  
#define  MODE        0x09    //工作模式  
#define  TIME        0x0a    //预加重时间 
#define  DELAY       0x0b    //音频延时整数位 
#define  DELAY1      0x0c    //音频延时小数位  
#define  DELAY_19K   0x0d    //导频延时 

#define SYSCLK         11059200           //系统时钟频率(Hz)
#define BAUDRATE4800   4800               //UART波特率 (bps)
#define BAUDRATE9600   9600               //UART波特率 (bps)
#define BAUDRATE19200  19200              //UART波特率 (bps)

/////远控错误信息/////////////
#define ERR_ADDR 0x80       //工作参数地址号非法
#define ERR_LEN  0x40       //工作参数字节长度非法
#define ERR_DATA 0x20       //工作参数数值非法
#define ERR_COM  0x10       //命令非法
#define ERR_AUD  0x08       //静音,音量不能更改
#define ERR_CTR  0x24       //控制电压增加过快
#define ERR_POW  0x04       //功率已达到30瓦,控制电压不能再增加

#define uchar unsigned char
#define uint unsigned int 
#define ulong unsigned long


/////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////端口定义/////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
sbit TXD0       =P0^0;//串口0
sbit RXD0       =P0^1;
sbit TXD1       =P0^2;//串口1
sbit RXD1       =P0^3;
sbit INT0       =P0^4;//外部中断0
sbit INT1       =P0^5;//外部中断1(未用)
sbit DS_CLK     =P0^6;//实时时钟时钟端口
sbit DS_IO      =P0^7;//实时时钟输入输出端口
sbit OVER       =P1^1;//LED:过载
sbit MULOCK     =P1^2;//LED:互锁
sbit CHECK1     =P1^3;//剩余端口
sbit CHECK2     =P1^4;
sbit CTR_IN     =P1^5;//外环控制
sbit CIR_OUT    =P1^6;
sbit DS_RST     =P1^7;//实时时钟复位端
sbit LCM_E      =P2^0;//液晶端口
sbit LCM_WR     =P2^1;
sbit LCM_RS     =P2^2;
sbit LCM_CSB    =P2^3;
sbit LCM_CSA    =P2^4;
sbit LCM_RST    =P2^5;
sbit LCM_LED    =P2^6;
sbit ADD0       =P3^0;//信号传送标志
sbit ADD1       =P3^1;
sbit ADD2       =P3^2;
sbit FPGA       =P3^3;//信号板返回信号
sbit SHUZI      =P3^4;
sbit MONI       =P3^5;
sbit LOCK       =P3^6;
sbit IE7        =P3^7;//剩余端口

/////////////////////////////////////////////////////////////////////////////////
//////////////////////////////寄存器定义////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
sfr16 ADC0  =  0xbe;//ADC0数据
sfr16 DAC0  =  0xd2;//DAC0数据
sfr16 DAC1  =  0xd5;//DAC1数据

////////////////////////////////////////////////////////////////////////////////
//////////////////////////////标志///////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
uchar xdata menu_value=0;//菜单项数
uchar xdata flag_adjust=0;//在菜单内还是外
uchar xdata menu_grade=1;//菜单级数标志
uchar xdata main_value=1;//主菜单项
uchar xdata sub_value=1;//子菜单项
uchar xdata en_vfd=1;//液晶显示标志:1:显示;0:关闭

uchar xdata flag_store=1;//保存标志
uchar xdata flag_affirm=0;//确认键选择
uchar xdata en_ds=0;//实时时钟开启标志:0为未开启,1为已开启

uchar xdata flag_freq=0;//频率改变位选择
uchar xdata flag_rf=1;//自动电平控制方式:1:内环控制;2:远程控制;0:关闭
//uchar xdata flag_vol=2;//控制电压改变位选择
uchar xdata flag_volume=0;//左右声道改变位选择:0:在菜单项外;1或2:调整左声道音量;3或4:调整右声道音量
uchar xdata flag_symbol=0;//音量正负标志:0为正,1为副;0bit为左声道,1bit为右声道
uchar xdata flag_mode=0;//音频方式标志:0:在菜单项外;1:调整音频输入;2:调整音频声道
uchar xdata flag_modu=0;//调制设置标志:0:在菜单项外;1或2:调整调制度;3:调整预加重;4:调整导频幅度
uchar xdata flag_syn=0;//同步设置标志:0:在菜单外;1-6:音频延时调整;7:导频延时调整;8:同步模式调整
uchar xdata flag_time=0;//日期时间调整改变位选择:0:在菜单项外;1.2.3:调整日期;4:调整星期;5.6.7:调整时间
uchar xdata flag_ser=0;//远控设置标志:0:在菜单项外;1:调整设备号;2:调整波特率
uchar xdata flag_backup=0;//备份标志:0:备份禁止;1:备份主机;2:备份从机

////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////参数/////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////数组//////////////////////////
uchar xdata buf[10];//接收数据存储数组
ulong xdata para[17]={0};//参数保存数组

///////////////////////按键值//////////////////////
uchar xdata keytemp=0;

/////////////////////射频设置/////////////////////
uint xdata freq_carry=800;//载波频率
int xdata power_set=0;//设置功率
ulong xdata power_out=0;//输出功率
//输出功率表
//float xdata power[16]={0,50.59,86.13,925,1754,2091,2263,2373,2523,2658,2891,3060,3187,3283,3318,3350};
ulong xdata power[36]={0,50,97,130,195,205,391,669,1050,1550,2200,2950,3800,4840,5920,7110,8320,9620,10900,13900,14650,15200,15700,17500,18600,19800,20700,21500,23500,25100,26400,27800,28500,29100,29500,30700};
ulong xdata power_out_1=0;//输出功率保存
int xdata ctr_vol=140;//控制电压
ulong xdata voltemp;//控制电压数字值(DAC0的输出值)
ulong xdata vol_in=0;//入射电压
//入射电压表
//float xdata voltage[16]={0,25,415,970,1408,1557,1630,1675,1735,1787,1875,1936,1988,2021,2037,2045};
ulong xdata voltage[36]={0,1,10,17,39,42,96,161,235,316,403,491,578,673,762,849,933,1016,1089,1258,1294,1322,1345,1430,1482,1536,1571,1602,1689,1756,1807,1864,1891,1914,1925,1958};
uchar xdata en_power=2;//输出禁止


//////////////////////////音频设置//////////////////////
uchar xdata laudio_signal =100;//左通道电平
uchar xdata raudio_signal =100;//右通道电平
ulong xdata laudio_signal_1;//左声道电平保存
ulong xdata raudio_signal_1;//右声道电平保存
//左声道系数表
ulong xdata lsignal[21]={0x45B000,0x3E1BEB,0x375AD1,0x3155C1,0x2BF847,0x27302B,0x22ED2E,0x1F20D6,0x1BBE3B,0x18B9DF,0x160981,
                               0x13A3FF,0x118135,0x0F99E1,0x0DE78C,0x0C6473,0x0B0B73,0x09D7F8,0x08C5EC,0x07D1AE,0x06F800};
//右声道系数表
ulong xdata rsignal[21]={0x457E00,0x3DEF5B,0x373319,0x31325B,0x2BD8BB,0x27140D,0x22D41F,0x1F0A80,0x1BAA54,0x18A821,0x15F9B1,
                               0x1395E7,0x1174A5,0x0F8EAF,0x0DDD92,0x0C5B8F,0x0B0386,0x09D0E7,0x08BFA1,0x07CC12,0x06F300};

ulong xdata lweight=0x6f800;//左声道系数
ulong xdata rweight=0x6f300;//右声道系数
uchar xdata tunnel_choice=0;//音频输入:0:模拟;1:数字;其他:内部测试信号
uchar xdata mode_operate=1;//工作模式:0:单声道;1:立体声
uchar xdata en_audio=0;//静音设置标志(0关静音,1开静音)

////////////////////////////调制设置/////////////////////
ulong xdata cont_fm=0x058ABC;//调制度传送参数
uchar xdata fm_centi=100;//调制度显示参数
ulong xdata pilot_vol=0x0a6aff;//导频频偏传送参数
uchar xdata pilot_range=10;//导频频偏显示参数
uchar xdata time_choice = 0;//预加重时间:0:不加重;2:50us;3:75us.

///////////////////////////同步设置///////////////////////
ulong xdata delay_audio = 0;//音频延时
uint xdata delay_19k = 0;//导频延时传送参数
uint xdata delay_pilot=0;//导频延时显示参数
uchar xdata freq_clk=1;//频标:0:外部;1:内部

//////////////////////////系统维护//////////////////////////
uchar xdata hour=0;//时间设置:小时
uchar xdata minute=0;//时间设置:分
uchar xdata second=0;//时间设置:秒
uchar xdata week=1;//星期设置
uint xdata year=07;//日期设置:年
uchar xdata month=1;//日期设置:月
uchar xdata day=1;//日期设置:日
uchar xdata num=1;//设备号
uchar xdata baudrate=3;//波特率
uchar xdata control_choice=1;//控制方式:0:键盘允许,远控禁止;1:键盘和远控均可
int xdata vol_out=0;//反射电压
uchar xdata ratio=0;//驻波比
int xdata vol_tem=0;//温度电压
char xdata temper=0;//温度
int xdata temperature[11]={0,25,35,40,45,50,55,60,65,70,71};//温度表
int xdata voltage_temper[11]={0,248,335,378,423,465,510,555,600,655,668};//温度电压表

//////////////////////////////传送参数////////////////////////////
uchar xdata msb = 0x00;//传送数据高位
uchar xdata lsb = 0x00;//传送数据低位
uchar xdata isb = 0x00;//传送数据中间八位
uint xdata ml_data=0x00;//传送高低位合并后的数据
ulong xdata mil_data=0;//传送二四位合并后的数据
uint xdata delay_quo=0x00;//音频延时商
uint xdata delay_res=0x00;//音频延时余数
uint xdata freq_msb=0x1851;//载波频率高16位
uint xdata freq_lsb=0xeb85;//载波频率低16位

uint xdata count_TF2=0;//定时器2中断计数

/////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////函数声明/////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////单片机控制部分/////////////////////////////////////
void c8051_initial(void);//单片机初始化
void control_initial(void);//初始化控制字
void exint0(void);//单片机外部中断服务程序
void interrupt_UART(void);//UART中断服务程序
void interrupt_T2(void);//定时器2中断服务程序
void sre(void);//串口接收数据块
void str_right(void);//串口传送成功
void store_para(void);//保存参数
void para_default(void);//恢复默认值
void para_stored(void);//调用保存参数
//void FlashWrite(ulong xdata *,ulong *,uchar);//FLASH写数据
//void FlashRead(ulong code *,ulong *,uchar);//FLASH读数据
void FlashWrite(ulong *,uchar);//FLASH写数据
void FlashRead(ulong *,uchar);//FLASH读数据

/////////////////////////////////显示模块部分///////////////////////////////////////
void vfd_com(uchar *,char);//串口发送命令
void clear_screen(void);//清屏
void screen_off(void);//液晶显示关

void lcd_face(void);//显示初始化界面
void main_menu1(void);//主菜单第一屏
void main_menu2(void);//主菜单第二屏
void sub_menu1_1(void);//射频设置子菜单第一屏
void sub_menu1_2(void);//射频设置子菜单第二屏
void sub_menu2_1(void);//音频设置子菜单第一屏
void sub_menu2_2(void);//音频设置子菜单第二屏
void sub_menu3(void);//调制设置子菜单
void sub_menu4_1(void);//同步设置子菜单第一屏
void sub_menu4_2(void);//同步设置子菜单第二屏
void sub_menu5_1(void);//系统维护子菜单第一屏
void sub_menu5_2(void);//系统维护子菜单第二屏
void sub_menu12(void);//输出功率设置子菜单
void sub_menu13_1(void);//自动电平控制子菜单第一屏
void sub_menu13_2(void);//自动电平控制子菜单第二屏
void sub_menu15(void);//外环电压设置子菜单
void sub_menu21(void);//音量设置子菜单
void sub_menu51_1(void);//状态检测子菜单第一屏
void sub_menu51_2(void);//状态检测子菜单第二屏
void sub_menu52(void);//日期、时间设置子菜单
void sub_menu53(void);//参数存储子菜单
void sub_menu54(void);//远程控制子菜单
void sub_menu55(void);//备份设置子菜单
void sub_menu51_51(void);//功率放大器子菜单

void display_freq(uint);//载波频率显示
void display_setpower(int);//设置功率显示
void display_power(ulong);//输出功率显示
void display_vol(uint);//控制电压显示
void display_lsignal(uchar);//左声道电平显示
void display_rsignal(uchar);//右声道电平显示
void display_audioin(void);//音频输入显示
void display_mode(void);//音频声道显示
void display_pre(void);//预加重显示
void display_fm(uchar);//调制度显示
void display_pilot(uchar);//导频频偏显示
void display_delay(ulong);//音频延时显示
void display_19k(uint);//导频延时显示
void display_syn(void);//同步模式显示
void display_date(uchar,uchar,uchar);//日期显示
void display_week(uchar);//星期显示
void display_time(uchar,uchar,uchar);//时间显示
void display_num(uchar);//设备号显示
void display_baud();//波特率显示
void display_in(uint);//入射电压显示
void display_out(uint);//反射电压显示
void display_ratio(uchar);//驻波比显示
void display_temper(char);//温度显示

////////////////////////////////按键控制部分///////////////////////////////////////
void turn_up(void);//向上按键
void turn_down(void);//向下按键
void turn_left(void);//向左按键
void turn_right(void);//向右按键
void turn_affirm(void);//确定键
void turn_cancle(void);//取消键
void key_judge(void);//按键是否弹起判断

///////////////////////////////运算部分///////////////////////////////////////////
void delay_div(ulong);//延时时间换算
void delay19k_div(uint);//导频延时换算
void freq_div(uint);//载波频率换算
void fm_trans(uchar);//调制度换算
void dispart(uint);//数据高低位分离
void dispart24(ulong);//24位数据分离
void unite(uchar,uchar);//数据高低位合并
void unite24(uchar,uchar,uchar);//24位数据合并
void sent(uchar,uchar,uchar,uchar);//传送数据

//////////////////////////////实时时钟模块////////////////////////////////////////
void reset_3w(void);//实时时钟复位函数
void wbyte_3w(uchar);//字节写入函数
uchar rbyte_3w(void);//字节读取函数
void clkwritebyte(uchar,uchar);//时钟字节写入函数
void disp_clk_regs(void);//显示时钟寄存器内容函数
void initial_DS1302(uchar,uchar,uchar,uchar,uchar,uchar,uchar);//DS1302初始化函数

///////////////////////////////其他//////////////////////////////////////////////
void delay(uint);//延时


/////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////显示模块命令数组//////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
////////////////////1.模块基本命令//////////////////////
///////////////////////////////////////////////////////
//指示VFD显示开启
uchar code vfd_on[]="VFD,ON";//sizeof(vfd_on)=6
//指示VFD显示关闭
uchar code vfd_off[]="VFD,OFF";//sizeof(vfd_off)=7
//清除整个VFD屏幕显示区
uchar code clear_all[]="SCREEN,0";//sizeof(clear_all)=8
//屏幕刷新命令,使得新的屏幕显示操作生效
uchar code update_screen[]="SCREEN,100";//sizeof(update_screen)=10

///////////////////////////////////////////////////////
////////////////2.模块显示内容////////////////////////
/////////////////////////////////////////////////////
//初始化界面:调频发射机数字激励器,北京北广电子集团 初始化中,请稍候
uchar code face_1[]="HZS,5,2,7,调频发射机数字激励器";
uchar code face_2[]="HZS,24,16,7,北京北广电子集团";
uchar code face_3[]="HZS,15,22,7,初始化中,";
uchar code face_4[]="HZS,15,84,7,请稍候";
///////////////////////////主菜单///////////////////////////////
//射频设置
uchar code main_1[]="HZS,0,14,7,射频设置";
//音频设置
uchar code main_2[]="HZS,14,14,7,音频设置";
//调制设置
uchar code main_3[]="HZS,28,14,7,调制设置";
//同步设置
uchar code main_4[]="HZS,0,14,7,同步设置";
//系统维护
uchar code main_5[]="HZS,14,14,7,系统维护";
//恢复默认值
uchar code main_6[]="HZS,28,14,7,恢复默认值";
////////////////////////////一级子菜单////////////////////////////
//////////射频设置子菜单/////////////////
//中心频率设置
uchar code sub1_11[]="HZS,0,14,7,中心频率设置";
//输出功率设置
uchar code sub1_12[]="HZS,14,14,7,输出功率设置";
//自动电平控制
uchar code sub1_13[]="HZS,28,14,7,自动电平控制";
//射频开关控制
uchar code sub1_14[]="HZS,0,14,7,射频开关控制";
//外环电压设置
uchar code sub1_15[]="HZS,14,14,135,外环电压设置";
//////////音频设置子菜单/////////////////
//音量设置
uchar code sub1_21[]="HZS,0,14,7,音量设置";
//音频输入设置
uchar code sub1_22[]="HZS,14,14,7,音频输入";
//音频声道设置
uchar code sub1_23[]="HZS,28,14,7,音频声道";
//静音设置

⌨️ 快捷键说明

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