标题: 直流电机+编码器+oled显示stm32程序 [打印本页]

作者: gyc2492    时间: 2017-8-9 21:34
标题: 直流电机+编码器+oled显示stm32程序
这几天比赛准备的,结果没用上,哎

所有资料51hei提供下载:
电机综合.rar (311.98 KB, 下载次数: 172)


单片机源程序如下:
  1. //////////////////////////////////////////////////////////////////////////////////         
  2. //本程序只供学习使用,未经作者许可,不得用于其它任何用途
  3. //中景园电子
  4. //
  5. //  文 件 名   : main.c
  6. //  版 本 号   : v2.0
  7. //  作    者   : HuangKai
  8. //  生成日期   : 0101
  9. //  最近修改   :
  10. //  功能描述   : OLED 4接口演示例程(51系列)
  11. //              说明:
  12. //              ----------------------------------------------------------------
  13. //              GND    电源地
  14. //              VCC  接5V或3.3v电源
  15. //              D0   接PD6(SCL)
  16. //              D1   接PD7(SDA)
  17. //              RES  接PD4
  18. //              DC   接PD5
  19. //              CS   接PD3               
  20. //              ----------------------------------------------------------------
  21. // 修改历史   :
  22. // 日    期   :
  23. // 作    者   : HuangKai
  24. // 修改内容   : 创建文件
  25. //版权所有,盗版必究。
  26. //Copyright(C) 中景园电子2014/3/16
  27. //All rights reserved
  28. //******************************************************************************/

  29. #include "delay.h"
  30. #include "sys.h"
  31. #include "oled.h"
  32. #include "bmp.h"
  33. #include "timer.h"
  34. #include "encoder.h"
  35. #include "PID.h"       
  36. #include "usart.h"


  37. u16 speed;
  38. u16 pwm1=0,pwm2=4999,pwm3=4999,pwm4=0;



  39. int main(void)
  40. {       
  41.          
  42.          
  43.           u16 len,t;       
  44.          
  45.          char shujv[]="page jisuanji";
  46.          
  47.                 delay_init();                     //延时函数初始化          
  48.          
  49.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  50.          
  51.                
  52.                 TIM4_PWM_Init(4999,719);
  53.        
  54. //          TIM3_Int_Init(4999,7199);
  55.          
  56.           uart2_init(9600);         //串口初始化为115200
  57.           uart1_init(9600);         //串口初始化为115200
  58.          
  59.           Encoder_Init_TIM2();
  60.          
  61.                 OLED_Init();                        //初始化OLED  
  62.                 OLED_Clear();

  63.          
  64.          
  65. //                OLED_ShowCHinese(0,0,0);
  66. //                OLED_ShowCHinese(18,0,1);
  67. //                OLED_ShowCHinese(36,0,2);
  68. //                OLED_ShowCHinese(54,0,3);   
  69. //                OLED_ShowCHinese(72,0,4);
  70. //                OLED_ShowCHinese(90,0,5);
  71. //                OLED_ShowCHinese(108,0,6);
  72.                
  73.           TIM3_Int_Init(99,7199);
  74.                 
  75.                 OLED_ShowString(0,2,"IN1:");
  76.                 OLED_ShowString(63,2,"IN2:");
  77.                 OLED_ShowString(0,4,"IN3:");
  78.                 OLED_ShowString(63,4,"IN4:");
  79.                
  80.                 OLED_ShowCHinese(0,6,7);//转
  81.                 OLED_ShowCHinese(18,6,8);//速
  82.                 OLED_ShowString(32,6,":");

  83. //        while(1)
  84.         {               

  85. //                        printf("t0.txt=\"%d\"%c%c%c",99,0XFF,0XFF,0XFF);   //发送数据
  86. //               
  87.                 for(t=0;t<13;t++)
  88.                         {
  89.                                 USART_SendData(USART2, shujv[t]);//向串口1发送数据
  90.                                 while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
  91.                         }
  92.                         for(t=0;t<2;t++)
  93.                         {
  94.                                 USART_SendData(USART2, 0x0d);//向串口1发送数据
  95.                                 while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
  96.                                 USART_SendData(USART2, 0x0a);//向串口1发送数据
  97.                                 while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
  98.                                  
  99.                         }
  100. //                printf("page main:\r\n\r\n");
  101.                         PWM1_OUT(pwm1);
  102.           PWM2_OUT(pwm2);
  103.                 PWM3_OUT(pwm3);
  104.                 PWM4_OUT(pwm4);
  105.                
  106.                   if(USART1_RX_STA&0x8000)
  107.                 {                       
  108. //                        OLED_ShowChar(120,0,'a');         
  109.                         len=USART1_RX_STA&0x3fff;//得到此次接收到的数据长度
  110. //                        printf("\r\n您发送的消息为:\r\n\r\n");
  111.                         for(t=0;t<len;t++)
  112.                         {
  113.                                  OLED_ShowChar(t*9,0,USART1_RX_BUF[t]);
  114. //                                USART_SendData(USART2, USART1_RX_BUF[t]);//向串口1发送数据
  115. //                                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
  116.                         }
  117. //                        printf("\r\n\r\n");//插入换行
  118.                         USART1_RX_STA=0;
  119.                 }
  120.                
  121. //       
  122.        
  123.                 OLED_ShowNum(28,2,pwm1,4,16);
  124.                 OLED_ShowNum(90,2,pwm2,4,16);
  125.                 OLED_ShowNum(28,4,pwm3,4,16);
  126.                 OLED_ShowNum(90,4,pwm4,4,16);

  127.           if(speed>32768)
  128.                  {
  129.                          OLED_ShowString(36,6,"-");
  130.                          OLED_ShowNum(45,6,(65535-speed)/3,4,16);
  131.                  }       
  132.                 else
  133.                         {
  134.                                 OLED_ShowString(36,6," ");
  135.                                 OLED_ShowNum(45,6,speed/3,4,16);

  136.                   }          
  137.        
  138.   }
  139. }

复制代码





作者: gyc2492    时间: 2017-8-9 21:35
大家仅供参考啊
作者: gm388    时间: 2017-8-25 15:27
这个是用来干什么的?
作者: popo321    时间: 2020-4-30 10:46
谢谢分享,学习中。
作者: yayalyao    时间: 2020-5-1 12:25
多谢分享
作者: 浅试即止    时间: 2020-5-1 18:40
用的什么单片机,还有什么用途啊
作者: frode    时间: 2020-5-2 09:09
先看看,谢谢了
作者: welssss    时间: 2020-5-2 11:57
谢谢分享
作者: mick32    时间: 2022-4-6 00:22
Schematic is missing from  project ?
Very difficult to follow...




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1