求解析-时钟、流水灯,LED调光等自定功能的代码注释

2019-07-14 23:37发布

要求是这三个,我不懂代码为何这样写。求详细解释。。。
1、能用1602或数码管显示阵列键盘键码,能用按键控制8个LED灯亮灭、蜂鸣器开关。
2、时钟、流水灯,LED调光等自定功能
3、自定要求设计一个简易频率计
#include"STM32f10x.h"#include"delay.h"#include"sys.h"#include"usart.h"#include "display.h"#include "lcd.h"#include "led.h"#include "catch.h"#include "key.h"#include "beep.h"#include "rtc.h" #include"pwm.h"#include "24cxx.h" #include "myiic.h"extern unsigned char digit[] ;u8 key;u16 LED = 0xffff  ; //控制times New Roman">LED灯的亮和灭u16 ZKB1 = 3000 ;int main(void)         {                u8 mode = 1 ;                         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级    uart_init(9600);         //串口初始化为9600                 delay_init();                     //延时函数初始化        TIM4_Cap_Init(0XFFFF,72-1);        //1Mhz的频率计数         TIM2_PWM_Init(7119,0) ;        //设置周期           72KHZ        AT24CXX_Init();  //        24C02初始化        LED_Init();    //LED灯的初始化         LcdInit() ; //LCD1602的初始化        KeyInit() ; //按键的初始化         BeepInit() ; //蜂鸣器的初始化        RTC_Init();                                  //RTC初始化          while(1)        {                                if(mode==1)                {                        LcdWrite(0,0x01);//清零,指针指到屏幕左上角                        Display_menu1() ; //显示菜单 1                        TIM_Cmd(TIM4,DISABLE);         //使能定时器4                        while(1)                        {                                key = KeyScan()         ;                                if(key==3)                                {                                        LED = ~LED ;                                          Lcd_Write_Char(2,5,digit[key]) ;                                                }                                if(key==4)                                {                                        BEEP = 0 ;           //蜂鸣器响200ms                                        delay_ms(200) ;                                        BEEP = 1 ;                                         Lcd_Write_Char(2,5,digit[key]) ;                                                }                                LedDisplay(LED) ;
                                delay_ms(100) ;                                if(key==1)                                {                                        mode = 2 ;                                        TIM_Cmd(TIM4,ENABLE );         //使能定时器4                                        break;                                }                        }                }//*****************************************************8        if(mode==2)                {                        LcdWrite(0,0x01);//清零,指针指到屏幕左上角                        Display_menu2() ;                        TIM_Cmd(TIM4,DISABLE);         //使能定时器4                        while(1)                        {                                key = KeyScan()         ;                                Display_Time() ; //RTC时间的显示                                                                delay_ms(100) ;                                if(key==1)                                {                                        mode = 3 ;                                        TIM_Cmd(TIM4,ENABLE );         //使能定时器4                                        break;                                }                        }                }//*****************************************************8        if(mode==3)                {                        LcdWrite(0,0x01);//清零,指针指到屏幕左上角                        Display_menu3() ;                        TIM_Cmd(TIM4,ENABLE);         //使能定时器4                        while(1)                        {                                key = KeyScan()         ;                                 Display_Catch() ;                                delay_ms(50) ;                                if(key==1)                                {                                        mode = 4 ;                                        TIM_Cmd(TIM4,DISABLE);         //使能定时器4                                        break;                                }                        }                }                //*****************************************************8                if(mode==4)                {                        LcdWrite(0,0x01);//清零,指针指到屏幕左上角                        Display_menu4() ;                        TIM_Cmd(TIM2,ENABLE);         //使能定时器4                        while(1)                        {                                key = KeyScan()         ; //                                Display_XZ() ;  //流水灯旋转                                TIM_SetCompare3(TIM2,ZKB1) ;         //设置占空比        PA2                                if(key == 3)                                {                                        ZKB1 = (ZKB1+500) %7199 ;                                }                                if(key == 4)                                {                                        if(ZKB1>600) ZKB1 = ZKB1-500;                                        else ZKB1 = 200 ;                                }                                Display_Preserve_Temp() ;                                if(key==1)                                {                                        mode = 5 ;                                        TIM_Cmd(TIM2,DISABLE);         //使能定时器4                                        break;                                }                        }                }                if(mode==5)                {                        LcdWrite(0,0x01);//清零,指针指到屏幕左上角                        Display_menu5() ;                        TIM_Cmd(TIM4,DISABLE);         //使能定时器4                        while(1)                        {                                key = KeyScan()         ;                                Display_XZ() ;  //流水灯旋转                                                                delay_ms(100) ;                                if(key==1)                                {                                        mode = 1 ;                                        TIM_Cmd(TIM4,ENABLE );         //使能定时器4                                        break;                                }                        }                }//                //                LCD1602_Test() ;
        }}


0条回答

一周热门 更多>