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

📄 lcd_disp.c

📁 AVR单片机Mega8与LCD的串行通信显示
💻 C
字号:

//本模块用于对LCD的显示进行控制
//其中lcd_disp_data()函数可将1000倍转角数据在LCD上以角度显示



#define PORT_DISP PORTB           //PORT_DISP为LED控制端口,1为CLK,2为DIN


//LCD显示驱动
void lcd_disp(char a[8])
{
	int i,j,data;

	for(i=0;i<8;i++)
	{
		for(j=0;j<8;j++)
		{
			data = (a[i] & (1<<j))>>j;    //提取欲显示段数据
                                            
			PORT_DISP |= (data<<1);       //DIN数据准备
			PORT_DISP |= (1<<0);          //CLK上跳
			PORT_DISP &= ~(1<<0);         //CLK下跳
			PORT_DISP &= ~(1<<1);         //DIN复位
		}

	}
}


//出错显示,显示“Error”
void lcd_disp_error(void)
{
	char a[8] = {0x00,0x9E,0x0A,0x0A,0x3A,0x0A,0x00,0x00};

	lcd_disp(a);
}


//将0-9转换为LCD段码
char convert(int input)
{
	char result = 0x40;

	if(input==0)
	result = 0xFC;

	if(input==1)
	result = 0x60;

	if(input==2)
	result = 0xDA;
	
	if(input==3)
	result = 0xF2;
	
	if(input==4)
	result = 0x66;
	
	if(input==5)
	result = 0xB6;
	
	if(input==6)
	result = 0xBE;
	
	if(input==7)
	result = 0xE0;
	
	if(input==8)
	result = 0xFE;
	
	if(input==9)
	result = 0xF6;

	return result;

}


//将六位整数显示于LCD
void lcd_disp_data(int data)
{
	char a[8];

	if(data>360000||data<-360000)
	goto OVER;

	if(data>0)       //判断符号
	a[0] = 0x40;
	else
	{
		a[0] = 0x00;
		data = 0 - data;
	}

	a[1] = convert((data/100000)%10);
	a[2] = convert((data/10000)%10);
	a[3] = convert((data/1000)%10) + 0x01;   //小数点
	a[4] = convert((data/100)%10);
	a[5] = convert((data/10)%10);
	a[6] = convert(data%10);

	a[7] = 0x63;                     //“度”符号

	lcd_disp(a);

OVER:lcd_disp_error();
}

⌨️ 快捷键说明

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