已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
济 源 职 业 技 术 学 院计算机类课程实 验 报 告(2010-2011学年第二学期)系部 信息工程系 专业班级 计应0901 姓名 谢曼曼 学号 09090115 课程名称 单片机应用技术 实验项目 程控电子琴 实验地点 计算机控制实训室 实验日期 3.214.22 实验成绩 指导老师 王树森 一、 实验目的和要求1. 学会单片机定时器/计数器使用;2. 学会音符发生器程序编写方法;3. 学会4*4键盘扫描、编写和去抖方法;4. 会使用C51编程。二、 环境说明 序号软件名称1windowsxp2keiluV2.03EasySST三、 上机准备工作1、知道如何在仿真软件下画出程控电子琴的原理图。2、会画流程图,要懂得画流程图的原则:进程用长方形、判定用菱形。3、要知道在写程序中如何运用定时器、查表和条件转移程序的应用。4、把keil和仿真结合起来,执行程序运行的结果。四、实验内容程控电子琴五、实验步骤1. 用仿真软件画出蜂鸣器发声的原理图。P3口接4*4键盘,蜂鸣器接在单片机的P2.0口,中间通过三极管放大。2. 画出蜂鸣器发声的的流程图,如下图: 3、根据流程图写出程序/程序名字:键盘扫描电子琴/功能:实现七个中音的发声/作者:谢曼曼/建立日期:3.21#include #define uchar unsigned char#define uint unsigned intunsigned int code table1=0xf8,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,0x00; /定义音节高八位(前7个为低音后7个为中音)unsigned int code table2=0x8c,0x5b,0x15,0x67,0x04,0x90,0x0c,0x44,0xac,0x09,0x34,0x82,0xc8,0x06,0x00; /定义音节低八位(前7个为低音后7个为中音)sbit yin=P20;/定义p2.0口为输出声音 uint DI,ZHONG, x,z; /定义变量uchar y,num,temp;uchar keyscan();void delayms(uint z)/延时子程序 for(x=z;x0;x-)for(y=110;y0;y-);void int1(void) interrupt 1 /中断程序TH0=DI;TL0=ZHONG;yin=yin;void main()/主程序 TMOD=0x01; /定时器0工作方式1 EA=1; /开总中断 ET0=1; /开定时器0中断 TR0=0;/关闭定时器0 num=16; while(1) keyscan();/键盘扫描子程序 if(num=15)/如果按键值为15则关定时器0 TR0=0;elseTR0=1;/否则则开定时器0 uchar keyscan()/键盘扫描子程序P3=0xfe;/假设第一行有按键按下 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下 delayms(5);/延时 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下switch(temp)/判断是哪一个按键按下case 0xe0:num=0;break;case 0xd0:num=1;break;case 0xb0:num=2;break;case 0x70:num=3;break;DI=table1num; /把高八位给STHOZHONG=table2num; /把低八位给STLOTR0=1;/开定时器0while(temp!=0xf0)temp=P3;temp=temp&0xf0;TR0=0; P3=0xfd;/假设第二行有按键按下 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下 delayms(5);/延时 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下switch(temp)/判断是哪一个按键按下case 0xe0:num=4;break;case 0xd0:num=5;break;case 0xb0:num=6;break;case 0x70:num=7;break;DI=table1num; /把高八位给STHOZHONG=table2num; /把低八位给STLOTR0=1;while(temp!=0xf0)temp=P3;temp=temp&0xf0;TR0=0; P3=0xfb;/假设第三行有按键按下 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下 delayms(5);/延时 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下switch(temp)/判断是哪一个按键按下case 0xe0:num=8;break;case 0xd0:num=9;break;case 0xb0:num=10;break;case 0x70:num=11;break;DI=table1num; /把高八位给STHOZHONG=table2num; /把低八位给STLOTR0=1;while(temp!=0xf0)temp=P3;temp=temp&0xf0;TR0=0; P3=0xf7;/假设第三行有按键按下 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下 delayms(5);/延时 temp=P3; temp=temp&0xf0;while(temp!=0xf0)/判断是否有按键按下switch(temp)/判断是哪一个按键按下case 0xe0:num=12;break;case 0xd0:num=13;break;case 0xb0:num=14;break;DI=table1num; /把高八位给STHOZHONG=table2num; /把低八位给STLOTR0=1;while(temp!=0xf0)temp=P3;temp=temp&0xf0;TR0=0; 4、在keil环境下调试程序,确保程序无误。程序不再出错后,保存程序,扩展名为.c。对程序进行添加,右击Source Group1选择Add Files to Group Source Group 1,选择以.c为扩展名的文件,然后单击Add,最后单击Close。5、设置其属性,右击Target1选择Options for Target Target1,在Output下选中Create HEX Fi:,在Debug下选中Use: Keil Monitor-51 Driver, 然后单击确定。6、在仿真原理图中双击单片机,会弹出Edit Comp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 避孕疫苗课件
- 2026年注册安全工程师真题及答案
- (2026年)法制副校长年度工作总结
- 大数据分析:上海车展新能源汽车客群研究报告
- 初三物理第十四章光的传播
- 北师大版数学四年级下册《购物小票》课件
- 双曲线的标准方程张用
- 古代民族关系学习方法指导
- 小学语文教资面试修辞题库2026下半年
- 2026下半年高中物理教资面试电磁学专项试卷
- 2026年10月广州市越秀区登峰街道办事处公开招聘出租屋管理员2人考试备考试题及答案解析
- GB/T 19866-2026焊接工艺规程及评定的一般原则
- 2026年旋挖钻机操作手安全教育试卷及答案
- 校园欺凌事件分析调研报告(2026版)
- 第三单元《多边形的面积》单元测试卷(含答案)2026-2027学年苏教版五年级数学上册
- 2026新教材语文 2《啊我们踯躅于黑暗的丛林里!》教学课件
- 企业报警分级管理制度
- 消能减震阻尼器安装施工方案及技术措施
- 2026年国企固定资产投资项目管理程序题库
- 陕西省宝鸡市2026届高考模拟检测试题(二)地理试题(含答案)
- 2026年时事政治测试题库100道附完整答案【考点梳理】
评论
0/150
提交评论