找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STM8 AD转换程序

[复制链接]
跳转到指定楼层
楼主
ID:94349 发表于 2015-11-2 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "stm8s.h"
  2. #include "ht1621.h"

  3. unsigned int Beep;
  4. unsigned char flag;
  5. unsigned int value,value_1;
  6. unsigned char const smg_number[10]={0xaf,0x06,0xcb,0x4f,0x66,0x6d,0xed,0x07,0xef,0x6f};//0123456789


  7. void Delay_ms(u16 ms)
  8. {
  9.   while(ms!=0)
  10.   {
  11.     ms--;
  12.   }
  13. }

  14. void Tim2_init(void)
  15. {
  16.   TIM2_TimeBaseInit(TIM2_PRESCALER_32, 31250);//500MS
  17.   TIM2_ARRPreloadConfig(ENABLE);
  18.   TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);
  19.   TIM2_Cmd(ENABLE);
  20. }
  21. void Tim4_init(void)
  22. {
  23.   TIM4_TimeBaseInit(TIM4_PRESCALER_128, 77);//5ms
  24.   //TIM4_ClearFlag(TIM4_FLAG_UPDATE);
  25.   TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  26.   TIM4_Cmd(ENABLE);
  27. }
  28. void Tim1_init(void)
  29. {
  30.   TIM1_TimeBaseInit(19, TIM1_COUNTERMODE_UP, 50000, 0);//500ms
  31.   TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);
  32.   TIM1_ARRPreloadConfig(ENABLE);
  33.   TIM1_GenerateEvent(TIM1_EVENTSOURCE_UPDATE);
  34.   TIM1_Cmd(ENABLE);
  35. }


  36. void Adc1_init(void)
  37. {
  38. ADC1_DeInit();
  39. ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_0, ADC1_PRESSEL_FCPU_D18, ADC1_EXTTRIG_TIM, ENABLE, ADC1_ALIGN_RIGHT,
  40.           ADC1_SCHMITTTRIG_CHANNEL0, DISABLE);
  41. ADC1_ITConfig(ADC1_IT_EOCIE, DISABLE);
  42. ADC1_Cmd(ENABLE);
  43. ADC1_StartConversion();

  44. }

  45. void Gpio_init(void)
  46. {
  47.   GPIO_Init(GPIOB, GPIO_PIN_HNIB, GPIO_MODE_OUT_PP_HIGH_FAST);
  48.   GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
  49.   GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);
  50.   GPIO_Init(GPIOC, GPIO_PIN_LNIB, GPIO_MODE_IN_PU_NO_IT);
  51.   GPIO_Init(GPIOG, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
  52.   GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);
  53. }
  54. void Beep_int(void)
  55. {
  56.   BEEP_DeInit();
  57.   BEEP_LSICalibrationConfig(128000);
  58.   BEEP_Init(BEEP_FREQUENCY_2KHZ);
  59. }

  60. void Bp_Buz(void)
  61. {
  62.   if(Beep!=0)
  63.   {
  64.     Beep--;
  65.     BEEP_Cmd(ENABLE);
  66.   }
  67.   else
  68.   {
  69.     BEEP_Cmd(DISABLE);
  70.   }  
  71. }

  72. void ADC_Value(u16 value)
  73. {
  74.     value_1=(unsigned int)value*0.4888;
  75.     Ht1621WrOneNum(4,smg_number[value_1/1000]);
  76.     Ht1621WrOneNum(6,smg_number[value_1%1000/100]);
  77.     Ht1621WrOneData(8,0x08);
  78.     Ht1621WrOneNum(9,smg_number[value_1%100/10]);
  79.     Ht1621WrOneNum(12,smg_number[value_1%10]);
  80. }

  81. void main(void)
  82. {
  83.   /* Infinite loop */
  84.   Gpio_init();
  85.   Ht1621_Init();
  86.   Adc1_init();
  87.   Tim1_init();
  88.   //Tim2_init();
  89.   //Tim4_init();
  90.   Ht1621_all_off();
  91.   GPIO_WriteHigh(GPIOB, GPIO_PIN_3);
  92.   Delay_ms(0xffff);
  93.   Delay_ms(0xffff);
  94.   Delay_ms(0xffff);
  95.   //Beep_int();
  96.   rim();
  97.   
  98.   while (1)
  99.   {  
  100.     //if((smg_number[value%1000/100]==0xaf)&&(smg_number[value%100/10]==0xaf))
  101.     if(((value_1%1000/100)==0)&&((value_1%100/10)==0)&&((value_1%10)==0))
  102.     {
  103.       GPIO_WriteHigh(GPIOB, GPIO_PIN_3);
  104.       GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);
  105.       GPIO_Init(GPIOG, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);
  106.     }
  107.     //if(((value_1%1000/100)==4)&&((value_1%100/10)==9)&&((value_1%10)==9))
  108.     else
  109.     {
  110.       GPIO_WriteLow(GPIOB, GPIO_PIN_3);
  111.       GPIO_Init(GPIOG, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
  112.       GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);
  113.       
  114.     }


  115. unsigned int count;
  116. u16 u16_adc1_value;
  117. extern unsigned int Beep;
  118. INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)
  119. {
  120.   /* In order to detect unexpected events during development,
  121.      it is recommended to set a breakpoint on the following instruction.
  122.   */
  123.    //u16 u16_adc1_value;
  124.    flag!=flag;
  125.    u16_adc1_value = ADC1_GetConversionValue();
  126.    Delay_ms(0xffff); Delay_ms(0xffff);
  127.    ADC_Value(u16_adc1_value);
  128.    TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
  129.   //TIM1_ClearFlag(TIM1_FLAG_UPDATE);
  130.       
  131. }
复制代码


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

使用道具 举报

沙发
ID:500472 发表于 2019-3-30 12:02 | 只看该作者
STM8 AD转换程序
回复

使用道具 举报

板凳
ID:472506 发表于 2019-4-2 08:28 | 只看该作者
学习中,参考参考。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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