1602显示工字
2017-03-01 09:31
204 查看
/*----------------------------------------------- ??:LCD1602 ??:www.doflye.net ??:shifang ??:2009.5 ??:? ??:???????????? ??????:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK ------------------------------------------------*/ #include<reg52.h> //?????,?????????,??????????????? #include<intrins.h> sbit RS = P2^4; //???? sbit RW = P2^5; sbit EN = P2^6; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P0 /*------------------------------------------------ uS????,?????? unsigned char t,???? unsigned char ??????????,?????? 0~255 ??????12M,?????????,???? ???? T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS????,?????? unsigned char t,???? unsigned char ??????????,?????? 0~255 ??????12M,????????? ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //????1mS DelayUs2x(245); DelayUs2x(245); } } /*------------------------------------------------ ???? ------------------------------------------------*/ bit LCD_Check_Busy(void) { DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort & 0x80); } /*------------------------------------------------ ?????? ------------------------------------------------*/ void LCD_Write_Com(unsigned char com) { // while(LCD_Check_Busy()); //???? DelayMs(5); RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; } /*------------------------------------------------ ?????? ------------------------------------------------*/ void LCD_Write_Data(unsigned char Data) { //while(LCD_Check_Busy()); //???? DelayMs(5); RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; } /*------------------------------------------------ ???? ------------------------------------------------*/ void LCD_Clear(void) { LCD_Write_Com(0x01); DelayMs(5); } /*------------------------------------------------ ??????? ------------------------------------------------*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0) { LCD_Write_Com(0x80 + x); //????? } else { LCD_Write_Com(0xC0 + x); // } while (*s) { LCD_Write_Data( *s); s ++; } } /*------------------------------------------------ ?????? ------------------------------------------------*/ void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0) { LCD_Write_Com(0x80 + x); } else { LCD_Write_Com(0xC0 + x); } LCD_Write_Data( Data); } /*------------------------------------------------ ????? ------------------------------------------------*/ void LCD_Init(void) { LCD_Write_Com(0x38); /*??????*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*????*/ LCD_Write_Com(0x01); /*????*/ LCD_Write_Com(0x06); /*????????*/ DelayMs(5); LCD_Write_Com(0x0C); /*????????*/ } /*------------------------------------------------*/ void gongzi() { LCD_Write_Com(0x40); LCD_Write_Data(0x1f); LCD_Write_Com(0x41); LCD_Write_Data(0x1f); LCD_Write_Com(0x42); LCD_Write_Data(0x04); LCD_Write_Com(0x43); LCD_Write_Data(0x04); LCD_Write_Com(0x44); LCD_Write_Data(0x04); LCD_Write_Com(0x45); LCD_Write_Data(0x1f); LCD_Write_Com(0x46); LCD_Write_Data(0x1f); LCD_Write_Com(0x47); LCD_Write_Data(0x00); } void renzi() { LCD_Write_Com(0x48); LCD_Write_Data(0x18); LCD_Write_Com(0x49); LCD_Write_Data(0x18); LCD_Write_Com(0x4a); LCD_Write_Data(0x18); LCD_Write_Com(0x4b); LCD_Write_Data(0x3c); LCD_Write_Com(0x4c); LCD_Write_Data(0x66); LCD_Write_Com(0x4d); LCD_Write_Data(0x3c); LCD_Write_Com(0x4e); LCD_Write_Data(0x00); LCD_Write_Com(0x4f); LCD_Write_Data(0x00); } void main(void) { LCD_Init(); LCD_Clear();// gongzi(); renzi(); while (1) { LCD_Write_Com(0x80); LCD_Write_Data(0x00); LCD_Write_Com(0x81); LCD_Write_Data(0x01); // LCD_Write_String(1,0,"0x32"); // LCD_Write_String(1,1,"Archer"); //LCD_Write_String(1,1,"www.doflye.net"); //while(1); } }
相关文章推荐
- 温度可调上下限,1602显示
- 1602液晶显示
- 24Mhz下,c805f020+1602显示程序
- 单片机-1602液晶基本显示程序
- 1602显示中文
- 51单片机解码GPS 1602显示
- 1602液晶静态显示
- 1602显示时钟可以调节时分秒(加减)
- 利用指针使1602显示
- 1602液晶显示
- 1602液晶移动显示
- 1602静态显示一个数字--汇编语言版本
- 51单片机配合超声波测距以及用1602液晶进行显示
- 1602LED显示
- verilog的1602动态显示
- 1602液晶显示实验报告
- 1602LED显示(2)
- 51单片机-1602液晶显示的时钟代码
- 1602液晶显示程序(C语言详细解说)
- 51单片机 1602液晶显示