📄 2002四位程序.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 + -