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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于AT89C51和12864的萬年歷仿真+源代碼

[復制鏈接]
跳轉到指定樓層
樓主

本文件分四個部分 生成一個HEX文件
萬年歷完整版.rar (65.46 KB, 下載次數: 124)

  1. //--------------------------LCD_12864.c-------------------------
  2. // 名稱 :12864LCD顯示驅動程序(不帶字庫)
  3. //-----------------------------------------------------------------
  4. #include <reg52.h>
  5. #include <intrins.h>
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. #define LCD_DB_PORT P0   // 液晶數據線端口DB0-DB7
  9. #define LCD_START_ROW 0xc0  //起始行命令
  10. #define LCD_PAGE 0xB8   //  頁指令
  11. #define LCD_COL  0x40   //   列指令
  12. bit Reverse_Display=0;//是否反相顯示(白底黑字/黑底白字)
  13. //液晶引腳定義
  14. sbit DI=P2^0;
  15. sbit RW=P2^1;
  16. sbit E=P2^2;
  17. sbit CS1=P2^3;
  18. sbit CS2=P2^4;
  19. sbit RST=P2^5;
  20. //---------------------------------------------------------------
  21. // 檢查LCD是否忙
  22. //--------------------------------------------------------------
  23. bit LCD_IS_BUSY()
  24. {
  25.    LCD_DB_PORT=0xFF;
  26. RW=1;
  27. _nop_();
  28. DI=0;
  29. E=1;
  30. _nop_();
  31. E=0;
  32. return (bit)(P0&0x80);
  33. }
  34. //---------------------------------------------------------------
  35. // 向LCD寫入一個字節(一般用于發送命令)
  36. //--------------------------------------------------------------
  37. void Write_Byte_To_LCD(uchar comand)
  38. {  
  39.     while(LCD_IS_BUSY());   
  40.    LCD_DB_PORT=0xFF;
  41.    RW=0;
  42.    _nop_();
  43.    DI=0;
  44.    LCD_DB_PORT=comand;
  45.    E=1;
  46.    _nop_();
  47.    E=0;
  48. }
  49. //---------------------------------------------------------------
  50. // 向LCD寫入數據
  51. //--------------------------------------------------------------
  52. void Write_Data_To_LCD(uchar dat)
  53. {
  54.    while(LCD_IS_BUSY());   
  55.    LCD_DB_PORT=0xFF;
  56.    RW=0;
  57.    _nop_();
  58.    DI=1;
  59.    if(!Reverse_Display)    //根據Reverse_Display決定是否反相顯示
  60.        LCD_DB_PORT=dat;
  61.    else  
  62.       LCD_DB_PORT=~dat;
  63.    E=1;
  64.    _nop_();
  65.    E=0;
  66. }
  67. //---------------------------------------------------------------
  68. // 初始化LCD
  69. //--------------------------------------------------------------
  70. void LCD12864_Initialization()
  71. {
  72.   CS1=1;
  73.   CS2=1;
  74.   Write_Byte_To_LCD(0x38);
  75.   Write_Byte_To_LCD(0x0F);
  76.   Write_Byte_To_LCD(0x01);
  77.   Write_Byte_To_LCD(0x06);
  78.   Write_Byte_To_LCD(LCD_START_ROW);
  79. }
  80. //---------------------------------------------------------------
  81. // 通用顯示函數  從第P頁第L列顯示W個字節數據,具體顯示的數據在r所
  82. //--------------------------------------------------------------
  83. void LCD_Show(uchar P,uchar L,uchar W,uchar *r) reentrant
  84. {
  85.     uchar i;
  86. if(L<64)
  87.     {
  88.       CS1=1;
  89.          CS2=0;
  90.    Write_Byte_To_LCD(LCD_PAGE+P);
  91.    Write_Byte_To_LCD(LCD_COL+L);
  92.    if(L+W<64)
  93.      {  
  94.        for(i=0;i<W;i++)
  95.        Write_Data_To_LCD(r[i]);
  96.      }
  97.    else
  98.      {
  99.        for(i=0;i<64-L;i++)
  100.        Write_Data_To_LCD(r[i]);
  101.     CS1=0;
  102.              CS2=1;
  103.     Write_Byte_To_LCD(LCD_PAGE+P);
  104.        Write_Byte_To_LCD(LCD_COL);
  105.     for(i=64-L;i<W;i++)
  106.        Write_Data_To_LCD(r[i]);
  107.      }
  108.      }
  109. else
  110.    {
  111.       CS1=0;
  112.             CS2=1;
  113.    Write_Byte_To_LCD(LCD_PAGE+P);
  114.       Write_Byte_To_LCD(LCD_COL+L-64);
  115.    for(i=0;i<W;i++)
  116.       Write_Data_To_LCD(r[i]);
  117.    }
  118. }
  119. //---------------------------------------------------------------
  120. // 顯示一個8×16點陣字符
  121. //--------------------------------------------------------------
  122. void Display_char(uchar P1,uchar L1,uchar *M) reentrant
  123. {
  124.    LCD_Show(P1,L1,8,M);
  125.    LCD_Show(P1+1,L1,8,M+8);   
  126. }
  127. //-------------------------------------------------------------------
  128. // 顯示一個16×16點陣字符 (漢字上半部分與下半部分分別處在相鄰兩頁中)
  129. //-------------------------------------------------------------------
  130. void Display_Word(uchar P2,uchar L2,uchar *M) reentrant
  131. {            
  132.    LCD_Show(P2,L2,16,M);  
  133.    LCD_Show(P2+1,L2,16,M+16);  
  134. }
復制代碼


評分

參與人數 2黑幣 +55 收起 理由
xiegh + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠狠| 韩日一区二区三区 | 成人av免费 | 在线成人www免费观看视频 | 青娱乐一区二区 | 爱爱综合网| 国产高清精品一区二区三区 | 久久精品国产一区二区三区 | 色综合视频在线 | 欧美性生活网 | 久久毛片| 精品久久久久久久久久 | 亚洲一区二区在线免费观看 | 亚洲免费视频网址 | 日韩精品免费视频 | 最新日韩在线 | 日本 欧美 国产 | 99精品免费视频 | 中文字幕人成乱码在线观看 | 九色视频网 | 久久青 | 亚洲成人av| 久久久久国产一区二区三区 | 7777奇米影视 | 欧美日韩在线视频观看 | 性天堂网 | 日韩一区二区三区在线观看视频 | 国产小视频在线观看 | 国产成人99av超碰超爽 | 免费黄色片视频 | 一区二区三区四区免费在线观看 | 成人av一区二区三区 | 精品视频在线观看 | 婷婷色成人| 亚洲在线免费观看 | 99久久精品免费看国产四区 | 免费看黄色小视频 | 四虎影院久久 | 男女黄网站 | 日韩成人免费视频 | 久久婷婷香蕉热狠狠综合 |