要求是这三个,我不懂代码为何这样写。求详细解释。。。
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() ;
}}
一周热门 更多>