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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

無字庫12864單片機程序(縱向取模,字節倒序)帶仿真

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


單片機源程序如下:
  1. /***********************************************************************
  2.            內容:無字庫12864測試程序(縱向取模。字節倒序)
  3. ***********************************************************************/
  4. #include <reg52.h>

  5. #define uint unsigned int
  6. #define uchar unsigned char

  7. #define Disp_On 0x3f         //顯示命令
  8. #define Disp_Off 0x3e        //關閉命令
  9. #define Col_Add 0x40        //起始列地址
  10. #define Page_Add 0xb8        //起始頁地址
  11. #define Start_Line 0xc0        //起始行地址

  12. #define Lcd_Bus P0                 //MCU P0<---> LCM

  13. sbit RS  = P2^0;                 //RS=1時為數據操作,RS=0時為命令操作
  14. sbit RW  = P2^1;                 //RW=1時為讀選通,RW=0時為寫選通
  15. sbit E          = P2^2;                 //E下降沿時,數據寫入驅動器,E為高電平時,數據被讀出
  16. sbit Mcs = P2^3;                 //Master chip E,右半屏-CS2
  17. sbit Scs = P2^4;                 //Slave chip E,左半屏-CS1
  18. sbit RST = P2^5;                 //液晶模塊復位控制管腳


  19. char code ce[] =  {
  20.                                                 /*-- 文字: 測 --*/
  21.                                                 /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
  22.                                                 0x08, 0x31, 0x86, 0x60, 0x00, 0xFE, 0x02, 0xF2, 0x02, 0xFE, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00,
  23.                                                 0x04, 0xFC, 0x03, 0x00, 0x80, 0x47, 0x30, 0x0F, 0x10, 0x67, 0x00, 0x07, 0x40, 0x80, 0x7F, 0x00
  24.                               };
  25. char code shi[] = {
  26.                                                 /*-- 文字: 試 --*/
  27.                                                 /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
  28.                                                 …………限于本文篇幅 余下代碼請從51黑下載附件…………
  29.                                         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30.                                         };

  31. /*---------------------延時子程序----------------------------*/
  32. void delay(unsigned int t)
  33. {
  34.         unsigned int i, j;
  35.         for (i = 0;i < t;i++)
  36.                 for (j = 0;j < 10;j++)
  37.                 {
  38.                         ;
  39.                 }
  40. }

  41. /*--------------------讀忙碌子程序---------------------------*/
  42. void Read_busy()
  43. {
  44.         P0 = 0x00;
  45.         RS = 0;
  46.         RW = 1;
  47.         E = 1;
  48.         while(P0&0x80);
  49.         E = 0;
  50. }
  51. /*--------------------寫命令到LCD----------------------------*/
  52. void write_com(unsigned char cmdcode)
  53. {
  54.         Read_busy();                        //每次讀寫都要判斷是否忙碌
  55.         RS = 0;
  56.         RW = 0;

  57.         Lcd_Bus = cmdcode;
  58.         delay(0);
  59.         E = 1;
  60.         delay(0);
  61.         E = 0;
  62. }

  63. /*-------------------寫數據到LCD----------------------------*/

  64. void write_data(unsigned char Dispdata)
  65. {
  66.         Read_busy();                        //每次讀寫都要判斷是否忙碌
  67.         RS = 1;
  68.         RW = 0;

  69.         Lcd_Bus = Dispdata;
  70.         delay(0);
  71.         E = 1;
  72.         delay(0);
  73.         E = 0;
  74. }



  75. /*------------------顯示邊框-------------------------------*/
  76. void frame()
  77. {
  78.         unsigned char i;
  79.         Mcs = 0;                                                                                                 //兩個屏幕
  80.         Scs = 0;
  81. /*********************************************************************/       
  82.         write_com(Page_Add + 0);                                                                  //上面橫線
  83.         write_com(Col_Add + 0);
  84.         for (i = 0;i < 64;i++) write_data(0x01);
  85. /*********************************************************************/
  86.         write_com(Page_Add + 7);                                                                 //下面橫線
  87.         write_com(Col_Add + 0);
  88.         for (i = 0;i < 64;i++) write_data(0x80);
  89. /*********************************************************************/
  90.         for (i = 0;i < 8;i++)
  91.         {
  92.                 Mcs = 0;                                                                                           //右半屏
  93.                 Scs = 1;
  94.                 write_com(Page_Add + i);                                                         //共8頁
  95.                 write_com(Col_Add + 63);                                                        //最后一列
  96.                 write_data(0xff);                                                                        //ff表示每頁的8行全亮
  97.          
  98.                 Mcs = 1;                                                                                          //左半屏與右半屏類似
  99.                 Scs = 0;
  100.                 write_com(Page_Add + i);
  101.                 write_com(Col_Add + 0);
  102.                 write_data(0xff);
  103.         }
  104. }


  105. /*---------------------------清除內存--------------------------------*/
  106. void Clr_Scr()
  107. {

  108.         unsigned char j, k;
  109.         for (k=0;k<8;k++)
  110.         {
  111.                 Mcs = 1;Scs = 0;delay(10);                                                  //左半屏清屏
  112.                 write_com(Page_Add + k);
  113.                 write_com(Col_Add + 0);
  114.                 for (j = 0;j < 64;j++) write_data(0x00);

  115.                 Mcs = 0;Scs = 1; delay(10);                                                  //右半屏清屏
  116.                 write_com(Page_Add + k);
  117.                 write_com(Col_Add + 0);
  118.                 for (j = 64;j < 128;j++) write_data(0x00);
  119.         }         
  120. }


  121. /*------------------顯示12864圖片---------------------------*/
  122. void Disp_Img(unsigned char code *img)
  123. {
  124.         unsigned char j, k;
  125.         for (k = 0;k < 8;k++)                                                                          //共8頁
  126.         {
  127.                 Mcs = 1;Scs = 0;delay(10);                                                        //左半屏數據
  128.                 write_com(Page_Add + k);
  129.                 write_com(Col_Add + 0);
  130.                 for (j = 0;j < 64;j++) write_data(img[k*128 + j]);        //每半塊屏共64列
  131.           
  132.                 Mcs = 0;Scs = 1; delay(10);                                                        //右半屏數據
  133.                 write_com(Page_Add + k);
  134.                 write_com(Col_Add + 0);
  135.                 for (j = 64;j < 128;j++) write_data(img[k*128 + j]);
  136.         }
  137. }

  138. /*-------------------------顯示橫---------------------------*/
  139. void Disp_H_Line()
  140. {
  141.         unsigned char i, j;
  142.         Mcs = 0;
  143.         Scs = 0;
  144.         write_com(Disp_On);                                                                                //顯示開

  145.         write_com(Page_Add);                                                                        //頁地址
  146.         write_com(Start_Line);                                                                        //開始行
  147.         write_com(Col_Add);                                                                                //列地址

  148.         for (j = 0;j < 8;j++)                                                                        //共8頁,所以循環8次
  149.         {
  150.                 write_com(Page_Add + j);
  151.                 write_com(Col_Add + 0);                                                                //第一列開始
  152.                 write_com(Start_Line+0);                                                        //第一行開始
  153.                 for (i = 0;i < 64;i++)write_data(0x55);                                 //每半屏幕共64列
  154.         }
  155. }


  156. /*------------------------顯示列-----------------------------*/
  157. void Disp_V_Line()
  158. {
  159.         unsigned char i, j;
  160.         write_com(Disp_On);                                                                                   //顯示開
  161.         write_com(Page_Add);                                                                        //頁地址
  162.        
  163. ……………………

  164. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
LCD12864測試程序.rar (75.98 KB, 下載次數: 36)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天堂中文字幕av | 91精品久久久久久久99 | 激情在线视频 | 欧美一级片在线播放 | 欧美伊人久久久久久久久影院 | 日本精品网站 | 九九av| 99re在线视频免费观看 | 久草视频在线看 | 久久久久国产一级毛片高清网站 | 日韩av高清在线 | 永久免费视频 | 国产精品视频在线播放 | 国产亚洲一区二区三区 | 小h片免费观看久久久久 | 亚洲精品成人网 | 亚洲精品日韩综合观看成人91 | av中文字幕在线观看 | 日韩欧美在线视频观看 | 亚洲免费视频在线观看 | 观看毛片 | 午夜精品在线观看 | 国产激情偷乱视频一区二区三区 | 午夜影院黄 | 九九精品在线 | a级黄色网 | 成人欧美一区二区三区黑人孕妇 | 亚洲精品精品 | 亚洲精色 | 午夜男人天堂 | 91免费观看| 国产专区视频 | 国产精品欧美一区二区三区 | 91一区二区 | 国产亚洲www | 淫片一级国产 | 欧美激情99 | 成人三级在线播放 | 丁香婷婷久久久综合精品国产 | 9久久婷婷国产综合精品性色 | 黄在线|