1602显示汉字

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
……
…… …… } 之后利用命令: OUTI(0X40); for (i=0;i<64;i++) { OUTD(neu[i]);} 将这个数组中的数据赋值到 1602 内部 CGRAM 中。完成后,再设置数据在 1602 上的 显示地址,根据图 1 的结构,设置好位置,如在第一行第一个字符和第二个字符以及第二行 第一个字符和第二个字符处显示: Command_out (0x80+0x00); for (i=0;i<4;i++)
OUTI()是写入指令的函数, OUTD()是写入数据的函数。 首先,根据需要现实的汉字定义好显示画面。如下:
表格中的每个点对应着 1602 上的每一像素,1602 有 2 行,这样就可以显示汉字了。每 个汉字需要有这样的 4 个单元拼凑起来。如下图,
7 6 5 4 3 2 1 07 6 5 4 3 2 1 0
利用 1602 显示汉字的方法 brm00
利用 1602 显示汉字也不是新鲜的内容,今天不想颓废了。只是需要自己事先定义一下 汉字的字模,就是显示出来的汉子字体结构。
要定义字模就需要知道 1602 的 CG RAM 地址和显示字符的地址 DD RAM 图 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
第一行第一个字符的地址是( 0x80) ,后面的字符地址以此类推 第二行第一个字符的地址为 ( 0x80 + 0x40),需要在第一行的基地址后面加上一个偏移 量 0x40,后面的地址在此基址上再依次加一。
void delayቤተ መጻሕፍቲ ባይዱunsigned int time_i) { int i;
for (;tim>0;tim--) { for (i=0;i<10;i++); }
}
void command_out (char out_data) {
RW=0; RS=0; EN=1; DB=out_data; EN=0; delay(10); }
void OUTD(char out_data) {
RS=1; RW=0; EN=1; DB= out_data; EN=0; delay(10); }
这样就完了。
{ data_out (i); }
Command_out(0x80+0x40); for (i=4;i<8;i++) { data_out(i); }
command_out()的作用是设置显示的起始地址,data_out()的作用是将 hanzi[]数组中的 16 进制数据发送出去,每一个 16 进制数字对应之 5*7 点阵上的每一行内容。第 1 行第 1 个字 符需要 8 个 16 进制数据,第 1 行第 2 个字符处也需要 816 进制数据。还有第 2 行的两个字 符点阵,这样显示一个汉字需要 32 个 16 进制数据。
然后根据每个 5*7 点阵的情况写出他们的显示内容数据。 如:
左上角第一个 5*7 的显示数据为: 0x00,0x01,0x81,0x12,0x24,0x41,0x81,0x10 蓝色区域的相应位为 1 这样就可以写出全部 4 个 5*7 点阵的显示数据了,把它封装在一个数组中,如数组, hanzi[]={0x00,0x01,0x81,0x12,0x24,0x41,0x81,0x10,
相关文档
最新文档