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

標題: 12864B串行通訊stm32源程序和原理圖 [打印本頁]

作者: 51hei學習技術中    時間: 2016-11-17 23:10
標題: 12864B串行通訊stm32源程序和原理圖
最近弄了個12864串行通訊顯示,如附件,供大家交流學習。

12864液晶屏的stm32單片機驅動源碼和原理圖下載:
12864B串行通訊stm32源程序和原理圖.rar (1.43 MB, 下載次數: 477)





STM32F103系列 串行點亮LCD12864B部分源程序預覽:
  1. #include "12864.h"
  2. #include "delay.h"        


  3. #define uchar unsigned char
  4. #define uint  unsigned int




  5. uchar const TABLE[]=
  6.    {   
  7.     0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,         
  8.     0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,         
  9.     0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,        
  10.     0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,      
  11.   };


  12. void SendByte(uchar Dbyte)   
  13. {   
  14.       uchar i;   
  15.       for(i=0;i<8;i++)   
  16.       {   
  17.                          GPIO_ResetBits(LCD_CLK);
  18.                         if(Dbyte&0x80)
  19.                                  GPIO_SetBits(LCD_DATA);
  20.                          else
  21.                                  GPIO_ResetBits(LCD_DATA);
  22.                          Dbyte=Dbyte<<1;      
  23.                    delay_us(10);        
  24.                         GPIO_SetBits(LCD_CLK);
  25.                         delay_us(10);        
  26.                         GPIO_ResetBits(LCD_CLK);
  27.                          delay_us(10);
  28.       }   
  29. }  


  30. uchar ReceiveByte(void)
  31. {
  32.       uchar i,temp1,temp2;
  33.      temp1 = 0;
  34.       temp2 = 0;
  35.       for(i=0;i<8;i++)
  36.       {
  37.             temp1=temp1<<1;
  38.             GPIO_ResetBits(LCD_CLK);
  39.                     delay_us(10);
  40.             GPIO_SetBits(LCD_CLK);
  41.                    delay_us(10);
  42.             GPIO_ResetBits(LCD_CLK);
  43.             if(GPIO_ReadInputDataBit(LCD_DATA)) temp1++;
  44.       }
  45.       for(i=0;i<8;i++)
  46.       {
  47.             temp2=temp2<<1;
  48.             GPIO_ResetBits(LCD_CLK);
  49.                     delay_us(5);
  50.             GPIO_SetBits(LCD_CLK);
  51.                    delay_us(5);
  52.             GPIO_ResetBits(LCD_CLK);
  53.             if(GPIO_ReadInputDataBit(LCD_DATA)) temp2++;
  54.       }
  55.       return ((0xf0&temp1)+(0x0f&temp2));
  56. }


  57. void CheckBusy(void)
  58. {
  59.       do  SendByte(0xfc);         
  60.      while(0x80&ReceiveByte());        
  61. }


  62. void WriteCommand(uchar Cbyte )   
  63. {   
  64.          GPIO_SetBits(LCD_CS);      
  65.          delay_ms(1);
  66.          SendByte(0xf8);              
  67.          SendByte(0xf0&Cbyte);         
  68.         SendByte(0xf0&Cbyte<<4);     
  69.          GPIO_ResetBits(LCD_CS);
  70.         delay_ms(2);
  71. }


  72. void WriteData(uchar Dbyte )   
  73. {   
  74.       GPIO_SetBits(LCD_CS);  
  75.      delay_ms(1);  
  76.       SendByte(0xfa);              
  77.       SendByte(0xf0&Dbyte);        
  78.       SendByte(0xf0&Dbyte<<4);     
  79.       GPIO_ResetBits(LCD_CS);   
  80.       delay_ms(2);
  81. }


  82. void LCD_GPIO_Config(void)
  83. {
  84.          GPIO_InitTypeDef  GPIO_InitStructure;  
  85.          
  86.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
  87.          
  88.          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; //對結構體的GPIO_Pin對象賦值,聲明要操作的是1,2,3,4端口
  89.          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//對結構體的GPIO_Mode對象賦值,聲明IO口的模式是輸出
  90.          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//對結構體的GPIO_OType對象賦值,聲明IO口的結構是推挽輸出
  91.          GPIO_Init(GPIOB, &GPIO_InitStructure);
  92.          GPIO_ResetBits(GPIOB,GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
  93. }


  94. void lcd_init(void)  
  95. {
  96.          LCD_GPIO_Config();
  97.          delay_ms(5);
  98.     //   GPIO_ResetBits(LCD_PSB); //L 串口方式   
  99.          GPIO_ResetBits(LCD_RST); // 復位端,低電位有效        
  100.          delay_ms(100);
  101.          GPIO_SetBits(LCD_RST);         
  102.          delay_ms(5);


  103.         WriteCommand(0x30);      
  104.         WriteCommand(0x30);         
  105.         WriteCommand(0x0C);         
  106.         WriteCommand(0x01);      
  107.         delay_ms(20);
  108.         WriteCommand(0x06);     
  109. }


  110. void LcmClearTXT( void )   
  111. {   
  112.       uchar i;   
  113.       WriteCommand(0x30);      
  114.      WriteCommand(0x80);      
  115.      for(i=0;i<64;i++)   
  116.       WriteData(0x20);   
  117. }   
  118.    


  119. void LcmClearBMP( void )   
  120. {   
  121.       uchar i,j;   
  122.       WriteCommand(0x34);      
  123.      WriteCommand(0x36);      
  124.      for(i=0;i<32;i++)            
  125.      {   
  126.             WriteCommand(0x80|i);      
  127.            WriteCommand(0x80);         
  128.             for(j=0;j<32;j++)           
  129.             WriteData(0);   
  130.       }   
  131. }   
  132.    
  133. void LCD_ShowString(uchar row,uchar col,uchar *puts)   
  134. {   
  135.       WriteCommand(0x30);      
  136.      WriteCommand(TABLE[8*row+col]);      
  137.       while(*puts != '\0')     
  138.       {   
  139.             if(col==8)            
  140.            {              
  141.                   col=0;   
  142.                   row++;   
  143.             }   
  144.             if(row==4) row=0;      
  145.            WriteCommand(TABLE[8*row+col]);   
  146.             WriteData(*puts);      
  147.             puts++;   
  148.             WriteData(*puts);   
  149.             puts++;   
  150.             col++;   
  151.       }   
  152. }


  153. void PutBMP(uchar *puts)   
  154. {   
  155.       uint x=0;   
  156.       uchar i,j;   
  157.       WriteCommand(0x34);        
  158.       WriteCommand(0x36);        
  159.       for(i=0;i<32;i++)               
  160.       {   
  161.             WriteCommand(0x80|i);        
  162.             WriteCommand(0x80);        
  163.             for(j=0;j<32;j++)         
  164.             {            
  165.                  WriteData(puts[x]);   
  166.                   x++;   
  167.             }   
  168.       }   
  169. }   


  170. void DisplayDots(uchar DotByte)   
  171. {   
  172.       uchar i,j;   
  173.       WriteCommand(0x34);      
  174.      WriteCommand(0x36);         
  175.       for(i=0;i<32;i++)               
  176.      {   
  177.             WriteCommand(0x80|i);        
  178.             WriteCommand(0x80);        
  179.             for(j=0;j<32;j++)         
  180.             {           
  181.                WriteData(DotByte);                     
  182.             }   
  183.             DotByte=~DotByte;   
  184.       }   
  185. }
復制代碼




作者: 邰夏留    時間: 2016-11-21 08:25
謝謝樓主分享,下載了就頂貼,養成良好的習慣。
作者: 程世龍    時間: 2017-5-3 16:55
DB0到D87定以在那個口?
作者: 程世龍    時間: 2017-5-3 16:56
DB0-7定義在哪個口?
作者: lifei123    時間: 2017-6-21 01:08
謝謝樓主
作者: kan看海聽濤    時間: 2017-10-13 11:17
謝謝樓主分享
作者: lovemj42    時間: 2018-7-5 17:12
學習學習,可惜沒分下載
作者: 訇雨由此    時間: 2018-7-11 20:10
大佬 我想問一下那個硬件連接和引腳定義是什么吶?
作者: hahaqinyou    時間: 2018-7-22 11:03
謝謝樓主 F103C8已經下載進去了
作者: 痘逗斗豆    時間: 2018-7-22 19:17
正好趕上用 謝謝分享
作者: redheart    時間: 2018-7-28 16:30
沒時間寫了,正好要用到,
作者: chenbinghf    時間: 2018-9-3 21:06
東西不錯,謝謝分享
作者: 谷雨小賀    時間: 2018-9-11 20:32
頂一下,最近在學習
作者: kayman    時間: 2018-9-29 11:13
感謝啊,正好需要,stm剛入手
作者: 阿毛727    時間: 2018-11-2 15:06
沒點亮是什么原因呢,程序沒改直接測試的
作者: noleaf    時間: 2019-1-30 11:38
非常感謝,正在學習這方面的。
作者: gy2008    時間: 2019-1-31 14:36
謝謝分享
作者: qc22    時間: 2019-3-23 14:12
誰有程序給我發一下,我自己寫了好久.都沒出來,謝謝大佬,郵箱596752284@qq.com
作者: ANT2S    時間: 2019-4-17 14:53
非常需要,正在學習中
作者: Unistudent    時間: 2019-5-7 22:48
最近電設要用到這個,學習一下!
作者: lxj199610    時間: 2019-6-30 10:42
感謝分享,成功點亮12864B串行通訊。樓上沒點亮的注意跳線,有個跳線是選擇串行通訊還是并行通訊,我的屏是R9R10為跳點,這里用的是串行通訊。包括樓上還有問D0-D7,那并行通訊方式才用到的,串行不需要。多看產品資料啊,樓主的壓縮包里也包含了12864B的文檔。
作者: 簡單的就好    時間: 2019-7-1 16:55
下載來學習學習
作者: 我的世界只有你    時間: 2019-7-22 09:43
厲害,
作者: 小學生zdj    時間: 2019-8-2 11:33
我的世界只有你 發表于 2019-7-22 09:43
厲害,

您好
我想問一下關于12864B的問你
如果你看到麻煩加我QQ1963664468,非常感謝
作者: 英英英    時間: 2019-8-3 01:22
謝謝樓主分享
作者: 15820254949    時間: 2019-8-5 10:06
剛入手32學習
作者: lygxnb    時間: 2019-8-26 17:21
謝謝分享
作者: 348565004    時間: 2019-12-23 14:15
謝謝!!!很給力!
作者: shu_007    時間: 2019-12-24 18:54
程世龍 發表于 2017-5-3 16:56
DB0-7定義在哪個口?

標題已經說了,是用串口,PB0~7是并口,就不用定義。
作者: koooolala    時間: 2020-2-17 19:06
我也是來找原因的,,,,51那邊可以用。。。換了STM電壓不一樣就不好搞
作者: 153699620    時間: 2020-3-20 16:36
感謝分享,現在正好有用到這個資料
作者: readi03    時間: 2020-6-18 10:56

正好趕上用 謝謝分享




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲精品久久久久国产 | 男女羞羞视频网站 | 久久成人国产精品 | 色网站在线免费观看 | 久久综合av| 在线看日韩 | 国产成人精品免高潮在线观看 | 91免费看片 | 男女免费在线观看视频 | 国产91av视频 | 在线免费看黄 | 在线播放中文字幕 | 成年女人免费v片 | 天天操天天干天天爽 | 狠狠久| 最近日韩中文字幕 | 亚洲高清视频在线 | 久久久久久亚洲精品 | 亚洲第一av| 精品久久久久久亚洲综合网 | 亚洲人人 | 一区二区在线不卡 | 北条麻妃99精品青青久久主播 | 国产激情91久久精品导航 | 精久久久| www天天操 | 欧产日产国产精品视频 | 99热99| 日本成人片在线观看 | 99久久精品免费看国产四区 | 国产偷录视频叫床高潮对白 | 欧美成视频在线观看 | 国产毛片毛片 | 波多野结衣一区二区三区在线观看 | 香蕉超碰 | 午夜久久久 | 亚洲 中文 欧美 日韩 在线观看 | 超碰伊人 | 欧美日韩国产三级 | 精品久久香蕉国产线看观看亚洲 | 97日日碰人人模人人澡分享吧 |