📄 lcd_dot.asm
字号:
#include <reg51.h>
#include <string.h>
#define CW_ADD ((unsigned char volatile xdata *)(0x9000))// 指令口写地址
#define CR_ADD ((unsigned char volatile xdata *)(0x9200))// 指令口读地址
#define DW_ADD ((unsigned char volatile xdata *)(0x9100))// 数据口写地址
#define DR_ADD ((unsigned char volatile xdata *)(0x9300))// 数据口读地址
sbit ACC_7=ACC^7;
char COM;//指令寄存器
char DAT;//数据寄存器
//void show_volt(unsigned char volt);
//void show_freq(unsigned long int freq);
void show_line1(char* ,int );
void show_line2(char* ,int );
void lcd_init(void);
void display_line1(char ch,char i);
void display_line2(char ch,char i);
void WRITE_COMMAND(void);
void WRITE_DATA(void);
//char READ_DATA(void);
//char READ_AC_BF(void);
void show_line1(char number[],int ADD)
{
int i,ADDr=0;
int num;
num=strlen(number);
for(i=0;i<num;i++)
{
ADDr=ADD+i;
display_line1(number[i],ADDr);
}
}
void show_line2(char number[],int ADD)
{
int i,ADDr=0;
int num;
num=strlen(number);
for(i=0;i<num;i++)
{
ADDr=ADD+i;
display_line2(number[i],ADDr);
}
}
/*void show_freq(unsigned long int dt)
{
char s[6];
char i;
unsigned long int buf=dt*100;
buf=buf/256;
buf*=100;
buf=buf/256;
buf*=100;
buf=buf/128;
buf*=10;
dt=buf;
s[0]=buf%10;
buf=buf/10;
s[1]=buf%10;
buf=buf/10;
s[2]=buf%10;
buf=buf/10;
s[3]=buf%10;
buf=buf/10;
s[4]=buf%10;
buf=buf/10;
s[5]=buf%10;
for(i=0;i<6;i++)
{
s[i]=48+s[i];
}
if(dt<10000)
{
s[5]=s[3];
s[4]=s[2];
s[3]=s[1];
s[2]=s[0];
s[1]=' ';
s[0]=' ';
for(i=0;i<6;i++)
{
display_line1(s[5-i],7+i);
}
}
else if(dt<100000)
{
s[0]='k';
s[5]=s[4];
s[4]=s[3];
s[3]='.';
for(i=0;i<6;i++)
{
display_line1(s[5-i],7+i);
}
}
else
{
s[0]='k';
s[1]=s[2];
s[2]='.';
for(i=0;i<6;i++)
{
display_line1(s[5-i],7+i);
}
}
}
*/
/*
void show_volt(unsigned char volt)
{
char s[4];
char i;
unsigned short int buf=volt*51;
buf/=255;
s[0]='V';
s[1]=buf%10;
s[1]=48+s[1];
buf=buf/10;
s[2]=buf%10;
s[2]=48+s[2];
s[3]=s[2];
s[2]='.';
for(i=0;i<4;i++)
{
display_line2(s[3-i],12+i);
}
}
*/
void lcd_init(void)
{
//设置工作方式指令
COM=0x3C;
WRITE_COMMAND();
//清屏指令
COM=0x01;
WRITE_COMMAND();
//复位指令
COM=0x02;
WRITE_COMMAND();
//设置输入方式指令
COM=0x06;
WRITE_COMMAND();
//设置画面移动方式指令
COM=0x14;
WRITE_COMMAND();
//设置显示方式指令
COM=0x0C;
WRITE_COMMAND();
//设置第一行地址
COM=0x80;
WRITE_COMMAND();
}
///////////////////LCD显示第一行///////////////////
void display_line1(char ch,char i)
{
COM=0x80; //设置第一行地址
COM+=i;
WRITE_COMMAND();
DAT=ch; //传送数值
WRITE_DATA();
}
///////////////////LCD显示第二行///////////////////
void display_line2(char ch,char i)
{
COM=i+0xC0; //设置第二行地址
WRITE_COMMAND();
DAT=ch; //传送数值
WRITE_DATA();
}
//写指令代码子程序
void WRITE_COMMAND(void)
{
unsigned char i=0;
do
i=*CR_ADD; //判BF=0? 是继续
while(ACC_7);
*CW_ADD=COM; //写指令代码
}
//写显示数据子程序
void WRITE_DATA(void)
{
unsigned char i=0;
do
i=*CR_ADD; //判BF=0? 是继续
while(ACC_7) ;
*DW_ADD=DAT; //写数据
}
/*
//读BF和AC值
char READ_AC_BF()
{
char ch=*CR_ADD; //存入ch 单元
return ch;
}
//读显示数据子程序
char READ_DATA(void)
{
char ch;
unsigned char i=0;
do
i=*CR_ADD; //判BF=0? 是继续
while(ACC_7) ;
ch=*DR_ADD; //写指令代码
return ch;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -