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

📄 lcd_chuan.h

📁 C8051F020串口与计算机通信的编程
💻 H
字号:
  #ifndef lcdchuan
  #define lcdchuan


sbit		CS	=	P3^6 ;	//PIN4		片选高有效		 P33
sbit		SID	=	P3^3;	//PIN5		串行输入		 P34
sbit		CLK	=	P3^2;	//PIN6		串行时钟,上升沿有效 	 P32
sbit		PSB	=	P3^1;	//PIN15		工作方式,低为串行	 P31
sbit 		RESET=	P3^0; 		//PIN17	    	复位,低有效

void InitLCD();					//初始化LCD
void OPLCD(bit RS,bit RW,short data8);		//向LCD输出指令
void OPword(short place,int word);		//输出一个字
void DispBCD(short place,int number);		//显示数字结果

 
//配置时要把相应的P口置为推挽


#include "c8051f020.h"
#define uchar unsigned char 

uchar num[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};//1-f

void InitLCD()								//初始化LCD
{
	unsigned int delay;	
	for(delay=0;delay<60000;delay++);
	OPLCD(0,0,0x30);						//8位扩展指令
	for(delay=0;delay<500;delay++);
	OPLCD(0,0,0x30);						//8位扩展指令
	for(delay=0;delay<100;delay++);
	OPLCD(0,0,0x0C);						//整体显示
	for(delay=0;delay<500;delay++);
	OPLCD(0,0,0x01);							//清屏			
	for(delay=0;delay<80;delay++);
	OPLCD(0,0,0x07);
	for(delay=0;delay<60000;delay++);
}

void OPLCD(bit RS,bit RW,short data8)		//向LCD输出指令
{
	short n;
	
	CLK=0;									//Init
	CS=1;

	for(n=0;n<5;n++)
	{										//Syn 5bit
		SID=1;
//		CLK=1;
		CLK=1;
		CLK=0;
	}
											//RW 1bit
	SID=RW;
//	CLK=1;
	CLK=1;
	CLK=0;

	SID=RS;									//RS 1bit
//	CLK=1;
	CLK=1;
	CLK=0;

	SID=0;									//0  1bit
//	CLK=1;
	CLK=1;
	CLK=0;

	for(n=7;n>3;n--)					    //DH4 8bit
	{
		SID=(data8>>n)&1;
//		CLK=1;
		CLK=1;
		CLK=0;
	}
	for(n=0;n<4;n++)
	{
		SID=0;
//		CLK=1;
		CLK=1;
		CLK=0;
	}

	for(n=3;n>-1;n--)						//DL4 8bit
	{
		SID=(data8>>n)&1;
//		CLK=1;
		CLK=1;
		CLK=0;
	}
	for(n=0;n<4;n++)
	{
		SID=0;
//		CLK=1;
		CLK=1;
		CLK=0;
	}
	CS=0;
}

/*
void OPword(short place,int word)			//输出一个字
{
//	short delay;

	OPLCD(0,0,place);					//位置
//	for(delay=0;delay<100;delay++);
	OPLCD(1,0,word>>8);					//高半字
//	for(delay=0;delay<100;delay++);
	OPLCD(1,0,word&0xFF);				//低半字
//	for(delay=0;delay<100;delay++);	
}
 */
/*
void DispBCD(short place,int number)	//显示数字结果
{
	short buffer1,buffer2,on=0;

	buffer1=(number/10000+0x30)*0x100;
	if(0x3000==buffer1) buffer1=0x2000;
	else on=1;
	buffer2=number%10000/1000+0x30; 
	if(0x30==buffer2&&0==on) buffer1=0x2020;
	else
	{
		on=1;
		buffer1+=buffer2;
	}
	OPword(place,buffer1);
	place++;

	buffer1=(number%1000/100+0x30)*0x100;
	if(0x3000==buffer1&&0==on) buffer1=0x2000;
	else on=1;
	buffer2=number%100/10+0x30; 
	if(0x30==buffer2&&0==on) buffer1=0x2020;
	else buffer1+=buffer2;
	OPword(place,buffer1);
	place++;

	buffer1=(number%10+0x30)*0x100+0x20;
	OPword(place,buffer1);
}

*/

void single(uchar addr,uchar num)
{	OPLCD(0,0,addr);
	OPLCD(1,0,num);	
}


void strings(uchar addr,uchar *str,uchar x)
{	uchar i;
	OPLCD(0,0,addr);	
	for(i=0;i<x;i++) {
	OPLCD(1,0,str[i]);	  }
}


void displaylcd(uchar hexnum)			//显示一位16进制
{	uchar hexi[2];
	hexi[1]=num[hexnum%10];
	hexi[0]=num[hexnum/10];
	strings(0x84,hexi,2);
}


#endif

	

⌨️ 快捷键说明

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