無聊弄個1602顯示漢字的程序玩玩。本程序是在51單片機上實現的,能夠實現漢字。漢字是自己寫的庫是用軟件取碼如果有需要,大家自己可以根據需要制成想要實現效果的文字。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
83ec9994887dbe6fd313648490dfa22.jpg (61.04 KB, 下載次數: 91)
下載附件
2020-10-5 20:38 上傳
單片機源程序如下:
- #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)
2020-10-5 20:32 上傳
點擊文件名下載附件
51單片機 下載積分: 黑幣 -5
|