流水灯显示课程设计报告书_第1页
流水灯显示课程设计报告书_第2页
流水灯显示课程设计报告书_第3页
流水灯显示课程设计报告书_第4页
流水灯显示课程设计报告书_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 .PAGE36 / NUMPAGES36流水灯显示目录 TOC o 1-3 h z u HYPERLINK l _Toc327804076第1章前言2HYPERLINK l _Toc327804077第2章方案设计 PAGEREF _Toc327804077 h 3HYPERLINK l _Toc3278040782.1 基本原理 PAGEREF _Toc327804078 h 3HYPERLINK l _Toc3278040792.2 设计思路 PAGEREF _Toc327804079 h 7HYPERLINK l _Toc3278040802.3 设计方案 PAGEREF _Toc32

2、7804080 h 7HYPERLINK l _Toc327804081第3章硬件电路设计 PAGEREF _Toc327804081 h 9HYPERLINK l _Toc3278040823.1按键设计电路 PAGEREF _Toc327804082 h 9HYPERLINK l _Toc3278040833.2 显示汉字电路设计 PAGEREF _Toc327804083 h 9HYPERLINK l _Toc3278040843.3 花样灯电路设计 PAGEREF _Toc327804084 h 10HYPERLINK l _Toc327804085第4章软件设计 PAGEREF _T

3、oc327804085 h 11HYPERLINK l _Toc3278040864.1主程序流程图与程序 PAGEREF _Toc327804086 h 11HYPERLINK l _Toc3278040874.2音乐播放子程序 PAGEREF _Toc327804087 h 13HYPERLINK l _Toc3278040894.3花样灯程序 PAGEREF _Toc327804089 h 17HYPERLINK l _Toc327804091第5章系统调试与软件仿真 PAGEREF _Toc327804091 h 20HYPERLINK l _Toc327804092总结 PAGERE

4、F _Toc327804092 h 23HYPERLINK l _Toc327804093参考文献 PAGEREF _Toc327804093 h 24HYPERLINK l _Toc327804094致 PAGEREF _Toc327804094 h 25HYPERLINK l _Toc327804095附录 PAGEREF _Toc327804095 h 26前言随着科学技术特别是微型计算机技术的高速发展,单片机作为计算机的一个分支,从20世纪70年代初诞生以来,广泛地应用于工业控制、智能仪表、家用电器等各个领域,它正为我国经济的快速发展发挥着举足轻重的作用。单片机又称单片微控制器,它不是

5、完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O 设备。单片机部也用和电脑功能类似的模块,比如 CPU,存,并行总线,还有和硬盘作用一样的存储器件,不同的是它的这些部件性能相对家用电脑弱很多,但因价钱低廉,被应用于各个领域。单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点, 广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、 温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更

6、加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。作为电子科学与技术专业的一名工科生掌握好这项技术,也是非常重要。单片机课程设计是我们提高单片机应用能力的好机会,也是我们学好这一课程的必经环节。通过课程设计可以进一步巩固我们前面所学理论知识,使我们对单片机理论知识有一个深刻的认识和全面的掌握。另外通过这一真正意义上的实践活动,我们可以从中发现自己不足之处并能够在自己的深思下和老师同学的帮助下得到与时的解决,使我们的应用能力和科技创新能力得到较大的提高。基于单片机的音乐播放器可应用于mp3、mp4,扩音器等很多方面

7、,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括Do、Re、Me等音阶在的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,我设计了一个电子生日贺卡,本电子生日贺卡可实现文字显示、音乐播放、花样彩灯等功能。由于时间与条件限制,本课程设计了一种简单的电子贺卡,其核心器件采用AT89C51单片机,本播放器具有电路简单,功能强大,易于拓展等特点。通过音乐发声器的设计方案,掌握汇编语言的编程方法,并熟练的运用 89C51 单片机定时器产生固定频率的方波信号,推动喇叭发出旋律,最重要的是自己还可以通过程

8、序设计输入自己喜欢的歌曲来演奏。方案设计2.1 基本原理本次课程设计用AT89C51作为主控器制作一个电子生日贺卡。此电子贺卡分为三个部分,分别是文字显示、音乐播放、花样彩灯。2.1.1文字显示原理采用单片机的LCD图形显示接口技术,利用LCD12864液晶显示模块,屏幕显示容与12864部存储器单元建立一一对应关系,模块部自带扫描与驱动,将显示的容输入12864对应的存储器中,就能实现容的显示。利用取码软件,按从左到右、从上到下的原则取码,可以得到“生日快乐”的16X16点阵码。每一个字都有32字节与之对应。编程时,也要按从左到右、从上到下的原则取数据送到相应的存储器中。该类液晶显示模块的指

9、令系统,总共只有七种。其指令表如表2.1所示:表2.1 指令表指令名称控制信号控制代码R/WRSDB7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX读状态10BUSY0ON/OFFRST0000写数据01写数据读数据11读数据2.1.2音乐播放原理乐曲中不同的音符,实质就是不同频率的声音。通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲,其工作原理如下:(1)要产生音频脉冲,只要算出某一音频的脉冲即1/频率,然后将此周期除以2,即为半周期的

10、时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。(2)利用8051的部定时器使其工作在计数器模式TMOD1下,改变计数值TH0与TL0以产生不同频率的方法如下:例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO。计数脉冲值与频率的关系公式如下:N=Fi/2/Fr (2.1)(N:计数值;Fi:部计时一次为1uS;故其频率为1MHz;Fr:要产生的频率 )(3)其计数值的求法如下:T=

11、65536-N=65536-Fi/2/Fr (2.2)设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。T=65536-N=65536-Fi/2/Fr=65/2/Fr=65536-500000/Fr (2.3)(4)C调个音符频率与计数值T的对照表如下表所示:表2.2 C调各音符频率与计数值T的对照表 音符频率/HZ简谱码T音符频率/HZ简谱码T低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463835#5SO#83164934#2RE#31

12、163928中6LA88064968低3M33064021 #693264994低4FA34964103中7SI98865030#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6 46664463高3M131865157低7SI 49464524高4FA139765178中1DO52364580#4FA148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#6

13、2264732高6LA176065252中3M65964777#6186565268中4FA69864820高7SI196765283每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。表2.3 节拍码对照表节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍41/2拍51又1/

14、4拍55/8拍61又1/263/4拍8281拍A2又1/2拍A1又1/4拍C3C1又1/2拍F3又3/4拍表2.4 各调节拍的时间设定表1/4节拍1/8节拍曲调值DELAY曲调值DELAY调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒表2.5 简谱对应的简谱码、T值、节拍码 简谱发音简谱码T值节拍节拍数5低音SO16426011/4拍6低音LA 26440022/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/4拍3中音MI664777611/2拍4中音FA76482082拍5中音SO86

15、4898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF65217不发音0(6)一般的歌曲,有3/8、2/4、3/4、4/4等节拍类型,但不管有几拍,基本上是在C调下演奏的。如果是C调,则音名C唱Do,音名D唱Re,音名E唱Mi,音名E唱Mi,音名F唱Fa,音名G唱So,音名A唱La,音名B唱Ti等。但是,并不是所有的歌曲都是在C调下演奏的,还有D调、E调、F调、G调等。D调是将C调各音符上升一个频率实现的,即C调下的音名D在D调下唱Do,C调下的音名E在D调下唱R

16、e,C大调的音名F在D调下上升高半音符F#唱Mi,C调下的音名G在D调下唱Fa,C调下的音名C在D调下上升高伴音C#符唱Ti。此唱法称为移调。 表2.6 C调在各调中的音名 音名调DoReMiFaSoLaTiC调CDEFGABD调DEF#GABCE调EF#G#ABCDF调FGABCDEG调GABCDEF#A调ABC#DEF#G#B调BCDEFGA(7)音乐代码库的建立方法,先找出乐曲的最低音和最高音围,然后确定音符表T的顺序,把T值表建立在TABLE1。构成发音符的计数值放在“TABLE”,简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。2.1.3花样灯原

17、理LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口,若为低电平,可使LED亮起。发光二极管的亮、灭由部程序控制,8个LED发光二极管由两个按键控制,显示两种不同的花样。2.2 设计思路为了确定其设计方案,首先必须构思好初步的设计思路。根据设计要求和实验仿真条件,初步的设计思路可以总结如下:(1) 单片机的时钟引脚外接晶振频率为12MHZ的晶振信号电路。(2) 利用LCD12864液晶显示模块实现文字显示。(3) 当前花样灯用8只LED发光二极管组成。(4) 键盘采用独立式键盘,需要2个键。(5) 采样时间用定时/计数器1来实现音乐播放。(6) 采用外部中断

18、1实现花样灯的切换。2.3 设计方案根据设计要求和设计思路,可以确定该系统的设计方案,硬件主要由五部分组成,即LCD12864、单片机、键盘、LED显示器、扬声器。单片机采用AT89C51。在单片机中,定时功能既可以由硬件(定时/记数器)实现,也可通过软件定时实现。硬件定时是利用单片机定时器定时,启动以后定时器可与CPU并行工作,不占用CPU时间,CPU有较高的工作效率。定时器的TMOD用于设置定时器/计数器的工作方式03,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。硬件电路设计如图2.3所示:文字显示电路音乐播放LED显示电路AT89

19、C51按键电路时钟电路图2.3 硬件电路设计图硬件电路设计3.1按键设计电路图对于按键电路的设计可以有2种方式:一种方式是直接按键设计,也称独立按键,这种设计电路适用于按键较少的控制,具有按键电路简单,编程方便等优点;另一种方式是矩阵式键盘的设计,它适用于对控制按键较多的电路控制, 占用较少的I/O接口,但是按键电路复杂,编程比较复杂。本课题总共只需要2个按键,所以采用独立按键设计。由上到下的按键分别是花样灯1,花样灯2,如图3.1所示:图3.1 按键电路图3.2 显示汉字电路设计图本课题所采用得是由LCD12864作为显示电路,用以显示贺卡所要表达的文字即生日快乐。硬件电路连接是单片机P0.

20、0P0.7接12864的DB0DB7 8个各管脚,P2.0P2.4接12864的控制端E、RW、RS、CS2、CS1。连接图如图3.2所示:图3.2 显示汉字电路图3.3 花样灯电路设计图LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口。连接图如图3.3所示:图3.3 花样灯电路图软件设计4.1主程序流程图与程序调用音乐播放子程序开始 调用写汉字子程序显示汉字设定起始列设置起始页设置调用写汉字子程序显示汉字设定起始列设置起始页设置调用写汉字子程序显示汉字设定起始列设置起始页设置调用写汉字子程序显示汉字设定起始列设置起始页设置调用写汉字子程序显示汉字设定起始

21、列设置起始页设置调用写汉字子程序显示汉字设定起始列设置起始页设置左右屏控制初始化结束 图4.1 主程序流程图RET计算汉字代码初始地址R0=R0+1 R0=32?调用写入数据子程序重新设置起始列地址起始页地址加1R0=16?R0=R0+1调入写入数据子程序R0=0写入起始列地址写入起始页地址 N Y N Y 图4.2 主程序的子程序流程图4.2音乐播放子程序与流程图4.2.1音乐播放子程序代码MUISC:MOV TMOD,#01H MOV IE,#82H START0:MOV 30H,#00H; 取简谱码指针,初次30H=00NEXT:MOV A,30H MOV DPTR,#TABLE MOV

22、C A,A+DPTR; 查表,首址(第0位)是52H MOV R2,A;R2暂存简谱码,R2=52H JZ END0;取到结束码(00H),跳至END0 ANL A,#0FH;取低4位(节拍码),A=02H MOV R5,A;节拍码存于R5 MOV A,R2 SWAP A; 交换高低4位,A=25HANL A,#0FH;取低4位(音符码),A=05HJNZ SING;取到的音符码为0吗?不是跳至SING CLR TR0;是,则不发音JMP D1 SING:DEC A;取到的音符码,减1,A=4MOV 22H,A RL A; 乘2,A=8 MOV DPTR,#TABLE1;到表TABLE1取T值

23、,首址64260 MOVC A,A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL0,A MOV 20H,A SETB TR0;启动定时器D1:CALL DELAY;基本延时单位187毫秒INC 30H JMP NEXT;取下一个简谱码END0:CLR TR0;停止定时器0计时 JMP START1;重复循环TIM0:PUSH ACC;定时器0中断子程序,重复加载PUSH PSW MOV TH0,21H MOV TL0,20H CPL P3.7;P3.7输出POP PSW POP ACC RETI DELAY

24、:MOV R7,#02 D2:MOV R4,#187 D3:MOV R3,#248 DJNZ R3,$ DJNZ R4,D3 DJNZ R7,D2 DJNZ R5,DELAY;节拍的长短,即每个音符的发音时间的长短RET TABLE1:DW 64260,64400,64524,64580 DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW65157,65178,65217TABLE:DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,

25、04H DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H DB 0C4H,0B4H,04H DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H DB 0C4H,0B4H,04H DB 00H;简谱码表,高四位为音符,低四位为节拍数END4.2.2音乐子程序流程图开始

26、 启动定时器TL0=A,20H=A,20H=a查找下一个T值TH0=A,21H=A 查表给DPTR赋初值建立TABLE130H加1A=00H?调用延时TR0取的高四位存于R2=00H?取A的低四位存于R5系统初始化给DPTR赋初值建立简谱码建立初值简码表存于R2查表A=30H给30H赋初值跳至花样灯 TR0=0Y NNY图4.3 音乐子程序流程图4.3花样灯程序与流程图4.3.1花样灯程序代码START1:SETB IT0;系统初始化SETB EX0SETB IT1SETB EX1SETB EA MOV A,#0FEHLOOP:MOV P1,A;依次点亮,循环点灯LCALL DELAYRL A

27、LJMP LOOPINTER0:JNB P2.5,S1;若P2.5=0,切换到花样灯1JNB P2.7,S3;若P2.7=0,切换到花样灯2SJMP EXITS1:MOV R2,#10;八只彩灯“亮灭亮”闪烁10次S2:MOV P1,#00LCALL DELAY1 MOV P1,#0FFH LCALL DELAY1 DJNZ R2,S2SJMP S1RETIS3:MOV R3,#10;八只彩灯从0、2、3、6到1、3、5、7交替闪烁10次S4:MOV P1,#0AAHLCALL DELAY1MOV P1,#55HLCALL DELAY1DJNZ R3,S4 SJMP S3EXIT:RETIDE

28、LAY:MOV R0,#0FFHD1:MOV R1,#0FFHD2:NOPNOPDJNZ R1,D2DJNZ R0,D1 RETEND4.3.2花样灯流程图开始 A移位调用延时初始化A=0FFHP1=A 图4.4 花样灯流程图开始 中断返回R3-1=0延时P1=55H延时P1=AAHR3=10R2-1=0延时P1=0FFH延时P1=00HR2=10P2.7=0?P2.5=0? Y Y N N N Y Y图4.5 花样灯中断服务流程图系统调试与软件仿真在Proteus仿真软件中实现LCD12864液晶模块显示“生日快乐”的同时,蜂鸣器播放生日歌。当生日歌播放完之后,八只彩灯被依次点亮并循环,如若

29、要切换彩灯花样,可以按键实现。在本次仿真过程中遇到的最大问题就是,出现“Simulation is not running in real time due to excessive CPU load”的提示信息。软件仿真时,音乐播放速度特别慢,感觉像卡带了一样,我以为是电路出了问题。上网查询了解到,CPU过载,导致仿真速度不能实时运行,可能与电脑的配置过低,Proteus仿真软件的版本低以与电路太复杂有关,并不一定就是电路图出问题。这个问题的出现,让我了解到,Proteus仿真软件要达到实时运行的效果还是有差距的。在Proteus仿真软件的帮助教程中已经提到这方面问题的解决方案,我试着根据上

30、面的方案进行操作。分别点击电阻和发光二极管的属性,选“使用文本方式编辑所有属性(Edit all properties as text)”,将PRIMTIVE属性中的ANALOG改为DIGITAL。按此操作,将所有的电阻和发光二极管的属性改变。这次仿真时,音乐播放的速度基本正常,CPU占用不总是100%。另外,我还发现改变属性的发光二极管比原先亮很多。仿真时,文字显示效果图,如图5.1:图5.1 文字显示仿真结果当按键花样灯1按下时,八只彩灯“亮灭亮”闪烁5次,如图5.2:图5.2 花样灯1仿真结果当按键花样灯2按下时,八只彩灯从0、2、4、6到1、3、5、7交替闪烁, 如图5.3和图5.4:

31、图5.3 花样灯2仿真结果 图5.4 花样灯2仿真结果图形说明:图5.1,刚开始仿真时,显示“生日快乐”,并伴随响亮的生日快乐歌曲。 图5.2,刚开始仿真时,按花样灯一时,显示“生日快乐”,伴随响亮的生日快乐歌曲,并且亮灯,八个彩灯按“亮灭亮”交替闪烁五次。 图5.3和图5.4,刚开始仿真时,按花样灯二时,显示“生日快乐”,伴随响亮的生日快乐歌曲,并且亮灯,先是0、2、4、6开始亮,熄灭后1、3、5、7接着亮,连着就是交替闪烁。总结通过短暂的两周时间的课程设计,使我对单片机的基本原理以与单片机的汇编语言编程有了一定的了解,同时也加强了我对Proteus仿真软件的操作能力,扩展了自己对一些重要芯

32、片工作原理的了解,模块化设计让思路变得明了,流程图的绘制也让冗长的程序也变得条理清晰。我的题目是电子生日贺卡的设计,对于我们这些工科学生来说,这是一次锻炼实践能力的好机会。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实

33、际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。这次课程设计通过自己的努力,同学的帮助,最终顺利完成了。参考文献1江世明编著,单片机原理与应用,中国铁道。2何立民编著,MCS-51系列单片机应用系统设计,航空航天大学,。3赖麒文编著,8051单片机软件设计的艺术,科学。4伟编著,单片机C语言程序设计实训100例,电子工业。5周润景等编著,基于proteus的电

34、路与单片机设计与仿真,航空航天大学。致感学院给我提供了一个锻炼自己独立完成任务的机会,使得我的动手能力和理论水平都有所提高。感老师充分相信我的能力,让我可以把自己能够顺利完成任务。感我的同学们,在面对我有那么多的难题时,耐心的跟我讲解,因为有他们帮助,我才能准时的完成这份课程设计。附录总程序源代码ORG 0000H LJMP MAIN ORG 000BH JMP TIM0ORG 0003HLJMP INTER0 CSA EQU p2.4CSB EQU P2.3 RS EQU P2.2 RW EQU P2.1E EQU P2.0 DATAES EQU P0 COM EQU 21HDAT EQU

35、22H YM EQU 23HLM EQU 24HCODES EQU 25HORG 0030HMAIN:LCALL INT;调用初始化子程序LCALL LEFT;对左半屏操作MOV YM,#3;设置“生”起始页MOV LM,#32;设置“生”列位置MOV CODES,#0LCALL CHINEMOV YM ,#3;设置“日”起始页MOV LM ,#48;设置“日”列位置MOV CODES,#1LCALL CHINELCALL RIGHTMOV YM,#3;设置“快”起始页MOV LM,#0;设置“快”列位置MOV CODES,#2 LCALL CHINE MOV YM,#3;设置“乐”起始页 M

36、OV LM,#16;设置“乐”列位置MOV CODES,#3 LCALL CHINELCALL MUISC DDD:LJMP DDD;INT:LCALL LEFT;初始化子程序MOV COM,#3FHLCALL PRMLCALL RIGHT MOV COM,#3FH LCALL PRMCLEARL:LCALL LEFT;清左半屏MOV R4,#00HCLEAR0:MOV COM,R4LCALL PAGEFIRSTMOV COM,#00H LCALL LIEFIRST MOV R3,#64CLEAR1:MOV DAT,#00HLCALL PRDDJNZ R3,CLEAR1INC R4CJNE R

37、4,#08H,CLEAR0CLEARR:LCALL RIGHT;清右半屏MOV R4,#00HCLEAR2:MOV COM,R4LCALL PAGEFIRSTMOV COM,#00HLCALL LIEFIRSTMOV R3,#64CLEAR3:MOV DAT,#00HLCALL PRDDJNZ R3,CLEAR3INC R4CJNE R4,#08H,CLEAR2RET BUSY:CLR RS;判断忙子程序 SETB RW PRRO1:MOV DATAES,#0FFH;将端口置1,准备读数据总线SETB E;液晶模块将当前状态送到数据总线MOV A,DATAES;读数据总线CLR E ACC.7

38、,PRRO1;为1,表示液晶模块处于忙状态,等到ACC.7返回为0,返回主程序RET LEFT:CLR CSA;左半屏控制 SETB CSB RETRIGHT:SETB CSA;右半屏控制CLR CSB RETPRM:LCALL BUSY;判断液晶模块是否忙CLR RSCLR RWMOV DATAES,COM;COM中存放指令SETB ECLR ERETPRD:LCALL BUSY;判断液晶模块是否忙SETB RSCLR RWSETB EMOV DATAES,DAT;DAT中存放待写入的数据CLR E;液晶模块从数据总线上读入指令 RETPAGEFIRST:MOV A,COM;设置显示初始页,

39、COM中为实际页码 ORL A,#0B8H MOV COM,A LCALL PRM;调用写入指令子程序 RETLIEFIRST:MOVA,COM;设置显示初始列,COM中为实际页码 ORL A,#40H MOV COM,A LCALL PRM;调用写入指令子程序 RET CHINE:MOV DPTR,#TAB;查表显示汉字MOV A,CODESMOV B,#32MUL ABADD A,DPLMOV DPL,A MOV A,B ADDC A,DPHMOV DPH,AMOV COM,YMLCALL PAGEFIRSTMOV COM,LMLCALL LIEFIRST MOV R0,#00H RETU

40、RN0:MOV A,R0 MOVC A,A+DPTRMOV DAT,ALCALL PRDINC R0CJNE R0,#16,RETURN0MOV A,YMINC AMOV COM,ALCALL PAGEFIRSTMOV COM,LMLCALL LIEFIRST RETURN1:MOV A,R0MOVC A,A+DPTRMOV DAT,A LCALL PRD INC R0 CJNE R0,#32,RETURN1 RETMUISC:MOV TMOD,#01H MOV IE,#82HSTART0:MOV 30H,#00H;取简谱码指针,初次30H=00NEXT:MOV A,30H MOV DPTR,

41、#TABLE MOVC A,A+DPTR;查表,首址(第0位)是52H MOV R2,A;R2暂存简谱码,R2=52H JZ END0;取到结束码(00H),跳至END0 ANL A,#0FH;取低4位(节拍码),A=02H MOV R5,A;节拍码存于R5 MOV A,R2 SWAP A;交换高低4位,A=25HANL A,#0FH;取低4位(音符码),A=05HJNZ SING;取到的音符码为0吗?不是跳至SING CLR TR0;是,则不发音JMP D1 SING:DEC A;取到的音符码,减1,A=4MOV 22H,A RL A;乘2,A=8 MOV DPTR,#TABLE1;到表TA

42、BLE1取T值,首址64260 MOVC A,A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL0,A MOV 20H,A SETB TR0;启动定时器D1:CALL DELAY;基本延时单位187毫秒INC 30H JMP NEXT;取下一个简谱码END0:CLR TR0;停止定时器0计时 JMP START1;跳到花样灯子程序TIM0:PUSH ACC PUSH PSW MOV TH0,26H MOV TL0,20H CPL P3.7 POP PSW POP ACC RETISTART1:SETB IT0;系统初始化SETB EX0SETB IT1SETB EX1SETB EAMOV A,#0FEH;依次循环点灯LOOP:MOV P1,ALCALL DELAY1RL ALJMP LOOPINTER0:JNB P2.5,S1;若P2.5=0,切换到花样灯1JNB P2.7,S3;若P2.7=0,切换到花样灯2SJMP EXITS1:MOV R2,#10;S2:MOV P1,#00LCALL DELAY1MOV P1,#0FFHLCALL DELAY1DJNZ R2,S2;八只彩灯“亮灭

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论