无聊弄个1602显示汉字的程序玩玩。本程序是在51单片机上实现的,能够实现汉字。汉字是自己写的库是用软件取码如果有需要,大家自己可以根据需要制成想要实现效果的文字。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include"stc15f2k60s2.h"
- #define uchar unsigned char
- #define uint unsigned int
- ///////数据端口接 P0
- sbit lcdrs=P2^7;//端口定义
- sbit lcdrw=P2^6;//端口定义
- sbit lcden=P2^5;//端口定义
- uchar num;
- uchar code table[]={
- 0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//一 0x00
- 0x00,0x04,0x1f,0x15,0x15,0x1f,0x04,0x04,//中 0x01
- 0x1F,0x04,0x04,0x06,0x05,0x04,0x04,0x04,//下 0x02
- 0x1F,0x04,0x1F,0x15,0x1F,0x15,0x1F,0x15,//雨 0x03
- 0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,//"叶1653"左上半部分代码 0x04
- 0x04,0x04,0x04,0x04,0x04,0x04,0x1f,0x04,//"叶"右上半部分代码 0x05
- 0x12,0x12,0x12,0x1e,0x00,0x00,0x00,0x00,//"叶"左下半部分代码 0x06
- 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,//"叶"右下半部分代码 0x07
-
- //
-
-
- };
- uchar code table1[]={0x00,0x01,0x10,0x10,0x04,0x05,0x10,0x10,0x00,0x01,0x02,0x03,};//自定义字符数据地址
- uchar code table2[]={0x02,0x03,0x10,0x10,0x06,0x07,};
- /******************************
- ms延时函数
- ******************************/
- void delay(uchar z)///延时函数
- {
- uint x,y;
- for(x=z;x>0;x--)
-
- for(y=122;y>0;y--);
- }
- /******************************
- lcd1602写命令函数
- ******************************/
- void write_cmd(uchar cmd)
- {
- P0=cmd; //写了命令
- lcdrs=0;
-
- lcdrw=0; //选择指令寄存器
-
- lcden=1;
- delay(5);
-
- lcden=0; //使能拉低
-
- lcden=1;
- }
- /******************************
- lcd1602写数据函数
- ******************************/
- void write_date(uchar date)
- {
-
- lcdrs=1;
- lcdrw=0; //选择数据寄存器
- lcden=1;
- P0=date; //写了命令
-
- delay(5);
-
- lcden=0; //使能拉低
-
- lcden=1;
- }
- /******************************
- lcd1602初始化
- ******************************/
- void init_lcd1602()
- {
-
- write_cmd(0x01); //清屏
-
- write_cmd(0x38); //功能设置
- write_cmd(0x0c); //显示设置
- write_cmd(0x06); //输入方式从左到右
- delay(1);
- }
- /******************************
- 主函数
- ******************************/
- void main()
- {
-
- uchar i;
- init_lcd1602();//1602显示初始化
- delay(1);
- while(1)
- {
- write_cmd(0x40); //开始写入你要显示的自定义字符、汉字代码
- for(i=0;i<64;i++)
- {
- write_date(table[i]);
- delay(5);
- }
- write_cmd(0x80); //从第一行第一列开始显示
- for(i=0;i<12;i++) //显示自定义字符
- {
- write_date(table1[i]);
- delay(5);
- }
- write_cmd(0xc0); //显示第二行
- for(i=0;i<6;i++)
- {
- write_date(table2[i]);
- delay(5);
- }
- }
- }
复制代码
所有资料51hei提供下载:
LCD1602显示中文(汉字).zip
(23.12 KB, 下载次数: 137)
|