完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我弄成了这样 对吗 #include "system.h"#include "Systick.h"
#include "led.h" #include "smg.h" #include "beep.h" u8 smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};//0~F ÊýÂë¹Ü¶ÎÑ¡Êý¾Ý int main() { u8 i=0; SysTick_Init(72); LED_Init(); SMG_Init(); while(1) { for(i=0;i<16;i++) { GPIO_Write(SMG_PORT,(u16)(~smgduan)); delay_ms(1000); } BEEP_Init(); u16 n=0; while(1) { n++; if(n%10==0) { beep=!beep; } if(n%20000==0) { led1=!led1; } delay_us(10); } } }
|
|
相关推荐
8个回答
|
|
图片里一个是蜂鸣器一个是数码管
|
|
|
|
首先你得确定两个整合之后想要达到什么效果,原程序中两个都是采用延时得方法,这种方法并不好用,特别是想你这样进行整合得情况,最好能修改成使用定时器的方式,这样数码管和蜂鸣器的延时时间都可以在定时器里进行各自的调整,而不会互相影响
|
|
|
|
人中狼 发表于 2017-11-1 19:04 你好 可以加个QQ吗 我整合后想在数码管从0数到F时 蜂鸣器叫一声 |
|
|
|
你需要设置几个变量,1,数码管扫描计时变量,用来确定每个数码管点亮的时间;2,蜂鸣器鸣响计时变量,用来确定蜂鸣器的鸣响时间;3,蜂鸣器的状态标志,表明蜂鸣器应该是鸣叫还是关闭。
定时器定时一个基本时间,数码管和蜂鸣器的时间就基于这个基本时间来调节。在定时器中断程序里进行数码管的扫描程序,并根据蜂鸣器的状态标志来判断是应该鸣叫还是关闭。 在主程序中进行计数,当计数到F时,设置蜂鸣器状态标志,方便在定时器中断程序里鸣叫蜂鸣器。 调试时可以先调试蜂鸣器部分,这个比较好调试,然后调试数码管部分,这里会有消隐,扫描频率等问题。 |
|
|
|
顶一个~~~~~~~~~~~~~~~
|
|
|
|
路过看下,用定时器确实更好!
|
|
|
|
确实,不用定时器的话非常麻烦
|
|
|
|
加油~
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
806 浏览 1 评论
842 浏览 0 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
614 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1428 浏览 2 评论
1644 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-20 11:33 , Processed in 0.424744 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号