欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机控制LED及蜂鸣器课程设计报告.doc

    • 资源ID:60115963       资源大小:117KB        全文页数:11页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机控制LED及蜂鸣器课程设计报告.doc

    武汉*大学 单片机设计报告课 程 单片机课程设计 设计题目 LED灯及蜂鸣器 年级专业 信息与计算科学09级 学 号 学生姓名 指导教师 2012年 04 月 17 日设计题目:一、 要求1.了解LED显示流水灯的原理。2. 能够在LED上显示和控制蜂鸣器的工作。3 熟悉掌握keil软件的使用。二、 分析 本设计使用AT89C52RC做为主控制模块,利用简单的外围电路来驱动LED蝴蝶。设计分为三个模块:单片机控制模块,输出显示模块和驱动模块,单片机控制模块以单片机为核心,以软件KEIL编程实现信号输出,以驱动LED及蜂鸣器为目的。三、 设计1、硬件方面(1)、LED驱动模块图文显示有静态和动态两种方案,本设计中静动态都用到了。动态扫描的意思简单的说就是轮流点亮。具体就图案来说,把内部同行的发光管的阳极相连在一起,先送出对应行的发光管亮灭的数据并锁存,然后选通其它行使其燃亮相同的时间,然后熄灭。反复循环。蜂鸣器的控制则是加入三极管接在VCC,单片机的第20引脚和负极上,以此来控制蜂鸣器的工作。(2)、硬件设计 实验板上设计一个蝴蝶状的LED显示,可用于简单的图形图像。蝴蝶的图案是由74个LED绿灯、8个红灯、10个黄灯拼接而成。其中绿灯直接接到正负极上,黄灯和红灯接到单片机的P2口,来控制其闪动。 2、软件编程(包括流程图、完整的汇编源程序及其注释)1.电路图本软件要求实现如下要求:外圈绿灯亮度明亮,红灯和黄灯都不停地闪动,蜂鸣器自动播放歌曲。电路图如下:2.主程序本设计的系统软件能使系统LED各点亮度均匀,充足,可显示清晰图案,并且闪动。系统主程序开始后,首先是对系统环境初始化,包括设置串口,中断和端口;然后闪动红黄灯,由于单片机没有停机指令,所以可以设置系统程序不断循环。3.序代码如下:#include <reg51.h>#include <rtx51tny.h>#include <absacc.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define DY_PORTP2 /设置LED连接的I/O组#define DY_SPEED100 /设置每一个明亮级的停留时间(值域:065535)struct music_type uchar tone; uchar delay;void delay (unsigned int a) / 1ms延时程序unsigned int i;while( -a != 0)for(i = 0; i < 600; i+);/STC单片机在外部晶振为12MHz时i值上限为600 /AT89C51单片机在外部晶振为12MHz时i值上限为125uint code tonetab=/D调7声音阶3个8度63967,64138,64291,64360,64489,64603,64704,/低音1764752,64837,64913,64948,65012,65070,65120,/中音1765144,65186,65225,65242,65274,65303,65328/高音17;/曲谱,每个音符两项数据:第1项为音高,第2项为节拍(以1/4拍为单位)struct music_type code notetab=/”三十里铺”曲谱1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,4+7,0x04,5+7,0x02,1+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,1+7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,4+7,0x04,5+7,0x02,1+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,1+7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,0,0x00;sbit P10=P10;/连接无源蜂鸣器/*sbit SDAT=P34;/连接显示数码的移位寄存器sbit SCLK=P35;*/volatile uchar tl1,th1;/存控制定时器1定时参数uint led=0x0001;/LED初始显示数据bit dir=0;/LED流水方向控制标志void T1_sev() interrupt 3/定时器T1中断:控制蜂鸣器发声频率 TL1=tl1;/重装定时数据 TH1=th1; P10=!P10;/蜂鸣器驱动倒相void INT1_serv() interrupt 2/外中断1,改变LED流水方向标志 dir=!dir;/流水方向控制标志改变void init() _task_ 0/任务0:初始化,激活任务13 TMOD|=0x10; /系统硬件初始化 ET1=1; IT1=1; EX1=1; os_create_task(1); /启动任务13 /* os_create_task(2);*/ os_create_task(3); os_delete_task(0); /自身撤退void disled() _task_ 1/任务1:16个LED流水显示 unsigned int temp;unsigned int i;while(1) temp=0xA0;for(i=0;i<8;i+) /8个流水灯逐个闪动 DY_PORT=temp; delay(DY_SPEED); /调用延时函数 temp<<=1; temp=0xA7;for(i=0;i<8;i+) /8个流水灯反向逐个闪动 DY_PORT=temp; delay(DY_SPEED); /调用延时函数 temp>>=1; temp=0xA0;for(i=0;i<8;i+) /8个流水灯依次全部点亮 DY_PORT=temp; delay(DY_SPEED); /调用延时函数 temp<<=1; temp=0xA7; for(i=0;i<8;i+) /8个流水灯依次反向全部点亮 DY_PORT=temp; delay(DY_SPEED); /调用延时函数 temp>>=1; os_wait2(K_IVL,10);/控制LED流水显示的节奏 void musicplay() _task_ 3/任务3:蜂鸣器演奏”三十里铺” uchar i,j; while(1) i=0; while(notetabi.delay) if(!notetabi.tone) TR1=0;/音高数据为0 else/音高数据不为0 th1=TH1=tonetabnotetabi.tone-1/256;/用定时参数控制T1的振荡频率(音高) tl1=TL1=tonetabnotetabi.tone-1%256; TR1=1; /该音符发声 for(j=0;j<notetabi.delay;j+)/控制音符的持续时间(节拍) os_wait2(K_IVL,20); i+;/拟换下个音符 TR1=0;/停奏 os_wait2(K_IVL,100);/奏完1遍后的等待 3、调试说明 使用LEIL 软件编译调试代码,确保无误后下载到单片机里,硬件电路连接p2口LED的所有跳帽,下载生成的hex文件,即可看到LED屏幕上能够出现明亮的蝴蝶图案并且有歌曲的伴随。4、设计结果及错误分析能够在LED屏上清晰显示蝴蝶图案,但是没有达到流水灯和歌曲同时实现的目的,经努力修改程序代码还是没能实现。直到主动找老师询问后,才知道是因为应该用IO中断来控制程序的并发进行,以后会吸取教训,认真落实老师给的任务,不懂即问。四、 总结在此次设计中,我得到以下体会:1. 这次图案设计的过程让我进一步熟悉了KEIL 软件的使用。2. 通过这次设计,重新复习并进一步学习了51单片机的优点,明确了单片机在显示生活中的应用是十分广泛的。3. 让我明白任何一件事情都必须小心谨慎,稍有差错变不会得出正确的结论。就像程序代码,错一点,整个程序也就错了。所以我们应该养成严谨学习习惯。

    注意事项

    本文(单片机控制LED及蜂鸣器课程设计报告.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开