文档介绍:2015年小学期单片机设计实验报告题目:基于红外探测的小车自动循迹系统班  级:  2013211117班班内序号:   2 号   实验组号:    23    学生姓名:   李昊然   指导教师: 丘广晖 张媛媛 电子音乐发生器――2013211117班 李昊然实验摘要我们小组制作的电子音乐发生器涵盖播放音乐,键盘演奏和存储音乐并播放三个基本功能。在功能设计上分为四个模块:液晶屏显示模块、键盘模块、音乐发生模块、音乐存储模块。四个模块首先独立编程再进行整合连接。整个系统中,音乐发声部分采用了Microchip公司的PIC16F877芯片实现,采用PORTD作为控制液晶屏显示的端口,用PORTB和PORTD作为控制键盘操作的端口,用PORTC6作为控制蜂鸣器发声的端口。存储音乐播放,用户在键盘上输入,将数据写入ROM中,点击播放按键后,将其数据读取,播放。概括来说,本实验采用单片机接受用户指令来控制各个模块,达到音乐播放、键盘演奏、录放音的功能。关键字单片机    芯片      eeprom     在整个程序中,液晶屏用于为用户显示说明及指令,实现交互可视性。其中,PORTE作为普通数字I/O口。由于所有的功能位数据和数据位数据送到液晶各引脚时液晶并不读入,而是通过将第六脚先置1再置0来触发,之后指令或数据才被读入,故设计ENABLE程序使其执行相应指令,相当于使能指令。,用户通过键盘输入操控音乐发生器的功能,同时在键盘演奏的功能下,按动不同键值发出不同音阶。在4x4键盘中,循环检测行码和列码有无低电平,通过异或和与运算找到低电平所在位置,通过键盘查询表及FSR指针翻译出键值,执行相应指令。 。其核心程序是方波产生器。通过设置分频比和计数器TMR0来控制方波的频率。对于不同音阶,用M1和M2控制时长和频率,并通过PORTC6端口输送至蜂鸣器,发出不同声音。在按键电子琴功能部分,通过键码返回值FSR确定执行P1~P14,并且进行循环扫描,发出声音。但是这种方法由于扫描程序存在延迟,致使声音粘连性不够好,需要加以改进。,将输入的数据存储在ROM中,按播放键将其读取,播放音乐。按照参考书上定义SPI的基本状态,将芯片的输出改为SPI串行通信协议,ISD4002语音芯片是16位命令,而16F877则是8位,所以需要给串行通信输出端口sspbuf无延迟的赋值两次8位指令。,播放存储音乐,按键电子琴和录音。用户打开系统后,会进行相应的选择,选择播放音乐,则播放存储音乐;选择按键电子琴,则会根据用户的按键,发出不同音调的声音;选择录音,则用户按键,系统则会自动将其存储在ROM中,当用户选择播放后,则会将用户连续的按键对应的声音播放出来,完成录音且播放的功能。,故编写两个不同ENALE程序分别控制写入指令及数据的使能。定义PORTD为输出端口。对于指令,通过给PORTD赋值,可实现显示屏开关、光标闪烁、光标右移、清屏、写入位置等设置。对于写入数据,通过给PORTD赋予字符的ASCII码值来显示相应的字母、数字及标点。,PORTD存储行码。在键盘扫描时,先将PORTB作为间接寻址读表直至键值表末尾,并存入W,与位置码比较,返回FSR的值(0~F)。,屏蔽掉D口,将列码存入VALUE。之后将PORTD作为出入,屏蔽掉B口,读取行码。使行码列码组合送入VALUE中。在翻译程序中,首先使FSR指针指向表头,在方波产生器中,首先设置占空比OPTION_REG为8,产生方波,然后通过两个循环嵌套LPT1和LPT2作为延时。在方波产生器程序中,声音的播放时长和频率是通过M1和M2这两个参数设置的,M1的值=发声频率**2,,M2的值=256-1/(发声频率/2),并将其赋值给TMR0。,SPI串行通信协议实现起来也比较容易。先给16位指令赋值然后调用OUTPUT函数实现各种功能。在系统流程走至录音模块时,按住1键开始录音,3键播放录音,2键控制暂停和继续,0键为返回键。,刚开始对硬仿真也不是很熟悉,后来随着学习和熟悉,也熟练的掌握了实验箱调试的方法。在进行任何插头的插拔之前需要先断电,包括