单片机的音乐盒设计(C程序)毕业设计


    


    基单片机音乐盒设计

    摘设计基AT89C51系列单片机音乐盒单片机技术原理通硬件电路制作软件编译设计制作出功功音乐盒该音乐盒键电路复位电路时钟电路蜂鸣器组成两键控制音乐盒切换歌曲切换8路LED变化花样音乐盒两首歌曲花样灯花样计3种播放歌曲时蜂鸣器发出某音调应LED亮起设计利KEIL编程软件音乐盒源程序进行编程调试配合PROTEUS仿真软件硬件进行仿真调试节约设计时间
    关键字音乐盒AT89C51单片机 KEIL PROTEUS 音调
    目 录
    引言 1
    1概述 2
    11 课题意义 2
    12设计方案 2
    13研究容 2
    2 系统总体方案介绍 3
    21 系统组成框图 3
    22 音乐盒功结构图 3
    23 设计软件介绍 3
    231 PROTEUS软件简介 3
    232 KEIL简介 4
    3硬件设计 5
    31 总体设计框图 5
    32部分硬件设计原理 5
    321 AT89C51简介 5
    322 LED显示电路设计原理 6
    323 时钟振荡电路 6
    33 硬件电路图功 6
    4软件设计 8
    41音调节拍编码确定方法 8
    411 音调确定 8
    412 节拍确定 9
    413 编码 10
    42 软件程序设计 11
    421 程序流程图相应代码块 11
    422 程序源代码(见附录A) 15
    5调试 16
    51 检查硬件连接 16
    52 检查软件系统 16
    53 测试结果 16
    531.总体运行图 16
    532.花样灯3种花样图 17
    6 总结 18
    致谢 19
    参考文献 20
    科技外文文献 21
    中文译文 24
    附录A 程序源代码注释 26

    引言
    21世纪电子技术获飞速发展推动现代电子产品渗透社会领域力推动社会生产力发展社会信息化程度提高时现代电子产品性进步提高产品更新换代节奏越越快
    目前单片机正着高性品种方发展趋势进步着CMOS化低功耗体积容量高性低价格外围电路装化等方面发展单片机应重意义根改变传统控制系统设计思想设计方法前必须模拟电路数字电路实现部分功现已单片机通软件方法实现种软件代硬件控制技术称微控制技术传统控制技术次革命单片机渗透生活领域难找领域没单片机踪迹导弹导航装置飞机种仪表控制计算机网络通讯数传输工业动化程实时控制数处理广泛种智IC卡民豪华轿车安全保障系统录机摄机全动洗衣机控制程控玩具电子宠物等等离开单片机
    着科学技术进步社会发展类接触信息断增加日益复杂面浩烟海信息已够利计算机等工具高效准确进行处理想处理完信息时清晰传递必须通寻求更加卓越显示技术实现单片机技术液晶显示技术结合信息传输交流着智视化方迅速发展
    着类社会发展视觉听觉方面享受提出越越高求音乐盒带美回忆提高精神文化享受传统音乐盒机械型体积笨重发音单调实现批量生产文设计音乐盒单片机核心元件电子式音乐盒体积重量轻演奏旋音乐功外观效果彩方便具定商业价值
    1概述
    设计AT89C51芯片电路基础外部加放音设备实现音乐演奏控制器硬件电路通软件程序控制单片机部定时器演奏出优美动听音乐户喜选择音乐转化成机器码存入单片机存储器中型号单片机需相应改变址该软硬件系统具通性高实际价值广单片机音乐爱者提供鉴
    11 课题意义
    音乐盒起源追溯中世纪欧洲文艺复兴时期时教会钟塔报时钟表装机械装置称发出声音组钟音乐盒着300年发展历史类文明发展历史见证
    传统音乐盒机械音乐盒工作原理通齿轮带动带铁钉铁桶转动铁桶铁钉撞击铁片制成琴键发出声音机械式音乐盒体积较较笨重发音单调水灰尘等外素容易部金属发音条变形造成发音跑调外机械音乐盒放音时音色稳定必须放动摇价格昂贵实现批量生产
    文设计音乐盒基单片机设计制作电子式音乐盒传统机械式音乐盒相更巧音质更优美演奏弦音乐电子式音乐盒动力源电池制作工艺简单进行批量生产价格便宜基单片机制作电子式音乐盒控制功强根需选歌方便根存储容量存储歌曲外设计彩灯外观效果音乐盒功更加丰富
    12设计方案
    设计基AT89C51系列单片机音乐盒利键切换演奏出乐曲蜂鸣器发出某音调相应LED亮起两键切换歌曲切换八路LED变化花样
    13研究容
    1)电路两种工作模式:演奏音乐模式花样灯模式
    演奏音乐模式:演奏完整首歌曲八路LED着音乐变化
    花样灯模式:八路LED变化出种花样蜂鸣器着发出嘀嘀声
    2)键1进入演奏音乐模式切换歌曲两首歌曲
    3)键2进入花样灯模式切换LED花样三种花样
    电路程序占1K左右编制更音乐LED花样系统功更加强
    2 系统总体方案介绍
    21 系统组成框图
    音乐盒系统结构AT89C51单片机位控制核心加2键时钟复位电路蜂鸣器LED模块组成单片机负责接收键输入根输入控制音乐播放曲目音乐花样灯显示样式蜂鸣器发音系统组成框图图21示

    图21 系统组成框图
    22 音乐盒功结构图
    音乐盒功结构图22示Key1负责切换播放歌曲播放歌曲2首分挥着翅膀女孩寂寞沙洲冷Key2负责切换LED显示花样显示花样3种第种序显示第二种两边中间移动然两边移动第三种循环显示

    图22 音乐盒功结构图
    23 设计软件介绍
    设计利KEIL编程软件音乐盒源程序进行编程调试配合PROTEUS仿真软件硬件进行仿真调试两种软件简介:
    231 PROTEUS软件简介
    Proteus软件英国Labcenter electronics公司出版EDA工具软件(该软件中国总代理广州风标电子技术限公司)仅具EDA工具软件仿真功仿真单片机外围器件目前仿真单片机外围器件工具然目前国推广刚起步已受单片机爱者事单片机教学教师致力单片机开发应科技工作者青睐Proteus世界著名EDA工具(仿真软件)原理图布图代码调试单片机外围电路协仿真键切换PCB设计真正实现概念产品完整设计目前世界唯电路仿真软件PCB设计软件虚拟模型仿真软件三合设计台处理器模型支持8051HC11PIC101216182430DsPIC33AVRARM8086MSP430等2010年增加CortexDSP系列处理器持续增加系列处理器模型编译方面支持IARKeilMPLAB等种编译器
    232 KEIL简介
    单片机开发中必硬件外样离开软件写汇编语言源程序变CPU执行机器码两种方法种手工汇编种机器汇编目前已极少手工汇编方法机器汇编通汇编软件源程序变机器码MCS51单片机汇编软件早期A51着单片机开发技术断发展普遍汇编语言逐渐高级语言开发单片机开发软件断发展Keil软件目前流行开发MCS51系列单片机软件年仿真机厂商纷纷宣布全面支持Keil出Keil提供包括C编译器宏汇编连接器库理功强仿真调试器等完整开发方案通集成开发环境(uVision)部份组合起运行Keil软件需PentiumCPU16MB更RAM20M空闲硬盘空间WIN98NTWIN2000WINXP等操作系统掌握软件51系列单片机爱者说十分必果C语言编程Keil二选(目前国买该软件买仿真机支持该软件)C语言仅汇编语言编程方便易集成环境强软件仿真调试工具会令事半功倍Keil C51生成目标代码效率非常高数语句生成汇编代码紧凑容易理解开发型软件时更体现高级语言优势

    3硬件设计
    31 总体设计框图

    图31总体设计框图
    32部分硬件设计原理
    321 AT89C51简介
    AT89C51种带4K字节闪存编程擦读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)低电压高性CMOS 8位微处理器俗称单片机AT89C2051种带2K字节闪存编程擦读存储器单片机单片机擦读存储器反复擦100次该器件采ATMEL高密度非易失存储器制造技术制造工业标准MCS51指令集输出脚相兼容功8位CPU闪烁存储器组合单芯片中ATMELAT89C51种高效微控制器AT89C2051种精简版AT89C51单片机嵌入式控制系统提供种灵活性高价廉方案外形引脚排列图32示

    图32 AT89C51系列单片机
    322 LED显示电路设计原理
    LED显示电路8LED发光二极组成连接方式阳极LED接单片机P1口低电LED亮起发光二极亮灭部程序控制8LED发光二极分应音阶LED会着音阶变化规律亮灭
    323 时钟振荡电路
    AT89C51中构成部振荡器高增益反相放器引脚XTAL1XTAL2分该放器输入端输出端放器作反馈元件片外石英晶体者陶瓷谐振器起构成然振荡器外接石英晶体电容C1C2接放器反馈回路中构成联振荡电路外接电容C1C2然没什严格求电容容量会轻微影响振荡频率高低振荡器工作稳定性起振难易程序温度稳定性果石英晶体推荐电容30PF10PF果陶瓷振荡器建议选择40PF10PF户采外部时钟采外部时钟电路图示种情况外部时钟脉接XTAL1端部时钟发生器输入端XTAL2悬空外部时钟信号通2分频触发器作部时钟信号外部时钟信号占空没特殊求高电持续时间低电持续时间应符合产品技术条件求振荡器电路图:

    图33 单片机部外部振荡电路
    33 硬件电路图功
    总体硬件电路实现功图34示
    1) 电路中P32P33控制键
    2) P10~P17控制LED
    3) P23控制蜂鸣器
    4) 电路12MHZ晶振频率工作起振电路中C1C2均30PF

    图34 硬件电路图
    4软件设计
    程序中设置两标志——count1count2分初始化10键1count112间切换键2count21~4间切换程序检测count1值count1等1时播放第首歌曲等2时播放第二首方面根count2值切换LED花样count1count2值互斥设置count1等12时count2时设置0设置count2等1~4时count1时设置0
    41 音调节拍编码确定方法
    般说单片机演奏音乐基单音频率包含相应幅度谐波频率说电子琴样奏出种音色声音单片机奏乐需弄清楚两概念音调节拍表示音符唱长时间
    411 音调确定
    音高乐音CDEFGAB表示7字母音乐音名般次唱成DOREMIFASOLASI唱成简谱1234567相汉字米发梭拉西读音唱曲时乐音发音音调ToneCDEFGAB组音距离分成12等份等份半音两音间距离两半音全音钢琴等键盘乐器C–DD–EF–GG–AA–B两音间隔着黑键间距离全音E–FB–C两音间没黑键相隔间距离半音通常唱成1234567音然音左角加﹟号者b号变化音﹟升记号表示音原基础升高半音b降记音表示原基础降低半音例高音DO频率(1046Hz)刚中音DO频率(523Hz)倍中音DO频率(523Hz)刚低音DO频率(266 Hz)倍样高音RE频率(1175Hz)刚中音RE频率(587Hz)倍中音RE频率(587Hz)刚低音RE频率(294 Hz)倍
    1)产生音频脉算出某音频周期(1频率)然周期2半周期时间利定时器计时半周期时间计时输出脉IO反相然重复计时半周期时间IO反相IO脚频率脉
    2)利AT89C51部定时器工作计数器模式MODE1改变计数值TH0TL0产生频率方法
    外结束符休止符分代码00HFFH表示查表结果00H表示曲子终查表结果FFH产生相应停顿效果
    3)例频率523Hz周期T15231912us令计数器计时956us1us956次计数956次时IO反相中音DO(523Hz)
    计数脉值频率关系公式:
    NFi2Fr
    N:计算值 Fi:部计时次1us频率1MHz
    4) 计数值求法:
    T65536N65536Fi2Fr
    例:设K65536F1000000Fi1MHz球低音DO(261Hz)中音DO(523Hz)高音DO(1046Hz)计算值
    T65536N65536Fi2Fr6553610000002Fr65536500000Fr
    低音DOT6553650000026263627
    低音DOT6553650000052364580
    低音DOT65536500000104765059
    5) C调音符频率计数值T表表41示
    表41 C调音符频率计数值T表
    低音
    频率
    T
    参数
    中音
    频率
    T
    参数
    高音
    频率
    T
    参数
    Do
    262
    1908
    229
    Do
    523
    956
    115
    Do
    1046
    57
    57
    Do﹟
    277
    1805
    217
    Do﹟
    554
    903
    108
    Do﹟
    1109
    54
    54
    Re
    294
    1701
    204
    Re
    587
    852
    102
    Re
    1175
    51
    51
    Re﹟
    311
    1608
    193
    Re﹟
    622
    804
    97
    Re﹟
    1245
    48
    48
    Mi
    330
    1515
    182
    Mi
    659
    759
    91
    Mi
    1318
    45
    45
    Fa
    349
    1433
    172
    Fa
    698
    716
    86
    Fa
    1397
    43
    43
    Fa﹟
    370
    1351
    162
    Fa﹟
    740
    676
    81
    Fa﹟
    1480
    41
    41
    So
    392
    1276
    153
    So
    784
    638
    77
    So
    1568
    38
    38
    So﹟
    415
    1205
    145
    So﹟
    831
    602
    72
    So﹟
    1661
    36
    36
    La
    440
    1136
    136
    La
    880
    568
    68
    La
    1760
    34
    34
    La﹟
    464
    1078
    129
    La﹟
    932
    536
    64
    La﹟
    1865
    32
    32
    Si
    494
    1012
    121
    Si
    988
    506
    61
    Si
    1976
    30
    30

    412 节拍确定
    构成音乐光音调够需节拍音乐具旋律(固定律动)调节音快满度节拍Beat简单说拍子听音乐拍手跺脚1拍实05s14 拍0125s1拍少s没严格规定心跳样部分心跳分钟72快点慢点听悦耳音持续时间长短时值般拍数表示休止符表示暂停发音
    首音乐许音符组成音符应着频率样利频率组合加拍数应延时构成音乐解音乐基础知识知产生频率音频脉产生音乐单片机说产生频率脉非常方便利单片机定时计数器产生样方波频率信号需弄清楚音乐中音符应频率单片机定时计数关系
    表42节拍节拍码
    节拍码
    节拍数
    节拍码
    节拍数
    1
    14拍
    1
    18拍
    2
    24拍
    2
    14拍
    3
    34拍
    3
    38拍
    4
    1拍
    4
    21拍
    5
    114拍
    5
    58拍
    6
    112拍
    6
    34拍
    8
    2拍
    8
    1拍
    A
    212拍
    A
    114拍
    C
    3拍
    C
    112拍
    F
    334拍


    音符1字节字节高4位代表音符高低低4位代表音符节拍图52节拍码果1拍04秒14拍实01秒设定延迟时间求节拍时间假设14拍1DELAY1拍应4DELAY类推求14拍DELAY时间余节拍倍数图531418节拍时间设定
    表43 1418节拍时间设定
    曲调值
    DELAY
    曲调值
    DELAY
    调44
    125毫秒
    调44
    62毫秒
    调34
    187毫秒
    调34
    94毫秒
    调24
    250毫秒
    调24
    125毫秒
    413 编码
    do re mi fa so la si分编码1~7重音do编8重音re编9停顿编0播放长度十六分音符单位(程序中165ms)拍四分音符等4十六分音符编4播放时间类推音调作编码高4位播放时间作低4位音调节拍构成编码0xff作曲谱结束标志
    举例1:音调do发音长度两拍二分音符编码0x18
    举例2:音调re发音长度半拍八分音符编码0x22
    歌曲播放设计先歌曲简谱进行编码储存数类型unsigned char 数组中程序数组中取出数然分离出高4位音调接着找出相应值赋定时器0定时操作蜂鸣器出相应音调接着分离出该数低4位延时时间接着调软件延时
    表44 简谱应简谱码T值节拍数
    简谱
    发音
    简谱码
    T值
    节拍码
    节拍数
    5
    低音SO
    1
    64260
    1
    14拍
    6
    低音LA
    2
    64400
    2
    24拍
    7
    低音TI
    3
    64524
    3
    34拍
    1
    中音DO
    4
    64580
    4
    1拍
    2
    中音RE
    5
    64684
    5
    114拍
    3
    中音MI
    6
    64777
    6
    112拍
    4
    中音FA
    7
    64820
    8
    2拍
    5
    中音SO
    8
    64898
    A
    212拍
    6
    中音LA
    9
    64968
    C
    3拍
    7
    中音TI
    A
    65030
    F
    334拍
    1
    高音DO
    B
    65058


    2
    高音RE
    C
    65110


    3
    高音MI
    D
    65157


    4
    高音FA
    E
    65178


    5
    高音SO
    F
    65217


    42 软件程序设计
    421 程序流程图相应代码块
    程序流程图

    图41 程序流程图
    程序代码
    main()
    { uchar x
    count10流水灯花样
    count21唱第首歌
    P340选取矩阵键盘列
    EA1开总中断
    EX01开外部中断0
    IT01外部中断0降触发方式
    EX11开外部中断1
    IT11外部中断1降触发方式

    TMOD0x01定时器0工作方式1
    TH00
    TL00
    ET01

    while(1)
    {
    if(count10) 音乐停止花样灯开始花样闪烁
    {
    switch(count1)
    {
    case 1
    for(x0x<14x++)
    {
    duan1
    P1huayang1[x]
    beep()
    delay1(300)
    duan0
    if(count11)
    break
    }
    break
    case 2
    for(x0x<14x++)
    {
    duan1
    P1huayang2[x]
    beep()
    delay1(300)
    duan0
    if(count12)
    break
    }
    break
    case 3
    for(x0x<16x++)
    {
    duan1
    P1huayang3[x]
    beep()
    delay1(300)
    duan0
    if(count13)
    break
    }
    break
    }
    }
    else
    {
    song()
    delay1(1000)
    }
    }
    }
    播放音乐子程序流程图

    图42 播放音乐子程序流程图


    播放音乐子程序代码:
    void song()
    {
    uint temp
    uchar jpjp简谱
    i0
    while(1)
    { if(count20)
    {
    break
    }
    if(count21) 选曲
    tempqnzl[i] 播放千年恋
    if(count22)
    tempjmszl[i] 播放寂寞沙洲冷
    if(temp0xff) 结束标志
    break

    jptemp16 取数高4位
    duan1
    P1yinyue[jp]
    duan0
    if(jp0)
    {
    timehcuzhi[jp*2]
    timelcuzhi[jp*2+1]
    }
    else
    {
    TR00
    fm1关蜂鸣器
    }
    delay(temp16) 取数低4位
    TR00 唱完音停10MS
    fm1
    delay1(10)
    TR01
    i++
    }
    TR00
    fm1

    }
    延时程序代码:
    void delay(uint z) 延时165MS十六分音符
    { uint xy
    for(xzx>0x)
    for(y19000y>0y)
    }

    void delay1(uint z) 延时1MS
    { uint xy
    for(xzx>0x)
    for(y112y>0y)
    }

    422 程序源代码(见附录A)
    5调试
    51 检查硬件连接
    PROTUES检查硬件脚否连接正确线路逻辑否正确例:晶振电路连接复位电路否设计正确
    52 检查软件系统
    1.根系统原理结构检查流程图否正确根流程图检查程序否正确
    2.程序组织起软件环境运行检查程序否正确通硬件软件系统认真检查反复测试果没出现问题源程序编译成HEX文件装载单片机中硬件进行仿真
    53 测试结果
    531.总体运行图

    图51 系统总体运行图
    532.花样灯3种花样图
    截图静态图整体图样面画图说明:

    图52 花样灯
    (1)第种花样灯显示方式:D1移D2然D1熄灭D2移D3然D2熄灭类推复循环

    图52 第种花样
    (2)第二种花样灯显示方式:两边中间移动首先D1移D8D8移D2类推复循环具体图53

    图53 第2种花样
    (3)第三种花样灯显示方式:D1移D2然D1熄灭D2移D3然D2熄灭复循环第种方式处:D1移D2时D1熄灭D2移D3时D2熄灭类推

    图54 第3中花样

    6 总结
    单片机设计止已进入令鼓舞阶段进行长达两月时间摸索实验仅仅单片机入门软件硬件常设计功项设计研究制作程需详细步骤具体实现方法力度掌握
    然次宝贵毕业设计活动中验收获增强身未知问题知识深化认识力受益匪浅词语概括次难忘活动觉合适光完成作品满足开始时候怀着作品制作更加性化更加令满意更加功完美方便应领域终目着单片机门学科认识加深达拓展程度想目远时期实现
    总次设计软件编写调试软硬件联机调试倾注量时间心血真程序编写冥思查找法找出错误郁闷苦恼某功实现犹豫彷徨终成功
    仅品味结果喜悦更明白程弥足珍贵
    致谢
    感谢导师冯永政老师严谨细致丝苟作风直工作学中榜样循循善诱教导拘格思路予启迪
    感谢爸爸妈妈焉谖草言树背养育恩回报永远健康快乐心愿
    感谢室友维系着彼间兄弟般感情维系着寝室份家融洽四年仿佛昨天四年里没红脸没吵嘴没发生学前担心开心事情家难聚起吃年元旦顿饭吧没关系奔前程家珍重起日子会记辈子
    文完成际心情法静开始进入课题文利完成少敬师长学朋友言帮助里请接受诚挚谢意

    参考文献
    [1] 李建忠单片机原理应[M]西安电子科技学出版社20082
    [2] 黄智伟全国学生电子设计竞赛系统设计[M]北京:北京航空航天学出版社20066
    [3] 黄智伟凌阳单片机课程设计指导[M]北京:北京航空航天学出版社200611
    [4] 李广弟朱月秀王秀山单片机基础[M]北京:北京航空航天学出版社20017
    [5] 赵曙光郭万杨颂华编程逻辑器件原理开发应[M]西安:西安电子科技学 2000
    [6] 候伯亨VHDL硬件描述语言数字逻辑电路设计[M] 西安:西安电子科技学出版社 1999
    [7] 康华光 模拟电子技术基础(第四版)[M] 武汉:华中理工学出版社1999
    [8] 谭浩强C语言程序设计(第二版)[M]北京:清华学出版社1991
    [9] 陈忠黄宁 单片机接口技术实子程序[M]北京:北京民邮电出版社 2005
    [10] 欧伟明周春瞿遂春电子信息系统设计[M]西安电子科技学出版社20059
    [11] 贾立新王涌电子系统设计实践[M]北京:清华学出版社2007
    [12] 罗亚非凌阳16位单片机应基础[M]北京:北京航空航天学出版社2003
    [13] 雷思孝凌阳单片机原理实技术[M]西安电子科技学2004

    科技外文文献
    Getting Started with µVision2
    The Keil Software 8051 development tools listed below are programs you use to compile your C code assemble your assembly source files link and locate object modules and libraries create HEX files and debug your target program
    µVision2 for Windows™ is an Integrated Development Environment that combines project management source code editing and program debugging in one single powerful environment
    The C51 ANSI Optimizing C Cross Compiler creates relocatable object modules from your C source code
    The A51 Macro Assembler creates relocatable object modules from your 8051 assembly source code
    The BL51 LinkerLocator combines relocatable object modules created by the C51 Compiler and the A51 Assembler into absolute object modules
    The LIB51 Library Manager combines object modules into libraries that may be used by the linker
    The OH51 ObjectHEX Converter creates Intel HEX files from absolute object modules
    The RTX51 Realtime Operating System simplifies the design of complex timecritical software projects
    Software Development Cycle
    When you use the Keil Software tools the project development cycle is roughly the same as it is for any other software development project
    1 Create a project select the target chip from the device database and configure the tool settings
    2 Create source files in C or assembly
    3 Build your application with the project manager
    4 Correct errors in source files
    5 Test the linked application
    µVision2 IDE
    The µVision2 IDE combines project management a richfeatured editor with interactive error correction option setup make facility and online help Use µVision2 to create your source files and organize them into a project that defines your target application µVision2 automatically compiles assembles and links your embedded application and provides a single focal point for your development efforts
    LIB51 Library Manager
    The LIB51 library manager allows you to create object library from the object files created by the compiler and assembler Libraries are specially formatted ordered program collections of object modules that may be used by the linker at a later time When the linker processes a library only those object modules in the library that are necessary to create the program are used
    BL51 LinkerLocator
    The BL51 linker creates an absolute object module using the object modules extracted from libraries and those created by the compiler and assembler An absolute object file or module contains no relocatable code or data All code and data reside at fixed memory locations The absolute object file may be used
    To program an EPROM or other memory devices
    With the µVision2 Debugger for simulation and target debugging
    With an incircuit emulator for the program testing
    µVision2 Debugger
    The µVision2 symbolic sourcelevel debugger is ideally suited for fast reliable program debugging The debugger includes a highspeed simulator that let you simulate an entire 8051 system including onchip peripherals and external hardware The attributes of the chip you use are automatically configured when you select the device from the Device Database
    The µVision2 Debugger provides several ways for you to test your programs on
    real target hardware
    Install the MON51 Target Monitor on your target system and download your program using the Monitor51 interface builtin to the µVision2 Debugger
    Use the Advanced GDI interface to attach use the µVision2 Debugger front end with your target systemØ
    Monitor51
    The µVision2 Debugger supports target debugging using Monitor51 The monitor program resides in the memory of your target hardware and communicates with the µVision2 Debugger using the serial port of the 8051 and a COM port of your PC With Monitor51 µVision2 lets you perform sourcelevel symbolic debugging on your target hardware
    RTX51 RealTime Operating System
    The RTX51 realtime operating system is a multitasking kernel for the 8051 microcontroller family The RTX51 realtime kernel simplifies the system design programming and debugging of complex applications where fast reaction to time critical events is essential The kernel is fully integrated into the C51 Compiler and is easy to use Task description tables and operating system consistency are automatically controlled by the BL51 linkerlocator
    C51 Optimizing C Cross Compiler
    The Keil C51 Cross Compiler is an ANSI C Compiler that was written
    specifically to generate fast compact code for the 8051 microcontroller family
    The C51 Compiler generates object code that matches the efficiency and speed
    of assembly programming
    Using a highlevel language like C has many advantages over assembly language
    programming
    Knowledge of the processor instruction set is not required Rudimentary knowledge of the memory structure of the 8051 CPU is desirable (but not necessary)
    Details like register allocation and addressing of the various memory types and data types is managed by the compiler
    Programs get a formal structure (which is imposed by the C programming language) and can be divided into separate functions This contributes to source code reusability as well as better overall application structure
    The ability to combine variable selection with specific operations improves program readability
    Keywords and operational functions that more nearly resemble the human thought process may be used
    Programming and program test time is drastically reduced
    The C runtime library contains many standard routines such as formatted output numeric conversions and floatingpoint arithmetic
    Existing program parts can be more easily included into new programs because of modular program construction techniques
    The language C is a very portable language (based on the ANSI standard) that enjoys wide popular support and is easily obtained for most systems
    Existing program investments can be quickly adapted to other processors as needed
    Code Optimizations
    The C51 Compiler is an aggressive optimizing compiler that takes numerous steps to ensure that the code generated and output to the object file is the most efficient (smallest andor fastest) code possible The compiler analyzes the generated code to produce the most efficient instruction sequences This ensures that your C program runs as quickly and effectively as possible in the least amount of code space
    The C51 Compiler provides nine different levels of optimizing Each increasing level includes the optimizations of levels below it The following is a list of all optimizations currently performed by the C51 Compiler
    General Optimizations
    Constant Folding Constant values occurring in an expression or address calculation are combined as a single constantØ
    Jump Optimizing Jumps are inverted or extended to the final target address when the program efficiency is thereby increased
    Dead Code Elimination Code that cannot be reached (dead code) is removed from the program
    Register Variables Automatic variables and function arguments are located in registers whenever possible No data memory space is reserved for these variables
    Parameter Passing Via Registers A maximum of three function arguments
    may be passed in registers
    Global Common Subexpression Elimination Identical subexpressions or address calculations that occur multiple times in a function are recognized and calculated only once whenever possible
    Common Tail Merging Common instruction blocks are merged together using jump instructions
    Reuse Common Entry Code Common instruction sequences are moved in front of a function to reduce code size
    Common Block Subroutines Multiple instruction sequences are packed into subroutines Instructions are rearranged to maximize the block size
    中文译文
    Keil C 简介
    Keil Software 8051开发工具提供程序编译C源码汇编汇编源程序连接重定位目标文件库文件创建HEX文件调试目标程序
    Windows应程序uVision2集成开发环境项目理源代码编辑程序调试等集成功强环境中
    C51美国标准优化C交叉编译器C源代码产生重定位目标文件
    A51宏汇编器8051汇编源代码产生重定位目标文件
    BL51连接重定位器组合C51A51产生重定位目标文件生成绝目标文件
    LIB51库理器组合目标文件生成连接器库文件
    OH51目标文件HEX格式转换器绝目标文件创建Intel HEX 格式文件
    RTX51实时操作系统简化复杂时间求敏感软件项目
    软件开发流程
    Keil Software工具时项目开发流程软件开发项目流程极相似
    1 创建项目器件库中选择目标器件配置工具设置
    2 C语言汇编语言创建源程序
    3 项目理器实现应
    4 修改源程序中错误
    5 测试连接应
    uVision2 IDE
    uVision2 集成开发环境集成项目理器功丰富错误提示编辑器设置选项生成工具线帮助利uVision2创建源代码组织确定目标应项目中uVision2动编译汇编连接嵌入式应开发提供单焦点
    C51编译器A51汇编器
    源代码uVision2 IDE创建C51编译A51汇编编译器汇编器源代码生成重定位目标文件Keil C51编译器完全遵ANSI C语言标准支持C语言标准特性外直接支持8051结构特性添加里面Keil A51宏汇编器支持8051派生系列全部指令集
    LIB51 库理器
    LIB51库理器允许编译器汇编器生成目标文件创建目标库库种特组织连接重象模块连接器处理库时仅仅目标模块真正
    BL51 连接器定位器
    BL51 连接器定位器利库中提取目标模块编译器汇编器生成目标模块创建绝址目标模块绝址目标模块文件包含重定位代码数代码数安置固定存储器单元中绝址目标文件:
    写入EPROM存储器件
    uVision2调试器模拟调试
    仿真器测试程序
    uVision2 调试器
    uVision2源代码级调试器理想快速程序调试器调试器包含高速模拟器够模拟整8051系统包括片外围器件外部硬件器件库中选择器件时器件特性动配置
    uVision2调试器实际目标板测试程序提供种方法:
    安装MON51目标监控器目标系统通Monitor51接口载程序
    利高级GDI(AGDI)接口uVision2调试器绑定目标系统
    Monitor51
    uVision2调试器支持Monitor51进行目标板调试监控程序驻留目标板 存储器里利串口uVision2调试器进行通信利Monitor51uVision2调试器 目标硬件实行源代码级调试
    RTX51实时操作系统
    RTX51实时操作系统针8051系列务核RTX51实时核质简化实时事件反应速度求高复杂应系统设计编程调试RTX51实时核完全集成C51编译器中方便务描述表操作系统连接BL51连接器定位器动控制
    C51优化C语言交叉编译器
    Keil C51交叉编译器基ANSI C标准针8051系列MCUC编译器生成执行代码快速紧凑运行效率速度汇编程序代码相媲美
    汇编语言相C语言样高级语言优势:
    处理器指令集必解8051 CPU基结构解必须
    寄存器分配种变量数寻址编译器完成
    程序拥正式结构(C语言带)分成单独子函数整应系统结构变清晰时源代码变重复
    选择特定操作符操作变量力提高源代码读性
    运思维接词汇算法表达式
    编写程序调试程序时间程度缩短
    C运行连接库包含标准子程序格式化输出数字转换浮点运算
    程序模块结构技术现程序段容易包含新程序中
    ANSI 标准C语言种丰常方便获广泛应绝部分系统中够容易语言
    果需现程序快移植处理器节省投资
    代码优化
    C51杰出优化编译器通步骤确保产生代码效率(快)编译器通分析初步代码 产生终效率代码序列保证C语言程序占少空间时运行快效
    C51编译器提供9优化级高级优化级包括低优化级优化容列出目前C51编译器提供优化级容:
    常量折叠:表达式寻址程中出现常量综合单常量
    跳转优化:采反转跳转直接指终目跳转提升程序效率
    哑码消:永远执行代码动程序中剔
    寄存器变量:局部变量函数参数放CPU寄存器中需变量分配存储器空间
    通寄存器传递参数:三参数通寄存器传递
    消全局公子表达式:程序中次出现相子表达式址计算表达式计算次
    合相代码:利跳转指令相代码块合
    重复入口代码:需次代码移子程序前面缩减代码长度
    公块子程序:需重复条指令提取组成子程序指令重新安排化子程序长度
    附录A 程序源代码注释
    #include
    #define uchar unsigned char
    #define uint unsigned int
    sbit duanP2^6
    sbit key1P3^2key1切换花样
    sbit key2P3^3key2切换歌曲
    sbit fmP3^7蜂鸣器连续IO口
    sbit P34P3^4矩阵键盘列
    uchar code huayang1[]{0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe
    0xfd0xfb0xf70xef0xdf0xbf}花样1
    uchar code huayang2[]{0x7f0xfe0xbf0xfd0xdf0xfb0xef0xf7
    0xef0xfb0xdf0xfd0xbf0xfe}花样2
    uchar code huayang3[]{0x7f0x3f0x1f0x0f0x070x030x010x0
    0x800xc00xe00xf00xf80xfc0xfe0xff}
    char code huayang4[]{ 0x550xaa0xcc0x330x990x660x0f0xf0}
    uchar count1花样标志
    uchar count2歌曲标志
    uchar timehtimeli
    简谱
    编程规字节高位简谱低位持续时间
    代表少十六分音符
    17代表中央C调8E代表高八度0代表停顿
    0结束标志
    uchar code qnzl[]{ 千年恋
    0x120x220x340x840x740x540x380x420x320x220x420x340x840x720x820x940xA80x08
    前奏
    0x320x310x210x320x520x320x310x210x320x62
    竹林灯火 沙漠

    0x320x310x210x320x820x710x810x710x510x320x22
    七色国度 断飘逸风中
    0x320x310x210x320x520x320x310x210x320x62
    种神秘 灰色旋涡
    0x320x310x210x320x830x820x710x720x02
    卷入迷雾中
    0x630xA10xA20x620x920x820x52
    清双手
    0x310x510x630x510x630x510x630x510x620x820x7C0x02
    朵花传谁温柔
    0x610x710x820x710x620xA20x710x76
    穿越千年伤痛
    0x610x710x820x710x620x520x310x36
    求结果
    0x610x710x820x710x620xA30x730x620x53
    留轮廓 指引
    0x420x630x830x830x910x91
    黑夜中寂寞
    0x610x710x820x710x620x0A20x710x76
    穿越千年哀愁
    0x610x710x820x710x620x520x310x36
    头等
    0x610x710x820x710x620xA30x730x620x53
    美丽感动 会值
    0x420x820x880x020x740x930x890xff结束标志
    生守候
    }
    uchar code jmszl[]{ 寂寞沙洲冷
    0x120x120x220x320x310x220x210x22
    走心憔悴
    0x210x310x510x520x310x520x610x150x14
    白色油桐风中纷飞
    0x510x520x310x520x620x130x110x130x320x280x080x28
    落花似情 季节
    0x310x320x310x320x110x210x510x520x510x52
    河畔风放肆拼命吹
    0x510x510x310x320x310x320x810x720x63
    断拨弄离眼泪

    0x620x710x810x720x610x610x520x310x210x320x510x54
    样浓烈爱法
    0x220x120x110x120x110x120x120x140x260x320x26
    伤感夜夜
    0x320x610x510x510x310x310x210x310x510x610x510x310x51
    记忆线缠绕支离破碎
    0x020x320x810x810x810x810x620x520x34
    慌乱占心扉
    0x310x810x810x810x610x910x82
    花伴着蝴蝶
    0x510x510x510x510x310x610x53
    孤雁双飞
    0x210x110x210x110x220x110x210x26
    夜深静独徘徊
    0x320x610x510x510x310x310x210x310x510x610x510x310x510x52
    幸福恋寄红色分享喜悦
    0x310x310x810x810x810x610x910x810x610x310x56
    闭双眼难头敢回
    0x320x320x810x810x810x810x910x810x610x810x610x510x310x510x34
    然捡寒枝肯安歇微带着悔
    0x210x310x510x310x210x110x610x210x16
    寂寞沙洲该思念谁
    0xff}
    简谱音调应定时器初值
    适合110592M晶振
    uchar code cuzhi[]{
    0xff0xff占位
    0xFC0x8E中央C调17
    0xFC0xED
    0xFD0x43
    0xFD0x6A
    0xFD0xB3
    0xFD0xF3
    0xFE0x2D
    0xFE0x47 高八度17
    0xFE0x76
    0xFE0xA1
    0xFE0xC7
    0xFE0xD9
    0xFE0xF9
    0xFF0x16
    }
    uchar yinyue[]{0xff0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f0x00x0}
    音调转化应LED样式
    void delay1(uint z) 延时1MS
    void delay(uint z) 延时165MS十六分音符
    void song()
    void beep()蜂鸣器声
    main()
    { uchar x
    count10流水灯花样
    count21唱第首歌
    P340选取矩阵键盘列
    EA1开总中断
    EX01开外部中断0
    IT01外部中断0降触发方式
    EX11开外部中断1
    IT11外部中断1降触发方式

    TMOD0x01定时器0工作方式1
    TH00
    TL00
    ET01

    while(1)
    {
    if(count10)
    {
    switch(count1)
    {
    case 1
    for(x0x<14x++)
    {
    duan1
    P1huayang1[x]
    beep()
    delay1(300)
    duan0
    if(count11)
    break
    }
    break
    case 2
    for(x0x<14x++)
    {
    duan1
    P1huayang2[x]
    beep()
    delay1(300)
    duan0
    if(count12)
    break
    }
    break
    case 3
    for(x0x<16x++)
    {
    duan1
    P1huayang3[x]
    beep()
    delay1(300)
    duan0
    if(count13)
    break
    }
    break
    case 4
    for(x0x<8x++)
    {
    duan1
    P1huayang4[x]
    beep()
    delay1(300)
    duan0
    if(count14)
    break
    }
    break
    }
    }
    else
    {
    song()
    delay1(1000)
    }
    }

    }
    void int0() interrupt 0
    {
    EA0关总中断
    delay1(1)抖
    if(key10)
    {
    count20蜂鸣器唱歌
    TR00
    count1++
    if(count15)
    count11

    }
    EA1开总中断
    }
    void int1() interrupt 2
    {
    EA0关总中断
    delay1(1)抖
    if(key20)
    {
    count10流水灯花样
    TR01
    i0头开始唱
    count2++
    if(count23)
    count21

    }
    EA1开总中断
    }
    void timer0() interrupt 1 产生种音调
    {
    TH0timeh
    TL0timel
    fm~fm
    }
    void song()
    {
    uint temp
    uchar jpjp简谱
    i0
    while(1)
    { if(count20)
    {
    break
    }
    if(count21) 选曲
    tempqnzl[i]
    if(count22)
    tempjmszl[i]
    if(temp0xff)
    break

    jptemp16 取数高4位
    duan1
    P1yinyue[jp]
    duan0
    if(jp0)
    {
    timehcuzhi[jp*2]
    timelcuzhi[jp*2+1]
    }
    else
    {
    TR00
    fm1关蜂鸣器
    }
    delay(temp16) 取数低4位
    TR00 唱完音停10MS
    fm1
    delay1(10)
    TR01
    i++
    }
    TR00
    fm1

    }
    void delay(uint z) 延时165MS十六分音符
    { uint xy
    for(xzx>0x)
    for(y19000y>0y)
    }

    void delay1(uint z) 延时1MS
    { uint xy
    for(xzx>0x)
    for(y112y>0y)
    }
    void beep() 蜂鸣器声
    { uchar i
    for(i0i<50i++)
    { fm~fm
    delay1(1)
    }
    fm1
    }
    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于51单片机音乐盒课程设计

    基于51单片机音乐盒课程设计 课程名称: 微机原理课程设计 题 目: 基于51单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的...

    5年前   
    1265    0

    关于单片机毕业设计论文

    关于单片机毕业设计论文  单片机毕业设计论文如下文  第一章 绪 论1. 1 课题的提出及意义  单片机作息时间控制实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,实现代学校必...

    12年前   
    801    0

    基于单片机智能小车毕业设计

    毕 业 设 计(论 文)设计(论文)题目: 基于单片机的智能小车 ...

    6个月前   
    197    0

    基于单片机的空调温度控制系统设计毕业设计

     毕业设计  题 目 基于单片机的空调温度控制系统设计 学生姓名 学 号 学 院 计算机与信息工程系 专业班级 指导...

    5年前   
    2543    0

    基于AT89S51单片机无线传输系统设计毕业设计

    毕业论文(设计) 题 目: 单片机无线传输系统设计 完 成 人: ...

    4年前   
    871    0

    基于51单片机的智能窗户设计毕业设计

    基于51单片机的智能窗户设计【摘 要】 随着电子技术的发展和人民生活水平的不断提高,智能窗已经越来越多地被用到了现代智能化建筑中,提供住户一个安全、方便的环境。据统计,在未来的几年内,安装智...

    5个月前   
    113    0

    基于单片机的智能鱼缸的设计与实现毕业设计

    近年来嵌入式发展迅速,智能家居也进入了人们的生活。智能鱼缸却没有快速发展。我根据市场上相关设备现状的分析和研究,从系统集成角度进行设计和开发,提出了一套多功能的智能观赏鱼缸控制系统的设计方案。

    5年前   
    4251    0

    基于单片机的语音门铃设计毕业设计

    在现代电子产品中, 由于电子音乐门铃具有悦耳动听,价格低廉,耗电少等优点,在现代家居中的应用越来越流行。本毕业设计是基于单片机的“叮咚”门铃,通过单片机控制输出频率,由音频功率放大器LM386放...

    4年前   
    1255    0

    基于单片机的电子密码锁设计毕业设计

     ####工业大学城市学院 毕业设计说明书 作 者: 李xx 学 号: 09xx 系: 信息工程 ...

    5年前   
    1430    0

    基于51单片机压力检测系统设计毕业设计

     学号: xx 大 学 毕业设计(论文) (xxxx届) 题 目 ...

    5年前   
    2716    0

    基于单片机的彩灯控制器设计毕业设计

     题目: 基于单片机的节日彩灯控制器的设计 作 者 姓 名: 学 号: ...

    3年前   
    558    0

    基于单片机的鱼缸控制器设计毕业设计论文

    基于单片机的鱼缸控制器设计 摘 要 本文是基于单片机的鱼缸控制器的设计,目前市场上有各种各样的观赏类的鱼缸,进入了不同的应用场合,如家庭、宾馆和商场等等,但现有的鱼缸一般需要人为的...

    5年前   
    2456    0

    基于单片机的智能温控风扇设计毕业设计

    XX职业技术学院毕业设计论文作者 学号 系部 电子信息学院 专业 物联网应...

    4年前   
    857    0

    2018年毕业设计(论文)的工作程序

    毕业设计(论文)的工作程序  毕业设计(论文)一般工作程序如下:  1.下达设计(论文)任务书  毕业设计(论文)题目选定后,应由指导教师向学生下达毕业设计(论文)任务书,明确下达设计(论文)...

    6年前   
    319    0

    51单片机秒表计时器课程设计报告(含C语言程序)课程设计

    XXXXXX学院 51单片机系统设计 课程设计报告题 目: 秒表系统设计 专业、班级: 学...

    2年前   
    437    0

    基于51单片机的数字温度计毕业设计

    数字测温计设计摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制...

    3年前   
    1195    0

    IC卡读写系统的单片机实现毕业设计

     XX 大 学 网 络 教 育 学 院 专科毕业论文 题目:IC卡读写系统的单片机实现 完成期限:20XX年1月8日 至 20XX年4月20日 ...

    5年前   
    1064    0

    基于单片机的智能电饭煲的控制毕业设计

    分类号 编 号 毕 业 设 计题目: 基于单片机的电饭煲智能控制系统的设计 ...

    2年前   
    502    0

    国开电大《C语言程序设计》答案

    形考1在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(  )。选择一项:A. main 正确恭喜你,答对啦!!B. MAIN C. name D. function .题目2正确...

    1年前   
    402    1

    C语言程序设计习题试题集

    《C语言程序设计》精品课件试题目录(按住CTRL键点击超链)单项选择题………………………第002页阅读程序题………………………第018页程序填空题………………………第039页编写程序题…………...

    1年前   
    5369    0

    文档贡献者

    文***品

    贡献于2019-06-03

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档