单片机实习报告.docx

上传人:牧羊曲112 文档编号:3346570 上传时间:2023-03-12 格式:DOCX 页数:16 大小:42.52KB
返回 下载 相关 举报
单片机实习报告.docx_第1页
第1页 / 共16页
单片机实习报告.docx_第2页
第2页 / 共16页
单片机实习报告.docx_第3页
第3页 / 共16页
单片机实习报告.docx_第4页
第4页 / 共16页
单片机实习报告.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机实习报告.docx》由会员分享,可在线阅读,更多相关《单片机实习报告.docx(16页珍藏版)》请在三一办公上搜索。

1、单片机实习报告单片机应用实习报告 关于单片机应用实习的实习报告 一、实习目的 本次实习的目的在于加深对MCS-51单片机的理解,初步掌握单片机应用系统的设计方法;掌握常用接口芯片的正确使用方法;强化单片机应用电路的设计与分析能力;提高学生在单片机应用方面的实践技能;培育学生综合运用理论知识解决问题的能力,力求实现理论结合实际,学以至用的原则。 二、设计题目: 单片机数据采集系统设计 三、功能描述 1实时采集0-5V的电压信号; 2将采集的0-5V的电压信号实时显示; 3可以轮流采集8路通道,或指定通道数据; 4可以设定报警上下限,并报警。 四、方案设计 4.1系统分析 根据系统功能要求,可将系

2、统组成结构分成四大部分。单片机控制中心、键盘接口。其中,单片机控制中心是核心。MCU根据按键输入,可切换不同的显示模式或设置不同的参数。数码显示管第2至4位将实时采集的05V电压,数码管第1位显示指定通道数。通过按键可切换到设定电压上下限报警的模式。由于我组单片机实验板缺少烽鸣器,因此利用LED灯来报警。 以下是系统组成结构图: 实时显示采集的电压信号 显示上下限报警电压 数 码 管 显 示 LED 灯 报 警 单片机控制中心 键盘接口 图1 系统组成结构图 第 1 页 共 17 页 单片机应用实习报告 五、硬件电路设计 5.1 单片机最小系统设计 最小系统包括CPU时钟与复位电路,其原理图如

3、下: 图2单片机最小系统设计 5.2 显示电路设计 数码管主要是用于数字的显示,图中采用共阴极。电源+5V通过470欧的电阻直接给数码管的7个段位供电,P0.0-P0.7对应了两个接数码管的a,b,c,d,e,f,g和小数点位p,P1.0,P1.1,P1.2,P1.3接位选码。其原理图如下: 图3 显示电路设计 第 2 页 共 17 页 单片机应用实习报告 5.3 按键电路设计 其原理图如下: 图4 按键电路设计 5.4 A/D转换电路设计 其原理图如下: 图5 A/D转换电路设计 第 3 页 共 17 页 单片机应用实习报告 5.5 电源电路设计 单片机工作电压为5V。一般使用USB接口供电

4、,直接从USB接口获取5V电源。其原理如下图。 图6 电源电路设计 5.6 报警电路设计 当电压小于下限电压值或大于上限电压值时,蜂鸣器将报警。 如图所示: 图7 报警电路设计 第 4 页 共 17 页 单片机应用实习报告 六、软件设计 6.1 操作功能设计 根据系统的功能描述,可以将系统功能大致分成三类:轮流采集8路通道,指定通道显示,设置报警上下限。 此系统设有四个数码管,三个按键。利用按键可切换形成多个模式,按键1将轮流采集8路通道模式与指定通道显示之间相互切换,按键2将轮流采集8路通道与设置电压上下限报警模式之间相互切换,按键3是增加1,可指定显示18通道,也可利用其来设置上下限电压的

5、大小。 模式设计如下: 模式1:轮流采集8路通道,此时数码管显示如1.0.00,2.4.97, 3.0.008.4.97。 模式2:指定通道显示,按下键1时,模式由轮流采集8路通道变成指定通道显示,此时数码管初始显示为1.0.00, 表示为1通道的电压值;当按下按键3时,数码管值变为2.4.97, 表示2通道的电压值;当再次按下按键3时,数码管显示为3.0.00,表示3通道的电压值。即每按一次键3, 通道数即增一,以此显示指定通道的实时电压。 模式3:当在轮流采集8路通道的模式下,按下键2。模式将会自动切换到设置电压上下限报警模式。此时,初始设置的电压上限为5V,电压下限为0V,通过键3可对其

6、修改。 6.2 程序设计思路 此程序所需实现的基本功能主要有:1使数码管显示采集来的实时电压,并对8个通道的电压实施轮流输出显示;2使用按键操作,将轮流显示的8个通道的电压切换成按指定通道显示输出;3可通过一功能键切换不同的模式,使系统可以调节上下限报警电压。4通过一按键可实现对通道与上下限电压的更改,如加减。 本程序主要分为2大块,主程序与子程序。主程序包括八通道循环采集电压工作方式,模拟量通道输入循环选择,选择通道显示电压工作方式,模拟量通道输入按键选择等。而子程序则需包括对定时器T0进行初始化程序,启动A、D转换程序,数码管显示程序,延时程序等。 此程序使用定时器0完成数码管动态扫描,并

7、对按键及串口进行扫描。当扫描到相应的按键时即执行相应的操作。 6.3 程序流程图 启动A/D转换 模式选择 变量、数组初始化 位码切换 开位码 送断码值 端口定时器初始化 开 始 定时中断 中断初始化 轮流显示 指定通道显示 设置上下限电压 主循环 数码管输出刷新 结束 图8 程序流程图 七、程序调试 对程序来说,最重要的就是调试阶段。一段写好的程序当中会出现很多问第 6 页 共 17 页 单片机应用实习报告 题。在单片机数据采集系统设计的程序中,出现了很多问题,有的是语法错误,以致不能成功编译;有的则是可以成功编译,但是不能达到系统的功能要求。在单片机的实验学习中,我们做过关于A/D转换的实

8、验。它的功能是可以实现单通道采集电压。但如何由单通道变成8通道,并且还能够指定通道显示,而且可以切换模式,对上下限电压进行修改。这就需要对程序的不断调试,其调试过程具体如下: 1、由单通道改至8通道:首先,这其中肯定要用到循环语句。程序中用到了for循环,k作为循环变量。全局变量m作为通道,m的值从1至8循环。即当m大于8时,令m等于1。 2、按键按下检测及相关设置:此系统用到了三个按键,如何对按键进行扫描,程序位于void Timer0_ISR interrupt 1中,即于定时器T0的中断程序中,每5ms调用一次,检测键盘是否按下,如果按下去延时抖动,然后检测到底是哪个按键按下,不同的按键

9、有不同的功能。 用“a+, if(a=50&P31=0&moshi=1)”程序实现延时消抖。然后用if判断语句实现按键的不同作用。 3、数码管刷新显示程序;刷新显示就是根据不同的模式将显示的不同数据放到显示缓冲区中,比如模式1时显示轮流显示采集电压,模式2是显示指定通道的电压,数码管的第一位要显示通道数,数码管的后三位显示电压值,模式3是显示设置电压上下限报警值,然后由数码管输出程序输出到数码管。 4、数码管输出程序;数码管输出程序就是送段选码和位选码的程序,位于定时器T0的中断程序中。轮流点亮4个数码管,每5ms变换一次,由于速度快,从而达到点亮每个数码管的作用。 八、使用说明 8.1功能

10、1. 可以轮流显示8个通的实时采集的电压值; 2. 可以指定通道显示电压值; 3. 可以设置上下限报警电压。 8.2 人机接口 第 7 页 共 17 页 单片机应用实习报告 共有三个按键。分别为键1,键2,键3。总共可以实现3个模式的转换。 8.3 操作说明 1. 通电后,在初始状态下,数码管显示的是轮流显示8通道电压值。通过三个按键可以对模式进行切换,以及对其中参数进行修改。 2. 按下键1,系统切换到指定通道显示界面,在此基础上按键3,可以实现从1通道到8通道任意指定通道显示电压值。再按下键1,又可返回到轮流显示8通道电压值。 3. 按下键2,系统切换到设置电压上下限报警电压值。在此基础上

11、,按下键3,可以对上下限电压值进行设置,每按一下键3,电压值增1,电压值的范围为05V。当电压值设置好之后,再按下键2,则重新返回到轮流显示8通道电压值。 九、心得体会 在本次实习中,我通过查阅资料,请教于老师及同学。基本完成了硬件设计、程序设计、安装调试等环节。但其中有很多问题值得我去思考。1.实习作风不好:不能积极对待,注意力不够集中;2. 实习效率不高:单片机课程功底较差,实践动手能力不强;3. 独立解决问题的能力较差。以为三点都值得我反思,本次实习揭露了我的不足,希望在以后学生工作中得到改进。 十、实验总结 本次实习的过程主要可分为三个部分。分别是绘制硬件原理图,编写程序,系统调试。

12、1. 绘制硬件原理图:这是我们第一次接触到Protel99电路设计软件,它与CAD绘制一样,需要有一个熟悉的过程,其中我觉得难点是建元件库。如单片机与A/D转换部分需要自己绘制,其它部分大多可以在元件库中找到,可直接添加。其次需注意的地方就是端口一定要与程序一致。 2. 编写程序:编写程序是难点。须一层层做起,刚开始的源程序来自A/D转换实验中的单通道采集电压值。在不断的对程序修改过程中实现8通道。再添加按键程序。 第 8 页 共 17 页 单片机应用实习报告 3. 系统调试;系统调试是最重要的环节,他涉及到程序的各个部分及硬件端口的接线。刚开始,我组用SST单片机,由于端口被占,因此无法接按

13、键,程序虽然能够顺利下载,但是无法对按键进行操作。因此只能换成STC单片机。由于我组电路板上缺少蜂鸣器,因此改用LED灯实现电压上下限报警。虽然程序不一定有错。但调试的过程就是程序与硬件相结合的过程。必须相互匹配,才能调试成功。 十一、参考文献 1. 张义辉,李家庆,单片机系统综合训练指导书.重庆科技学院 2. 汪德彪. MCS-51单片机原理及接口技术M. 北京电子工业出版社. 3. 张毅刚.单片机原理及应用.北京:高等教育出版社,2005 4. 胡文金.单片机系统实训教程.重庆:重庆大学出版社,2005 5. 胡文金,钟秉翔. 单片机应用技术实训教程M. 重庆大学出版社. 2005. 第

14、9 页 共 17 页 单片机应用实习报告 附录1:电路原理图 第 10 页 共 17 页 单片机应用实习报告 附录2:源程序代码 #include reg51.h #define THCO 0xee #define TLCO 0x0 unsigned char code Duan=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00; /共阴极数码管-9段码表 unsigned char xuan=0,1,10,11,100,101,110,111; unsigned char Data_Buffer4=0,0,0,0; unsigned

15、 int m=1; unsigned int moshi=0,zengjia=0,sheding=0,dianyazeng=0,shangyazhi=5; float AdValue; /*/ sbit P30=P30; sbit P31=P31; sbit P32=P32; /三个按键位码口定义 /*/ sbit P34=P34; sbit P35=P35; sbit P36=P36; /四个数码管的位码口定义 sbit P37=P37; /*/ sbit ADWR=P10; sbit RS=P11; sbit CS=P12; sbit Add1=P13; sbit Add2=P14; sb

16、it Add3=P15; sbit EOC=P16; 第 11 页 共 17 页 /ADC0809控制线接通C51P1口位码口定义 单片机应用实习报告 /*/ sbit LED=P17; /报警灯 /*/ void Sysinit; void AD_Start(void); void LED_Fresh; void delay_ms(unsigned int x); void zhu; void xianyajiemian; /*/ void main unsigned int k,i; /子函数定义 Sysinit; while(1) /八通道循环采集电压工作方式 if(moshi=0) m

17、=8; for(k=0;k8) m=1; 第 12 页 共 17 页 单片机应用实习报告 if(dianyazeng=1) dianyazeng=0; shangyazhi+; if(shangyazhi5) shangyazhi=0; zhu; for(i=0;i8) m=1; zhu; void Timer0_ISR interrupt 1 第 13 页 共 17 页 单片机应用实习报告 static unsigned char Bit=0,a=0; TH0=THCO; TL0=TLCO; Bit+; if(Bit=4)Bit=0; P34=0; P35=0; P36=0; P37=0;

18、/关位码 if(sheding=0) if(Bit=0) P2=Duanm|0x80; if(Bit=1) P2=DuanData_BufferBit|0x80; /开断码 else if(Bit1) P2=DuanData_BufferBit; if(Data_Buffer1=shangyazhi ) LED=0; else LED=1; else if(Bit=1) P2=Duanshangyazhi|0x80; else if(Bit1) P2=DuanData_BufferBit; 第 14 页 共 17 页 /开断码 单片机应用实习报告 switch(Bit) /开位码 case 0

19、: P34=1;break; case 1: P35=1;break; case 2: P36=1;break; case 3: P37=1;break; if(P30=0|P31=0|P32=0) /按键按下检测及相关设置 a+; if(a=50&P30=0) a=0; moshi=!moshi; if(a=50&P31=0&moshi=1) a=0; zengjia=1; if(a=50&P32=0) a=0; sheding=!sheding; if(a=50&P31=0&sheding=1) a=0; dianyazeng=1; 第 15 页 共 17 页 单片机应用实习报告 void

20、 LED_Fresh unsigned int temp; AdValue=AdValue*1.95; temp=AdValue; Data_Buffer1=temp/100; Data_Buffer2=temp/10%10; Data_Buffer3=temp%10; /数码管显示数据来源 void Sysinit TMOD=0x11; void AD_Start(void) ADWR=1; CS=0; delay_ms(1); ADWR=0; delay_ms(1); ADWR=1; void delay_ms(unsigned int x) /延时程序 unsigned char y;

21、第 16 页 共 17 页 /定时器0初始化 TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1; /开启AD转换 单片机应用实习报告 for(x;x0;x-) 1 for(y=110;y0;y-); void zhu AD_Start; while(!EOC); RS=0; AdValue=P0; if(sheding=0) LED_Fresh; else m=0; xianyajiemian; RS=1; void xianyajiemian Data_Buffer2=0; Data_Buffer3=0; /电压上线设置界面初值显示设定第 17 页 共 17 页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号