《单片机专周实习报告范本.doc》由会员分享,可在线阅读,更多相关《单片机专周实习报告范本.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 .重庆科技学院学生实习(实训)总结报告 学 院:电气与信息工程学院 专业班级:* 学生姓名:_ *_ 学 号:_ * _ 实习(实训)地点:_ _ I506_ _ _ _报告题目:_ 关于方波波形发生器的实习报告_ _ _ 报告日期: 2014 年 10 月 29 日 指导教师评语: _ _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_重庆科技学院实习指导书实习题目:方波波形发生器学生姓名第1组课程名称单片机应用实习专业班级电自专2012地 点实验楼I506起止时间2014.9.15至2014.9.26实习内容及要求要求实习的方波波形发生器完成以下功能:1.基本功能发生方波信号频
2、率可调幅度可调2. 扩展功能测量信号的频率;产生其他波形,自行扩展功能设计参数前两位显示输出频率,后两位显示输出电压1090Hz范围频率可调0-4v范围幅度可调进度要求布置任务、分析任务、学习单片机的C51功能程序设计(1天)方案设计、使用Protel设计和绘制硬件原理图(1.5天)程序设计和调试(6.5天)实习验收、撰写报告(1天)详见进度安排表参考资料张义辉,李家庆,单片机系统综合训练指导书.重庆科技学院张毅刚.单片机原理及应用.北京:高等教育出版社,2005其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题
3、多名学生共用的,在设计内容、参数、要求等方面应有所区别。系主任: 指导教师:张小云2014年9月 10 日摘要:在电子工程、通信工程、自动控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号波形发生器。本次实习主要采用PCF8591输出频率和幅值可调的方波信号。在硬件系统设计中,采用MCS51单片机为控制核心,D/A转换电路等实现设计要求。软件设计中,在Keil软件平台下采用C51编程,设计了调频功能和调幅功能,使得所编写的程序具有可读性强、易于修改、测试和升级方便的特点。关键词:单片机 数模转换 频率幅值可调数字方波发生器一、目的和功能1.1 目的:设计一种频率和幅值范围限定且
4、可调的数字方波发生器,产生简易的方波波形。1.2功能:利用PCF8591输出方波波形,用MCS51单片机上的四个按键对方波的幅值和频率进行一定范围的调节,从而输出我们想要频率的方波。1.3具体任务:时间内容地点指导教师12.169:00布置实习任务及要求,查资料,准备方案KEIL C51程序设计练习(定时器程序设计)I506、图书馆张小云12.179:00总体方案设计,硬件设计I506张小云12.189:00画硬件电路原理图数码管显示程序设计、调试I506张小云12.199:00显示北京时间程序设计、调试显示北京时间程序设计、调试I506张小云12.209:00键盘控制程序设计、调试I506张
5、小云12.239:00软件方案设计,查阅资料,画软件流程图I506、图书馆张小云12.249:00设计、调试程序I506张小云12.259:00设计、调试程序,讲解实习报告要求I506张小云12.269:00实习成果验收,完成设计报告I506张小云12.279:00实习成果验收,完成设计报告I506张小云二、硬件设计2.1 硬件设计思想用PCF8591将按键的变化转化成相应的数值变化,用不同的变量代表不同的按键变化,当不同变量的值发生变化,就改变方波的频率或幅值。基本设备是MCS51单片机上STC89C51、PCF8591以及按键部分,测试时还需要用到示波器来观察输出点的波形情况。2.2 硬件
6、电路图三、软件设计3.1 软件设计思想不停得扫描是否有按键输入,根据按键对应值得变化输出相应的波形。幅值由输出高低电平值得变化控制,频率由输出高电平和低电平的时间控制。这里用按键的次数控制某个变量的自增或自减改变幅值或频率,从而得到对应的方波。3.2 程序框图开始系统初始化按键扫描是否有按键按下DA转换键值显示结束NY3.3调试Keil软件中,在“文件新建文件”中,新建C 语言源程序文件,编写相应的程序。在“文件新建项目”的菜单中,新建项目并将C 语言源程序文件包括在项目文件中。在“项目编译”菜单中将C 源文件编译,检查语法错误及逻辑错误。在编译成功后,产生以“*.hex” 后缀的目标文件。最
7、后通过专业的下载工具将“*.hex”后缀的目标文件下载到单片机,用示波器观察输出点的波形,检查实验相关功能是否完成,若不能完成则查看对应程序部分是否有缺陷,一直到所有要求都完成。心得体会: 通过这次实习,让我对单片机的相关知识更加的熟悉,以前不懂的I2C也有了一定的了解。特别是在这两周的实习中,在与大家的交流学习到了很多,刚开始时大家都会有一些不懂的地方,但在不停的学习中,我们共同的在进步,虽然在最后的成果上不尽如人意,但是在这个过程中我们学到的团队合作、共同进步这些道理会一直伴随我们一生。附录:#include #include #define uchar unsigned charsbit
8、 SCL=P36; sbit SDA=P37;sbit P20=P20;sbit P21=P21;uchar count=0;uchar m,b,a=0;uchar N=0x00,0x05,0x0a,0x0f;void usdelay() /微秒延时 _nop_(); _nop_(); _nop_(); _nop_();void delay() for(b=0;b=a*10;b+) _nop_(); /启动IIcvoid iic_start(void) /时钟保持高,数据线从高到低一次跳变,I2C通信开始 SDA = 1; usdelay(); SCL = 1; usdelay(); / 延时
9、5us SDA = 0; usdelay(); SCL = 0;/停止IIcvoid iic_stop(void) SDA = 0; /时钟保持高,数据线从低到高一次跳变,I2C通信停止 usdelay(); SCL = 1; usdelay(); SDA = 1; usdelay(); SCL = 0;/应答信号ackvoid ack() uchar i; SCL=1; usdelay(); while(SDA=1)&(i200) i+; SCL=0; usdelay(); / 函数名称: iicInit_()/ 函数功能: 初始化I2C总线子程序/- void iicInit() SCL
10、= 1; usdelay(); SDA=1; usdelay(); /写字节void IICSendByte(uchar dat) uchar i; for(i=0;i8;i+) SCL=0; usdelay(); SDA=(bit)(dat&0x80); /数据传送是由高到底 bit把数据变为非0即1的一位数据 usdelay(); SCL=1; usdelay(); dat=1; SCL=0; usdelay(); SDA=1; /释放总线 usdelay(); /主函数 main() iicInit(); while(1) if( P21=0 ) /调幅 usdelay(); if( P
11、21=0) count+; while(!P21); if(count=4) count=0; if( P20=0 ) /调频 usdelay(); if( P20=0) a+; while(!P20); if(a=4) a=0; switch(count) case 0: /方波 iic_start(); IICSendByte(0x90); ack(); IICSendByte(0x40); /模拟输出 ack();m=0; IICSendByte(Nm); ack(); iic_stop();delay(); Nm=Nm; break; case 1: /方波 iic_start();
12、IICSendByte(0x90); ack(); IICSendByte(0x40); /模拟输出 ack();m=1; IICSendByte(Nm); ack(); iic_stop();delay(); Nm=Nm; break; case 2: /方波 iic_start(); IICSendByte(0x90); ack(); IICSendByte(0x40); /模拟输出 ack();m=2; IICSendByte(Nm); ack(); iic_stop();delay(); Nm=Nm; break; case 3: /方波 iic_start(); IICSendByte(0x90); ack(); IICSendByte(0x40); /模拟输出 ack();m=3; IICSendByte(Nm); ack(); iic_stop();delay(); Nm=Nm; break; .页脚.