久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18157|回復: 31
打印 上一主題 下一主題
收起左側

LCD12864(KS0108)驅動程序 顯示漢字-字符

  [復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

  1. #include <reg52.h>
  2. #include<intrins.h>
  3. #include<string.h>
  4. #include "hanzi.h"  //漢字庫頭文件
  5. #include "shuzi.h"  //字符庫頭文件
  6. #define uchar unsigned char
  7. #define uint unsigned int

  8. //   lcd12864(ks0108)
  9. #define LCD_DATA P2  //LCD8位并行數據口   
  10. sbit LCD_RS=P0^5;          //寄存器選擇
  11. sbit LCD_RW=P0^6;          //讀/寫選擇
  12. sbit LCD_EN=P0^7;          //讀寫使能
  13. sbit LCD_CS1=P0^2;          //右半屏選擇,1有效
  14. sbit LCD_CS2=P0^3;          //左半屏選擇,1有效
  15. sbit LCD_RST=P0^4;          //復位信號
  16. //*********************************************//
  17. // 函數聲明
  18. void init_lcd(void);
  19. void lcd_delay(uint time);            //延時
  20. void lcd_write_com(uchar cmdcode);    //寫命令
  21. void lcd_write_data(uchar Rsspdata);  //寫數據
  22. void lcd_Clr_Scr(void);               //清屏
  23. void lcd_werite_x_y(uchar x,uchar y); //寫地址
  24. void lcd_write_chinese(uchar x,uchar y, uchar hz,uchar *dat); //任意位置顯示任意漢字
  25. void lcd_write_english(uchar x,uchar y, uchar en,uchar *dat); //任意位置顯示任意字符
  26. //****************************************************************************//
  27. //---------------------------------------
  28. //    主函數
  29. //---------------------------------------
  30. void main(void)
  31. {
  32.           init_lcd();     //初始化
  33.           lcd_Clr_Scr();  //清屏
  34.         while(1)
  35.         {
  36.                 lcd_write_english(0,0,0,SHUZI);
  37.                 lcd_write_english(0,8,1,SHUZI);
  38.                 lcd_write_english(0,16,2,SHUZI);
  39.                 lcd_write_english(0,24,3,SHUZI);
  40.                 lcd_write_english(0,32,4,SHUZI);
  41.                 lcd_write_english(0,40,5,SHUZI);
  42.                 lcd_write_english(0,48,6,SHUZI);
  43.                 lcd_write_english(0,56,7,SHUZI);
  44.                 lcd_write_english(0,64,8,SHUZI);
  45.                 lcd_write_english(0,72,9,SHUZI);
  46.                
  47.                 lcd_write_chinese(2,0,0,HANZI);
  48.                 lcd_write_chinese(2,16,1,HANZI);
  49.                 lcd_write_chinese(4,0,2,HANZI);
  50.                 lcd_write_chinese(4,16,3,HANZI);
  51.                 lcd_write_chinese(4,32,4,HANZI);
  52.                 lcd_write_chinese(4,48,5,HANZI);
  53.                 lcd_write_chinese(4,64,6,HANZI);
  54.                 lcd_write_chinese(4,80,7,HANZI);
  55.                 lcd_write_chinese(4,96,8,HANZI);
  56.                 while(1);
  57.         }
  58. }
  59. //---------------------------------------
  60. //   延時函數
  61. //---------------------------------------
  62. void lcd_delay(uint time)
  63. {
  64.           uint i;
  65.           for(i=0;i<time;i++);
  66. }
  67. //---------------------------------------
  68. //   12864初始化函數
  69. //---------------------------------------
  70. void init_lcd(void)
  71. {           
  72.           LCD_RST=0;              //液晶復位
  73.           lcd_delay(250);         //適當延時
  74.           LCD_RST=1;              //復位結束
  75.           LCD_CS1=1;                         //左半屏選通
  76.           LCD_CS2=1;                             //右半屏選通        
  77.           lcd_delay(250);         //適當延時
  78.           lcd_write_com(0x3f);    //顯示開
  79. }
  80. //---------------------------------------
  81. //   寫命令函數
  82. //---------------------------------------
  83. void lcd_write_com(uchar cmdcode)
  84. {                                          
  85.           LCD_RS=0;                        //選擇命令寄存器
  86.           LCD_RW=0;                         //寫選通
  87.           LCD_DATA=cmdcode;   //將命令寫入總線
  88.           _nop_();            //空操作,做短暫的延時
  89.           LCD_EN=1;           //E的下降沿,數據寫入
  90.           _nop_();            //空操作,做短暫的延時
  91.           LCD_EN=0;           //E的下降沿,數據寫入
  92. }
  93. //---------------------------------------
  94. //   寫數據函數
  95. //---------------------------------------
  96. void lcd_write_data(uchar Rsspdata)
  97. {

  98.           LCD_RS=1;                        //選擇數據寄存器
  99.           LCD_RW=0;                         //寫選通
  100.           LCD_DATA=Rsspdata;  //將數據寫入總線
  101.           _nop_();            //空操作,做短暫的延時
  102.           LCD_EN=1;           //E的下降沿,數據寫入
  103.           _nop_();            //空操作,做短暫的延時
  104.           LCD_EN=0;           //E的下降沿,數據寫入
  105. }
  106. //---------------------------------------
  107. //   清屏函數
  108. //---------------------------------------
  109. void lcd_Clr_Scr(void)
  110. {
  111.           uchar j,k;
  112.           LCD_CS1=1;                                           //左半屏選通
  113.           LCD_CS2=1;                                           //右半屏選通
  114.           lcd_write_com(0x40+0);        //將列地址寫入  
  115.           for(k=0;k<8;k++)
  116.           {
  117.                     lcd_write_com(0xb8+k);    //將行地址寫入        
  118.                     for(j=0;j<64;j++)               //每行的64列都寫0,因為選了左右兩屏,
  119.                     {
  120.                               lcd_write_data(0x00); //64列同時寫0
  121.                     }
  122.           }
  123. }
  124. //---------------------------------------
  125. //    地址寫入函數
  126. //---------------------------------------
  127. void lcd_werite_x_y(uchar x,uchar y)
  128. {
  129.           y=y&0x7f;                                 //限定范圍,列不能超過128
  130.           x=x&0x07;                             //限定范圍,行不能超過8
  131.           if(y<64)                    //如果列小于64
  132.           {
  133.                     LCD_CS1=1;                  //選通左半屏
  134.                     LCD_CS2=0;                  //關閉右半屏
  135.                     lcd_write_com(0x40+y);  //將列地址寫入  
  136.           }
  137.           else
  138.           {
  139.                     LCD_CS1=0;                  //關閉左半屏
  140.                     LCD_CS2=1;                  //選通右半屏
  141.                     y&=0x3f;
  142.                     lcd_write_com(0x40+y);  //將列地址寫入         
  143.           }
  144.           lcd_write_com(0xb8+x);      //將行地址寫入        
  145. }
  146. //---------------------------------------
  147. //     指定位置寫16*16漢字函數
  148. //---------------------------------------
  149. void lcd_write_chinese(uchar x,uchar y, uchar hz,uchar *dat)
  150. {
  151.           uchar i=0;        
  152.           lcd_werite_x_y(x,y);             //設定起始地址
  153.           for(i=0;i<16;i++)
  154.           lcd_write_data(dat[hz*32+i]);    //先寫上半個字,共16個字節
  155.           lcd_werite_x_y(x+1,y);           //設定起始地址,此次將行地址加1,以便寫下行
  156.           for(i=0;i<16;i++)
  157.           lcd_write_data(dat[hz*32+16+i]); //再寫下半個字,共16個字節
  158. }        
  159. //---------------------------------------
  160. //     指定位置寫8*16字符函數
  161. //---------------------------------------
  162. void lcd_write_english(uchar x,uchar y, uchar en,uchar *dat)
  163. {
  164.     uchar i=0;        
  165.           lcd_werite_x_y(x,y);            //設定起始地址
  166.           for(i=0;i<8;i++)
  167.           lcd_write_data(dat[en*16+i]);   //先寫上半個字,共8個字節
  168.           lcd_werite_x_y(x+1,y);          //設定起始地址,此次將行地址加1,以便寫下行
  169.           for(i=0;i<8;i++)
  170.           lcd_write_data(dat[en*16+8+i]); //再寫下半個字,共8個字節
  171. }
復制代碼

全部資料51hei下載地址:
LCD12864顯示漢字-字符程序.zip (114.98 KB, 下載次數: 558)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:228939 發表于 2018-1-23 12:38 | 只看該作者
學習學習
回復

使用道具 舉報

板凳
ID:62743 發表于 2018-4-26 17:10 | 只看該作者
牛人,好好拜讀了
回復

使用道具 舉報

地板
ID:326163 發表于 2018-5-9 22:10 來自手機 | 只看該作者
我的怎么不能用?
回復

使用道具 舉報

5#
ID:53978 發表于 2018-5-10 09:54 | 只看該作者
慢慢學習
回復

使用道具 舉報

6#
ID:27031 發表于 2018-6-1 19:00 | 只看該作者
謝謝分享好的資源~
回復

使用道具 舉報

7#
ID:75806 發表于 2018-6-21 22:46 | 只看該作者
正需要這個程序,學習一下
回復

使用道具 舉報

8#
ID:142383 發表于 2018-8-1 08:26 | 只看該作者
正在弄這個不帶字庫的屏,先學習學習樓主的程序。
回復

使用道具 舉報

9#
ID:387860 發表于 2018-8-25 14:39 | 只看該作者
下了,顯示不了啊
回復

使用道具 舉報

10#
ID:243394 發表于 2018-8-26 11:51 | 只看該作者
謝謝分享好的資源~
回復

使用道具 舉報

11#
ID:399899 發表于 2018-10-13 21:08 | 只看該作者
這個的確不多,中文字庫,很方便
回復

使用道具 舉報

12#
ID:414506 發表于 2018-10-24 10:57 | 只看該作者
本人是新手,剛在學習此部分;太感謝了
這個的確不多,中文字庫,很方便;
回復

使用道具 舉報

13#
ID:414506 發表于 2018-10-24 11:49 | 只看該作者
學習學習啊~~~謝謝
回復

使用道具 舉報

14#
ID:58583 發表于 2018-12-6 07:44 | 只看該作者
感謝樓主 收藏啦
回復

使用道具 舉報

15#
ID:440725 發表于 2018-12-6 10:44 | 只看該作者
bucuo.
回復

使用道具 舉報

16#
ID:21069 發表于 2018-12-6 11:21 | 只看該作者
yekai_yh 發表于 2018-8-25 14:39
下了,顯示不了啊

從代碼上看,應該字庫的代碼與數字的數組沒放進去,版主將放入的位置與顯示函數都做好了,你只要用字模軟件取好字碼放到一個數組里面,運行時將你定義好的數組放入顯示函數中就OK了
回復

使用道具 舉報

17#
ID:130157 發表于 2019-2-23 11:04 | 只看該作者
丑啊 發表于 2018-5-9 22:10
我的怎么不能用?

我也用不了
回復

使用道具 舉報

18#
ID:130157 發表于 2019-2-23 11:07 | 只看該作者
jinsheng7533967 發表于 2018-12-6 11:21
從代碼上看,應該字庫的代碼與數字的數組沒放進去,版主將放入的位置與顯示函數都做好了,你只要用字模軟 ...

已經都有了
回復

使用道具 舉報

19#
ID:437013 發表于 2019-5-27 22:19 | 只看該作者
正好需要   學習學習
回復

使用道具 舉報

20#
ID:236699 發表于 2019-5-28 08:57 | 只看該作者
謝謝,找時間好好學習一下。
回復

使用道具 舉報

21#
ID:521117 發表于 2019-10-5 21:34 | 只看該作者
最近在網上淘了塊3.8寸的屏,查了下是ks0108。抄襲下,感謝。
回復

使用道具 舉報

22#
ID:584814 發表于 2019-10-11 15:32 | 只看該作者
mobicity 發表于 2019-10-5 21:34
最近在網上淘了塊3.8寸的屏,查了下是ks0108。抄襲下,感謝。

請問是否抄襲成功 ?
回復

使用道具 舉報

23#
ID:519089 發表于 2019-10-19 10:23 | 只看該作者
仿真在哪里?
回復

使用道具 舉報

24#
ID:198286 發表于 2019-10-19 17:14 | 只看該作者
新手先看代碼學習
回復

使用道具 舉報

25#
ID:47191 發表于 2019-12-14 21:40 | 只看該作者
新手過來學習下。謝謝分享!
回復

使用道具 舉報

26#
ID:693135 發表于 2020-2-26 09:13 | 只看該作者
用不了
回復

使用道具 舉報

27#
ID:108573 發表于 2020-2-26 10:12 | 只看該作者
工業上這種屏用的還挺多,學習一下
回復

使用道具 舉報

28#
ID:299519 發表于 2020-2-26 11:20 | 只看該作者

下下來,自己畫。
回復

使用道具 舉報

29#
ID:709111 發表于 2020-3-22 14:49 | 只看該作者
dalao
學習了
回復

使用道具 舉報

30#
ID:687830 發表于 2020-4-28 12:38 | 只看該作者
請問排阻接在db0-db7還是接在RSRWECS1CS2,,,,
回復

使用道具 舉報

31#
ID:600695 發表于 2021-5-16 20:15 | 只看該作者
可以點亮顯示,但是移動字的位置的時候,比如一個字剛好在左右屏中間的時候字會斷開半個顯示到行首,不知道怎么解決
回復

使用道具 舉報

32#
ID:599561 發表于 2022-9-5 21:23 | 只看該作者
不錯,謝謝分享,萬分感謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲一区二区三区 | 黄色片视频| 亚洲成人精品免费 | 亚洲在线高清 | 国产精品高潮呻吟久久 | av中文字幕在线 | 欧美亚洲国语精品一区二区 | 99re视频这里只有精品 | 亚洲成人免费网址 | 国产一区二区三区久久久久久久久 | 亚洲www| 久久高清免费视频 | 亚洲a网 | 国产一区二区三区免费 | 国产a级毛毛片 | 中文二区 | 久久久久久国产精品 | 91一区二区 | 欧美一区二区三区电影 | 一区二区三区在线免费观看 | 欧美日一区 | 国产精品久久欧美久久一区 | 国产一区二区精品在线观看 | 国产高清免费视频 | 91精品在线播放 | 国产精品久久国产精品 | 精品九九九| www国产成人免费观看视频,深夜成人网 | 亚洲日本欧美 | 久久久亚洲成人 | 日韩欧美在线一区 | 黄色免费在线网址 | 精品欧美一区二区精品久久久 | 色偷偷888欧美精品久久久 | 欧美日韩高清 | 91色综合 | 色播久久久 | 一级大片 | 日韩在线欧美 | 国产精品久久久久久妇女6080 | 欧美电影在线观看网站 |