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

📄 lcd.c

📁 基于Keil uVision2平台的C51控制温度老化试验箱的源代码。 1、温度传感器采集温度 2、传感器信号传入 ADC电路 3、经AT89C52单片机的处理分析输出控制 4、通过继电器控制
💻 C
字号:
/*//////////////////////////////////*/
/*									*/
/*		Pressure_Control			*/   
/*		Version_1.1					*/
/*      AHTL_2007_5             	*/
/*									*/
/*		 							*/
/*		LCD.C 						*/
/*									*/		
/*//////////////////////////////////*/

#include <reg52.H>
#include <lcd.h>
//
//		 2 X 16 LCD display port and BCD port each bit function
//
//					                   LCD PORT	    BCD PORT
//
//	   P17 P16 P15 P14 P13 P12 P11 P10 ___ NC	    SEL1
//	    |	|   |	|   |	|   |_________ NC	    SEL2
//	    |	|   |	|   |	|_____________ RS	    NC
//	    |	|   |	|   |_________________ Enable1  NC
//	    |	|   |	|_____________________ D4	    D4
//	    |	|   |_________________________ D5	    D5
//	    |	|_____________________________ D6	    D6
//	    |_________________________________ D7	    D7
//
//

void delay50us();
void set_display(char);
void write_char (char);
/*-------------------------------------------------------------------------*/
void _init_display()
{	
	set_display(0x2c); //4 bit mode ,2 row ,5 X 10 size
	set_display(0x0f);
	set_display(0x06);
	_delay500us(120);
}
/*-------------------------------------------------------------------------*/
void set_display(char v)
{	
	unsigned char junk;
	junk=v;
	junk &=0xf0;
	junk |=0x0b;
	DispPort=junk;
	junk &=0xf3;
	DispPort=junk;
	junk=(v<<4);
	junk &=0xf0;
	junk |=0x0b;
	DispPort=junk;
	junk &=0xf3;
	DispPort=junk;
	delay50us();
	delay50us();
}
/*-------------------------------------------------------------------------*/
void _cursor_sw(char v)
{
	if(v)
		set_display(0x0f);   //cursor is on and blinking 
	else
		set_display(0x0c);	  //cursor is off and not blinking 
}
/*-------------------------------------------------------------------------*/

void _cursor_pos(char r, char c)
{
	if(r)
		c += 0x40;
	set_display(c | 0x80);
}
/*-------------------------------------------------------------------------*/

void _clear_display (void)
{	
	set_display(0x01);
	_delay500us(120);
}
/*-------------------------------------------------------------------------*/

void _disp_msge (char r, char c, char *msge)
{
    unsigned char i=0;
    switch (r) 
	{
	    case 1 :
		c += 0x40;
	    case 0 :
		set_display(c | 0x80);
		while (msge[i] != 0)
		    write_char(msge[i++]);
    }
}
/*-------------------------------------------------------------------------*/

void write_char (char temp)
{
	char junk;
	junk=temp;
	junk &=0xf0;
	junk |=0x0f;
	DispPort=junk;
	junk &=0xf7;
	DispPort=junk;
	junk=(temp<<4);
	junk &=0xf0;
	junk |=0x0f;
	DispPort=junk;
	junk &=0xf7;
	DispPort=junk;
	delay50us();
	delay50us();
}
/*-------------------------------------------------------------------------
void _display_bit4 (char r,char c,char v)
{
    _cursor_pos (r,c);
    write_char((char)('0'+(v%10)));
    _cursor_pos (r,c);
}
/*-------------------------------------------------------------------------*/
void _display_bit8 (char r,char c,char v)
{
    _cursor_pos (r,c);
    write_char((char)('0'+(v/10)));
    write_char((char)('0'+(v%10)));
	_cursor_pos (r,c);
}
/*-------------------------------------------------------------------------
void _display_bit12 (char r,char c,unsigned int v)
{
    _cursor_pos (r,c);
    write_char('0'+(v/100));
    v %= 100;
    write_char((char)('0'+((char)v/10)));
    write_char((char)('0'+((char)v%10)));
	_cursor_pos (r,c);
}
/*-------------------------------------------------------------------------
void _display_bit16 (char r,char c,unsigned int v)
{
    _cursor_pos (r,c);
    write_char('0'+(v/1000));
    v %= 1000;
    write_char('0'+(v/100));
    v %= 100;
    write_char((char)('0'+((char)v/10)));
    write_char((char)('0'+((char)v%10)));
	_cursor_pos (r,c);
}
/*-------------------------------------------------------------------------*/
unsigned char _hex2tobcd (char v)
{
    char retu;
    retu = (v/10)*16+v%10;
    return retu;
}
/*-------------------------------------------------------------------------
unsigned int _hex4tobcd (unsigned int v_temp)
{
    unsigned int retu;
	unsigned int v;
	v=v_temp;
    retu = (v/1000)<<12;
    v %= 1000;
    retu = retu + ((v/100)<<8);
    v %= 100;
    retu = retu + ((v/10)*16)+(v%10);
    return retu;
}
/*-------------------------------------------------------------------------
unsigned int _hex3tobcd (unsigned int v_temp)
{
    unsigned int retu;
	unsigned int v;
	v=v_temp;
    retu =(v/100)<<8;
    v %= 100;
    retu = retu + ((v/10)*16)+(v%10);
    return retu;
}
/*-------------------------------------------------------------------------*/
void delay50us()
{
	unsigned char temp;
	temp=20;
	while(temp)
		temp--;
}
/*-------------------------------------------------------------------------*/
void _delay500us(char t)
{
    unsigned int i;
    while(t)
		{
		i=124;
		while(i)
			i--;
		t--;
    	}
}
/*-------------------------------------------------------------------------
void delay_20ms(unsigned char i)
{
	unsigned int j;
	while(i--)
		{
		j=20000;
		while(j--);
		}
}
/*-------------------------------------------------------------------------*/

⌨️ 快捷键说明

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