欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 12864液晶驅動資料 顯示圖形、文字的單片機源程序 [打印本頁]

作者: safferia    時間: 2018-1-24 22:19
標題: 12864液晶驅動資料 顯示圖形、文字的單片機源程序
如題,12864液晶驅動資料,包括軟件程序和資料
LCD12864顯示圖形、文字(請使用keil uvision3或以上版本打開)

單片機源程序如下:
  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 //用于檢測LCD狀態字中的Busy標識
  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[] = {"大雄電子營業部"};
  23. code unsigned char  net[] = {"ic2012*taobao*co"};
  24. code unsigned char  mcu[] = {"專業元件供應商!"};
  25. code unsigned char  qq[] = {"  QQ: 571630059 "};
  26. code unsigned char tmp[]={//128*64點陣圖形數據
  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. …………限于本文篇幅 余下代碼請從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(); //啟動等待,等LCD講入工作狀態
  35. LCDInit(); //LCM初始化
  36. Delay5Ms(); //延時片刻(可不要)
  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);        //顯示字庫中的中文數字
  47.                  DisplayListChar(0,2,net);                //顯示字庫中的中文數字
  48.                 DisplayListChar(0,3,mcu);                //顯示字庫中的中文
  49.                 DisplayListChar(0,4,qq);                //顯示字庫中的中文數字
  50.                 Delay400Ms();
  51.                 Delay400Ms();
  52.                 Delay400Ms();
  53.                 Delay400Ms();
  54.                  LCDFlash();        //閃爍效果
  55.                 //}
  56.         }
  57. }

  58. //寫數據
  59. void WriteDataLCD(unsigned char WDLCD)
  60. {
  61. ReadStatusLCD(); //檢測忙
  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時忽略忙檢測
  72. {
  73. if (BuysC) ReadStatusLCD(); //根據需要檢測忙
  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. //讀數據
  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. //讀狀態
  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); //檢測忙信號
  100. LCD_E = 0;
  101. return(LCD_Data);
  102. }

  103. void LCDInit(void) //LCM初始化
  104. {
  105. WriteCommandLCD(0x30,1); //顯示模式設置,開始要求每次檢測忙信號
  106. WriteCommandLCD(0x01,1); //顯示清屏
  107. WriteCommandLCD(0x06,1); // 顯示光標移動設置
  108. WriteCommandLCD(0x0C,1); // 顯示開及光標設置
  109. }
  110. void LCDClear(void) //清屏
  111. {
  112. WriteCommandLCD(0x01,1); //顯示清屏
  113. WriteCommandLCD(0x34,1); // 顯示光標移動設置
  114. WriteCommandLCD(0x30,1); // 顯示開及光標設置
  115. }
  116. void LCDFlash(void)        //閃爍效果
  117. {
  118. WriteCommandLCD(0x08,1); //顯示清屏
  119. Delay400Ms();
  120. WriteCommandLCD(0x0c,1); // 顯示開及光標設置
  121. Delay400Ms();
  122. WriteCommandLCD(0x08,1); //顯示清屏
  123. Delay400Ms();
  124. WriteCommandLCD(0x0c,1); // 顯示開及光標設置
  125. Delay400Ms();
  126. WriteCommandLCD(0x08,1); //顯示清屏
  127. Delay400Ms();
  128. }
  129. //按指定位置顯示一個字符
  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); //這里不檢測忙信號,發送地址碼
  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之內
  157. switch(Y){
  158.         case 1:X2|=0X80;break;        //根據行數來選擇相應地址
  159.         case 2:X2|=0X90;break;
  160.         case 3:X2|=0X88;break;
  161.         case 4:X2|=0X98;break;
  162.         }
  163. WriteCommandLCD(X2, 1); //發送地址碼
  164.   while (DData[ListLength]>=0x20) //若到達字串尾則退出
  165.   {
  166.    if (X <= 0x0F) //X坐標應小于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;){                //分兩屏,上半屏和下半屏,因為起始地址不同,需要分開
  180.         for(x=0;x<32;x++){                                //32行
  181.                 WriteCommandLCD(0x34,1);
  182. ……………………

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

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



作者: 蘇夏雨    時間: 2018-1-25 11:58
這個不是淘寶買12864時送的資料么?http://pan.baidu.com/s/1c2FB2FY




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1