完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
|
|
|
|
|
|
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:15 , Processed in 0.937419 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
12146