北 京 科 技 大 学
2014嵌入式与单片机报告
计算机与通信工程
学院:________________________
姓名:________________________
学号:________________________
指导教师:____________________
2015年 1月8日
1
目录
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
2
课题设计介绍
在人类的生活环境中,温度扮演着极其重要的角色,我们无时无刻不在与温度打交道。自18世纪工业革命以来,工业发展与是否掌握温度有着紧密的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎%80的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。虽然,我们此次所做的实验没有那么高端、大气、上档次。但是单片机,传感器是测量的基础。通过本次课程设计,我们可以:
1. 掌握数字温度传感器DS18B20的原理、性能、使用特点和方法,利用C51对系统进行编程。掌握光敏传感器的原理、性能、使用特点和方法。
2. 本课题综合了现代测控、电子信息、计算机技术专业领域方方面面的知识,具有综合性、科学性、代表性,可全面检验和促进学生的理论素养和工作能力。
3. 本课题的研究可以使学生更好地掌握基于单片机应用系统的分析与设计方法,培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、增强针对实际应用进行控制系统设计制作的能力。
嵌入式与单片机课程设计一:数码管温度显示及PC机接收
1.项目需求分析
本次实验所采用的是比较经典的温度传感器DS18B20,利用温度传感器DS18B20采集数据,将当前温度值实时显示在数码管上,并利用USB转串口驱动装置将数码管上显示的数值发送到PC端。
2.相关知识准备
(1)DS18B20介绍:
3
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字节是高温触发器TH和低温触发器TL的易失性拷贝,第5 个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。以上字节内容每次上电复位时被刷新。
为了保证数据可靠地传输,任一时刻1-Wire总线上只能有一个控制信号或数据。进行数据通信时应符合1-Wire总线协议,访问DS18B20的操作顺序遵循以下三步:
4
第一步:初始化
第二步:ROM命令
第三步:DS18B20功能命令
(3)串行通信方式
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分S位才能传送完毕。
串行通信的必要过程是:发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。
串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
3.程序结构规划
(1)、温度传感模块
采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。
(2)、显示模块
采用8位段数码管,将单片机得到的数据通过数码管显示出来。该方案简单易行,但进行温度参数传输是不容易进行操作,可读性差,一旦设定后很难再加入其他的功能,显示格式受限制,且大耗电量大,不宜用电池给系统供电。
(3)、程序结构规划见下面主程序分析
4.程序代码编写
这是所创建的工程。
temp.h文件:temp.c的头文件
5
main.c:主程序
由下图可以看出,LCD温度显示实验所采用的是Timer0()中断函数。开头部分定义了3个函数:
void LcdDisplay(int);用于数码管显示温度的函数
void Timer0Configuration();用来配置温度显示的定时器中断
void UsartConfiguration();用来配置串口通信的函数
void LcdDisplay(int);用于数码管显示温度的函数
6
7
8
void Timer0Configuration();用来配置温度显示的定时器中断
void UsartConfiguration();用来配置串口通信的函数
void DigDisplay() interrupt 1;数码管中断显示函数。
9
5.程序下载记录 编译成功:
下载程序成功:
10
数码管显示当前温度:
打开串口调试助手,打开串口,数码管显示的数值发送到PC端:
11
嵌入式与单片机课程设计二:两个单片机之间的串口通信
1.项目需求分析
本次实验所要实现的功能是:单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过数码管显示出来,同时通过串行口送上位机处理,并在另外一个单片机上显示出来。同时另外一个单片机将所检测到的环境亮度情况传到此单片机上,并通过数码管显示出来。每个端口只连接一个温度传感器件,也即一条一线制总线上仅有一个DS18B20。并在Keil环境下进行应用软件程序的编辑、调试和仿真。
所用到的课程设计器材有:51单片机,DS18B20温度传感器,光敏传感器模块
2.相关知识准备
1.光敏二极管模块介绍
12
光敏二极管模块对环境光强最敏感,一般用来检测周围环境的亮度和光强,在大多数场合可以与光敏电阻传感器模块通用,二者区别在于,光敏二极管模块方向性较好,可以感知固定方向的光源。 模块在无光条件或者光强达不到设定阈值时,DO口输出高电平,当外界环境光强超过设定阈值时,模块D0输出低电平。小板数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光强改变;
2.串行通信原理
(1)串行通信
通信有并行和串行两种方式。在单片机系统以及现代单片机测控系统 中,信息的交换多采用串行通信方式。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分S位才能传送完毕。
13
串行通信的必要过程是:发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。
串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
(2)异步串行方式。
串行通信又有两种方式:异步串行通信和同步串行通信。本实验采取的是异步串行方式。
异步串行通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方收、发协调,要求发送和接收设备的时钟尽可能一致,
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但侮个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
异步通信一帧字符信息由4部分组成:起始位、数据位、奇偶校验位和停止位,如下图所示。有的字符信息也有带空闲位形式,即在字符之间有空闲字符。
14
异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加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;
15
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;
}
16
}
} display(); }
void display()
{
int i,j; if(wait
DisplayData[4] = DIG_CODE[te];
DisplayData[1] = DIG_CODE[re / 10]; DisplayData[0] = DIG_CODE[re % 10];
for(i=0;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位
17
}
} } 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; TMOD &= 0x0F; TMOD |= 0X20; //设置为工作方式1 //清零T1的控制位 //设置计数器工作方式2 //计数器重载
18 TH1 = 256 - (11059200/12/32)/baud;
}
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和另一个单片机的
19
P3.1口互连。同理 交换单片机P3.0和P3.1口连接。两个单片机要共地
4.打开两个单片机电源
5.下载程序
编译成功:
下载程序成功:
数码管显示当前温度:
20
结束语
经过一个学期的学习和努力,在老师的谆谆教导下及同学们的热心帮助与指导下,基于DS18B20和光敏传感器模块的课程设计即将结束,基本完成了老师所规定的各项工作任务。
本次课程设计实现了对于温度参数的测量、显示以及通信模块,也实现了对于环境亮度参数的测量、显示以及通信模块。使用KEIL软件用C语言的形式进行了软件部分的程序设计。小组内成员采用分工合作的方式。在进行课程设计的
21
过程中遇到了很多问题,有些东西调试了很多次还是存在问题,后来通过向其他同学请教,解决了部分问题,但是,自己觉得还不满意。因为想要实现的功能是将温度以“022.19”的形式传到单片机数码管上显示,但是这样要传输的数据就很大,远远超过255,导致数码管不能正常显示。不得已放弃了这种方案。
经过本次课程设计,我学了不少的知识,学会了怎样查阅资料和利用工具书,以及熟练地使用PZISP自动下载软件和KEIL开发工具。通过这次课程设计,我更加深刻地认识到只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自已的所学,认识到自己的不足。
谢谢老师一直以来的付出!
22
北 京 科 技 大 学
2014嵌入式与单片机报告
计算机与通信工程
学院:________________________
姓名:________________________
学号:________________________
指导教师:____________________
2015年 1月8日
1
目录
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
2
课题设计介绍
在人类的生活环境中,温度扮演着极其重要的角色,我们无时无刻不在与温度打交道。自18世纪工业革命以来,工业发展与是否掌握温度有着紧密的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎%80的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。虽然,我们此次所做的实验没有那么高端、大气、上档次。但是单片机,传感器是测量的基础。通过本次课程设计,我们可以:
1. 掌握数字温度传感器DS18B20的原理、性能、使用特点和方法,利用C51对系统进行编程。掌握光敏传感器的原理、性能、使用特点和方法。
2. 本课题综合了现代测控、电子信息、计算机技术专业领域方方面面的知识,具有综合性、科学性、代表性,可全面检验和促进学生的理论素养和工作能力。
3. 本课题的研究可以使学生更好地掌握基于单片机应用系统的分析与设计方法,培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、增强针对实际应用进行控制系统设计制作的能力。
嵌入式与单片机课程设计一:数码管温度显示及PC机接收
1.项目需求分析
本次实验所采用的是比较经典的温度传感器DS18B20,利用温度传感器DS18B20采集数据,将当前温度值实时显示在数码管上,并利用USB转串口驱动装置将数码管上显示的数值发送到PC端。
2.相关知识准备
(1)DS18B20介绍:
3
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字节是高温触发器TH和低温触发器TL的易失性拷贝,第5 个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。以上字节内容每次上电复位时被刷新。
为了保证数据可靠地传输,任一时刻1-Wire总线上只能有一个控制信号或数据。进行数据通信时应符合1-Wire总线协议,访问DS18B20的操作顺序遵循以下三步:
4
第一步:初始化
第二步:ROM命令
第三步:DS18B20功能命令
(3)串行通信方式
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分S位才能传送完毕。
串行通信的必要过程是:发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。
串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
3.程序结构规划
(1)、温度传感模块
采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。
(2)、显示模块
采用8位段数码管,将单片机得到的数据通过数码管显示出来。该方案简单易行,但进行温度参数传输是不容易进行操作,可读性差,一旦设定后很难再加入其他的功能,显示格式受限制,且大耗电量大,不宜用电池给系统供电。
(3)、程序结构规划见下面主程序分析
4.程序代码编写
这是所创建的工程。
temp.h文件:temp.c的头文件
5
main.c:主程序
由下图可以看出,LCD温度显示实验所采用的是Timer0()中断函数。开头部分定义了3个函数:
void LcdDisplay(int);用于数码管显示温度的函数
void Timer0Configuration();用来配置温度显示的定时器中断
void UsartConfiguration();用来配置串口通信的函数
void LcdDisplay(int);用于数码管显示温度的函数
6
7
8
void Timer0Configuration();用来配置温度显示的定时器中断
void UsartConfiguration();用来配置串口通信的函数
void DigDisplay() interrupt 1;数码管中断显示函数。
9
5.程序下载记录 编译成功:
下载程序成功:
10
数码管显示当前温度:
打开串口调试助手,打开串口,数码管显示的数值发送到PC端:
11
嵌入式与单片机课程设计二:两个单片机之间的串口通信
1.项目需求分析
本次实验所要实现的功能是:单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过数码管显示出来,同时通过串行口送上位机处理,并在另外一个单片机上显示出来。同时另外一个单片机将所检测到的环境亮度情况传到此单片机上,并通过数码管显示出来。每个端口只连接一个温度传感器件,也即一条一线制总线上仅有一个DS18B20。并在Keil环境下进行应用软件程序的编辑、调试和仿真。
所用到的课程设计器材有:51单片机,DS18B20温度传感器,光敏传感器模块
2.相关知识准备
1.光敏二极管模块介绍
12
光敏二极管模块对环境光强最敏感,一般用来检测周围环境的亮度和光强,在大多数场合可以与光敏电阻传感器模块通用,二者区别在于,光敏二极管模块方向性较好,可以感知固定方向的光源。 模块在无光条件或者光强达不到设定阈值时,DO口输出高电平,当外界环境光强超过设定阈值时,模块D0输出低电平。小板数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光强改变;
2.串行通信原理
(1)串行通信
通信有并行和串行两种方式。在单片机系统以及现代单片机测控系统 中,信息的交换多采用串行通信方式。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分S位才能传送完毕。
13
串行通信的必要过程是:发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。
串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
(2)异步串行方式。
串行通信又有两种方式:异步串行通信和同步串行通信。本实验采取的是异步串行方式。
异步串行通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方收、发协调,要求发送和接收设备的时钟尽可能一致,
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但侮个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
异步通信一帧字符信息由4部分组成:起始位、数据位、奇偶校验位和停止位,如下图所示。有的字符信息也有带空闲位形式,即在字符之间有空闲字符。
14
异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加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;
15
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;
}
16
}
} display(); }
void display()
{
int i,j; if(wait
DisplayData[4] = DIG_CODE[te];
DisplayData[1] = DIG_CODE[re / 10]; DisplayData[0] = DIG_CODE[re % 10];
for(i=0;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位
17
}
} } 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; TMOD &= 0x0F; TMOD |= 0X20; //设置为工作方式1 //清零T1的控制位 //设置计数器工作方式2 //计数器重载
18 TH1 = 256 - (11059200/12/32)/baud;
}
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和另一个单片机的
19
P3.1口互连。同理 交换单片机P3.0和P3.1口连接。两个单片机要共地
4.打开两个单片机电源
5.下载程序
编译成功:
下载程序成功:
数码管显示当前温度:
20
结束语
经过一个学期的学习和努力,在老师的谆谆教导下及同学们的热心帮助与指导下,基于DS18B20和光敏传感器模块的课程设计即将结束,基本完成了老师所规定的各项工作任务。
本次课程设计实现了对于温度参数的测量、显示以及通信模块,也实现了对于环境亮度参数的测量、显示以及通信模块。使用KEIL软件用C语言的形式进行了软件部分的程序设计。小组内成员采用分工合作的方式。在进行课程设计的
21
过程中遇到了很多问题,有些东西调试了很多次还是存在问题,后来通过向其他同学请教,解决了部分问题,但是,自己觉得还不满意。因为想要实现的功能是将温度以“022.19”的形式传到单片机数码管上显示,但是这样要传输的数据就很大,远远超过255,导致数码管不能正常显示。不得已放弃了这种方案。
经过本次课程设计,我学了不少的知识,学会了怎样查阅资料和利用工具书,以及熟练地使用PZISP自动下载软件和KEIL开发工具。通过这次课程设计,我更加深刻地认识到只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自已的所学,认识到自己的不足。
谢谢老师一直以来的付出!
22