标题: stm32f103r6源程序+Proteus仿真 [打印本页]

作者: 232322626262    时间: 2020-5-26 08:40
标题: stm32f103r6源程序+Proteus仿真
stm32f103r6的程序带仿真 有4个模块的


单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "adc.h"
  6. #include "smg.h"
  7. #include "timer.h"

  8. //0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, .,全灭
  9. u8 smg_num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80,0x00};
  10. u8 smg_wei=0;//数码管位选

  11. //ADC变量
  12. static u16 adcx=0;
  13. static u16 adcx1=0;
  14. static float temp=0;

  15. u8 num=0;//数码管值
  16. u8 adc_t=0;//adc采样时间值

  17. int main(void)
  18. {                                 

  19.         LED_Init();
  20.         Adc_Init();       
  21.         while(1) {
  22.        
  23.          adc_t++;
  24.                  if(adc_t==10)//ADC 采样
  25.                  {
  26.                          adc_t=0;
  27.                          adcx=Get_Adc_Average(ADC_CH9,3);//ADC原始值
  28.                          temp=(float)adcx*(3.3/4096);//ADC电压值
  29.                          adcx1=temp;
  30.                          temp-=adcx1;
  31.                          temp*=1000;
  32.                  }
  33.                  Delay(30);
  34.                  if(adcx>0){
  35.                  switch(smg_wei)
  36.                  {
  37.                            //ADC采样原始值
  38.                            case 0:  if(adcx>1000)num = smg_num[adcx/1000];
  39.                                                 else         num = 0x00;                                 
  40.                                             break;
  41.                            case 1:         if(adcx>100) num = smg_num[adcx%1000/100];
  42.                                                 else         num = 0x00;
  43.                                                 break;
  44.                            case 2:  if(adcx>10)  num = smg_num[adcx%100/10];
  45.                                                 else         num = 0x00;                                       
  46.                                         break;
  47.                            case 3:  num = smg_num[adcx%10]; break;
  48.                            case 4:  num = 0x00; break;
  49.                            //ADC换算后的电压值
  50.                            case 5: // num = smg_num[adcx1]|0x01;break;
  51.                                 num = smg_num[adcx1]|0x80;break;
  52.                            case 6:  num = smg_num[(u16)temp/100]; break;
  53.                            case 7:  num = smg_num[(u16)temp%100/10];break;   
  54.                  }
  55.                  GPIOC->ODR=num;
  56.                  LED_Wei(smg_wei);
  57.                  smg_wei++;
  58.                  if(smg_wei==8)
  59.                    smg_wei=0;

  60.             }
  61.                  
  62.         }

  63. }
复制代码

所有资料51hei提供下载:

中断方式实现按键控制.rar

807.29 KB, 下载次数: 85, 下载积分: 黑币 -5

ADC.7z

128.69 KB, 下载次数: 87, 下载积分: 黑币 -5

串口通信实验.rar

809.69 KB, 下载次数: 77, 下载积分: 黑币 -5

pwm.rar

648.88 KB, 下载次数: 63, 下载积分: 黑币 -5


作者: 老友记    时间: 2021-5-10 23:43
四个安装包下载哪一个?
作者: 老友记    时间: 2021-5-10 23:51
亲,stm32f103r6源程序+Proteus仿真中有四个安装包,卑微的我该下载哪一个呢?
作者: shu_007    时间: 2021-5-11 09:36
请问Proteus用什么版本?
作者: cai46    时间: 2021-8-2 09:29
有参考价值,谢谢作者
作者: xjj850205    时间: 2021-11-20 21:21

有参考价值,谢谢作者




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