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

📄 ks0066u.c

📁 LCD显示屏显示控制程序。LCD为ym1602c。
💻 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 + -