久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4133|回復: 3
打印 上一主題 下一主題
收起左側

Proteus8.9仿真STM32F103 ADC源程序

[復制鏈接]
跳轉到指定樓層
樓主
使用Proteus8.9仿真STM32F103 ADC的項目文件,大家一起探討。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

keil項目文件proteus文件

單片機源程序如下:
  1. /*******************************************************************************
  2. *       
  3. * 軟件功能:         GPIO閃燈實驗(軟件延時方式)
  4. *
  5. *******************************************************************************/
  6. #include "stm32f10x.h"
  7. #include <stdio.h>
  8. #include <string.h>           // 加入此頭文件后,可使用strstr庫函數
  9. #include <stdlib.h>
  10. #include <stdint.h>
  11. #include "led.h"
  12. #include "key.h"
  13. #include "usart.h"
  14. #include "timer.h"
  15. #include "adc.h"

  16. u8 adcflag;
  17. void RCC_Configuration(void)
  18. {
  19. //  ErrorStatus HSEStartUpStatus;                    //定義外部高速晶體啟動狀態枚舉變量
  20.   RCC_DeInit();                                    //復位RCC外部設備寄存器到默認值
  21.   //RCC_HSEConfig(RCC_HSE_ON);                       //打開外部高速晶振
  22.   //HSEStartUpStatus = RCC_WaitForHSEStartUp();      //等待外部高速時鐘準備好
  23. // if(HSEStartUpStatus == SUCCESS)                  //外部高速時鐘已經準別好
  24. // {
  25.     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //開啟FLASH預讀緩沖功能,加速FLASH的讀取。所有程序中必須的用法.位置:RCC初始化子函數里面,時鐘起振之后
  26.     FLASH_SetLatency(FLASH_Latency_2);                    //flash操作的延時
  27.              
  28.     RCC_HCLKConfig(RCC_SYSCLK_Div1);               //配置AHB(HCLK)時鐘等于==SYSCLK
  29.     RCC_PCLK2Config(RCC_HCLK_Div1);                //配置APB2(PCLK2)鐘==AHB時鐘
  30.     RCC_PCLK1Config(RCC_HCLK_Div2);                //配置APB1(PCLK1)鐘==AHB1/2時鐘
  31.          
  32.     RCC_PLLConfig(RCC_PLLSource_HSI_Div2 , RCC_PLLMul_2);  //配置PLL時鐘 == 外部高速晶體時鐘 * 9 = 72MHz
  33.     RCC_PLLCmd(ENABLE);                                   //使能PLL時鐘
  34.    
  35.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)    //等待PLL時鐘就緒
  36.     {
  37.     }
  38.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);            //配置系統時鐘 = PLL時鐘
  39.     while(RCC_GetSYSCLKSource() != 0x08)                  //檢查PLL時鐘是否作為系統時鐘
  40.     {
  41.     }
  42. // }
  43.   
  44.   
  45. }

  46. void NVIC_Configuration(void)
  47. {
  48.     NVIC_InitTypeDef NVIC_InitStructure;
  49.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  50.    
  51.     NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;
  52.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;
  53.     NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;
  54.     NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;
  55.     NVIC_Init(&NVIC_InitStructure);
  56.    
  57.     NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
  58.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;
  59.     NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;
  60.     NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;
  61.     NVIC_Init(&NVIC_InitStructure);
  62.    
  63.     NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
  64.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;
  65.     NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;
  66.     NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;
  67.     NVIC_Init(&NVIC_InitStructure);
  68. }

  69. void EXTI_Configuration(void)
  70. {
  71.     EXTI_InitTypeDef EXTI_InitStructure;
  72.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  
  73.     EXTI_InitStructure.EXTI_Line= EXTI_Line4;
  74.     EXTI_InitStructure.EXTI_LineCmd=ENABLE;
  75.     EXTI_InitStructure.EXTI_Mode= EXTI_Mode_Interrupt;
  76.     EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;   
  77.    
  78.     EXTI_Init(&EXTI_InitStructure);
  79.     EXTI_ClearITPendingBit(EXTI_Line4);
  80.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource4);
  81. }  

  82. void EXTI4_IRQHandler(void)
  83. {
  84.     if(EXTI_GetFlagStatus(EXTI_Line4)!=RESET)
  85.     {
  86.         if(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_15)==0)
  87.         {
  88.             GPIO_SetBits(GPIOC,GPIO_Pin_15);      
  89.         }
  90.         else
  91.         {
  92.             GPIO_ResetBits(GPIOC,GPIO_Pin_15);  
  93.         }
  94.     }
  95. //   EXTI_ClearFlag(EXTI_Line4);
  96.     EXTI_ClearITPendingBit(EXTI_Line4);
  97. }
  98. /*************************************************
  99. 函數: void GPIO_Configuration(void)
  100. 功能: GPIO配置
  101. 參數: 無
  102. 返回: 無
  103. **************************************************/
  104. void GPIO_Configuration(void)
  105. {
  106.   GPIO_InitTypeDef GPIO_InitStructure;        //定義GPIO初始化結構體
  107.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA,ENABLE);  
  108.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15  ;
  109.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  110.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  111.   GPIO_Init(GPIOC, &GPIO_InitStructure);
  112.    
  113.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5  ;
  114.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  115.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  116.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  117. }


  118. void delay(u32 tim)
  119. {
  120.     for(;tim>0;tim--);
  121. }

  122. void delay_ms(u32 tim)
  123. {
  124.     u16 i;
  125.     for(;tim>0;tim--)
  126.     {
  127.       for(i=2500;i>0;i--);      
  128.     }
  129. }
  130. /*************************************************
  131. 函數: int main(void)
  132. 功能: main主函數
  133. 參數: 無
  134. 返回: 無
  135. **************************************************/
  136. int main(void)
  137. {
  138. u16 keytemp;
  139.     char buf[32];
  140.     char readbuf[32];
  141.         uint16_t advalue,temp;
  142.     float voltage;
  143.     //RCC_Configuration();
  144.     RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);   
  145.     GPIO_Configuration();
  146.     NVIC_Configuration();
  147.     EXTI_Configuration();
  148.     USART1_Configuration();
  149.     TIMER2_Configuration();
  150.     ADC_Configuration();
  151.     ledinit();
  152.     keyinit();
  153.     USART_SendData(USART1,'A');
  154.     delay_ms(10);
  155.    
  156.   while(1)
  157.   {
  158.       keytemp =keyscan();
  159.       switch(keytemp)
  160.       {
  161.           case 1:
  162.               led(1,ON);
  163.                led(2,OFF);
  164.           break;
  165.           case 2:
  166.               led(2,ON);
  167.                led(1,OFF);
  168.           break;
  169.           case 3:
  170.               led(1,ON);
  171.                led(2,ON);
  172.           break;
  173.           default:
  174.             led1off();
  175.             led2off();              
  176.           break;
  177.       }
  178.       if(adcflag)
  179.       {
  180.         adcflag =0;
  181.         memset(buf, 0, 32);  
  182.         memset(readbuf, 0, 32);
  183.         ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //軟件啟動ADC轉換
  184.         //while(ADC_GetITStatus(ADC1,ADC_IT_EOC) == RESET);
  185.         delay(100000);
  186.         GPIO_ResetBits(GPIOC,GPIO_Pin_13);
  187.         advalue = ADC_GetConversionValue(ADC1);
  188.         advalue &=0x0FFF;
  189.         GPIO_ResetBits(GPIOC,GPIO_Pin_14);
  190.         voltage =(float)advalue*(5000/4096.0);
  191.         advalue = (uint16_t)voltage;
  192.         temp = advalue/1000;
  193.         printf("ADC Result:%d",temp);
  194.         temp= advalue%1000;
  195.         printf(".%d V\r\n",temp);
  196.       }
  197.         }   
  198. }
復制代碼

Keil5代碼與Proteus8.9仿真下載:
仿真程序.7z (242.31 KB, 下載次數: 185)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:137736 發表于 2022-9-1 19:40 | 只看該作者
很好,終于找到了,謝謝分享。
回復

使用道具 舉報

板凳
ID:123925 發表于 2022-9-6 23:17 | 只看該作者
哪個版本運行
回復

使用道具 舉報

地板
ID:262 發表于 2022-9-7 01:44 | 只看該作者

我沒有作者說的8.9版本 用8.8的效果如下

51hei.gif (59.24 KB, 下載次數: 63)

51hei.gif
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 先锋av资源网 | 精品欧美久久 | 我想看一级黄色毛片 | 四虎影视免费在线 | 亚洲电影成人 | 久久精品电影 | 操视频网站 | 日韩一区二区三区视频在线播放 | 国产你懂的在线观看 | 成人一级黄色毛片 | 久久精品视频免费观看 | 一区二区三区av | 亚洲免费在线观看 | 91精品国模一区二区三区 | 午夜成人在线视频 | 在线色网 | 免费精品久久久久久中文字幕 | 日韩不卡一区二区 | 日韩欧美一区二区三区免费观看 | 综合色播 | 日本一区二区三区视频在线 | 日韩精品一区二区三区视频播放 | 精品二区| 久久伊人精品一区二区三区 | 欧美激情久久久 | 日韩中文字幕一区二区 | 国产乱码高清区二区三区在线 | www.日本在线 | 国产精品乱码一区二区三区 | 国产高清视频在线观看播放 | 6080亚洲精品一区二区 | 欧美久久影院 | 欧美在线观看一区 | 亚洲国产精品久久久久婷婷老年 | 亚洲国产黄 | 亚洲自拍偷拍免费视频 | 中文字幕日韩一区 | 国产欧美在线观看 | 亚洲视频在线一区 | 亚洲精品久久久一区二区三区 | 亚洲精品v日韩精品 |