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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2361|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

12864液晶驅(qū)動(dòng)資料 顯示圖形、文字的單片機(jī)源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
如題,12864液晶驅(qū)動(dòng)資料,包括軟件程序和資料
LCD12864顯示圖形、文字(請(qǐng)使用keil uvision3或以上版本打開)

單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. //#include <at89x51.h>

  4. sbit LCD_RS=P1^0;//定義引腳
  5. sbit LCD_RW=P1^1;
  6. sbit LCD_E=P1^2;
  7. sbit PSB =P3^6;                //PSB腳為12864-12系列的串、并通訊功能切換,我們使用8位并行接口,PSB=1
  8. #define LCD_Data P2




  9. #define Busy    0x80 //用于檢測(cè)LCD狀態(tài)字中的Busy標(biāo)識(shí)
  10. void WriteDataLCD(unsigned char WDLCD);
  11. void WriteCommandLCD(unsigned char WCLCD,BuysC);
  12. unsigned char ReadDataLCD(void);
  13. unsigned char ReadStatusLCD(void);
  14. void LCDInit(void);
  15. void LCDClear(void);
  16. void LCDFlash(void);
  17. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
  18. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
  19. void DisplayImage (unsigned char code *DData);
  20. void Delay5Ms(void);
  21. void Delay400Ms(void);

  22. code unsigned char  uctech[] = {"大雄電子營(yíng)業(yè)部"};
  23. code unsigned char  net[] = {"ic2012*taobao*co"};
  24. code unsigned char  mcu[] = {"專業(yè)元件供應(yīng)商!"};
  25. code unsigned char  qq[] = {"  QQ: 571630059 "};
  26. code unsigned char tmp[]={//128*64點(diǎn)陣圖形數(shù)據(jù)
  27. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  28. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  29. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
  30. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  31. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,};

  32. void main(void)
  33. {
  34. Delay400Ms(); //啟動(dòng)等待,等LCD講入工作狀態(tài)
  35. LCDInit(); //LCM初始化
  36. Delay5Ms(); //延時(shí)片刻(可不要)
  37. while(1){
  38.                  LCDClear();
  39.                 DisplayImage(tmp);//顯示圖形
  40.                 Delay400Ms();
  41.                 Delay400Ms();
  42.                 Delay400Ms();
  43.                 Delay400Ms();
  44.                 Delay400Ms();
  45.                 LCDClear();
  46.                 DisplayListChar(0,1,uctech);        //顯示字庫(kù)中的中文數(shù)字
  47.                  DisplayListChar(0,2,net);                //顯示字庫(kù)中的中文數(shù)字
  48.                 DisplayListChar(0,3,mcu);                //顯示字庫(kù)中的中文
  49.                 DisplayListChar(0,4,qq);                //顯示字庫(kù)中的中文數(shù)字
  50.                 Delay400Ms();
  51.                 Delay400Ms();
  52.                 Delay400Ms();
  53.                 Delay400Ms();
  54.                  LCDFlash();        //閃爍效果
  55.                 //}
  56.         }
  57. }

  58. //寫數(shù)據(jù)
  59. void WriteDataLCD(unsigned char WDLCD)
  60. {
  61. ReadStatusLCD(); //檢測(cè)忙
  62. LCD_RS = 1;
  63. LCD_RW = 0;
  64. LCD_Data = WDLCD;
  65. LCD_E = 1;
  66. LCD_E = 1;
  67. LCD_E = 1;
  68. LCD_E = 0;
  69. }

  70. //寫指令
  71. void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC為0時(shí)忽略忙檢測(cè)
  72. {
  73. if (BuysC) ReadStatusLCD(); //根據(jù)需要檢測(cè)忙
  74. LCD_RS = 0;
  75. LCD_RW = 0;
  76. LCD_Data = WCLCD;
  77. LCD_E = 1;
  78. LCD_E = 1;
  79. LCD_E = 1;
  80. LCD_E = 0;  
  81. }

  82. //讀數(shù)據(jù)
  83. unsigned char ReadDataLCD(void)
  84. {
  85. LCD_RS = 1;
  86. LCD_RW = 1;
  87. LCD_E = 0;
  88. LCD_E = 0;
  89. LCD_E = 1;
  90. return(LCD_Data);
  91. }

  92. //讀狀態(tài)
  93. unsigned char ReadStatusLCD(void)
  94. {
  95. LCD_Data = 0xFF;
  96. LCD_RS = 0;
  97. LCD_RW = 1;
  98. LCD_E = 1;
  99. while (LCD_Data & Busy); //檢測(cè)忙信號(hào)
  100. LCD_E = 0;
  101. return(LCD_Data);
  102. }

  103. void LCDInit(void) //LCM初始化
  104. {
  105. WriteCommandLCD(0x30,1); //顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)
  106. WriteCommandLCD(0x01,1); //顯示清屏
  107. WriteCommandLCD(0x06,1); // 顯示光標(biāo)移動(dòng)設(shè)置
  108. WriteCommandLCD(0x0C,1); // 顯示開及光標(biāo)設(shè)置
  109. }
  110. void LCDClear(void) //清屏
  111. {
  112. WriteCommandLCD(0x01,1); //顯示清屏
  113. WriteCommandLCD(0x34,1); // 顯示光標(biāo)移動(dòng)設(shè)置
  114. WriteCommandLCD(0x30,1); // 顯示開及光標(biāo)設(shè)置
  115. }
  116. void LCDFlash(void)        //閃爍效果
  117. {
  118. WriteCommandLCD(0x08,1); //顯示清屏
  119. Delay400Ms();
  120. WriteCommandLCD(0x0c,1); // 顯示開及光標(biāo)設(shè)置
  121. Delay400Ms();
  122. WriteCommandLCD(0x08,1); //顯示清屏
  123. Delay400Ms();
  124. WriteCommandLCD(0x0c,1); // 顯示開及光標(biāo)設(shè)置
  125. Delay400Ms();
  126. WriteCommandLCD(0x08,1); //顯示清屏
  127. Delay400Ms();
  128. }
  129. //按指定位置顯示一個(gè)字符
  130. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  131. {
  132. if(Y<1)
  133.          Y=1;
  134. if(Y>4)
  135.          Y=4;
  136. X &= 0x0F; //限制X不能大于16,Y不能大于1
  137. switch(Y){
  138.         case 1:X|=0X80;break;
  139.         case 2:X|=0X90;break;
  140.         case 3:X|=0X88;break;
  141.         case 4:X|=0X98;break;
  142.         }
  143. WriteCommandLCD(X, 0); //這里不檢測(cè)忙信號(hào),發(fā)送地址碼
  144. WriteDataLCD(DData);
  145. }

  146. //按指定位置顯示一串字符
  147. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
  148. {
  149. unsigned char ListLength,X2;
  150.   ListLength = 0;
  151.   X2=X;
  152. if(Y<1)
  153.          Y=1;
  154. if(Y>4)
  155.          Y=4;
  156. X &= 0x0F; //限制X不能大于16,Y在1-4之內(nèi)
  157. switch(Y){
  158.         case 1:X2|=0X80;break;        //根據(jù)行數(shù)來選擇相應(yīng)地址
  159.         case 2:X2|=0X90;break;
  160.         case 3:X2|=0X88;break;
  161.         case 4:X2|=0X98;break;
  162.         }
  163. WriteCommandLCD(X2, 1); //發(fā)送地址碼
  164.   while (DData[ListLength]>=0x20) //若到達(dá)字串尾則退出
  165.   {
  166.    if (X <= 0x0F) //X坐標(biāo)應(yīng)小于0xF
  167.     {
  168.      WriteDataLCD(DData[ListLength]); //
  169.      ListLength++;
  170.          X++;
  171.          Delay5Ms();
  172.     }
  173.   }
  174. }

  175. //圖形顯示122*32
  176. void DisplayImage (unsigned char code *DData){
  177.         unsigned char x,y,i;
  178.         unsigned int tmp=0;
  179.         for(i=0;i<9;){                //分兩屏,上半屏和下半屏,因?yàn)槠鹗嫉刂凡煌枰珠_
  180.         for(x=0;x<32;x++){                                //32行
  181.                 WriteCommandLCD(0x34,1);
  182. ……………………

  183. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
12864說明書+例子程序.rar (608.94 KB, 下載次數(shù): 22)


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

使用道具 舉報(bào)

沙發(fā)
ID:278249 發(fā)表于 2018-1-25 11:58 | 只看該作者
這個(gè)不是淘寶買12864時(shí)送的資料么?http://pan.baidu.com/s/1c2FB2FY
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产视频2021 | 国产视频二区 | 成人做爰9片免费看网站 | 爱草视频| 国产精品免费一区二区三区四区 | 国产成人在线免费 | 9久久婷婷国产综合精品性色 | 黄色大片在线 | 亚洲成人免费网址 | www.国产一区 | 日本 欧美 国产 | 99精品国产一区二区青青牛奶 | 日韩不卡一区二区 | 男女羞羞视频在线 | 久久亚洲一区二区三 | 欧美一级一区 | 一区二区三区免费看 | 久热中文字幕 | 日韩美香港a一级毛片免费 国产综合av | 久久久久国产精品一区三寸 | 亚洲另类自拍 | 国产免费一区 | 一区精品视频在线观看 | 日韩三级在线 | 日本精品视频一区二区三区四区 | 日韩视频一区二区 | 色吊丝2288sds中文字幕 | 国产成人福利在线观看 | 日韩在线一区视频 | 综合激情网 | 欧美爱爱视频 | 日韩性生活网 | 午夜激情影院 | 国产精品免费一区二区三区四区 | 狠狠躁夜夜躁人人爽天天高潮 | 亚洲一区二区电影网 | 搞av.com| 国产精品久久久久久久久久三级 | 美国av片在线观看 | 精品三区 | 成人免费网站视频 |