- #include "stm8s.h"
- #include "ht1621.h"
- unsigned int Beep;
- unsigned char flag;
- unsigned int value,value_1;
- unsigned char const smg_number[10]={0xaf,0x06,0xcb,0x4f,0x66,0x6d,0xed,0x07,0xef,0x6f};//0123456789
- void Delay_ms(u16 ms)
- {
- while(ms!=0)
- {
- ms--;
- }
- }
- void Tim2_init(void)
- {
- TIM2_TimeBaseInit(TIM2_PRESCALER_32, 31250);//500MS
- TIM2_ARRPreloadConfig(ENABLE);
- TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);
- TIM2_Cmd(ENABLE);
- }
- void Tim4_init(void)
- {
- TIM4_TimeBaseInit(TIM4_PRESCALER_128, 77);//5ms
- //TIM4_ClearFlag(TIM4_FLAG_UPDATE);
- TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
- TIM4_Cmd(ENABLE);
- }
- void Tim1_init(void)
- {
- TIM1_TimeBaseInit(19, TIM1_COUNTERMODE_UP, 50000, 0);//500ms
- TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);
- TIM1_ARRPreloadConfig(ENABLE);
- TIM1_GenerateEvent(TIM1_EVENTSOURCE_UPDATE);
- TIM1_Cmd(ENABLE);
- }
- void Adc1_init(void)
- {
- ADC1_DeInit();
- ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_0, ADC1_PRESSEL_FCPU_D18, ADC1_EXTTRIG_TIM, ENABLE, ADC1_ALIGN_RIGHT,
- ADC1_SCHMITTTRIG_CHANNEL0, DISABLE);
- ADC1_ITConfig(ADC1_IT_EOCIE, DISABLE);
- ADC1_Cmd(ENABLE);
- ADC1_StartConversion();
- }
- void Gpio_init(void)
- {
- GPIO_Init(GPIOB, GPIO_PIN_HNIB, GPIO_MODE_OUT_PP_HIGH_FAST);
- GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
- GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);
- GPIO_Init(GPIOC, GPIO_PIN_LNIB, GPIO_MODE_IN_PU_NO_IT);
- GPIO_Init(GPIOG, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
- GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);
- }
- void Beep_int(void)
- {
- BEEP_DeInit();
- BEEP_LSICalibrationConfig(128000);
- BEEP_Init(BEEP_FREQUENCY_2KHZ);
- }
- void Bp_Buz(void)
- {
- if(Beep!=0)
- {
- Beep--;
- BEEP_Cmd(ENABLE);
- }
- else
- {
- BEEP_Cmd(DISABLE);
- }
- }
- void ADC_Value(u16 value)
- {
- value_1=(unsigned int)value*0.4888;
- Ht1621WrOneNum(4,smg_number[value_1/1000]);
- Ht1621WrOneNum(6,smg_number[value_1%1000/100]);
- Ht1621WrOneData(8,0x08);
- Ht1621WrOneNum(9,smg_number[value_1%100/10]);
- Ht1621WrOneNum(12,smg_number[value_1%10]);
- }
- void main(void)
- {
- /* Infinite loop */
- Gpio_init();
- Ht1621_Init();
- Adc1_init();
- Tim1_init();
- //Tim2_init();
- //Tim4_init();
- Ht1621_all_off();
- GPIO_WriteHigh(GPIOB, GPIO_PIN_3);
- Delay_ms(0xffff);
- Delay_ms(0xffff);
- Delay_ms(0xffff);
- //Beep_int();
- rim();
-
- while (1)
- {
- //if((smg_number[value%1000/100]==0xaf)&&(smg_number[value%100/10]==0xaf))
- if(((value_1%1000/100)==0)&&((value_1%100/10)==0)&&((value_1%10)==0))
- {
- GPIO_WriteHigh(GPIOB, GPIO_PIN_3);
- GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);
- GPIO_Init(GPIOG, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);
- }
- //if(((value_1%1000/100)==4)&&((value_1%100/10)==9)&&((value_1%10)==9))
- else
- {
- GPIO_WriteLow(GPIOB, GPIO_PIN_3);
- GPIO_Init(GPIOG, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
- GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);
-
- }
- unsigned int count;
- u16 u16_adc1_value;
- extern unsigned int Beep;
- INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)
- {
- /* In order to detect unexpected events during development,
- it is recommended to set a breakpoint on the following instruction.
- */
- //u16 u16_adc1_value;
- flag!=flag;
- u16_adc1_value = ADC1_GetConversionValue();
- Delay_ms(0xffff); Delay_ms(0xffff);
- ADC_Value(u16_adc1_value);
- TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
- //TIM1_ClearFlag(TIM1_FLAG_UPDATE);
-
- }
復制代碼
|