




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程设计报告电气与信息工程学院自动化1班王建平 第一部分adi学习板简介一、系统资源1、两路16位adc输入、可作差分输入;2、12位dac输出;3、运放lm358; 4、rs232串口;5、步进电机(5v、70欧、6线4相)接口;6、ps/2接口;7、插针11,用于选择ps/2或者红外接收头;8、红外接收头;9、线性稳压芯片7805;10、复位按键和下载按键;11、开关以及功能选择插针110(从左至右)12、4x4矩阵式键盘,左边4个可以作独立按键;13、直流电源输入;14、usb电源输入接口;15、iic接口;16、rtc ds1307;17、eeprom at24c08;18、8位数码管;19、spi接口;20、上排图形点阵lcd12864的接口、下排lcd1602的接口;21、红外二极管;22、8路led;23、蜂鸣器;24、p3口扩展接口;25、单片机aduc848;26、p2口扩展接口;27、p0口扩展接口;第二部分 简单电子琴设计一、设计任务及要求1.1任务设计一简易电子琴,要求能够发出1,2,3,4,5,6,7等7个音符,具有一般演奏功能。2、要求1)具有一般演奏功能,利用所给键盘的1,2,3,4,5,6,7七个键,能够发出7个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一个音调的声音2)具有自动播放已存曲目功能3)显示当前正在播放的歌曲的名称和歌词1.2 相关设计说明 该电子琴设计是基于aduc848开发板,在设计语言方面可用c语言或者硬件语言,两者相比较,c语言简单易懂且本题目对于反映时间的要求不是很高,但为了巩固汇编语言以及更加更加深入了数据在微机中存储,我们选用了汇编语言来编写。根据2.1所提出的设计要求,主要考虑一下几个方面:音节、按键、蜂鸣器的使用。1.3 音节。 要求用8个按键发出8个不音调,即按键1、2、3、4、5、6、7、8分别对应音符的1、2、3、4、5、6、7和高音1共八个音调,音阶由不同频率的方波产生,音阶与频率的关系如表一所示。方波的频率由定时器控制。定时器计数溢出后,产生中断,将p2.6口取反即得周期方波。 (见下表 单位:hz,x为16进制)音阶1234567f262294330349392440494xff05ff20ff39ff44ff58ff6bff7e音的节拍由延时子程序实现。延时子程序实现基本延时时间,节拍值只能是它的整数倍。1.4 按键 开发板上按键有4行4列共16个,从0-15,从右到左依次为第0列到第3列,其中第0列从上到下依次为1、2、3、4,以此类推,在具体操作时由p2控制列选,p1控制行选,二者共同决定按下的是哪一个按键,如p2=0x0e时选中的是第0列,此时若p1=0x0e则表示选中的是1(在进行按键检测时,程序不断的扫描端口,当检测到低电平时表示该按键被按下)。接线时第0列到第3列依次接p2.0-p2.3,第0行到第3行依次接p1.0-p1.3.具体对应到每个按键,18分别对应8个不同的音节17以及搞8度的1,912分别控制控制预先存储的4首歌曲:oldboy、songbie、bygh、music_code,按下4个键中的一个时程序中断播放所对应的歌曲;按键13表示转到时钟显示时间;0、14、15为无效按键,当检测到其中一个被按下时则跳转到主程序继续执行。按键输入 该模块原理如图所示图 按键模块由于p1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10k即可。引脚复用:p2.0p2.3为4x4矩阵式键盘列扫描信号,又复用作步进电机控制信号,spi信号、p2.1p2.3还复用为数码管第5、6、7位位码控制信号。参与复用的一项功能使用时,其他参与复用的功能则不能使用。插针配置: (1)插针10上面两脚接跳线帽,4x4矩阵式键盘输入,行扫描信号为p1.0p1.3,列扫描信号为p2.02.3。(2)插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为p1.0p1.3。这4个按键为4x4矩阵键盘的左边4个按键。1.5 程序流程图开始串口扫描是否有键按下?是否为7?8?发音,高八度延时播放音乐?完成?显示时间完成?返回1.6具体程序实现 ;1.572864mhz,tc=0.63vs,t=7.6vssth1 equ 31hstl1 equ 30hst_addrequ 0000horgst_addrljmpmainorgst_addr+1bhljmpint_1main:mov sp,#40h anl tmod,#0f0h orl tmod,#10h setb ea setb et1 setb p2.6 mov p1,0f0h; p1低4位写0,将p1低4位设为数字输入模式,这样才能读连接p1的外部数据lkp: lcall saomiao;调扫描程序反键值 cjne a,#0aah,k0 clr p2.6 jmp lkpk0: cjne a,#0,k1 lcall tab ljmp lkpk1: cjne a,#1,k2 lcall tab ljmp lkpk2: cjne a,#2,k3 lcall tab ljmp lkpk3: cjne a,#3,k4 lcall tab ljmp lkpk4: cjne a,#4,k5 lcall tab ljmp lkpk5: cjne a,#5,k6 lcall tab ljmp lkpk6: cjne a,#6,k7 lcall tab ljmp lkpk7: cjne a,#7,k8 mov dptr,#duoruimi lcall outge ljmp lkpk8: cjne a,#8,k9 mov dptr,#shengrige lcall outge ljmp lkpk9: cjne a,#9,ka mov dptr,#liangzhilaohu lcall outge ljmp lkpka: cjne a,#10,kb mov dptr,#juhuatai lcall outge ljmp lkpkb: cjne a,#11,kc mov dptr,#juhuatai_c lcall outge ljmp lkpkc: jmp lkp;查表子程序tab: mov dptr,#table mov b,#2 mul ab mov 60h,a movc a,a+dptr mov th1,a mov sth1,a inc 60h mov a,60h movc a,a+dptr mov tl1,a mov stl1,a setb tr1 mov r5,#3loop0: movr7,#0ffh ;延迟0.5sloop1:movr6,#0ffhloop2:djnzr6,loop2 djnzr7,loop1djnz r5 , loop0 clr tr1ret ;播放歌曲outge:mova,#00hlop:movca,a+dptrjzmvamovsth1,amovth1,aincdptrmova,#00hmovca,a+dptrmovstl1,amovtl1,asetbtr1incdptrmova,#00hmovca,a+dptrmovr2,aloop3:movr3,#0ffhloop4:movr4,#0ffhloop5:djnzr4,loop5 djnzr3,loop4 djnzr2,loop3 incdptr mova,#00h ljmplopmva: clr tr1 ret;调用扫描子程序saomiao:acall ks1;粗扫 jnz lk1;有按键按下,转继续细扫描 mov r4,#0 ;niumov a,#0aah;返回值a=0f,无按键按下ajmp rettlk1:acall tm10ms;延时大概10ms,消抖 acall ks1;延时后再粗扫描确认有按键 jnz lk2;有按键,转细扫描 ajmp saomiao;无按键,是抖动;细扫描,列内扫描,内循环lk2:mov r2,#0f7h;第0列扫描码,11110111b,lie0=p2.3=0mov r4,#00h;行扫描计数器初始值,补键值差值mov r3,#04h;列扫描计数器初始值lk4:mov a,r2mov p2,a;输出列扫描码jb p1.0,lone;不是第0行的键被按下,转下一行mov a,#0;是第0行被按下,键值基底=0(还有偏移量)ajmp rett;转求键值lone:jb p1.1,ltw0;不是第1行的键被按下,转下一行 mov a,#4;是第1行被按下,键值基底=4(还有偏移量)ajmp rett;转求键值ltw0:jb p1.2,lthr mov a,#8;是第2行被按下,键值基底=8(还有偏移量)ajmp rett;转求键值lthr:jb p1.3,next;4行都扫完,转下一列 mov a,#12;是第3行被按下,键值基底=12(还有偏移量)ajmp rett;转求键值;细扫描,列间扫描,外循环next:mov a,r4add a,#1;列计数器加上1,偏移量mov r4,amov a,r2;列扫描码rr a;右移一位,指向下一列,lie1=p2.2=0mov r2,adjnz r3,lk4;为扫描完,转回扫描下一列;ajmp sao;已扫描完四行,未找到按下的键;写最终键值rett:add a,r4;键值基底加上偏移量=键值mov p0,a;键送led显示ret;粗扫描子程序ks1:mov p2,#0f0h;粗扫描,输出4列全为0mov a,p1;读入行信号orl a,#0f0h;高位置1,地位不变cpl a;取反 ret;延时子程序tm10ms: mov r6,#10;一个机器周期是7.63微秒loop:mov r7,#80 djnz r7,$ djnz r6,loop ret;中断t1orgst_addr+200hint_1: clr tr1 mov th1,sth1 mov tl1,stl1 setb tr1 cpl p2.6 retitable: db 0ffh,05h,0ffh,20h,0ffh,39h,0ffh,44h,0ffh,58h,0ffh,6bh,0ffh,7eh duoruimi: db 0fch,2fh,04h,0fch,99h,04h,0fch,0f8h,04h,0fdh,22h,04h db0fdh,073h,04h,0fdh,0bch,04h,0fdh,0fah,04h,0feh,17h,04h db0feh,17h,04h,0fdh,0fah,04h,0fdh,0bch,04h,0fdh,73h,04h,0fdh,22h,04hdb 0fch,0f8h,04h,0fch,99h,04h,0fch,2fh,04h,00h,00h,00hshengrige:db 0ffh,05h,04h,0ffh,05h,01h,0ffh,21h,04h,0ffh,05h,04h,0ffh,44h,04h,0ffh,39h,04h db 0ffh,05h,04h,0ffh,05h,01h,0ffh,21h,04h,0ffh,05h,04h,0ffh,58h,04h,0ffh,44h,04h db 0ffh,05h,01h,0ffh,05h,04h,0ffh,82h,04h,0ffh,6bh,04h,0ffh,44h,04h,0ffh,39h,01h,0ffh,21h,04h db 0ffh,7bh,01h,0ffh,7bh,04h,0ffh,6bh,04h,0ffh,44h,04h,0ffh,58h,04h,0ffh,44h,04h,00h,00h,00hliangzhilaohu:db 0ffh,44h,04h,0ffh,58h,04h,0ffh,6bh,04h,0ffh,44h,02h,0ffh,44h,04h,0ffh,58h,04h,0ffh,6bh,04h,0ffh,44h,02h db 0ffh,6bh,04h,0ffh,7bh,04h,0ffh,82h,06h,0ffh,6bh,04h,0ffh,7bh,04h,0ffh,82h,06h db 0ffh,82h,02h,0ffh,90h,02h,0ffh,82h,02h,0ffh,7bh,02h,0ffh,6bh,04h,0ffh,44h,04h,0ffh,82h,02h,0ffh,90h,02h,0ffh,82h,02h,0ffh,7bh,02h,0ffh,6bh,04h,0ffh,44h,04h db 0ffh,58h,04h,0ffh,082h,04h,0ffh,4h,04h,0ffh,58h,04h,0ffh,82h,04h,0ffh,44h,04h,00h,00h,00hjuhuatai: db 0ffh,39h,4h,0ffh,39h,2h,0ffh,20h,2h,0ffh,39h,4h,0ffh,39h,2h,0ffh,58h,2h,0ffh,39h,2h,0ffh,20h,2h,0ffh,39h,8h db 0ffh,5h,4h,0ffh,5h,2h,0ffh,20h,2h,0ffh,39h,2h,0ffh,58h,2h,0ffh,39h,4h,0ffh,20h,4h,0ffh,20h,2h,0ffh,5h,2h,0ffh,20h,8h db 0ffh,39h,6h,0ffh,58h,1h,0ffh,39h,1h,0ffh,6bh,2h,0ffh,58h,6h db 0ffh,6bh,2h,0ffh,58h,2h,0ffh,58h,2h,0ffh,39h,2h,0ffh,58h,6h,0ffh,58h,2h,0ffh,39h,4h,0ffh,20h,2h,0ffh,20h,2h db 0ffh,58h,4h,0ffh,39h,2h,0ffh,20h,2h,0ffh,20h,4h,0ffh,20h,2h,0ffh,5h,2h,0ffh,20h,8hdb 0ffh,39h,4h,0ffh,39h,2h,0ffh,20h,2h,0ffh,39h,8h,0ffh,39h,2h,0ffh,58h,2h,0ffh,39h,2h,0ffh,20h,2h,0ffh,39h,8h db 0ffh,5h,4h,0ffh,5h,2h,0ffh,20h,2h,0ffh,39h,2h,0ffh,58h,2h,0ffh,39h,4h,0ffh,20h,4h,0ffh,20h,2h,0ffh,5h,2h,0ffh,20h,8h db 0ffh,39h,6h,0ffh,58h,1h,0ffh,39h,1h,0ffh,6bh,2h,0ffh,58h,6h,0ffh,6bh,2h,0ffh,58h,2h,0ffh,58h,2h,0ffh,39h,2h,0ffh,58h,8hdb 0ffh,39h,4h,0ffh,20h,2h,0ffh,39h,2h,0ffh,58h,4h,0ffh,39h,2h,0ffh,20h,2h,0ffh,20h,4h,0ffh,5h,8h,00h,00h,00hjuhuatai_c: db 0ffh,39h,8h,0ffh,39h,4h,0ffh,20h,4h,0ffh,39h,8h,0ffh,39h,4h,0ffh,58h,4h,0ffh,39h,4h,0ffh,20h,4h,0ffh,39h,16h db 0ffh,5h,8h,0ffh,5h,4h,0ffh,20h,4h,0ffh,39h,4h,0ffh,58h,4h,0ffh,39h,8h,0ffh,20h,8h,0ffh,20h,4h,0ffh,5h,4h,0ffh,20h,16h db 0ffh,39h,12h,0ffh,58h,2h,0ffh,39h,2h,0ffh,6bh,4h,0ffh,58h,6h db 0ffh,6bh,4h,0ffh,58h,4h,0ffh,58h,4h,0ffh,39h,4h,0ffh,58h,12h,0ffh,58h,4h,0ffh,39h,8h,0ffh,20h,4h,0ffh,20h,4h db 0ffh,58h,8h,0ffh,39h,4h,0f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年特岗教师招聘考试高频考点解析小学英语实-用版
- 2025年特岗教师招聘笔试物理学科模拟题
- 2025年高级物联网技术应用工程师面试指南与模拟题集
- 2025年物业管理沟通协调技巧中级面试备考指南与实战模拟题集
- 2025年烷基化工艺作业面试模拟题及答案全收录
- 2025年瑜伽练习指南健康身心的平衡艺术
- 2025年焊接工程师考试模拟题含钎焊技术部分及解析
- 2025年金融分析师考试模拟试题及答题技巧指导
- 电仪模块基础知识培训课件课程
- 2025年销售代表应聘指南模拟面试题及答案
- 中级职称评审述职报告
- 2025年四川省高考化学试卷真题(含答案解析)
- 2023成都高新未来科技城发展集团有限公司招聘试题及答案解析
- 循环系统-超声诊断
- 《风力机理论与设计》全套教学课件
- 项目策划工作检查考核表
- 六年级上册数学课件-4.1 圆的周长 |冀教版 (共27张PPT)
- (标准版)康复治疗技术专业《 康复心理学 》课程标准
- 身体六大排毒PPT
- 在职人员报考(统招、在职)研究生申请表
- 丽声北极星自然拼读绘本第六级 The Clever Beaver 课件
评论
0/150
提交评论