找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5786|回复: 8
打印 上一主题 下一主题
收起左侧

直流电机+编码器+oled显示stm32程序

  [复制链接]
跳转到指定楼层
楼主
ID:226267 发表于 2017-8-9 21:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天比赛准备的,结果没用上,哎

所有资料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. }

复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:226267 发表于 2017-8-9 21:35 | 只看该作者
大家仅供参考啊
回复

使用道具 举报

板凳
ID:58925 发表于 2017-8-25 15:27 | 只看该作者
这个是用来干什么的?
回复

使用道具 举报

地板
ID:135635 发表于 2020-4-30 10:46 | 只看该作者
谢谢分享,学习中。
回复

使用道具 举报

5#
ID:742242 发表于 2020-5-1 12:25 | 只看该作者
多谢分享
回复

使用道具 举报

6#
ID:737735 发表于 2020-5-1 18:40 | 只看该作者
用的什么单片机,还有什么用途啊
回复

使用道具 举报

7#
ID:737227 发表于 2020-5-2 09:09 | 只看该作者
先看看,谢谢了
回复

使用道具 举报

8#
ID:711507 发表于 2020-5-2 11:57 | 只看该作者
谢谢分享
回复

使用道具 举报

9#
ID:228452 发表于 2022-4-6 00:22 | 只看该作者
Schematic is missing from  project ?
Very difficult to follow...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表