找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5209|回复: 2
收起左侧

stm8s驱动ht1621液晶程序 带蜂鸣器

[复制链接]
ID:94349 发表于 2015-11-2 14:57 | 显示全部楼层 |阅读模式
  1. #include "stm8s.h"
  2. #include "ht1621.h"

  3. unsigned char const smg_number[10]={0xaf,0x06,0xcb,0x4f,0x66,0x6d,0xed,0x07,0xef,0x6f};//0123456789
  4. unsigned char Hour2,Hour1,Min1,Min2,Sec2,Sec1;
  5. unsigned char Hour,Min,Sec,ST_Sec,ST_flag,ST_fig;
  6. unsigned char Half_SecFlag=1,Key_exit_fig,SecFlag;
  7. unsigned char Key_Count,Key_flag,Key_long_flag,Key_fig;
  8. extern unsigned int count2;
  9. extern unsigned char Key_mode;
  10. void Data_process(void)
  11. {
  12.   Hour2=Hour/10;
  13.   Hour1=Hour%10;
  14.   Min2=Min/10;
  15.   Min1=Min%10;
  16.   Sec2=Sec/10;
  17.   Sec1=Sec%10;
  18. }
  19. void Display(void)
  20. {
  21.   Ht1621WrOneNum(9,smg_number[Sec2]);Ht1621WrOneNum(12,smg_number[Sec1]);  
  22.   Ht1621WrOneNum(6,smg_number[Min1]);
  23.   if(Half_SecFlag)
  24.   {
  25.     Ht1621WrOneData(8,0);
  26.   }
  27.   else
  28.   {
  29.     Ht1621WrOneData(8,0x04);//col
  30.   }
  31.   if(Min2==0)
  32.   {
  33.     Ht1621WrOneNum(4,0);
  34.   }
  35.   else
  36.   {
  37.     Ht1621WrOneNum(4,smg_number[Min2]);
  38.   }
  39.   if(ST_flag)
  40.   {
  41.     Ht1621WrCmd(LCDOFF);ST_flag=0;GPIO_WriteLow(GPIOB, GPIO_PIN_3);
  42.     halt();
  43.   }  
  44. }

  45. void GPIO_int(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_IT);
  51.   EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);
  52. }
  53. void TIM4_int(void)
  54. {
  55.   //TIM4_TimeBaseInit(TIM4_PRESCALER_128, 77);//5ms
  56.   TIM4_TimeBaseInit(TIM4_PRESCALER_128, 15);//1ms
  57.   TIM4_ClearFlag(TIM4_FLAG_UPDATE);
  58.   TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  59.   TIM4_Cmd(ENABLE);
  60. }
  61. void TIM1_int(void)
  62. {
  63.   TIM1_TimeBaseInit(19, TIM1_COUNTERMODE_UP, 50000, 0);//500ms
  64.   TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);
  65.   TIM1_GenerateEvent(TIM1_EVENTSOURCE_UPDATE);
  66.   //TIM1_Cmd(ENABLE);
  67. }
  68. void Beep_int(void)
  69. {
  70.   BEEP_DeInit();
  71.   BEEP_LSICalibrationConfig(128000);
  72.   BEEP_Init(BEEP_FREQUENCY_2KHZ);
  73. }
  74. void main(void)
  75. {
  76.   /* Infinite loop */
  77.   GPIO_int();
  78.   Ht1621_Init();
  79.   Ht1621_all_on();
  80.   GPIO_WriteHigh(GPIOB, BackLight);
  81.   Half_SecFlag=1;//ST_fig=1;
  82.   TIM4_int();
  83.   TIM1_int();
  84.   Beep_int();BEEP_Cmd(ENABLE);Ht1621_all_on();
  85.   rim();
  86.   while (1)
  87.   {
  88.     if(ST_fig==1)
  89.     {
  90.       ST_fig=0;
  91.       Ht1621_all_off();
  92.       BEEP_Cmd(DISABLE);
  93.     }
  94.     if(Key_flag==1)
  95.     {
  96.       TIM1_Cmd(ENABLE);
  97.       ST_Sec=0;
  98.       count2=0;
  99.     }
  100.     if(Key_flag==2)
  101.     {
  102.       TIM1_Cmd(DISABLE);
  103.       Half_SecFlag=0;//COL
  104.       ST_Sec=0;
  105.       Key_flag=0;
  106.     }
  107.     /*if(Key_long_flag==1)
  108.     {
  109.       //Beep_int();
  110.       BEEP_Cmd(ENABLE);Ht1621_all_on();TIM4_int();
  111.       TIM1_int();
  112.       if(ST_fig==1)
  113.       {
  114.         ST_fig=0;
  115.         Ht1621_all_off();Min=0;Sec=0;
  116.         BEEP_Cmd(DISABLE);
  117.       }
  118.     }*/
  119.     Display();Data_process();
  120.   }
  121. }

  122. #ifdef USE_FULL_ASSERT

  123. /**
  124.   * @brief  Reports the name of the source file and the source line number
  125.   *   where the assert_param error has occurred.
  126.   * @param file: pointer to the source file name
  127.   * @param line: assert_param error line source number
  128.   * @retval : None
  129.   */
  130. void assert_failed(u8* file, u32 line)
  131. {
  132.   /* User can add his own implementation to report the file name and line number,
  133.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  134.   /* Infinite loop */
  135.   while (1)
  136.   {
  137.   }
  138. }
  139. #endif


  140. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

  141. /unsigned int count=0;unsigned char BSec;
  142.   extern unsigned char SecFlag,Key_Flag,Key_Flag2,Key_long_flag;
  143.   extern unsigned char Hour,Min,Sec,ST_Sec,ST_flag,ST_fig,Key_flag,Key_fig;
  144.   unsigned int Key_cnt,Key_mode,Beep_fig;
  145. INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
  146. {
  147.    TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
  148.     if (GPIO_ReadInputPin(GPIOC, GPIO_PIN_1)== RESET)  
  149.      {
  150.         Key_cnt++;
  151.         if(Key_cnt==20)//20ms
  152.         {
  153.           Key_mode++;Beep_fig=50;Key_fig=1;
  154.           if(Key_mode==1)
  155.           {
  156.             ST_flag=0;Key_flag=1;
  157.           }
  158.           if(Key_mode==2)
  159.           {
  160.             Key_mode=0;ST_flag=0;
  161.             Key_flag=2;
  162.           }
  163.         }
  164.         if(Key_cnt>=3*1000)//4s200*5
  165.         {
  166.           if(Key_cnt>4000)//800*5
  167.             Key_long_flag=1;
  168.             Key_flag=0;Key_fig=0;Key_mode=0;//TIM4_Cmd(DISABLE);
  169.             BEEP_Cmd(ENABLE);Ht1621_all_on();Min=0;Sec=0;ST_Sec=0;
  170.             if(ST_fig==1)
  171.             {
  172.               ST_fig=0;//TIM4_Cmd(ENABLE);
  173.               Ht1621_all_off();Min=0;Sec=0;
  174.               BEEP_Cmd(DISABLE);Display();
  175.             }
  176.         }
  177.       }
  178.     else
  179.     {Key_cnt=0;Key_long_flag=0;}
  180.     if(Key_fig)
  181.     {
  182.       if(Beep_fig)
  183.       {
  184.         BEEP_Cmd(ENABLE);
  185.         Beep_fig--;
  186.       }
  187.       else //(!Beep_fig)
  188.       {
  189.         BEEP_Cmd(DISABLE);
  190.         Beep_fig=0;
  191.       }
  192.     }
  193.     if(Key_flag==0)
  194.     {
  195.       count2++;
  196.       if(count2==1000)
  197.       {
  198.         count2=0;ST_Sec++;
  199.         if(ST_Sec==2)
  200.         {
  201.           ST_fig=1;
  202.         }
  203.         if(ST_Sec==10)
  204.         {
  205.           ST_Sec=0;ST_flag=1;
  206.         }
  207.       }
  208.    
  209.     }
  210.    
  211.    
  212. }
复制代码


回复

使用道具 举报

ID:166284 发表于 2020-8-14 15:06 | 显示全部楼层
大哥 你这个 #include "ht1621.h" 头文件呢?
回复

使用道具 举报

ID:839438 发表于 2020-11-26 09:47 | 显示全部楼层
没有看到ht1621初始化程序
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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