传感器课外实验
——激光竖琴
刘惠 65100326 仪电三班
目录
第一章 引言 . .............................................................................................................................. 1 第二章 概述 . .............................................................................................................................. 1 第三章 总体设计方案 . .............................................................................................................. 1 第四章 激光竖琴的原理 . .......................................................................................................... 3 第五章 电路的调试与制作 . ...................................................................................................... 7 第六章 附录 . .............................................................................................................................. 7
第一章 引言
该激光竖琴要求为:当激光被障碍物遮挡时,相应位置的发光二极管点亮,
蜂鸣器发出相应的音符。不能同时遮挡两个或两个以上的激光。此激光竖琴可以完成简单的奏乐。
第二章 概述
竖琴,是一种大型弹拨乐器。竖琴是世界上最古老的拨弦乐器,早期的竖琴只具有按自然音阶排列的弦,所奏调性有限。现代竖琴是由法国钢琴制造家S ·埃拉尔于1810年设计出来的,有四十七条不同长度的弦,七个踏板可改变弦音的高低,能奏出所有的调性。
由于具有丰富的内涵和美丽的音质,竖琴成为交响乐队以及歌舞剧中特殊的色彩性乐器,主要担任的是和声伴奏和滑奏式的装饰句,每每奏出画龙点睛之笔,令听众难以忘怀。在室内乐中,竖琴也是重要的独奏乐器。独奏时能奏出柔和优美的抒情段或华采段,极具感染力。 它主要有一垂直的前柱、一斜立的长条形音箱和位于上方的弯曲的琴颈,形成一三角形琴架,琴弦自上而下与前柱平行地绷于琴颈与音箱上,琴身是木制结构。据埃及古图记载,此种乐器出现于公元前三、四千年。当时的形状犹如一个有弦之弓,传说这是受射箭时箭发弦鸣的启发而发明的。至中世纪有记载说古代竖琴就是里拉琴(Lyre ,一种最古老的用缎带吊在身上或套在左手演奏的弹拨乐器)。形体大的竖琴当时被称为奇塔拉琴(Cithara )。经过许多年的逐次改良,才形成现代竖琴。 现代竖琴都是落地式的,形状巨大,音域与钢琴相仿。此种乐器能改进成今天的模式,主要应归功于19世纪的制琴家S. 厄拉尔德,他把原先的单踏板竖琴改成双踏板竖琴,这一改进大大扩展了竖琴的演奏能力,此后又有人在这种双踏板竖琴的基础上改制成半音竖琴。
第三章 总体设计方案
1、 总体设计思路
激光竖琴大体上可分为两个阶段:
(1)系统分析阶段
① 根据系统的目标,明确所采用激光照射的目的和任务。 ② 分析激光竖琴所在系统的工作环境。
③ 根据光敏电阻工作要求,确定其的基本功能和方案。如相关电阻以及材料选择、识别范围、识别精度的要求以及对温度、震动等环境的适应性。 (2) 技术设计阶段
① 根据系统的要求确定激光竖琴允许的空间工作范围,一般来说的竖琴的体积比较大,由于是初步的激光竖琴,应用空间必定远远小于竖琴的使用空间,并不会占用很大的空间;
② 拟订激光竖琴的识别流程图;
③ 选择具体电路结构,进行激光竖琴总电路图的设计;
2、 总体方案的确定
(1)在设计的时候,电路设计方面我使用的方案是:“各个电路分开连接”其特点在于各个电路可以依照识别器外壳的形状结构来改变所处的位置,其缺点是各个电路比较分散,占用空间相对变大;优点是能灵活改变电路布局,更加便于操作。
(2)电路设计有可行性。在设计本设备的电路时,采用激光照射光敏电阻,因为激光光束集中,在照射光敏电阻时能使光敏电阻的阻值迅速改变,从而使光敏电阻两端的电压发生明显的改变。
第四章 激光竖琴的原理
1、整体结构
这个激光竖琴,用硬纸片做成类似竖琴的外壳
在塑料板上安装8个3.0V 激光管,固定在竖琴上面的纸板上,安装对应的8个光敏电阻,然后,在合适的地方放置5号电池盒,用透明胶固定。最后,根据电源原理图,把对应的引线和插座连接,以方便后期的连接和升级。最后,再与电路板底座连接。
2、原理
激光竖琴采用单片机STC89C52芯片来完成。
图1 52单片机的电路原理图
电路使用了STC89C52单片机,在P1.0引脚上连接发声元件,即无源蜂鸣器。通过三极管放大电流,使音乐更响亮。其余部分分别是51单片机的最小系统(晶振电路),p0引脚接发光二级管,p2采集光敏电阻两端的电压。电路的电源用5V 稳压电源,激光用两节五号电池供电。 (1) 感光部分电路
感光部分的电路主要由2部分组成,分别为单片机电路、光敏电阻控制电路等。
光敏电阻控制电路:由八个光敏电阻共阴极组成,高电平有效,光被挡住时,向单片机输入指令数据。 (2)发音电路
发音电路主要由无源蜂鸣器电路和发光二极管显示灯电路构成。 (3)单片机内部程序设计:
在系统工作过程中,单片机不断扫描P2口的电平变化,之后按照相应的指令执行。
图2 晶振电路
单片机晶振电路原理及作用
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO )。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
图3 STC89C52
芯片资料:STC89C52
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash ,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash ,512字节RAM , 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz ,6T/12T可选STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash ,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash ,512字节RAM , 32 位I/O 口线,看门狗定时器,内置4KB EEPROM ,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz 。
图4 光敏电阻
光敏电阻资料
光敏电阻在室内光线下的阻值约10k Ω。当受到激光管照射时,它的电阻将小于1k Ω。于是,笔者用5k Ω的电阻和光敏电阻串联,进行分压。当有激光照射时,单片机读取光敏电阻的电压,约0.5V ,此时它的逻辑电平为0。当无激光照射时,单片机读取光敏电阻的电压,约3.4V ,这时它的逻辑电平为1。
这样,当我们遮挡激光的光线时,就能在电路中产生开关的效果。人耳能听到的声音频率为20Hz~20kHz,竖琴音符频率当然也在这个范围。只是,不同的音符,有着自己固定的频率。通过52单片机自带的16位定时器就可以产生上述音频。例如竖琴的标准音la 为440Hz 。通过计算可知,它的半周期为1136μs 。这样,只要在半周期时跳变引脚电平,就可以产生440Hz 的方波了。再经过电声转换元件(蜂鸣器),就可以产生标准音la 了,其他音符也是这样产生的。
第五章 电路的调试与制作
本次的制作中,在焊接方面由于没有焊接三极管,致使蜂鸣器不工作。在程序方面,在没有激光被挡住时,发光二极管和蜂鸣器保留前一刻的状态一直工作,将程序进行相应改进后只有在有激光被挡住时它们才工作。
外装:在激光管的固定方面,刚开始我们用的是纸板,后发现纸盒子有点软,不好定激光管,与光敏电阻对不准。后来我们决定用透明塑料板,在相应位置打了八个孔,用纸屑弥补空隙进行固定。
第六章 附录
1、 使用STC89C52方案的元件清单
编号 零件名称 数量 1 12MHz晶振 1
2 5kΩ电阻 8
3 30pF电容 2 4 40针插座 1 5 STC89C52 1 6 无源蜂鸣器 1 7 8550PNP三极管 1
8 1kΩ电阻 9 9 光敏电阻 5
10 3V激光管 8 11 电池盒 1 12 插针 13 洞洞板 1 14 发光二级管 8 15 插线 16 16 5V稳压电源 1
2、程序:
BUZZ EQU P1.0 ORG 0000H LJMP MAIN ORG 000BH LJMP INT_T0 ORG 0100H
MAIN:MOV SP,#60H ;初始化堆栈指针 MOV 30H,#00 ;定时器初值清零 MOV 31H,#00
mov p0,#0FFH ;灯全灭
MOV P1,#0FFH ;设置P1口为输入模式
MOV TMOD,#01H ;设置定时器0为工作模式1 SETB ET0 ;开定时器0中断 SETB EA ;开总中断 CLR TR0 ;关闭定时器0 START:MOV R0,P2
CJNE R0,#00H,KEY1 ;键盘扫描 CLR TR0 MOV p0,0FFH CLR p1.0 SJMP START
KEY1:CJNE R0,#01H,KEY2 ;K1键按下 mov p0,#0FEH ;第一个灯亮 MOV 30H,#0FBH ;设置音阶1 MOV 31H,#0E9H LJMP SET_TIMER
若干
KEY2:CJNE R0,#02H,KEY3 ;K2键按下 mov p0,#0FDH ;第叶二个灯亮 MOV 30H,#0FCH ;设置音阶2 MOV 31H,#5CH LJMP SET_TIMER
KEY3:CJNE R0,#04H,KEY4 ;K3键按下 mov p0,#0FBH ;第三个灯亮 MOV 30H,#0FCH ;设置音阶3 MOV 31H,#0C1H LJMP SET_TIMER
KEY4:CJNE R0,#08H,KEY5 ;K4键按下 mov p0,#0F7H ;第四个灯亮 MOV 30H,#0FCH ;设置音阶4 MOV 31H,#0EFH LJMP SET_TIMER
KEY5:CJNE R0,#10H,KEY6 ;K5键按下 mov p0,#0EFH ;第五个灯亮 MOV 30H,#0FDH ;设置音阶5 MOV 31H,#045H LJMP SET_TIMER
KEY6:CJNE R0,#20H,KEY7 ;K6键按下 mov p0,#0DFH ;第六个灯亮 MOV 30H,#0FDH ;设置音阶6 MOV 31H,#92H LJMP SET_TIMER
KEY7:CJNE R0,#40H,KEY8 ;K7键按下 mov p0,#0BFH ;第七 个灯亮 MOV 30H,#0FDH ;设置音阶7 MOV 31H,#0D6H LJMP SET_TIMER
KEY8:CJNE R0,#80H,NOKEY ;K8按下 mov p0,#07FH ;第八个灯亮 MOV 30H,#0FDH ;设置音阶8 MOV 31H,#0FBH
SET_TIMER:SETB TR0 ;发声 LJMP START
NOKEY:CLR TR0 ;无键按下 LJMP START
INT_T0: ;T0中断服务程序 MOV TH0,30H ;定时器赋初值 MOV TL0,31H
CPL BUZZ ;输出方波RETIEND RETI END
传感器课外实验
——激光竖琴
刘惠 65100326 仪电三班
目录
第一章 引言 . .............................................................................................................................. 1 第二章 概述 . .............................................................................................................................. 1 第三章 总体设计方案 . .............................................................................................................. 1 第四章 激光竖琴的原理 . .......................................................................................................... 3 第五章 电路的调试与制作 . ...................................................................................................... 7 第六章 附录 . .............................................................................................................................. 7
第一章 引言
该激光竖琴要求为:当激光被障碍物遮挡时,相应位置的发光二极管点亮,
蜂鸣器发出相应的音符。不能同时遮挡两个或两个以上的激光。此激光竖琴可以完成简单的奏乐。
第二章 概述
竖琴,是一种大型弹拨乐器。竖琴是世界上最古老的拨弦乐器,早期的竖琴只具有按自然音阶排列的弦,所奏调性有限。现代竖琴是由法国钢琴制造家S ·埃拉尔于1810年设计出来的,有四十七条不同长度的弦,七个踏板可改变弦音的高低,能奏出所有的调性。
由于具有丰富的内涵和美丽的音质,竖琴成为交响乐队以及歌舞剧中特殊的色彩性乐器,主要担任的是和声伴奏和滑奏式的装饰句,每每奏出画龙点睛之笔,令听众难以忘怀。在室内乐中,竖琴也是重要的独奏乐器。独奏时能奏出柔和优美的抒情段或华采段,极具感染力。 它主要有一垂直的前柱、一斜立的长条形音箱和位于上方的弯曲的琴颈,形成一三角形琴架,琴弦自上而下与前柱平行地绷于琴颈与音箱上,琴身是木制结构。据埃及古图记载,此种乐器出现于公元前三、四千年。当时的形状犹如一个有弦之弓,传说这是受射箭时箭发弦鸣的启发而发明的。至中世纪有记载说古代竖琴就是里拉琴(Lyre ,一种最古老的用缎带吊在身上或套在左手演奏的弹拨乐器)。形体大的竖琴当时被称为奇塔拉琴(Cithara )。经过许多年的逐次改良,才形成现代竖琴。 现代竖琴都是落地式的,形状巨大,音域与钢琴相仿。此种乐器能改进成今天的模式,主要应归功于19世纪的制琴家S. 厄拉尔德,他把原先的单踏板竖琴改成双踏板竖琴,这一改进大大扩展了竖琴的演奏能力,此后又有人在这种双踏板竖琴的基础上改制成半音竖琴。
第三章 总体设计方案
1、 总体设计思路
激光竖琴大体上可分为两个阶段:
(1)系统分析阶段
① 根据系统的目标,明确所采用激光照射的目的和任务。 ② 分析激光竖琴所在系统的工作环境。
③ 根据光敏电阻工作要求,确定其的基本功能和方案。如相关电阻以及材料选择、识别范围、识别精度的要求以及对温度、震动等环境的适应性。 (2) 技术设计阶段
① 根据系统的要求确定激光竖琴允许的空间工作范围,一般来说的竖琴的体积比较大,由于是初步的激光竖琴,应用空间必定远远小于竖琴的使用空间,并不会占用很大的空间;
② 拟订激光竖琴的识别流程图;
③ 选择具体电路结构,进行激光竖琴总电路图的设计;
2、 总体方案的确定
(1)在设计的时候,电路设计方面我使用的方案是:“各个电路分开连接”其特点在于各个电路可以依照识别器外壳的形状结构来改变所处的位置,其缺点是各个电路比较分散,占用空间相对变大;优点是能灵活改变电路布局,更加便于操作。
(2)电路设计有可行性。在设计本设备的电路时,采用激光照射光敏电阻,因为激光光束集中,在照射光敏电阻时能使光敏电阻的阻值迅速改变,从而使光敏电阻两端的电压发生明显的改变。
第四章 激光竖琴的原理
1、整体结构
这个激光竖琴,用硬纸片做成类似竖琴的外壳
在塑料板上安装8个3.0V 激光管,固定在竖琴上面的纸板上,安装对应的8个光敏电阻,然后,在合适的地方放置5号电池盒,用透明胶固定。最后,根据电源原理图,把对应的引线和插座连接,以方便后期的连接和升级。最后,再与电路板底座连接。
2、原理
激光竖琴采用单片机STC89C52芯片来完成。
图1 52单片机的电路原理图
电路使用了STC89C52单片机,在P1.0引脚上连接发声元件,即无源蜂鸣器。通过三极管放大电流,使音乐更响亮。其余部分分别是51单片机的最小系统(晶振电路),p0引脚接发光二级管,p2采集光敏电阻两端的电压。电路的电源用5V 稳压电源,激光用两节五号电池供电。 (1) 感光部分电路
感光部分的电路主要由2部分组成,分别为单片机电路、光敏电阻控制电路等。
光敏电阻控制电路:由八个光敏电阻共阴极组成,高电平有效,光被挡住时,向单片机输入指令数据。 (2)发音电路
发音电路主要由无源蜂鸣器电路和发光二极管显示灯电路构成。 (3)单片机内部程序设计:
在系统工作过程中,单片机不断扫描P2口的电平变化,之后按照相应的指令执行。
图2 晶振电路
单片机晶振电路原理及作用
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO )。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
图3 STC89C52
芯片资料:STC89C52
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash ,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash ,512字节RAM , 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz ,6T/12T可选STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash ,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash ,512字节RAM , 32 位I/O 口线,看门狗定时器,内置4KB EEPROM ,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz 。
图4 光敏电阻
光敏电阻资料
光敏电阻在室内光线下的阻值约10k Ω。当受到激光管照射时,它的电阻将小于1k Ω。于是,笔者用5k Ω的电阻和光敏电阻串联,进行分压。当有激光照射时,单片机读取光敏电阻的电压,约0.5V ,此时它的逻辑电平为0。当无激光照射时,单片机读取光敏电阻的电压,约3.4V ,这时它的逻辑电平为1。
这样,当我们遮挡激光的光线时,就能在电路中产生开关的效果。人耳能听到的声音频率为20Hz~20kHz,竖琴音符频率当然也在这个范围。只是,不同的音符,有着自己固定的频率。通过52单片机自带的16位定时器就可以产生上述音频。例如竖琴的标准音la 为440Hz 。通过计算可知,它的半周期为1136μs 。这样,只要在半周期时跳变引脚电平,就可以产生440Hz 的方波了。再经过电声转换元件(蜂鸣器),就可以产生标准音la 了,其他音符也是这样产生的。
第五章 电路的调试与制作
本次的制作中,在焊接方面由于没有焊接三极管,致使蜂鸣器不工作。在程序方面,在没有激光被挡住时,发光二极管和蜂鸣器保留前一刻的状态一直工作,将程序进行相应改进后只有在有激光被挡住时它们才工作。
外装:在激光管的固定方面,刚开始我们用的是纸板,后发现纸盒子有点软,不好定激光管,与光敏电阻对不准。后来我们决定用透明塑料板,在相应位置打了八个孔,用纸屑弥补空隙进行固定。
第六章 附录
1、 使用STC89C52方案的元件清单
编号 零件名称 数量 1 12MHz晶振 1
2 5kΩ电阻 8
3 30pF电容 2 4 40针插座 1 5 STC89C52 1 6 无源蜂鸣器 1 7 8550PNP三极管 1
8 1kΩ电阻 9 9 光敏电阻 5
10 3V激光管 8 11 电池盒 1 12 插针 13 洞洞板 1 14 发光二级管 8 15 插线 16 16 5V稳压电源 1
2、程序:
BUZZ EQU P1.0 ORG 0000H LJMP MAIN ORG 000BH LJMP INT_T0 ORG 0100H
MAIN:MOV SP,#60H ;初始化堆栈指针 MOV 30H,#00 ;定时器初值清零 MOV 31H,#00
mov p0,#0FFH ;灯全灭
MOV P1,#0FFH ;设置P1口为输入模式
MOV TMOD,#01H ;设置定时器0为工作模式1 SETB ET0 ;开定时器0中断 SETB EA ;开总中断 CLR TR0 ;关闭定时器0 START:MOV R0,P2
CJNE R0,#00H,KEY1 ;键盘扫描 CLR TR0 MOV p0,0FFH CLR p1.0 SJMP START
KEY1:CJNE R0,#01H,KEY2 ;K1键按下 mov p0,#0FEH ;第一个灯亮 MOV 30H,#0FBH ;设置音阶1 MOV 31H,#0E9H LJMP SET_TIMER
若干
KEY2:CJNE R0,#02H,KEY3 ;K2键按下 mov p0,#0FDH ;第叶二个灯亮 MOV 30H,#0FCH ;设置音阶2 MOV 31H,#5CH LJMP SET_TIMER
KEY3:CJNE R0,#04H,KEY4 ;K3键按下 mov p0,#0FBH ;第三个灯亮 MOV 30H,#0FCH ;设置音阶3 MOV 31H,#0C1H LJMP SET_TIMER
KEY4:CJNE R0,#08H,KEY5 ;K4键按下 mov p0,#0F7H ;第四个灯亮 MOV 30H,#0FCH ;设置音阶4 MOV 31H,#0EFH LJMP SET_TIMER
KEY5:CJNE R0,#10H,KEY6 ;K5键按下 mov p0,#0EFH ;第五个灯亮 MOV 30H,#0FDH ;设置音阶5 MOV 31H,#045H LJMP SET_TIMER
KEY6:CJNE R0,#20H,KEY7 ;K6键按下 mov p0,#0DFH ;第六个灯亮 MOV 30H,#0FDH ;设置音阶6 MOV 31H,#92H LJMP SET_TIMER
KEY7:CJNE R0,#40H,KEY8 ;K7键按下 mov p0,#0BFH ;第七 个灯亮 MOV 30H,#0FDH ;设置音阶7 MOV 31H,#0D6H LJMP SET_TIMER
KEY8:CJNE R0,#80H,NOKEY ;K8按下 mov p0,#07FH ;第八个灯亮 MOV 30H,#0FDH ;设置音阶8 MOV 31H,#0FBH
SET_TIMER:SETB TR0 ;发声 LJMP START
NOKEY:CLR TR0 ;无键按下 LJMP START
INT_T0: ;T0中断服务程序 MOV TH0,30H ;定时器赋初值 MOV TL0,31H
CPL BUZZ ;输出方波RETIEND RETI END