单片机课程设——叮咚门铃设计.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
"单片机课程设——叮咚门铃设计" 单片机课程设计报告是基于 STC89C51 单片机的叮咚门铃设计。该设计主要使用 STC89C51 单片机作为主控芯片,结合外设蜂鸣器电路,使门铃性能更加优良,更适合用于现实生活中去。 一、设计要求 该设计要求按下按键时,蜂鸣器发声,并播出“叮咚-叮咚-叮咚”声音。 二、分析系统方案 在该设计中,STC89C51 单片机是整个系统主控芯片,它主要负责输出不同频率的 PWM 脉宽,从而控制三极管通断次数来使扬声器发出不同频率的声音。 三、设计 1. 硬件设计 叮咚门铃硬件电路主要包括单片机最小系统、蜂鸣器电路、按键。电路图如下: *蜂鸣器电路最小系统 *总电路图 2. 软件编程 软件设计流程图: #include <AT89X52.H> unsigned char obuf1; unsigned char obuf2; unsigned int obuf3; bit stopb; bit flagb; void delayms(unsigned int k){ unsigned char p; for(; k > 0; k--) for(p = 110; p > 0; p--); } void main(void){ unsigned char i,j, k; TMOD=0x02; //定时器 T0 初始化 TH0=0x06; TL0=0x06; ET0=1; EA=1; //允许总中断 while(1){ if(P1_0==0) //检测 K1 按键 { for(k = 0; k < 3; k++){ P1=0x00; for(i=10;i>0;i--) for(j=248;j>0;j--); if(P1_0==0){ obuf1=0; obuf2=0; obuf3=0; flagb=0; stopb=0; TR0=1; //启动定时器 T0,发出"叮咚"声 while(stopb==0); P1=0xff; } delayms(3000); // 延时函数 } } } } void t0(void) interrupt 1 using 0{ obuf3++; if(obuf3==3000){ obuf3=0; if(flagb==0){ flagb=~flagb; }else{ stopb=1; TR0=0; } } if(flagb==0){ obuf2++; if(obuf2==1){ obuf2=0; P1_6=~P1_6; } }else{ obuf1++; if(obuf1==25){ obuf1=0; P1_6=~P1_6; } } } 三、调试说明 在对系统设计以及实现后,需要进入调试阶段,以检查系统所存在的缺陷,以便排除各种可能出现的不利于系统正常运行的因素。调试本系统主要包括两个步骤:调试控制系统和各个模块是否能正常工作,其中分为底层硬件调试和上层软件的调试。底层硬件调试和上层软件的调试是不可缺少的调试,这两者可分开调试,其间可以没有联系的调试,之后再整体的调试,看看是否能够达到我们的预期的效果。这样,我们才能及时的发现问题,从而着手的解决每一个问题。 四、设计结果及错误分析 在本次设计中,遇到了很多的问题和困难,由于自己不太擅长软件编程,需要查阅大量的质料,理解语句的意译,不得不得向同学求问,刚开始由于输出 700Hz 与 500Hz 的方波,我花了一个多礼拜的时间都无法攻克,后来才发现错误所在,是由于软件编程不正确所致。
- 粉丝: 92
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- html+css+js的宠物领养网站(响应式)
- go实现通过命令访问Kafka
- 极速浏览器(超快速运行)
- uniapp vue3 下拉菜单组件(dropdownMenu)
- 《全面解析图像平滑处理:多种滤波方法及应用实例》
- Kafka客户端producer/consumer样例
- rocketmq和rocketmq数据转换
- 关于 v s 2019 c++20 规范里的 S T L 库里模板 decay-t<T>
- 本项目致力于创建一个基于Docker+QEMU的Linux实验环境,方便大家学习、开发和测试Linux内核 Linux Lab是一个开源软件,不提供任何保证,请自行承担使用过程中的任何风险
- RL Base强化学习:信赖域策略优化(TRPO)算法TensorFlow实现