找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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, 下载次数: 82, 下载积分: 黑币 -5

ADC.7z

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

串口通信实验.rar

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

pwm.rar

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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:797599 发表于 2021-5-10 23:43 | 只看该作者
四个安装包下载哪一个?
回复

使用道具 举报

板凳
ID:797599 发表于 2021-5-10 23:51 | 只看该作者
亲,stm32f103r6源程序+Proteus仿真中有四个安装包,卑微的我该下载哪一个呢?
回复

使用道具 举报

地板
ID:658039 发表于 2021-5-11 09:36 | 只看该作者
请问Proteus用什么版本?
回复

使用道具 举报

5#
ID:106610 发表于 2021-8-2 09:29 | 只看该作者
有参考价值,谢谢作者
回复

使用道具 举报

6#
ID:387687 发表于 2021-11-20 21:21 | 只看该作者

有参考价值,谢谢作者
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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