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

📄 2002四位程序.txt

📁 用C语言编写的HD44780液晶显示器驱动底层源程序
💻 TXT
字号:
//595控制函数void FP_OutputByte_595(int LCDData){	int  ix ;	BYTE Mask ;	BYTE Data ;	FD_TSB_set_Tsb4(0);                //set data to '0'	FD_TSB_set_Tsb3(0);                //set clk to '0'	FD_TSB_set_Tsb2(0);				 //set latch to '0'	/*********************************************************     **************74HC595实例程序****************************	*********************************************************/	/***********************************************************/	/*** GPIO_9 DATA LINE,GPIO_2 CLK LINE,GPIO_3 STROBE LINE ***/	/***********************************************************/	/*************************************************************    *************tsb_4 data,  tsb_3 clk,   tab_2 latch**********	*************************************************************/        FD_TSB_set_Tsb2(1);                //set latch to '1'		Data = LCDData;	   	Mask = 0x80 ;   		for (ix=0; ix<8; ix++) 		{ 		                      			if (Data & Mask)				FD_TSB_set_Tsb4(1);    //set data  to '1'			   			else				FD_TSB_set_Tsb4(0);   //set data to '0'		   			Mask = Mask >> 1 ;					// look at next bit   			FD_TSB_set_Tsb3(0);    //set clk to '0'     			FD_TSB_set_Tsb3(1);   //srt clk to '1'				}	FD_TSB_set_Tsb3(0);     //set clk to '0'	FD_TSB_set_Tsb2(0);     //set latch to '0'    //Delay();	FD_TSB_set_Tsb2(1);     //set latch to '1'		}void use_LCD(){ init_3();//延时初始化子函数 Imim();/*初始化*/ p=Hanzi;/*指针指向数组的首地址*/ p1=Hanzi1; Hanz();/*写第一行汉字程序*/ Hanz1();/*写第二行汉字程序*/}/********初始化3遍子函数********/void init_3(){  unsigned char i;  i=0;   delay1(15);  for(i=0;i<3;i++){    FD_TSB_set_Tsbstart(0);                          //set enable to '0'  FP_OutputByte_595(0x00);//写控制线  FD_TSB_set_Tsbstart(1);                          //set enable to '1'  FP_OutputByte_595(0x03);//初始化LCD,向LCD中送三次0x30  FD_TSB_set_Tsbstart(0);                          //set enable to '0'    FD_TSB_set_Tsbstart(1);                          //set enable to '1' // FP_OutputByte_595(0x00);//初始化LCD,向LCD中送三次0x30 // FD_TSB_set_Tsbstart(0);                          //set enable to '0' // FD_TSB_set_Tsbstart(1);                          //set enable to '1'  delay1(10);} /* FP_OutputByte_595(0x00);    //写控制线  FP_OutputByte_595(0x03);  FD_TSB_set_Tsbstart(1);                          //set enable to '1'  FD_TSB_set_Tsbstart(0);                          //set enable to '0'  delay1(1);  FP_OutputByte_595(0x00);    //写控制线  FP_OutputByte_595(0x03);  FD_TSB_set_Tsbstart(1);                          //set enable to '1'  FD_TSB_set_Tsbstart(0);                          //set enable to '0'  delay1(10);*/}/****写指令子程序,不对LCD状态进行判断,直接写入指令****************************************************/void WCOM(uchar d)  //写指令程序,其中高四位是控制命令,第四位是写入指令(d){unsigned char min;FD_TSB_set_Tsbstart(0);                            //set enable to '0' FP_OutputByte_595(0x00);//写控制线FD_TSB_set_Tsbstart(1);                            //set enable to '1' min=0x0f;//设定LCD读写方式,写入指令min=min&d;FP_OutputByte_595(min);FD_TSB_set_Tsbstart(1);                          //set enable to '1'   //FD_GPIO_Write (Handle_FP_GPIO7, 0xffff) ;		 // SET enable to '1'//Delay();FD_TSB_set_Tsbstart(0);                            //set enable to '0' //FD_GPIO_Write (Handle_FP_GPIO7, 0x0000) ;        //set enable to '0' //R_W=0; //D_I=0;/*设定LCD读写方式,写数据指令*/ //P1=d;/*将数据送入p1口*/ //E=1;/*使能信号开*/ //E=0;/*使能信号关*/}/********************送数据子程序********************/void Dat_LCD(uchar d){ unsigned char min=0x00; //min=0x1f;//设定LCD读写方式,写入数据 FD_TSB_set_Tsbstart(0);                              //set enable to'0'  FP_OutputByte_595(0x10); FD_TSB_set_Tsbstart(1);                              //set enable to'1'   min=0x10|d; FP_OutputByte_595(min); FD_TSB_set_Tsbstart(1);                              //set enable to'1'  //FD_GPIO_Write (Handle_FP_GPIO7, 0xffff) ;		 // SET enable to '1' Delay(); FD_TSB_set_Tsbstart(0);                            //set enable to '0'     //FD_GPIO_Write (Handle_FP_GPIO7, 0x0000) ;        //set enable to '0' //D_I=1;/*送数据指令*/ //R_W=0; //P1=d; //E=1;/*使能信号开*/ //E=0;/*使能信号关*/}/*********************************************************************送数据子程序:把8位的字符点阵字库数据转换为4位数据用来传送数据***************************************************************************************/void Dat(uchar datt){  unsigned char LCD_min; unsigned char LCD_R; LCD_min=datt; LCD_min=LCD_min&0xf0; for(LCD_R=0;LCD_R<4;LCD_R++) 	{      LCD_min=LCD_min>>1;//把min中数据右移4位 	} Dat_LCD(LCD_min);//送数据的高四位 Delay(); 	 LCD_min=datt; LCD_min=LCD_min&0x0f; Dat_LCD(LCD_min);//送数据的低四位 delay1(10);} /********************初始化子程序********************/void Imim(){ //FD_TSB_set_Tsbstart(1); 							//set enable to '1' //FD_TSB_set_Tsbstart(0);                             //set enable to '0' //FD_GPIO_Write (Handle_FP_GPIO7, 0x0000) ;		 //set enable to '0' //Delay(); WCOM(0x02); delay1(10); WCOM(0x02);//设定工作方式0x28 WCOM(0x0c); delay1(10); WCOM(0x00); WCOM(0x08); delay1(10);  WCOM(0x00);//清屏0x01 WCOM(0x01); delay1(10);  WCOM(0x00);//设定输入方式0x06 WCOM(0x06); delay1(10); WCOM(0x00);//设定显示方式0x0f WCOM(0x0f); delay1(10);}/**********清屏子函数*************/void Clearlcd(){unsigned char i; WCOM(0x00);/*清除显示*/ WCOM(0x01); //FD_TSB_set_Tsbstart(1);                          //set enable to '1' //FD_TSB_set_Tsbstart(0);                          //set enable to '0' delay1(10); /*for(i=0;i<3;i++) 	{     FD_TSB_set_Tsbstart(0);   //set to LCD backlight     Delay();     Delay();	 FD_TSB_set_Tsbstart(1);   //clr to LCD backlight	 Delay();	 Delay(); 	}*/}/********************写第一行汉字主程序********************/void Hanz(){ unsigned char i; unsigned char wbyte; WCOM(0x08);/*第一行首地址设定*/ WCOM(0x00); for(i=0;i<lcd_j;i++,p++) {  wbyte=*p;  Dat(wbyte);/*将汉字数组数据送入*/ }}/********************写第二行汉字主程序********************/void Hanz1(){  unsigned char i;  unsigned char wbyte;  WCOM(0x0c);/*第二行首地址设定*/  WCOM(0x01);  for(i=0;i<lcd_j1;i++,p1++) {  wbyte=*p1;  Dat(wbyte);/*将汉字数组数据送入*/ }}	/*********************************************************************************************光标右移输入方式调试程序*********************************************************************************************************/void Cursor_right_Scroll(){unsigned char LCD_i;char CRS[]={	//LCD字符点阵光标右移显示字库   0x43,0x75,0x72,0x73,0x6f,0x72,0x20,  //cursor   0x52,0x69,0x67,0x68,0x74,0x20,       //right   0x53,0x63,0x72,0x6f,0x6c,0x6c,       //scroll     }; //WCOM(0x00);//输入方式设置0x06// WCOM(0x06);// delay1(10); WCOM(0x08);//设置DDRAM地址0x80 WCOM(0x00); delay1(10); for(LCD_i=0;LCD_i<19;LCD_i++) 	{ 	Dat(CRS[LCD_i]);//CRS字符点阵字库数组19个数据 	}}/********************************************************************************************画面滚动输入方式调试程序**************************************************************************************************************/void Right_Scroll(){  unsigned char LCD_i;  char RS[]={    //LCD字符点阵滚动右移显示字库12个数据   0x52,0x69,0x67,0x68,0x74,0x20,   // right   0x53,0x63,0x72,0x6f,0x6c,0x6c,	// scroll   };  //WCOM(0x00);//输入方式设置0x05  //WCOM(0x05);  delay1(10);  WCOM(0x08);//设置DDRAM地址0x80  WCOM(0x00);  delay1(10);  for(LCD_i=0;LCD_i<12;LCD_i++)  	{  	Dat(RS[LCD_i]);//RS字符点阵字库数组12个数据  	}}/*************************************************************************************************画面逐字输入方式程序****************************************************************************************************/void Cursor_Write(){  unsigned char LCD_i;  char CW[]={       0x43,0x75,0x72,0x73,0x6f,0x72,0x20, //cursor	   0x57,0x72,0x69,0x74,0x65,           //write            };  WCOM(0x00);//输入方式设置0x06;  WCOM(0x06);  delay1(10);  WCOM(0x08);//设置DDRAM地址0x80  WCOM(0x00);  delay1(10);  for(LCD_i=0;LCD_i<12;LCD_i++)  	{  	Dat(CW[LCD_i]);//CW字符点阵字库数组12个数据  	}}

⌨️ 快捷键说明

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