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

標(biāo)題: 基于STM32ZGT6的鬧鐘定時(shí)器程序 [打印本頁(yè)]

作者: 13277021098    時(shí)間: 2019-7-2 18:51
標(biāo)題: 基于STM32ZGT6的鬧鐘定時(shí)器程序
l基本要求:實(shí)現(xiàn)具備鬧鐘功能的電子鐘
使用STM32定時(shí)器功能實(shí)現(xiàn),禁止使用RTC
基于STM32開(kāi)發(fā)板和液晶屏幕實(shí)現(xiàn)功能
電子鐘具備時(shí)間顯示功能和鬧鐘功能
利用兩個(gè)可以控制的LED指示鬧鐘1和鬧鐘2的狀態(tài)
進(jìn)階要求:電子鐘時(shí)間和鬧鐘修改以及LED漸變
利用板載三個(gè)按鍵實(shí)現(xiàn)修改時(shí)間和鬧鐘設(shè)定時(shí)間功能
實(shí)現(xiàn)LED燈1和LED燈2在點(diǎn)亮和熄滅時(shí)的漸變效果

單片機(jī)源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "timer.h"
  6. #include "oled.h"
  7. #include "exti.h"
  8. #include "key.h"
  9. #include "pwm.h"
  10. struct time_format{
  11. short hour;
  12. short minute;
  13. short second;
  14. }time,alarm1,alarm2;
  15. extern short Flag_LED0_light;
  16. extern short Flag_LED1_light;
  17. extern void TIM14_PWM_Init(u32 arr,u32 psc);

  18. void OLED_update(struct time_format time,struct time_format alarm1,struct time_format alarm2)
  19. {
  20.                 OLED_Clear();

  21.                 OLED_ShowString(0,0,"Time");
  22.                 OLED_ShowString(0,2,"Alarm1");
  23.                 OLED_ShowString(0,4,"Alarm2");

  24.                 OLED_ShowNum(52,0,time.hour,2,16);
  25.                 OLED_ShowChar(67,0,':');
  26.                 OLED_ShowNum(74,0,time.minute,2,16);
  27.                 OLED_ShowChar(89,0,':');
  28.                 OLED_ShowNum(96,0,time.second,2,16);
  29.                
  30.                 OLED_ShowNum(52,2,alarm1.hour,2,16);
  31.                 OLED_ShowChar(67,2,':');
  32.                 OLED_ShowNum(74,2,alarm1.minute,2,16);
  33.                 OLED_ShowChar(89,2,':');
  34.                 OLED_ShowNum(96,2,alarm1.second,2,16);
  35.                
  36.                 OLED_ShowNum(52,4,alarm2.hour,2,16);
  37.                 OLED_ShowChar(67,4,':');
  38.                 OLED_ShowNum(74,4,alarm2.minute,2,16);
  39.                 OLED_ShowChar(89,4,':');
  40.                 OLED_ShowNum(96,4,alarm2.second,2,16);
  41. }

  42. void time_init()
  43. {
  44.         time.hour=22;
  45.         time.minute=33;
  46.         time.second=44;
  47.         /*
  48.         alarm1.hour=23;
  49.         alarm1.minute=00;
  50.         alarm1.second=00;
  51.        
  52.         alarm2.hour=01;
  53.         alarm2.minute=59;
  54.         alarm2.second=59;
  55.         */
  56.         alarm1.hour=22;
  57.         alarm1.minute=33;
  58.         alarm1.second=50;
  59.        
  60.         alarm2.hour=22;
  61.         alarm2.minute=33;
  62.         alarm2.second=55;
  63. }
  64. int time_compete(struct time_format time,struct time_format alarm)
  65. {
  66.         if(time.hour==alarm.hour&&time.minute==alarm.minute&&time.second==alarm.second)
  67.                 return 1;
  68.         else return 0;
  69.        
  70. }
  71. void time_update()
  72. {
  73.         if(time.second==60)
  74.         {
  75.                 time.minute++;
  76.                 time.second=00;
  77.                 if(time.minute==60)
  78.                 {
  79.                         time.minute=00;
  80.                         time.hour++;
  81.                         if(time.hour==24)
  82.                                 time.hour=0;
  83.                 }
  84.         }       
  85.         if(time.minute==60)
  86.                 {
  87.                         time.minute=00;
  88.                         time.hour++;
  89.                         if(time.hour==24)
  90.                                 time.hour=0;
  91.                 }
  92.         if(time.hour==24)
  93.                                 time.hour=0;

  94.        
  95.         if(alarm1.second==60)
  96.         {
  97.                 alarm1.minute++;
  98.                 alarm1.second=00;
  99.                 if(alarm1.minute==60)
  100.                 {
  101.                         alarm1.minute=00;
  102.                         alarm1.hour++;
  103.                         if(alarm1.hour==24)
  104.                                 alarm1.hour=0;
  105.                 }
  106.         }
  107.         if(alarm1.minute==60)
  108.                 {
  109.                         alarm1.minute=00;
  110.                         alarm1.hour++;
  111.                         if(alarm1.hour==24)
  112.                                 alarm1.hour=0;
  113.                 }
  114.         if(alarm1.hour==24)
  115.                         alarm1.hour=0;
  116.                
  117.        
  118.         if(alarm2.second==60)
  119.         {
  120.                 alarm2.minute++;
  121.                 alarm2.second=00;
  122.                 if(alarm2.minute==60)
  123.                 {
  124.                         alarm2.minute=00;
  125.                         alarm2.hour++;
  126.                         if(alarm2.hour==24)
  127.                                 alarm2.hour=0;
  128.                 }
  129.         }       
  130.         if(alarm2.minute==60)
  131.                 {
  132.                         alarm2.minute=00;
  133.                         alarm2.hour++;
  134.                         if(alarm2.hour==24)
  135.                                 alarm2.hour=0;
  136.                 }
  137.         if(alarm2.hour==24)
  138.                                 alarm2.hour=0;       
  139. }
  140. void LED_light(int a,int b)
  141. {
  142.         int t=0;
  143.         if(a==0)
  144.         {
  145.                 if(b==0)
  146.                 {
  147.                         t=0;
  148.                         while(t<25)
  149.                                 {
  150.                                         LED0=0;
  151.                                         delay_ms(t);
  152.                                         LED0=1;
  153.                                         delay_ms(25-t);
  154.                                         t++;
  155.                                 }
  156.                                 LED0=0;
  157.                 }
  158.                 else
  159.                 {
  160.                         t=25;
  161.                         while(t>0)
  162.                                 {
  163.                                         LED0=0;
  164.                                         delay_ms(t);
  165.                                         LED0=1;
  166.                                         delay_ms(25-t);
  167.                                         t--;
  168.                                 }
  169.                                 LED0=1;
  170.                 }
  171.         }
  172.         else
  173.         {
  174.                 if(b==0)
  175.                 {
  176.                         t=0;
  177.                         while(t<25)
  178.                                 {
  179.                                         LED1=0;
  180.                                         delay_ms(t);
  181.                                         LED1=1;
  182.                                         delay_ms(25-t);
  183.                                         t++;
  184.                                 }
  185.                                 LED1=0;
  186.                 }
  187.                 else
  188.                 {
  189.                         t=25;
  190.                         while(t>0)
  191.                                 {
  192.                                         LED1=0;
  193.                                         delay_ms(t);
  194.                                         LED1=1;
  195.                                         delay_ms(25-t);
  196.                                         t--;
  197.                                 }
  198.                                 LED1=1;
  199.                 }
  200.         }       
  201. }
  202. void LED_light_pwm(int a,int b)
  203. {
  204.         u16 led0pwmval=0;   
  205.         if(a==0)
  206.         {
  207.                 if(b==0)
  208.                 {
  209.                         led0pwmval=500;
  210.                         while(led0pwmval>0)
  211.                         {
  212.                                 delay_ms(10);
  213.                                 led0pwmval--;
  214.                                 TIM_SetCompare1(TIM14,led0pwmval);
  215.                         }
  216.                 }
  217.                 else
  218.                 {
  219.                         led0pwmval=0;
  220.                         while(led0pwmval<500)
  221.                         {
  222.                                 delay_ms(10);
  223.                                 led0pwmval++;
  224.                                 TIM_SetCompare1(TIM14,led0pwmval);
  225.                         }
  226.                 }
  227.         }
  228.         else
  229.         {
  230.                 if(b==0)
  231.                 {
  232.                        
  233.                 }
  234.                 else
  235.                 {
  236.                        
  237.                 }
  238.         }
  239. }
  240. int main(void)
  241. {
  242.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
  243.         delay_init(168);  //初始化延時(shí)函數(shù)
  244.         uart_init(115200);         //串口初始化
  245.         LED_Init();                //初始化LED端口
  246.         EXTIX_Init();       //初始化外部中斷輸入
  247.         time_init();//時(shí)間變量賦初值
  248.         OLED_Init();//OLED初始化
  249.         OLED_update(time,alarm1,alarm2);
  250.         TIM3_Int_Init(10000-1,8400-1);        //定時(shí)器時(shí)鐘84M,分頻系數(shù)8400,所以84M/8400=10Khz的計(jì)數(shù)頻率
  251.         TIM14_PWM_Init(500-1,84-1);        //84M/84=1Mhz的計(jì)數(shù)頻率,重裝載值500,所以PWM頻率為 1M/500=2Khz.
  252.         GPIO_SetBits(GPIOF,GPIO_Pin_9);//GPIOF9,F10設(shè)置高,燈滅
  253.         while(1)
  254.         {
  255.                 if(Flag_LED0_light==0)
  256.                 {
  257.                         LED_light_pwm(0,0);
  258.                         GPIO_SetBits(GPIOF,GPIO_Pin_9);//GPIOF9,F10設(shè)置高,燈滅
  259.                         LED0=0;
  260.                         Flag_LED0_light=-1;
  261.                 }
  262.                 if(Flag_LED0_light==1)
  263.                 {
  264.                         LED_light_pwm(0,1);
  265.                         Flag_LED0_light=-1;
  266.                 }
  267.                 if(Flag_LED1_light==0)
  268.                 {
  269.                         LED_light(1,0);
  270.                         Flag_LED1_light=-1;
  271.                 }
  272.                 if(Flag_LED1_light==1)
  273.                 {
  274.                         LED_light(1,1);
  275.                         Flag_LED1_light=-1;
  276.                 }       
  277.                 if(USART_RX_STA&0x8000)
  278.                 {
  279.                         u8 len=USART_RX_STA&0x3fff;//得到此次接收到的數(shù)據(jù)長(zhǎng)度
  280.                         //USART_RX_BUF
  281.                         if(strstr((const char*)USART_RX_BUF,"set"))
  282.                         {
  283.                                 time.hour=(USART_RX_BUF[4]-48)*10+USART_RX_BUF[5]-48;
  284.                                 time.minute=(USART_RX_BUF[7]-48)*10+USART_RX_BUF[8]-48;
  285.                                 time.second=(USART_RX_BUF[10]-48)*10+USART_RX_BUF[11]-48;
  286.                                 printf("OK!\r\n");
  287.                         }
  288.                         USART_RX_STA=0;
  289.                 }
  290.         }
  291. }
復(fù)制代碼
程序:
程序.7z (311.34 KB, 下載次數(shù): 26)


作者: admin    時(shí)間: 2019-7-5 04:32
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久久久国产精品午夜一区 | 在线久草| 亚洲一区在线日韩在线深爱 | 精品国产乱码久久久久久影片 | 性欧美精品一区二区三区在线播放 | 精品亚洲一区二区三区 | 久久亚洲国产精品 | 天天操夜夜拍 | 日韩成人在线播放 | 国产高清视频在线观看 | 草久在线视频 | 精品国产一区二区三区久久影院 | 国户精品久久久久久久久久久不卡 | 久久久久久久一区 | 中文字幕在线一区二区三区 | 中文字幕免费视频 | 日韩一二三 | 精品欧美一区二区三区久久久 | 色妞av| 亚洲成人免费电影 | 久久久国产一区二区三区 | 天天影视网天天综合色在线播放 | 97免费在线观看视频 | 日本精品视频 | 91精品成人久久 | 欧美视频免费在线观看 | 久久精品中文字幕 | 国产欧美日韩久久久 | 婷婷综合网| 在线国产视频观看 | 欧美国产亚洲一区二区 | 久久国产成人 | 女人牲交视频一级毛片 | 久久五月婷 | av中文字幕在线观看 | 欧美啪啪| 久国产 | 日韩成人在线网址 | 精品不卡 | 国产一区久久久 | 国产日韩视频 |