求51单片机,数字电子钟(主要是如何让闹钟工作,汇编程序),不知道如何编写?
请问如何实现这个工作呢???(从定时程序时间到----转到闹钟工作程序段-----然后给发声器一个脉冲工作)...
请问如何实现这个工作呢???(从定时程序时间到----转到闹钟工作程序段-----然后给发声器一个脉冲工作)
展开
2个回答
展开全部
如果是喇叭,从P口输出一个音频波形就可以了。
比如做一个10KHz的波形,就让P口0.05ms反转一次,做个0.05ms的定时器就好了。
定时器中断服务程序里直接写一条P口反转指令就行了,类似P2_1 = ! P2_1,我很久没写程序了,忘了究竟是什么语法,反正就是“非”一下就好。这样IO口上就是一个0.1ms周期的方波,实际频率就是10Khz,在人的听力范围之内。
方波可能音质不好,听着不太好听,如果有需求,可以增加滤波电路,将方波变得尽量像正弦波,音质会好很多。
蜂鸣器更简单,直接给个电平就行。
比如做一个10KHz的波形,就让P口0.05ms反转一次,做个0.05ms的定时器就好了。
定时器中断服务程序里直接写一条P口反转指令就行了,类似P2_1 = ! P2_1,我很久没写程序了,忘了究竟是什么语法,反正就是“非”一下就好。这样IO口上就是一个0.1ms周期的方波,实际频率就是10Khz,在人的听力范围之内。
方波可能音质不好,听着不太好听,如果有需求,可以增加滤波电路,将方波变得尽量像正弦波,音质会好很多。
蜂鸣器更简单,直接给个电平就行。
展开全部
首先在P1.0输出端接一个2K左右的电阻,再接一个PNP(9012)三极管,b接电阻,e接地,c通过扬声器接电源,程序如下:
BELL: MOV R2, #100
CLR P1.0
CALL Y50
CPL P1.0
RET
Y50: MOV R0, #100
MOV R1, #100
LOOP:DJNZ R1, LOOP
DJNZ R0, LOOP
RET
调节响声,或音调可更换R0,R1,R2的值即可!
希望能帮到你。
BELL: MOV R2, #100
CLR P1.0
CALL Y50
CPL P1.0
RET
Y50: MOV R0, #100
MOV R1, #100
LOOP:DJNZ R1, LOOP
DJNZ R0, LOOP
RET
调节响声,或音调可更换R0,R1,R2的值即可!
希望能帮到你。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询