找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2719|回復: 1
打印 上一主題 下一主題
收起左側

STM32+12864串行字符顯示代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:442334 發(fā)表于 2018-12-8 19:31 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32+12864串行字符串顯示工程


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

  2. GPIO_InitTypeDef GPIO_InitStructure;
  3. void Delay(__IO uint32_t nCount)
  4. {
  5.    for(; nCount != 0; nCount--);
  6. }


  7. void send_dat(unsigned char dat)
  8. {
  9.     unsigned char i;
  10.         //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  11.     for(i=0;i<8;i++)
  12.     {
  13.                 if((dat&0x80)==0x80) SID_1;
  14.                 if((dat&0x80)==0x00) SID_0;
  15.         CLK_0;
  16.                 Delay(35);
  17.         CLK_1;
  18.                 dat<<=1;
  19.     }
  20. }


  21. unsigned char get_byte()
  22. {
  23.      unsigned char i,temp1=0,temp2=0;
  24.          //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;     
  25.      for(i=0;i<8;i++)   
  26.      {   
  27.            temp1=temp1<<1;   
  28.            CLK_0;  
  29.                    Delay(25);
  30.            CLK_1;  
  31.                    Delay(20);              
  32.            CLK_0;   
  33.            if(GPIO_ReadOutputDataBit(GPIOE,GPIO_Pin_3)) temp1++;   
  34.      }   
  35.      for(i=0;i<8;i++)   
  36.      {   
  37.            temp2=temp2<<1;   
  38.            CLK_0;  
  39.                    Delay(25);  
  40.            CLK_1;
  41.                    Delay(25);   
  42.            CLK_0;   
  43.            if(GPIO_ReadOutputDataBit(GPIOE,GPIO_Pin_3))  temp2++;   
  44.      }   
  45.          //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  46.      return ((0xf0&temp1)+(0x0f&temp2));   
  47. }

  48. void check_busy()
  49. {
  50.     do
  51.     {
  52.         send_dat(0xfc);
  53.     }
  54.     while((get_byte()&0x8000)==0x8000);
  55. }

  56. void send_cmd(unsigned char cmd)
  57. {
  58.     check_busy();
  59.     send_dat(0xf8);    //
  60.     send_dat(cmd&0xf0); //
  61.     send_dat((cmd&0x0f)<<4); //
  62. }

  63. void write_char(unsigned char dat)
  64. {
  65.     check_busy();
  66.     send_dat(0xfa);//rw=0;rs=1
  67.     send_dat(dat&0xf0);
  68.     send_dat((dat&0x0f)<<4);
  69. }

  70. void lcd_clear()        //清除顯示
  71. {
  72.     send_cmd(0x01);
  73. }


  74. void lcd_pos(unsigned char y_add , unsigned char x_add)
  75. {
  76.     switch(y_add)
  77.     {
  78.         case 1:
  79.         send_cmd(0X80|x_add);break;
  80.         case 2:
  81.         send_cmd(0X90|x_add);break;
  82.         case 3:
  83.         send_cmd(0X88|x_add);break;
  84.         case 4:
  85.         send_cmd(0X98|x_add);break;
  86.         default:break;
  87.     }   
  88. }


  89. void lcd_wstr(unsigned char y_add , unsigned char x_add , unsigned char *str)    //
  90. {
  91.     unsigned char i;
  92.     lcd_pos(y_add , x_add);
  93.     for(i=0;str[i]!='\0';i++)
  94.     {
  95.         write_char(str[i]);  
  96.     }

  97. }

  98. void write_figer(unsigned char y_add , unsigned char x_add , unsigned int figer)//在任何位置寫數(shù)字-數(shù)組
  99. {
  100.     unsigned char d[5],i,j;
  101.     lcd_pos(y_add , x_add);
  102.     d[4]=figer%10;
  103.     d[3]=figer%100/10;
  104.     d[2]=figer%1000/100;
  105.     d[1]=figer%10000/1000;
  106.     d[0]=figer/10000;
  107.     for(i=0;i<5;i++)
  108.     {
  109.         if(d[i]!=0)break;
  110.     }

  111.     if(i==5)i--;

  112.     if(i==4)send_dat(0x30);//數(shù)據(jù)裝完,準備發(fā)送

  113.     for(j=i;j<5;j++)
  114.     {
  115. ……………………

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

所有資料51hei提供下載:
12864串行-stm32.rar (435.68 KB, 下載次數(shù): 50)


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

使用道具 舉報

沙發(fā)
ID:442334 發(fā)表于 2018-12-8 19:31 | 只看該作者
先點個贊
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表