单片机实验
- 格式:docx
- 大小:485.75 KB
- 文档页数:12
电子琴模拟
一、实验目的
1、了解单片机系统发声原理
2、进一步熟悉定时器编程方法 二、实验说明
1、利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。
2、定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平。由于定时参数不同,就发出了不同频率的脉冲。本实验中当有键按下,会发出连续脉冲,直到按键松开,才停止发音。发完后继续检测键盘,如果键还按下,继续发音。
三、实验内容及步骤
利用实验仪上提供的键盘,使数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音调。用P3.2 口发出音频脉冲
,驱动喇叭。
1、单片机最小应用系统的 P1口接查询式键盘,单片机INT0口接扬声器的SP+,SP-接GND ,扬声器的J19打在23处,P1口接查询式键盘的JD3口
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“Organ.ASM ”源程序,进行编译,直到编译无误。
4、全速运行程序,按查询式键盘的1~7键,扬声器发出高低不同的声音。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP 烧录器烧录到89S52/89S51芯片中运行。(ISP 烧录器的使用查看附录二) 四、流程图及源程序
1.流程图
定时中断程序框图
2.源程序:
PULSE BIT 10H ;脉冲
TONEHIGH EQU 30H ;高音调
TONELOW EQU 31H ;低音调
TONE EQU 32H ;音调
SPEAKER BIT P3.2
LJMP START
ORG 000BH
TIMER0INT: ;定时中断
PUSH PSW
CLR TR0
MOV TH0, TONEHIGH
MOV TL0, TONELOW
SETB TR0
MOV C, PULSE
MOV SPEAKER,C
CPL PULSE
RETI
TONETABLE:
DW 64578, 64686, 64778, 64821
DW 64898, 64968, 65029
TESTKEY:
MOV P1, #0FFH
MOV A, P1 ;读入键状态
RET
KEYTABLE:
DB 0FEH,0FDH,0FBH,0F7H ;键值表
DB 0EFH,0DFH,0BFH,07FH
GETKEY:
MOV R6,#10
ACALL DELAY
MOV A,P1
CJNE A,#0FFH,K01 ;确有键按下
LJMP MLOOP
K01: MOV R3, #8 ;8个键
MOV R2,#0 ;键码
MOV B,A ;暂存键值
MOV DPTR, #K0TAB
K02: MOV A,R2
MOVC A,@A+DPTR ;从键值表中取键值 CJNE A,B,K04 ;键值比较
MOV A,R2 ;得键码
RET
K04: INC R2 ;不相等,到继续访问键值表
MOV A,#0FFH ;键值不在键值中,即多键同时按下 LJMP MLOOP
DELAY: ;延时子程序
MOV R7,#0
DELAYLOOP:
DJNZ R7,DELAYLOOP
DJNZ R6,DELAY
RET
START:
MOV SP, #70H
MOV TMOD,#01 ;TIMER
MOV IE, #82H ;EA=1, IT0 = 1
MOV TONE,#0
MLOOP:
CALL TESTKEY
CALL GETKEY
MOV B,A
JZ MLOOP ;= 0, < 1 ANL A, #8
JNZ MLOOP ;> 7
DEC B
MOV A,B
RL A ;A = A*2 MOV B,A
MOV DPTR,#TONETABLE
MOVC A, @A+DPTR
MOV TONEHIGH,A
MOV TH0,A
MOV A,B
INC A
MOVC A,@A+DPTR
MOV TONELOW, A
MOV TL0, A
SETB TR0
MOV P1,#OFFH
WAIT: MOV A,P1
CJNE A,#OFFH,WAIT
MOV R6,#10
ACALL DELAY
CLR TR0
LJMP MLOOP
END
五、思考题
1、请思考实验是怎样在硬件与软件上实现发声的?
2、本程序中断子程序的调用是怎样进行的?
温度传感器温度控制
一、实验目的
1、了解温度传感器电路的工作原理
2、了解温度控制的基本原理
3、掌握一线总线接口的使用
二、实验说明
这是一个综合硬件实验,分两大功能:温度的测量和温度的控制。
1、DALLAS最新单线数字温度传感器DS18B20简介
Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20内部结构
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:
DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接
着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验
码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样
就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。