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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32單片機+LCD12864顯示一個點的程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:753618 發(fā)表于 2022-4-22 16:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
12864顯示一個點

單片機源程序如下:
#include "delay.h"
#include "12864.h"

    unsigned char x,y;
int main(void)
{
    SystemInit();         //系統(tǒng)初始化
    delay_init(72);      //延時初始化
    LCD12864_InitPort(); //端口初始化
    LCD12864_Init();     //液晶初始化
   
   
     
    for(x=0;x<4;x++)
    {
         for(y=0;y<16;y++)
        {
           LCD12864_Pos(x,y);
           LCD12864_Wdat(0x2E);
           delay_ms(1000);
           LCD12864_Clr();         //    清屏            
        }
   
    }   
   

    while(1);      
}



  1. #include "stm32f10x.h"
  2. #include"12864.h"
  3. #include"delay.h"       
  4. /************************************************************************************************
  5. @f_name: void GPIO_Init(void)
  6. @brief:         初始化硬件端口配置
  7. @param:         None
  8. @return: None
  9. ************************************************************************************************/
  10. void LCD12864_InitPort(void)
  11. {
  12.         GPIO_InitTypeDef  GPIO_InitStructure;        //定義結(jié)構(gòu)體               
  13.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOG, ENABLE);   
  14.         GPIO_InitStructure.GPIO_Pin  = LCD_GPIO_CMD;       // 指令口配置
  15.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽輸出模式   
  16.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  17.         GPIO_Init(GPIOD,&GPIO_InitStructure);
  18.        
  19.         GPIO_InitStructure.GPIO_Pin  = LCD_GPIO_DAT;                //數(shù)據(jù)口配置
  20.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;    //開漏輸出模式
  21.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  22.         GPIO_Init(GPIOG,&GPIO_InitStructure);          //初始化IO口配置
  23.        
  24.         GPIO_Write(GPIOG,0xff00);        //該行指令似乎可以去掉     
  25. }

  26. /************************************************************************************************
  27. @f_name:      LCD12864_busy()
  28. @brief:              檢測忙狀態(tài)
  29. @Function:    讀取引腳15的輸入數(shù)據(jù).
  30. @annotation:  結(jié)合前文 RS=0、RW=1, 以及12864中文字庫說明書之基本指令表: 讀取忙碌標志和地址,  
  31.                   可知:該行指令的實際作用是: 判斷12864是否處于(讀取數(shù)據(jù))忙狀態(tài).
  32. @note:        因為判斷的是數(shù)據(jù)位(DB0-DB7)忙狀態(tài), 所以忙狀態(tài)位必須與DB7位一致.
  33. @param:         None
  34. @return: None
  35. ************************************************************************************************/
  36. u8 LCD12864_busy(void)
  37. {
  38.         u8 x;
  39.         LCD_RS(0);
  40.         LCD_RW(1);  
  41.         LCD_EN(1);
  42.         NOP();
  43.         NOP();
  44.         x = Text_Busy;  // 讀取引腳15的輸入數(shù)據(jù).  
  45.         LCD_EN(0);
  46.         return x;
  47. }
  48. /************************************************************************************************
  49. @f_name: void LCD12864_Wcmd(u8 dat)
  50. @brief:         寫指令
  51. @param:         u8 dat  輸入指令
  52. @return: None
  53. ************************************************************************************************/
  54. void LCD12864_Wcmd(u8 dat)  // 寫指令
  55. {
  56.         while(LCD12864_busy()); //忙檢測
  57.         LCD_RS(0);      
  58.         LCD_RW(0);
  59.         LCD_EN(0);
  60.         NOP();
  61.         NOP();
  62.         LCD_WriteData(dat);          
  63.         NOP();
  64.         NOP();
  65.         LCD_EN(1);
  66.         NOP();
  67.         NOP();
  68.         LCD_EN(0);
  69. }
  70. /************************************************************************************************
  71. @f_name: void LCD12864_Wdat(u8 dat)
  72. @brief:         寫數(shù)據(jù)
  73. @param:         u8 dat 輸入數(shù)據(jù)
  74. @return: None
  75. ************************************************************************************************/
  76. void LCD12864_Wdat(u8 dat)  //寫數(shù)據(jù)
  77. {
  78.         while(LCD12864_busy()); //忙檢測
  79.         LCD_RS(1);      
  80.         LCD_RW(0);
  81.         LCD_EN(0);
  82.         NOP();
  83.         NOP();
  84.         LCD_WriteData(dat);         
  85.         NOP();
  86.         NOP();
  87.         LCD_EN(1);
  88.         NOP();
  89.         NOP();
  90.         LCD_EN(0);
  91. }
  92. /************************************************************************************************
  93. @f_name: void LCD12864_Init(void)
  94. @brief:         液晶初始化
  95. @param:         None
  96. @return: None
  97. ************************************************************************************************/
  98. void LCD12864_Init(void)
  99. {       
  100.         LCD_PSB(1);     //并口方式   
  101.         LCD_RST(0);     //液晶復位         
  102.     delay_ms(3);                  
  103.     LCD_RST(1);          //置高電平等待復位
  104.     delay_ms(3);
  105. //        LCD12864_Wcmd(0x34);    //擴充指令操作
  106.     delay_ms(5);
  107.     LCD12864_Wcmd(0x30);    //基本指令操作
  108.     delay_ms(5);
  109.     LCD12864_Wcmd(0x0C);    //顯示開,關光標
  110.     delay_ms(5);
  111.     LCD12864_Wcmd(0x01);    //清屏
  112.     delay_ms(5);
  113. }
  114. /************************************************************************************************
  115. @f_name: void LCD12864_Clr(void)
  116. @brief:         清屏
  117. @param:         None
  118. @return: None
  119. ************************************************************************************************/
  120. void LCD12864_Clr(void)
  121. {
  122.         LCD12864_Wcmd(0x34);    //擴充指令操作        “繪圖”
  123.     delay_ms(5);
  124.     LCD12864_Wcmd(0x30);    //基本指令操作
  125.     delay_ms(5);
  126.         LCD12864_Wcmd(0x01);    //清屏   
  127.     delay_ms(5);
  128. }
  129. /************************************************************************************************
  130. @f_name: void LCD12864_Pos(u8 x,u8 y)
  131. @brief:         設置顯示位置
  132. @param:         u8 x:X軸    u8 y:Y軸  
  133. @return: None
  134. ************************************************************************************************/
  135. void LCD12864_Pos(u8 x,u8 y)
  136. {
  137.         u8  pos;
  138.         if (x==1)                   {x=0x80;}          
  139.         else if (x==2)         {x=0x90;}       
  140.         else if (x==3)         {x=0x88;}         
  141.         else if (x==4)   {x=0x98;}         
  142.         else x=0x80;
  143.         pos = x+y ;        
  144.         LCD12864_Wcmd(pos);  //顯示地址  
  145. }
  146. /************************************************************************************************
  147. @f_name: void LCD12864_PhotoDis(u8 *bmp)
  148. @brief:         顯示圖形
  149. @param:         u8 *bmp 圖形數(shù)組
  150. @return: None
  151. ************************************************************************************************/
  152. void LCD12864_PhotoDis(u8 *bmp)
  153. {
  154.         u8 i,j;
  155.         LCD12864_Wcmd(0x34); //關閉圖形顯示
  156.        
  157.         for(i=0;i<32;i++)
  158.         {
  159.                 LCD12864_Wcmd(0x80+i);  //先寫入水平坐標值
  160.                 LCD12864_Wcmd(0x80);      //寫入垂直坐標值
  161.                 for(j=0;j<16;j++)                     //再寫入兩個8位元的數(shù)據(jù)   
  162.                 LCD12864_Wdat(*bmp++);     
  163.                 delay_ms(1);
  164.         }
  165.        
  166.         for(i=0;i<32;i++)
  167.         {
  168.                 LCD12864_Wcmd(0x80+i);
  169.                 LCD12864_Wcmd(0x88);
  170.                 for(j=0;j<16;j++)         
  171.                 LCD12864_Wdat(*bmp++);   
  172.                 delay_ms(1);
  173.         }
  174.         LCD12864_Wcmd(0x36);       //寫完數(shù)據(jù),開圖形顯示        
  175. }
  176. /************************************************************************************************
  177. @f_name: void LCD_ShowString(u8 x,u8 y,const u8 *p)
  178. @brief:         顯示字符串
  179. @param:         u8 *bmp 圖形數(shù)組
  180. @return: None
  181. ************************************************************************************************/
  182. void LCD_ShowString(u8 x,u8 y,const u8 *p)
  183. {
  184.         u8 temp;
  185.         if(x>4) {x=1;}
  186.         if(y>4) {y=0;}
  187.        
  188.         LCD12864_Pos(x,y);
  189.        
  190.         temp=*p;
  191.         while(temp!='\0')            
  192.         {
  193.                 LCD12864_Wdat(temp);
  194.                 temp=*(++p);
  195.         }
  196. }
  197. /************************************************************************************************
  198. @f_name: void NOP(void)
  199. @brief:         延時函數(shù)
  200. @param:         None
  201. @return: None
  202. ************************************************************************************************/
  203. void NOP(void)
  204. { u8 i;        for(i=0; i<100; i++); }
復制代碼

Keil代碼下載:
12864_poi_display.7z (190.16 KB, 下載次數(shù): 39)


評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:440028 發(fā)表于 2022-5-6 16:36 | 只看該作者
stm32的仿真圖可以做一個比較好
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久亚洲精品不卡 | 美女天天操 | 在线午夜| 黄色在线免费观看 | 国产精品久久久久久久久久 | 久久久日韩精品一区二区三区 | 黄色一级大片在线观看 | 欧美1区2区 | 亚洲一av | 国产精品亚洲精品 | 国产美女久久久 | 久久久久久久成人 | 日韩av成人| 日韩在线视频一区 | 精品一区二区三区四区在线 | 韩日在线观看视频 | 99精品视频免费在线观看 | 色综合一区二区 | 精品成人免费一区二区在线播放 | 久久久91精品国产一区二区三区 | 视频一区二区在线观看 | 日韩中文字幕2019 | 国内自拍偷拍视频 | 国内自拍真实伦在线观看 | 亚洲成人三级 | 婷婷福利视频导航 | 日韩三级电影在线看 | 欧美2区 | 精品1区2区 | 久久久精 | 国产成人精品区一区二区不卡 | 国内精品久久久久 | 丁香色婷婷| 中文字幕不卡在线观看 | 亚洲一区二区三区免费在线观看 | 欧美日韩国产不卡 | 国产在线1区 | 国产一区二区三区高清 | 成人一区二区三区在线观看 | 99福利视频 | 婷婷免费视频 |