单片机控制LCD1602显示英文句子
生活随笔
收集整理的這篇文章主要介紹了
单片机控制LCD1602显示英文句子
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
LCD1602簡介:
-
1602字符型液晶也叫1602液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶模塊。字符型液晶,能夠同時顯示16x02即32個字符。
-
它由若干個5X7或者5X11等點(diǎn)陣字符位組成,每個點(diǎn)陣字符位都可以顯示一個字符,每位之間有一個點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。
--------------------------
仿真圖像:
C語言程序:
/*----------------------------------------------- 內(nèi)容:通過標(biāo)準(zhǔn)程序靜態(tài)顯示字符 引腳定義如下: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延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0~255 這里使用晶振12M,精確延時請使用匯編,大致延時 長度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0~255 這里使用晶振12M,精確延時請使用匯編 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--){//大致延時1mSDelayUs2x(245);DelayUs2x(245);} } /*------------------------------------------------ 判忙函數(shù) ------------------------------------------------*/ bit LCD_Check_Busy(void) { DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET;return (bit)(DataPort & 0x80); } /*------------------------------------------------ 寫入命令函數(shù) ------------------------------------------------*/ void LCD_Write_Com(unsigned char com) { // while(LCD_Check_Busy()); //忙則等待DelayMs(5);RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; } /*------------------------------------------------ 寫入數(shù)據(jù)函數(shù) ------------------------------------------------*/ void LCD_Write_Data(unsigned char Data) { //while(LCD_Check_Busy()); //忙則等待DelayMs(5);RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_();EN_CLR; }/*------------------------------------------------ 清屏函數(shù) ------------------------------------------------*/ void LCD_Clear(void) { LCD_Write_Com(0x01); DelayMs(5); } /*------------------------------------------------ 寫入字符串函數(shù) ------------------------------------------------*/ 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 ++; } } /*------------------------------------------------ 寫入字符函數(shù) ------------------------------------------------*/ 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); } /*------------------------------------------------ 初始化函數(shù) ------------------------------------------------*/ void LCD_Init(void) {LCD_Write_Com(0x38); /*顯示模式設(shè)置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*顯示關(guān)閉*/ LCD_Write_Com(0x01); /*顯示清屏*/ LCD_Write_Com(0x06); /*顯示光標(biāo)移動設(shè)置*/ DelayMs(5); LCD_Write_Com(0x0C); /*顯示開及光標(biāo)設(shè)置*/ }/*------------------------------------------------ 主函數(shù)[上面已經(jīng)把顯示功能封裝好了,今后再寫其他顯示就直接調(diào)用] ------------------------------------------------*/ void main(void) { LCD_Init(); LCD_Clear();//清屏while (1) { LCD_Write_Char(7,0,'o');//單引號在C語言中表示取字符的ASCII碼,這一行代碼也可以寫為: LCD_Write_Char(7,0,0x6F);LCD_Write_Char(8,0,'k');LCD_Write_String(1,1,"I LOVE YOU!");//雙引號在C語言中表示取字符串的ASCII碼while(1);} }PROTEUS仿真工程文件、HEX文件和C語言程序文件:
所有相關(guān)文件
總結(jié)
以上是生活随笔為你收集整理的单片机控制LCD1602显示英文句子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Netscreen + Squid (T
- 下一篇: 老毛桃重启计算机没反应,遇到电脑无法启动