完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
要求是这三个,我不懂代码为何这样写。求详细解释。。。
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() ; } } |
|
相关推荐
2个回答
|
|
{:4:}{:4:}十万火急
|
|
|
|
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
659 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1088 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1563 浏览 1 评论
532 浏览 0 评论
1062 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-7 14:26 , Processed in 0.707607 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号