📄 ks0066u.c
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit E = P2^0;
sbit RW = P2^1;
sbit RS = P2^2;
sbit busy_bit=ACC^7; //ACC最高位,用来表示BF位
unsigned char r_data;
unsigned char count;
char dispch[13]={0,0,0,0,0,0,0,0,0,0,0,0,0}; //存放显示值数据
//char receive[18]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //存放实际值数据
//char calcu[9]={0,0,0,0,0,0,0,0,0}; //存放误差值数据
//延时子程序
void delay(long time)
{
unsigned char i;
long j;
for(j=time;j>0;j--)
for(i=20;i>0;i--);
}
///////////////显示部分////////////////////////
//用于输入命令
void disp_cmd(uchar i)
{
RW=1;
RS=0;
E = 1;
delay(20);
E = 0;
do{ACC=P0;}
while(busy_bit);
P0=i;
RW=0;
E = 1;
delay(20);
E = 0;
delay(20);
}
//用于显示字符内容
void disp_char(uchar i)
{
RW=1;
RS=0;
E = 1;
delay(5);
E = 0;
// do{ACC=P0;}
// while(busy_bit);
P0=i;
RW=0;
RS=1;
E = 1; // 发送信号,E下降沿触发
delay(5);
E = 0;
delay(5);
}
//初始化显示
void initial_disp(void)
{
P0=0x00;
RS=0;
RW=0;
disp_cmd(0x0c);//显示状态,无光标无闪烁
disp_cmd(0x38);//设置工作方式,两行字符,8位地址
disp_cmd(0x06);//输入方式
disp_cmd(0x01);//清屏
disp_cmd(0x02);//归零
}
//显示方位角,仰角,一本振频率,AGC控制码
void dispchar(char ch[13])
{
disp_cmd(0x80); //行地址1
disp_char(0x30+ch[12]); //方位角显示值
disp_char(0x30+ch[11]);
disp_char(0x30+ch[10]);
disp_char(0x2e);
disp_char(0x30+ch[9]);
disp_char(0x3a);
disp_char(0x30+ch[8]); //仰角显示值
disp_char(0x30+ch[7]);
disp_char(0x2e);
disp_char(0x30+ch[6]);
disp_char(0x20);
disp_char(0x46);
disp_char(0x30+ch[5]); //一本振频率显示值
disp_char(0x30+ch[4]);
disp_char(0x30+ch[3]);
disp_char(0x30+ch[2]);
disp_cmd(0xca); //AGC地址
disp_char(0x47); //AGC显示值
disp_char(0x30+ch[1]);
disp_char(0x30+ch[0]);
}
//显示状态信息
void dispstat(unsigned char stat)
{
disp_cmd(0xc0); //行地址2
if(stat==0) //本机状态,控制器未选通
{
disp_char(0x49);
disp_char(0x4e);
disp_char(0x49);
disp_char(0x20);
disp_char(0x21);
disp_char(0x20);
disp_char(0x44);
disp_char(0x69);
disp_char(0x73);
}
else if(stat==1) //遥控状态,控制器选通
{
disp_char(0x49);
disp_char(0x4e);
disp_char(0x49);
}
else if(stat==2) //初始状态,手动状态
{
disp_char(0x47);
disp_char(0x4e);
disp_char(0x44);
disp_char(0x20);
disp_char(0x2d);
disp_char(0x20);
disp_char(0x54);
disp_char(0x52);
disp_char(0x4b);
}
if(stat==3) //跟踪状态
{
disp_char(0x54);
disp_char(0x52);
disp_char(0x4b);
disp_char(0x20);
disp_char(0x2d);
disp_char(0x20);
disp_char(0x47);
disp_char(0x4e);
disp_char(0x44);
}
}
void main(void)
{
unsigned char i;
E=1;
delay(20);
E=0;
initial_disp(); //初始化屏幕
dispchar(dispch);
dispstat(0);
while (1)
{
disp_cmd(0x01);
dispstat(1);
dispchar(dispch);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -