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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1986|回復: 0
收起左側

無字庫LCD12864的源程序和Proteus仿真圖

[復制鏈接]
ID:769160 發表于 2020-6-4 10:08 | 顯示全部樓層 |閱讀模式
用12864仿真數字電壓表
51hei.png

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. unsigned char code liu[]= // 劉
  6.         {0x00,0x08,0x28,0x49,0x8A,0x0C,0xC8,0x38,0x08,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
  7.         0x40,0x20,0x10,0x08,0x04,0x03,0x06,0x38,0x10,0x00,0x07,0x20,0x40,0x3F,0x00,0x00
  8. };

  9. unsigned char code si[]=
  10. {0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
  11. 0x20,0x38,0x00,0x00,0x3C,0x40,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x18,0x30,0x00
  12. };

  13. unsigned char code si1[]=
  14. {0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
  15. 0x20,0x38,0x00,0x00,0x3C,0x40,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x18,0x30,0x00};

  16. sbit CS1=P2^0;//片選1,低電平有效,CS1=0開左屏幕,CS1=1關左屏幕
  17. sbit CS2=P2^1;//片選2,低電平有效,CS2=0開右屏幕,CS2=1關右屏幕
  18. sbit RS=P2^2;//數據,指令選擇信號,RS=1為數據操作,RS=0為寫指令或讀狀態(一般為讀忙標志)
  19. sbit RW=P2^3;//讀寫選擇信號,RW=1為讀選通,RW=0為寫選通
  20. sbit EN=P2^4;//讀寫使能信號
  21. void busy()//忙檢測函數
  22. {
  23.         P0=0X00; //這句不能少
  24.         RS=0; //表示寫或讀,1為數據操作
  25.         RW=1;//RW為1時表示讀取12864的信息
  26.         EN=1;
  27.         while(P0&0X80);//P0&0X80結果為真則一直執行空操作,也就是說P0&0X80為0則結束循環
  28.                
  29.         EN=0;
  30. }
  31. void wcmd(uchar cmd)
  32. {
  33.         busy(); //每次寫入指令或數據之前都進行忙檢測
  34.         RS=0;
  35.         RW=0;
  36.         P0=cmd;
  37.         EN=1;_nop_();_nop_();//在EN下降沿寫入數據和指令
  38.         EN=0;
  39. }
  40. void wdata(uchar dat) //寫命令和寫數據只在RS=0或RS=1上不同,其余都相同
  41. {
  42.         busy();
  43.         RS=1;
  44.         RW=0;
  45.         P0=dat;
  46.         EN=1;_nop_();_nop_();//在EN下降沿寫入數據和指令
  47.         EN=0;
  48. }
  49. void set_page(uchar page)//設置頁,12864LCD共有8頁,每頁有8行點陣點。
  50. {
  51.         page=0xb8|page;  //首頁地址為0XB8
  52.         wcmd(page);                  //page取值范圍為0~7,表示第1到8頁
  53. }
  54. void set_line(uchar line)//設置顯示的起始行,共有0--63行,一般從0行開始顯示
  55. {
  56.         line=0xc0|line;  //起始行地址0XC0
  57.         wcmd(line);        //line取值范圍為0~63,表示第1到64行
  58. }
  59. void set_column(uchar column)//設置顯示的列
  60. {
  61.         //column=column&0x3f; //列的最大值為0X3F,即64
  62.         column=0x40|column;         //列的首地址為0X40,
  63.         wcmd(column);                 //column的取值范圍為0~63,共64列
  64. }

  65. void select_screen(uchar screen)//選屏,screen取值范圍為0,1,2
  66. {
  67.         switch(screen)
  68.         {
  69.                 case 0:CS1=0;CS2=0;break; //全屏
  70.                 case 1:CS1=0;CS2=1;break;  //左半屏
  71.                 case 2:CS1=1;CS2=0;break;  //右半屏
  72.                 default:break;
  73.         }
  74. }
  75. void clear_screen(uchar screen)//清屏
  76. {
  77.         uchar i,j;
  78.         select_screen(screen);//先選屏
  79.         for(i=0;i<8;i++)//控制頁數0--7,共8頁
  80.         {
  81.                 set_page(i);//設置頁
  82.                 set_column(0); //設置列,每頁都從第1列開始,共64列
  83.                 for(j=0;j<64;j++)//控制列數0--63,共64列
  84.                 wdata(0x00);//寫入0,列地址指針會自動加1
  85.         }
  86. }
  87. void init()        //LCD初始化
  88. {
  89.         busy(); //忙檢測
  90.         select_screen(0);//選屏,全屏
  91.         wcmd(0x20);
  92.         select_screen(0); //選屏,全屏
  93.     wcmd(0x00);
  94.         select_screen(0); //選屏,全屏
  95.         clear_screen(0);  //清屏
  96.         set_line(0);          //起始行:0
  97. }
  98. void show(uchar screen,uchar page,uchar column,uchar *p)//顯示一個漢字,一個漢字有32字節數據
  99. {
  100.         uchar i;        //screen表示選擇屏幕,page表示頁,column表示列,*p表示漢字的數組
  101.         select_screen(screen); //選屏
  102.         set_page(page);           //設置頁,寫上半頁
  103.         set_column(column);//設置列
  104.         for(i=0;i<16;i++) //控制16列的數據輸出
  105.         wdata(p[i]);   //漢字的上半部分
  106.         set_page(page+1); //寫下半頁
  107.         set_column(column);        //控制列
  108.         for(i=0;i<16;i++) //控制16列的數據輸出
  109.         wdata(p[i+16]);         //漢字的下半部分
  110. }


  111. void main()
  112. {
  113.         //unsigned char i;
  114.         init();  //LCD初始化
  115.         clear_screen(0); //清屏
  116.         set_line(0);   //顯示開始行
  117.         //1表示左屏顯示,0表示從0頁開始顯示。因為一頁只有8行點,
  118.         //而顯示一個漢字需要16行點(整屏有64行點),所以顯示一個漢字需要2頁
  119.         //第0頁顯示"歡"字的上半部分,第1頁顯示"歡"漢字的下半部分
  120.         //2*16表示從第32列開始顯示,前面空出0~31列(即2個字的位置)
  121.         show(1,0,1*16,liu);
  122.         show(1,0,2*16,si);
  123.    show(1,0,3*16,si1);
  124.         while(1);
  125. }
復制代碼

所有資料51hei提供下載:
12864的程序和仿真圖.rar (19.94 KB, 下載次數: 24)


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 福利视频一区二区 | 国产精品久久久久久久久久了 | 欧美成人精品一区二区男人看 | 精品久久久久久久久久久久 | 成人av免费播放 | 国产精品久久久久久久久久尿 | 久久久久久久久久久91 | 97精品超碰一区二区三区 | 超碰av在线 | 日本亚洲一区 | 欧美精品一区久久 | 成人黄在线观看 | 91成人午夜性a一级毛片 | 欧美激情欧美激情在线五月 | 91精品国产91久久久久久吃药 | 欧美韩一区二区三区 | 国产精品视频网站 | 岛国视频| 中文字幕视频三区 | 日韩高清黄色 | 日本不卡免费新一二三区 | 午夜视频免费在线观看 | www.久久 | 四虎影 | 日韩天堂av | 国产日韩一区二区 | 久久久久国产一级毛片高清网站 | 97超在线视频| 亚洲高清av在线 | 宅女噜噜66国产精品观看免费 | 在线播放国产一区二区三区 | 久久久久亚洲精品中文字幕 | 精品久久久久国产免费第一页 | 欧美极品在线播放 | 成人一区av | 国产一区二区三区免费 | 免费一区二区三区 | 成人免费在线网 | 青青草免费在线视频 | av在线电影网站 | 午夜精品一区二区三区在线 |