当前位置: 首页 > 其他范文 > 其他范文

单片机实验

作者:何不潇洒521 | 发布时间:2020-12-22 12:27:55 收藏本文 下载本文

1 北 北 京 科 技 大 学 2014 嵌入式与单片机报告 学院:________________________ 姓名:________________________ 学号:________________________ 指导教师:____________________ 2015 年 1 月 8 日 计算机与通信工程

2 目录 1.封面..........................................................................................................1 2.课题设计介绍.........................................................................................3 2.嵌入式与单片机课程设计一.................................................................5 1 项目需求分析.................................................................................7 2.相关知识准备.................................................................................9 3.程序结构规划...............................................................................11 4.程序代码编写...............................................................................15 5.程序下载记录...............................................................................17 3.嵌入式与单片机课程设计二...............................................................17 1 项目需求分析...............................................................................18 2.相关知识准备...............................................................................18 3.程序结构规划...............................................................................19 4.程序代码编写...............................................................................21 5.程序下载记录...............................................................................20 4.实验总结心得体会...........................................................................22

3 课题设计介绍 在人类的生活环境中,温度扮演着极其重要的角色,我们无时无刻不在与温度打交道。自 18 世纪工业革命以来,工业发展与是否掌握温度有着紧密的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎%80 的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。虽然,我们此次所做的实验没有那么高端、大气、上档次。但是单片机,传感器是测量的基础。通过本次课程设计,我们可以:

1.掌握数字温度传感器 DS18B20 的原理、性能、使用特点和方法,利用C51 对系统进行编程。掌握光敏传感器的原理、性能、使用特点和方法。

2.本课题综合了现代测控、电子信息、计算机技术专业领域方方面面的知识,具有综合性、科学性、代表性,可全面检验和促进学生的理论素养和工作能力。

3.本课题的研究可以使学生更好地掌握基于单片机应用系统的分析与设计方法,培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、增强针对实际应用进行控制系统设计制作的能力。

嵌入式与单片机课程设计一:数码管温度显示及 PC 机接收 1.项目需求分析 本次实验所采用的是比较经典的温度传感器 DS18B20,利用温度传感器DS18B20 采集数据,将当前温度值实时显示在数码管上,并利用 USB 转串口驱动装置将数码管上显示的数值发送到 PC 端。

2.相关知识准备(1)DS18B20 介绍:

4 DS18B20 是美国 DALLAS 半导体公司继 DS1820 之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现 9~12 位的数字值读数方式。可以分别在 93.75 ms 和 750 ms 内完成 9 位和 12 位的数字量,并且从 DS18B20 读出的信息或写入DS18B20 的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的 DS18B20 供电,而无需额外电源。因而使用DS18B20 可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较 DS1820 有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。

(2)DS18B20 的工作原理:

DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。DS18B20 共有三种形态的存储器资源,它们分别是:

① ROM 只读存储器,用于存放 DS18B20ID 编码,其前 8 位是单线系列编码(DS18B20 的编码是 19H),后面 48 位是芯片唯一的序列号,最后 8 位是以上56 位的 CRC 码(冗余校验)。DS18B20 共 64 位 ROM。

② RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共 9 个字节 RAM,每个字节为 8 位。第 1、2 个字节是温度转换后的数据值信息,第 3 和第 4 字节是高温触发器 T H 和低温触发器 T L 的易失性拷贝,第 5 个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。以上字节内容每次上电复位时被刷新。

为了保证数据可靠地传输,任一时刻 1-Wire 总线上只能有一个控制信号或数据。进行数据通信时应符合 1-Wire 总线协议,访问 DS18B20 的操作顺序遵循以下三步:

5 第一步:初始化 第二步:ROM 命令 第三步:DS18B20 功能命令(3)串行通信方式 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分 S 位才能传送完毕。

串行通信的必要过程是:发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。

串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。

3.程序结构规划(1)、温度传感模块 采用单总线数字温度传感器 DS18B20 测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在 0—100 摄氏度时,最大线形偏差小于 1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,每只 DS18B20 具有一个独有的不可修改的 64 位序列号,根据序列号可访问不同的器件。

(2)、显示模块 采用 8 位段数码管,将单片机得到的数据通过数码管显示出来。该方案简单易行,但进行温度参数传输是不容易进行操作,可读性差,一旦设定后很难再加入其他的功能,显示格式受限制,且大耗电量大,不宜用电池给系统供电。

(3)、程序结构规划见下面主程序分析 4.程序代码编写 这是所创建的工程。

temp.h 文件:temp.c 的头文件

6 main.c:主程序 由下图可以看出,LCD 温度显示实验所采用的是 Timer0()中断函数。开头部分定义了 3 个函数:

void LcdDisplay(int);用于数码管显示温度的函数 void Timer0Configuration();用来配置温度显示的定时器中断 void UsartConfiguration();用来配置串口通信的函数 void LcdDisplay(int);用于数码管显示温度的函数

9 void Timer0Configuration();用来配置温度显示的定时器中断 void UsartConfiguration();用来配置串口通信的函数 void DigDisplay()interrupt 1;数码管中断显示函数。

10 5.程序下载记录 编译成功:

下载程序成功:

11 数码管显示当前温度:

打开串口调试助手,打开串口,数码管显示的数值发送到 PC 端:

12 嵌入式与单片机课程设计二:两个单片机之间的串口通信 1.项目需求分析 本次实验所要实现的功能是:单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过数码管显示出来,同时通过串行口送上位机处理,并在另外一个单片机上显示出来。同时另外一个单片机将所检测到的环境亮度情况传到此单片机上,并通过数码管显示出来。每个端口只连接一个温度传感器件,也即一条一线制总线上仅有一个 DS18B20。并在 Keil 环境下进行应用软件程序的编辑、调试和仿真。

所用到的课程设计器材有:51 单片机,DS18B20 温度传感器,光敏传感器模块 2.相关知识准备 1.光敏二极管模块介绍

13 光敏二极管模块对环境光强最敏感,一般用来检测周围环境的亮度和光强,在大多数场合可以与光敏电阻传感器模块通用,二者区别在于,光敏二极管模块方向性较好,可以感知固定方向的光源。

模块在无光条件或者光强达不到设定阈值时,DO 口输出高电平,当外界环境光强超过设定阈值时,模块 D0 输出低电平。小板数字量输出 D0 可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光强改变; 2.串行通信原理(1)串行通信 通信有并行和串行两种方式。在单片机系统以及现代单片机测控系统 中,信息的交换多采用串行通信方式。

串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分 S 位才能传送完毕。

14 串行通信的必要过程是:发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。

串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。

(2)异步串行方式。

串行通信又有两种方式:异步串行通信和同步串行通信。本实验采取的是异步串行方式。

异步串行通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方收、发协调,要求发送和接收设备的时钟尽可能一致,异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但侮个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。

异步通信一帧字符信息由 4 部分组成:起始位、数据位、奇偶校验位和停止位,如下图所示。有的字符信息也有带空闲位形式,即在字符之间有空闲字符。

15 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加 2-3 位,用于起止位、校验位和停止位,各帧之间还有间隔,因此传输效率不高。在单片机与单片机之间,单片机与计算机之间通信时,通常采用异步串行通信方式。

(3)串行通信的制式 单工。单工是指数据传输仅能沿一个方向,不能实现反向传输。

半双工。半双工是指数据传输可以沿两个方向,但需要分时进行。

全双工。全双工是指数据可以同时进行双向传输。

3.程序结构规划 本次实验中我所做的部分是接收另外一个单片机的温度参数,发送本机的光敏参数部分的实验。另外一个软件工程则由本组李思仪同学完成。如果有需要的话,辛苦老师结合着两份实验报告一起看。

实验的流程是首先通过配置 void UsartConfiguration(int baud);来实现两个单片机之间的波特率匹配以及串口通信部分。再通过 display 函数和中断来实现数据的接收和发送。

4.程序代码编写 #include #define GPIO_DIG P0 sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit key1=P1^0;

16 unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char DisplayData[8];unsigned int te = 0;unsigned int re = 0;unsigned int wait;void UsartConfiguration(int baud);void display();void main(){ UsartConfiguration(4800);while(1){ if(wait > 5000){ if(key1==0)//确认触发 { te = 1;} else { te = 0;}

17 SBUF = te;} display();} } void display(){ int i,j;if(wait < 5001)wait++;DisplayData[4] = DIG_CODE[te];DisplayData[1] = DIG_CODE[re / 10];DisplayData[0] = DIG_CODE[re % 10];for(i=0;i<8;i++){ switch(i)//位选,选择点亮的数码管,{ case(0): LSA=0;LSB=0;LSC=0;break;//显示第 0 位 case(1): LSA=1;LSB=0;LSC=0;break;//显示第 1 位 case(2): LSA=0;LSB=1;LSC=0;break;//显示第 2 位

18 case(3): LSA=1;LSB=1;LSC=0;break;//显示第 3 位 case(4): LSA=0;LSB=0;LSC=1;break;//显示第 4 位 case(5): LSA=1;LSB=0;LSC=1;break;//显示第 5 位 case(6): LSA=0;LSB=1;LSC=1;break;//显示第 6 位 case(7): LSA=1;LSB=1;LSC=1;break;//显示第 7 位 } GPIO_DIG=DisplayData[i];//发送段码 j=10;//扫描间隔时间设定 while(j--);GPIO_DIG=0x00;//消隐 } } void UsartConfiguration(int baud){ SCON = 0X50;//设置为工作方式 1 TMOD &= 0x0F;//清零 T1 的控制位 TMOD |= 0X20;//设置计数器工作方式 2 TH1 = 256-(11059200/12/32)/baud;//计数器重载

19 TL1 = TH1;ES = 1;//打开接收中断 ET1 = 0;EA = 1;//打开总中断 TR1 = 1;//打开计数器 EX0 = 0;//外部中断 0 关闭 TI = 0;RI = 0;} void InterruptUART()interrupt 4 { if(RI){ re = SBUF;RI = 0;TI = 0;} } 5.程序下载记录 实验步骤:

1.将温度传感器插入单片机 2.将光敏传感器接入另一个单片机---接入方法:黑线接地 红线接Vcc 白线接 P1.0 口 3.连接两个单片机----连接方法:将一个单片机的 P3.0 和另一个单片

20 机的 P3.1 口互连。同理 交换单片机 P3.0 和 P3.1 口连接。两个单片机要共地 4.打开两个单片机电源 5.下载程序 编译成功:

下载程序成功:

数码管显示当前温度:

21 结束语 经过一个学期的学习和努力,在老师的谆谆教导下及同学们的热心帮助与指导下,基于 DS18B20 和光敏传感器模块的课程设计即将结束,基本完成了老师所规定的各项工作任务。

本次课程设计实现了对于温度参数的测量、显示以及通信模块,也实现了对于环境亮度参数的测量、显示以及通信模块。使用 KEIL 软件用 C 语言的形式进行了软件部分的程序设计。小组内成员采用分工合作的方式。在进行课程设计的22 过程中遇到了很多问题,有些东西调试了很多次还是存在问题,后来通过向其他同学请教,解决了部分问题,但是,自己觉得还不满意。因为想要实现的功能是将温度以“022.19”的形式传到单片机数码管上显示,但是这样要传输的数据就很大,远远超过 255,导致数码管不能正常显示。不得已放弃了这种方案。

经过本次课程设计,我学了不少的知识,学会了怎样查阅资料和利用工具书,以及熟练地使用 PZISP 自动下载软件和 KEIL 开发工具。通过这次课程设计,我更加深刻地认识到只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自已的所学,认识到自己的不足。

谢谢老师一直以来的付出!

单片机实验十三

单片机实验七

单片机实验2

单片机实验心得体会

《单片机原理及应用》实验指导书(C语言)

本文标题: 单片机实验
链接地址:https://www.dawendou.com/fanwen/qitafanwen/329216.html

版权声明:
1.大文斗范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《单片机实验》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

重点推荐栏目

关于大文斗范文网 | 在线投稿 | 网站声明 | 联系我们 | 网站帮助 | 投诉与建议 | 人才招聘 | 网站大事记
Copyright © 2004-2025 dawendou.com Inc. All Rights Reserved.大文斗范文网 版权所有