通过两个按键中断控制蜂鸣器

电路结构中,PORTC3T0通过三极管Q2驱动蜂鸣器LS1,而PORTC2PWM0则通过Q1作为脉宽调制PWM输出口驱动蜂鸣器LS2此外,PORTA3和PORTA2分别连接了两个按键,一个作为PWM按键,用于控制PWM输出口的蜂鸣器驱动,另一个作为一般IO按键,控制IO口驱动蜂鸣器,这两个按键的IO口内部已设置上拉电阻软;首先,定义必要的位变量和函数K1和K2分别对应增加和减少PWM值的按键,BEEP表示蜂鸣器PWM初始值设为0x7F在主函数中,初始化端口和定时器设置定时器0的1ms延时常数,定时器1用于脉宽调节通过按键控制PWM值的增减,当PWM值达到最大或最小值时,蜂鸣器发出警报定时器0中断服务程序用于设置定时器0;MUSIC2NOP CPL PP 音乐输出口控制 MOV A,R6 MOV R3,A R3=R6=18H LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 中断计数器20H=R7否通过两个按键中断控制蜂鸣器?不等,则继续循环 MOV 20H,#00H 等于,则取下一代码 INC DPTR LJMP MUSIC1 MUSIC3NOP 休止100毫秒 CLR TR0 MOV R2,#0DH R2=13 MUSIC4;本电子钟程序设计时只使用了一个定时数t0,其它的中断全部关断,定时器工作在两个8位自动加载初始值状态这是保证走时精确稳定的重要方法站长看到很多书本教材上都让大家用定时器中断来执行动态显示程序和按键扫描程序,这是一种很不好的方法,除了浪费硬件资源以外,还会增加程序复杂性,还会影响其它程序运行站长认为;PCF8574T的硬件连接包括与STM32F767的SCL和SDA通信接口,以及中断引脚INT实验中还涉及与蜂鸣器按键LCD等硬件的连接软件设计首先对PCF8574进行初始化,检测其存在并配置PB12为中断输入通过KEY0按键控制蜂鸣器,中断信号用于读取EXIO的状态LCD上显示状态信息,并通过DS0指示程序运行PCF8574的IO。

然而由于你用杜邦线接触P32口存在抖动你感觉不到,外部中断引脚再次接受到一个下降沿,IEx又被置1,单片机又要响应中断,但此时由于上一个中断程序未执行完,单片机将等待外部中断程序执行完你可以理解为有两个中断事件,但这两个事件优先级相同,所有按顺序响应在这个过程中,你的接触仍然;PORTC3T0 作为IO 口通过三极管Q2 来驱动蜂鸣器LS1,而PORTC2PWM0 则作为PWM 输出口通过三极管Q1 来驱动蜂鸣器LS2另外在PORTA3 和PORTA2 分别接了两个按键,一个是PWM 按键,是用来控制PWM 输出口驱动蜂鸣器使用的另一个是PORT 按键,是用来控制IO 口驱动蜂鸣器使用的连接按键的I;如果需要长时间保持蜂鸣器发声,并且还不占用CPU资源,可以考虑使用定时器来实现定时中断这样可以更高效地控制蜂鸣器的发声状态,同时释放CPU资源用于其通过两个按键中断控制蜂鸣器他任务在51系列单片机中,定时器的使用非常广泛通过配置定时器的中断服务程序,可以实现定时取反操作,从而达到控制蜂鸣器发声的目的具体配置步骤包括初始;按键处理通过外部中断或轮询方式检测按键动作,根据按键功能进行相应的设置或调整设置模式下,通过P3^1按键调整当前选中位的数值P3^2按键用于切换设置项闹钟日期时间P3^3按键用于切换显示日期和时间闹钟功能通过检测当前时间与设定的闹钟时间是否一致,来控制蜂鸣器的开关,实现闹钟提醒功能;并通过下拉电阻将其拉低2在程序中,使用循环或定时器中断的方式不断读取每个按键的引脚状态当某个按键被按下时,其对应的引脚电平会变为高电平3根据读取到的按键引脚状态,执行相应的操作例如,如果按键A被按下,则可以控制LED灯亮起如果按键B被按下,则可以控制蜂鸣器发出声音等。

既然单独按键控制音量能实现,播放中应该也可以实现,只要巧妙利用中断或在节拍间隙读键也可以,只要安排得当就会播放调节两不误;3同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1khz的方波4用定时器以间隔500MS在6位数码管上依次显示0123CDEF,重复;使用aclock变量标记是否处于闹钟响铃状态在clock函数中判断当前时间是否等于闹钟时间,如果是则设置aclock为1,并控制蜂鸣器响铃初始化程序初始化定时器中断数码管锁存器等硬件资源设置初始的时间和日期通过上述要点,可以实现一个功能完善的单片机控制多位数码管的电子时钟程序。

计算好7个音阶的频率,换算为周期 再除以2是半个周期,再换算作为定时器的初值,制成表格,按下不同按键,装入不同和初值,并启动定时器,让中断发生,中断程序里某一IO管脚取反,形成方波,这个方波经放大可以推动扬声器 主程序只管查询按键并 延时;本电子钟程序设计时只使用了一个定时数t0,其它的中断全部关断,定时器工作在两个8位自动加载初始值状态这是保证走时精确稳定的重要方法站长看到很多书本教材上都让大家用定时器中断来执行动态显示程序和按键扫描程序,这是一种很不好的方法,除了浪费硬件资源以外,还会增加程序复杂性,还会影响其它程序运行站长认为,越是中断程序,就要越写得简;1在这里,单片机只是相当于高速的开关一样,实现快速地打开或者关断蜂鸣器,电流要不了多大的,只要能驱动三极管就可以了,通常也就最多几个mA吧2电流的话跟输出的频率和占空比都有关系吧,这个不用万用表测的话,只能大概估计了3这里三极管不是放大作用,而是工作在饱和状态,相当于是开关;1 直接按键一端接INT0,一端接地设置外部中断0为电平触发方式,低电平进入中断,在外部中断程序里,让蜂鸣器响就可以了具体需要怎么响,你可以通过在中断里延时来实现的 就是 响延时关闭延时响延时,程序怎么写要看你的蜂鸣器是怎么接线的,2 就是定时器赋初值 1ms 然后1000。

版权所有: 转载请注明出处

成功案例 success case