模拟汽车喇叭声.pdf

上传人:tbuqq 文档编号:4602105 上传时间:2019-11-20 格式:PDF 页数:3 大小:79.41KB
返回 下载 相关 举报
模拟汽车喇叭声.pdf_第1页
第1页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《模拟汽车喇叭声.pdf》由会员分享,可在线阅读,更多相关《模拟汽车喇叭声.pdf(3页珍藏版)》请在三一文库上搜索。

1、模拟汽车喇叭声 因工作需要, 做了个模拟发声的程序,该程序的功能简单的控制蜂鸣器叫5 声,在这个基础上可以 做些修改,达到你想要的目的。具体不做更多解释,程序中附带有些解释,希望能帮助需要的同仁。 有什么不到之处,也请高手指点一下。 下面是一段完整的程序。 #include sbit bibi0 = P10; #define uint unsigned int #define uchar unsigned char / 下面的 2 个宏定义是控制发声时间 #define sound_on_time 50 #define sound_off_time 100 / 定义三个变量 uchar dat

2、a t0_count_ms = 0; / 该变量和下一个变量一起用于控制一次发声时间的长短, uchar data temp_sound = 0; / uchar data repeat = 0; / 该变量用于控制发声次数,实际发声次数是repeat/2 #define sound_on bsound = 1 / 2 个宏定义打开和关闭发声 #define sound_off bsound = 0 bit bsound = 1; / 定时器 0 中断 void interrupt_bibi(void) interrupt 1 if(bsound) bibi0 = !bibi0; if(!t0

3、_count_ms-) t0_count_ms = 50; / 中断 50 次统计 if(!repeat) sound_off; / 如果重复次数为0,就关闭,不再发声了 else temp_sound-; / 发声时间减计数 if(!temp_sound) / 为 0 则,重复次数减1 repeat-; if(!repeat) 如果重复次数减为0,则关闭发声 sound0_off; return; else if(!(repeat%2) / 如果重复次数为偶数,则发声 sound0_on; temp_sound = sound_on_time; / 发声时间为打开时间 else / 如果重复

4、次数为奇数,则关闭发声 temp_sound = sound_off_time; / 发声时间为关闭时间 sound0_off; / 定时器中断初始化函数 void interrupt_bibi_init() TH0 = TL0 = 20; / (256-20)* 12/12M = 236us ,修改该值控制音频高低 TMOD = 0x22; / 使用自动重装,工作方式2 TR0 = 1; / 启动定时器开始计数 ET0 = 1; / 允许定时器0 中断 EA = 1; / 允许所有中断 repeat = 10; / 发声 5 次 temp_sound = sound_on_time; t0_count_ms = 50; bibi0 = 1; void delay() uint i = 20000; for(; i 0; i-) ; void main() delay(); interrupt_bibi_init(); while(1); 下面是 PROTEUS 仿真图,程序在下图中发声的效果不是很好。仅供学习用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1