2025-11-08 06:12:40
要显示汉字得先搞明白LCD1602的显示原理。这玩意儿本身只能显示16个ASCII字符,每个字符占8个点阵位。要显示汉字得自己造字库,比如用GB2312编码的16×16点阵字库。程序得先初始化LCD,把汉字数据存在ROM里,再按行循环把每个汉字的8个字节(每行8点)分别传给LCD的RAM区。显示的时候得注意换行,比如第一行显示前8个字节,第二行显示后8个字节。
为啥得这么做呢?因为LCD1602的RAM区只有64个字节,刚好存两个8×8的ASCII字符或者半个16×16的汉字。假设用16×16的汉字,每个汉字占32字节,那两个汉字就要64字节,正好占满RAM。不过实际开发中常用8×16的简体字,这样每个字占16字节,两个字32字节,剩下的RAM还能存其他字符。比如查表时,假设汉字编码是20000H,程序得先算出20000H对应的ROM地址,再按行把16个字节(每行8点)拆开传给LCD。数据手册里写明,LCD的D0-D7引脚每传输8个位就换一次行,所以必须分两次写完一个汉字。如果一次传16位,LCD会报错,显示乱码。比如显示"中"字,程序得先查到"中"的16×16点阵数据,拆成两段分别写进LCD的行地址0和行地址1。这样分页显示才能正常工作,否则会像打字机一样跳着显示。
本题链接: