📄 test_lcd.c
字号:
#include <reg52.h>
#include <math.h>
#include <stdio.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define lcd_com XBYTE[0xefff] //lcd的指令地址 1110 1111 1111 1111 P2_4接C/E,P2_6接C/D
#define lcd_data XBYTE[0xafff] //lcd的数据地址 1010 1111 1111 1111
/*****************************/
uchar Disp_Buff[16]; //显示缓冲区
/*****************************/
void Check(void)
{
uchar sta_1;
do
{
sta_1=lcd_com;
sta_1=sta_1&0x03;
}
while(sta_1!=0x03);
}
/***************字符显示程序*******************/
/*整体刷以便显示缓冲区,将要显示数字的位用空格填充,
用其他符号填充也可。
入口为字符串首地址 */
void Chars_dis(uchar *s)
{
uchar w;
for(w=0;w<16;w++)
Disp_Buff[w]=s[w];
}
/************************************************************************/
/************向数据口发数据*****************/
void Out_data(uchar dat)
{
Check();
lcd_data=dat;
}
/***********写一个命令**********************/
void Out_com(uchar com)
{
Check();
lcd_com=com;
}
/*************写一个参数及命令**************/
void Out_data_com(uchar dat1,uchar com1)
{
Out_data(dat1);
Out_com(com1);
}
/************写两个参数及命令***************/
void Out_data2_com(uchar dat1,uchar dat2,uchar com1)
{
Out_data(dat1);
Out_data(dat2);
Out_com(com1);
}
/**************点阵初始化程序*******************/
void Init_Dian(void)
{
Out_data2_com(0x00,0x00,0x40);
Out_data2_com(0x10,0x00,0x41);
Out_data2_com(0x00,0x04,0x42);
Out_data2_com(0x10,0x00,0x43);
Out_com(0xa7);
Out_com(0x80);
Out_com(0x9c);
}
/*************清RAM区*********************/
void Clear_Dian(uchar a) //0:清除文本区;1:清除图形区
{
uint l,i;
if(a==0)
{
Out_data2_com(0x00,0x00,0x24);
i=129;
}
if(a==1)
{
Out_data2_com(0x00,0x04,0x24);
i=1025;
}
Out_com(0xb0);
for(l=i;l>0;l--)
{
Out_data(0x00);
}
Out_com(0xb2);
}
/******************************************************/
/**************** 显示一行英文字符*******************/
void Dis_line(uchar Line_num) //显示内容为Disp_Buff内所存内容
{
uchar l;
Out_data2_com(Line_num*16,0x00,0x24);
Out_com(0xb0);
for(l=0;l<16;l++)
{
Out_data(Disp_Buff[l]-0x20);
}
Out_com(0xb2);
}
void main(void)
{
uint m;
uchar q;
//Init_Int();
// Init_Serial();
Init_Dian();
Clear_Dian(0);
Clear_Dian(1);
Init_Dian();
Clear_Dian(0);
Clear_Dian(1);
Chars_dis("2005/03/29 By KP");
Dis_line(7);
Chars_dis("Wuhan University");
Dis_line(0);
Chars_dis(" NEW 8051&FPGA ");
Dis_line(1);
Chars_dis("System EVM Board");
Dis_line(2);
Chars_dis(" Test Program ");
Dis_line(3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -