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

📄 lcd.c

📁 使用C语言编写的单片机控制LCD显示程序
💻 C
字号:
#include "reg52.h"

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

extern char getbyte(void);				//从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
extern putbyte(char c);					//放入一个字节到发送缓冲区
extern putstring(uchar  *puts);			//发送一个定义在程序存储区的字符串到串口
extern putbytes(uchar *outplace,uint j);//放一串数据到发送缓冲区,需要定义发送的字节数
extern puthex(uchar c);					//发送一个字节的hex码,分成两个字节发。
extern  bit   inbufsign;				//串口接收到数据标志
#define CR putstring("\r\n")			//发送一个回车换行
extern void serial_init (void);    		//串口初始化

void delay(uint dtime)
{
	uint n;
	uint i;
	for(i=0;i<dtime;i++)
	for(n=0;n<2100;n++);
}

//清屏
void lcd_cls(void)
{
	delay(4);
	putbyte(0x1b);
	putbyte(0x32);
}
//打开/关闭模块背光 0开背光,1关背光
void Set_module_light(uchar module)
{
	while(inbufsign)getbyte();
	putbyte(0x1b);
	putbyte(0x25);
	putbyte(module);
	getbyte();getbyte();
}
// 设置光标位置(横向位置(0-19)	行位置(0-4))
void lcd_cursor(uchar x, uchar y)      
{
	while(inbufsign)getbyte();
	putbyte(0x1b);
	putbyte(0x33);
	putbyte(x);
	putbyte(y);
	getbyte();getbyte();

}

//显示字符串
void lcd_string(uchar attr,uchar *string) 
{
	delay(5);
	putbyte(0x1b);
	putbyte(0x37);
	putbyte(attr);	
	putstring(string);
	putbyte(0x00);
}
//画线
void lcd_line(uchar attr,uchar x0,uchar y0,uchar x1,uchar y1)
{
	delay(10);
	putbyte(0x1b);
	putbyte(0x39);
	putbyte(attr);
	putbyte(x0);
	putbyte(y0);
	putbyte(x1);
	putbyte(y1);	
}
//画矩形
void lcd_rect(uchar x1,uchar y1,uchar x2,uchar y2)
{	
	lcd_line(1,x1,y1,x2,y1);
	lcd_line(1,x1,y1,x1,y2);
	lcd_line(1,x2,y1,x2,y2);
	lcd_line(1,x1,y2,x2,y2);
}


//在光标处显示数0正显,1反显
void lcd_char(uchar attr,uchar num)
{
	uchar str[3];
	uchar tem;
	str[2]='\0';
	
	tem=num%10;
	num/=10;
	str[1] = tem+0x30;
	str[0] = num+0x30;

	lcd_string(attr,str); 
}
//在光标处显示1个数0正显,1反显
void lcd_char1(uchar attr ,uchar num)
	{
		uchar str[2];
		str[1]='\0';
		str[0] = num%10+0x30;
		//str[0] = num+0x30;//这一句和上一句对于本程序效果一样	
		lcd_string(attr,str); 
	}
// 画图片,*picture_data指向图片数据,图片数据的第一二个字节是图片宽度和图片高度
void lcd_picture(uchar attr,uchar x0,uchar y0,uchar *picture_data)
{
	putbyte(0x1b);
	putbyte(0x42);
	putbyte(attr);
	putbyte(x0);
	putbyte(y0);
	putbytes(picture_data,(((*picture_data)+7)/8)*(*(picture_data+1))+2);
	getbyte();getbyte();
		
}

⌨️ 快捷键说明

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