发 帖  
原厂入驻New
[问答]

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

1684 蜂鸣器 数码管 LED灯 键盘
分享
要求是这三个,我不懂代码为何这样写。求详细解释。。。
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  ; //控制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
2014-5-25 18:30:39   评论 分享淘帖 邀请回答
2个回答
2014-5-25 18:52:40 评论

举报

顶顶顶顶顶顶顶顶顶顶顶顶顶顶

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /7 下一条

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