找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9400|回复: 15
收起左侧

基于STM32的ADC仿真+OLED显示源程序+Proteus仿真

  [复制链接]
ID:688286 发表于 2020-5-27 16:41 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. #include "stm32f10x.h"
  2. u8 wd=0;      
  3. u8 sd=0;       
  4. unsigned char a[80] ;
  5. unsigned char DHT[5];
  6. float ADC_Data = 0 ;
  7.   void ADC1_GPIO_Config(void){
  8.     GPIO_InitTypeDef GPIO_InitStructure;
  9.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1, ENABLE);        //使能ADC1,GPIOC时钟
  10.          
  11.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //
  12.     //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//为什么没有配置这个????
  13.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;        //模拟输入
  14.     GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PC4
  15.        
  16.          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //
  17.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//为什么没有配置这个????
  18.    
  19.     GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PC4
  20. }


  21. void ADC_Config(void)
  22. {
  23.        

  24.   ADC_InitTypeDef ADC_InitStructure;//ADC结构体变量//注意在一个语句快内变量的声明要放在可执行语句的前面,否则出错,因此要放在ADC1_GPIO_Config();前面
  25.   ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式
  26.   ADC_InitStructure.ADC_ScanConvMode =        DISABLE; //使能扫描
  27.   ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC转换工作在连续模式
  28.   ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//由软件控制转换,不使用外部触发
  29.   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐
  30.   ADC_InitStructure.ADC_NbrOfChannel = 1;//转换通道为1
  31.   ADC_Init(ADC1, &ADC_InitStructure); //初始化ADC
  32.        
  33.   ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);
  34.   //ADC1选择信道14,音序等级1,采样时间55.5个周期
  35. //  ADC_DMACmd(ADC1, ENABLE);//使能ADC1模块DMA
  36.   ADC_Cmd(ADC1, ENABLE);//使能ADC1
  37.         ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
  38.   ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  39. //  ADC_ResetCalibration(ADC1); //重置.(复位).ADC1校准寄存器
  40. //  while(ADC_GetResetCalibrationStatus(ADC1));//等待ADC1校准重置完成
  41. //  ADC_StartCalibration(ADC1);//开始ADC1校准
  42. //  while(ADC_GetCalibrationStatus(ADC1));//等待ADC1校准完成
  43. //  ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC1软件开始转换
  44. }
  45. int main(void)
  46. {         
  47.          int i = 0 ;
  48.          
  49.          delay_init()        ;

  50.    LCD_Init() ;
  51.          
  52.          
  53.          Key_Init() ;              //按键初始化
  54.          
  55.          NVIC_Config() ;           //中断配置
  56. //         
  57.          TIME3_init() ;            //定时器配置
  58.           ADC1_GPIO_Config() ;
  59.          ADC_Config() ;
  60.        
  61.    while(1)
  62.          {                 
  63.                  GPIO_SetBits(GPIOA,GPIO_Pin_7) ;
  64.                  if(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_8) == 1)
  65.                  {
  66.                         ADC_Data = ADC_GetConversionValue(ADC1);

  67.                         Display();                      //菜单显示
  68.                  }else
  69.                  {
  70.                         LCD_Fill(0x00);  //初始清屏
  71.                  }
  72.                
  73.                          
  74.                  
  75.         }                       
  76.          
  77. }
复制代码

所有资料51hei提供下载:
仿真.7z (297.18 KB, 下载次数: 736)

评分

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

查看全部评分

回复

使用道具 举报

ID:262 发表于 2022-10-13 21:05 | 显示全部楼层
QI0609 发表于 2022-10-13 20:39
显示屏没现象...

我用Proteus8.8打开的效果如图
51hei.gif
回复

使用道具 举报

ID:631437 发表于 2020-6-15 09:29 | 显示全部楼层
有汉字显示的源码与仿真??
回复

使用道具 举报

ID:661659 发表于 2020-6-22 15:27 | 显示全部楼层
这个是实现什么操作的
回复

使用道具 举报

ID:24075 发表于 2020-6-22 17:30 | 显示全部楼层
感谢楼主分享 正在学习中
回复

使用道具 举报

ID:764512 发表于 2020-6-24 00:00 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:302325 发表于 2020-6-24 11:56 | 显示全部楼层
51黑  有你更精彩            
回复

使用道具 举报

ID:727465 发表于 2020-6-24 20:53 | 显示全部楼层

谢谢分享
回复

使用道具 举报

ID:786934 发表于 2020-6-24 21:23 | 显示全部楼层
我为什么打不开那个工程文件
回复

使用道具 举报

ID:623452 发表于 2020-6-27 00:09 | 显示全部楼层
问一下,在proteus仿真 adc  为啥会卡死!      while(ADC_GetResetCalibrationStatus(ADC1));       
回复

使用道具 举报

ID:712004 发表于 2020-6-29 10:48 | 显示全部楼层
打不开,别下载了,可惜我的积分
回复

使用道具 举报

ID:410541 发表于 2020-10-30 14:13 | 显示全部楼层
谢谢楼主分享啊,这个不错
回复

使用道具 举报

ID:688286 发表于 2020-12-21 12:41 | 显示全部楼层
@唐海 发表于 2020-6-15 09:29
有汉字显示的源码与仿真??

可以自己生成字库显示
回复

使用道具 举报

ID:872739 发表于 2021-1-3 19:34 | 显示全部楼层
怎么在Protuse里面找OLED
回复

使用道具 举报

ID:442274 发表于 2021-4-25 22:10 | 显示全部楼层
谢谢 很NICE
回复

使用道具 举报

ID:504404 发表于 2022-10-13 20:39 | 显示全部楼层
显示屏没现象...
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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