?本文為博主 日月同輝,與我共生,csdn原創首發。希望看完后能對你有所幫助,不足之處請指正!一起交流學習,共同進步!
> 發布人:@日月同輝,與我共生_單片機-CSDN博客
> 歡迎你為獨創博主日月同輝,與我共生點贊???+關注👍+收藏🌹+評論?。
系列專欄:?CSDN-單片機串口通信學習系列🎁
> 我的格言是:“盡最大努力,做最好的自己!💪
要轉載,請提前告知!!!
版權聲明:本文為CSDN博主「日月同輝,與我共生」的原創文章,CSDN獨一份。
目錄
一、理論知識
1.1CGRAM字符庫
1.2CGRAM命令
1.3CGRAM設置
二、軟件設計
2.1方法1
2.2方法2
三、結果展示
一、理論知識
1.1CGRAM字符庫
在CGROM字符庫中,有8個CGRAM地址,CGRAM地址用于自定義字符庫中沒有的字符。自定義字符會保留到CGROM字符庫中,若要顯示該字符,需要調用CGROM地址(0x00-0x07)。
1.2CGRAM命令
DB7 DB6?DB5 DB4?DB3 DB2?DB1 DB0
?0? ? ? ?1? ? ?A5? ?A4? ? A3? ? A2? ?A1? ? A0
1.3CGRAM設置
LCD1602是5*8點陣液晶顯示屏,即LCD1602顯示屏的一個位置由5*8個點陣(如右圖)組成。
左圖第7、6位分別為0、1(參考1.2命令)
CGRAM有8個地址,第3-5位用于選擇CGROM地址(0x00-0x07)
第0-2位用于選擇點陣第幾行
二、軟件設計
軟件設計思路:1.自定義字符==>2.顯示字符->在哪顯示+顯示哪個字符
數組str存儲的數據與下圖有關。
2.1方法1
void LCD_Write_CGRAM(unsigned char *str)
{unsigned char i;LCDWriteCmd(0x48);//1.自定義字符for(i=0;i<8;i++){LCDWritedata(str[i]);}LCDWriteCmd(0x80|0x00);//2.顯示字符->在哪顯示+顯示哪個字符LCDWritedata(0x01);
}
2.2方法2
unsigned char x,unsigned char y:顯示位置
unsigned char pos:自定義的第幾個字符
unsigned char *str:指向數組str
void LCDSetChar(unsigned char x,unsigned char y,unsigned char pos,unsigned char *str)
{unsigned char i;for(i=0;i<8;i++) //1.自定義字符{LCDWriteCmd(0x40+8*pos+i);LCDWritedata(*(str+i));}LCDSetPosition(x,y);//2.顯示位置LCDWritedata(0x00+pos);//3.調用自定義字符
}
三、結果展示
本次設計,自定義了2個字符,分別是“一”、“℃”。
親愛的讀者敬請期待,下一文更精彩!!!
一日不讀書,胸臆無佳想。我叫不白吃,喜歡我的,可以支持我,博主名叫@日月同輝,與我共生
@日月同輝,與我共生_單片機基礎,單片機串口通信-CSDN博客@日月同輝,與我共生擅長單片機基礎,單片機串口通信,等方面的知識,@日月同輝,與我共生關注stm32,c語言,51單片機,proteus,單片機領域.https://blog.csdn.net/LIN___IT?spm=1000.2115.3001.5343