当前位置:文档之家› 单片机温度检测记录系统实验报告1

单片机温度检测记录系统实验报告1

单片机温度检测记录系统实验报告1
单片机温度检测记录系统实验报告1

指导教师:

年月日单片机温度检测记录系统

2012 年 7 月 17 日

温度参数检测在测控系统、工业控制等场合中占有重要的地位,设计一个具有温度实时显示和动态记录功能的温度检测记录系统就显得非常必要。本文提出了以STC89C52单片机为核心的温度检测与记录系统的设计方法,在这种方法中采用了新型可编程温度传感器DS18B20进行温度检测,这种传感器具有很多的特点,抗干扰能力强、温度采集精度高、稳定性好、电路简单、控制方便等等;时钟显示模块采用了DS1302,它能提供包括秒、分、时、日期、月份、年份信息,可以选择12小时制和24小时制;创造性的采用了24C02与串口的方法来有效得存储数据;LCD液晶显示器用来显示时间温度的数据。这篇文章还给出了系统总体框架、程序流程图和Altium Designer 6原理图,并在硬件平台上实现了所设计功能。

关键词:STC89C52单片机;温度传感器;时钟显示

1. 设计任务 (1)

1.1 任务描述 (1)

1.1.1 小任务 (1)

1.2 技术指标 (1)

1.3 难点分析 (1)

2. 方案比较与论证 (2)

2.1 方案选择 (2)

2.2 方案论证 (3)

2.3 小结 (4)

3. 系统硬件设计 (5)

3.1 总体设计 (5)

3.2 硬件模块电路分析 (6)

3.3 发挥部分设计 (13)

3.4 电路原理图 (13)

3.5 小结 (13)

4. 系统仿真与软件设计 (14)

4.1 仿真设计与分析 (14)

4.2 软件设计 (15)

5. 系统调试与组装 (18)

5.1 PCB板 (18)

5.2 样机调试 (18)

5.3 样机功能 (18)

5.4 发挥部分测试结果 (19)

5.5 小结 (19)

6. 结论 (20)

参考文献 (21)

附录一 (22)

附录二 (25)

1. 设计任务

1.1 任务描述

设计制作一台可检测和记录温度的系统。

1.1.1 小任务

温度检测系统可以根据外界的情况在相应的间隔时间显示出对应的温度值。

1.2 技术指标

(1) LCD显示实时时钟:年、月、日、时、分、秒;

(2) 每30秒采样温度,LCD更新显示温度值;

(3) 按键触发存储当前温度和时钟信息(年、月、日、时、分);

(4) 按键触发串口传输存储的温度和时钟信息;

(5) 温度测量精度:±1度。

1.3 难点分析

在本次设计实验中,主要的难点有:满足设计要求的keil C语言程序设计,并且满足protues仿真时也要确保实物电路满足要求,因为仿真电路的晶振频率和延时函数与实际电路有区别,所以在这些细节处我们更应该主要,避免实物电路出不了结果;用Altium Designer 6画PCB板时,因为没有库文件所以对元器件的封装必须正确,在摆放元器件时要尽量减少交叉线;在做实物板时,必须确保焊接的正确,没有虚焊、漏焊、桥接的情况,确保硬件没有问题;在调试过程中,由于加了稳压器,所以系统的输入电压才3.7V左右,达不到一些元器件的工作电压,到时LED显示不稳定,既在设计电路之前就必须先查看所用到的元器件的资料,确保各个元器件都正常工作。

2. 方案比较与论证

做任何一件事情并不是只有一种方法,只要勤于思考,不但会有很多不同的途径,还能从中选取最优的那一种,这次的设计,我们这一组的成员对器件的使用也展开了讨论,目的是在众多的具有相同功能的一类器件中选择一款更能达到本次设计任务。以下选择性的介绍一下各类型的器件的比较以及我们选择所用到的器件的原因。

2.1 方案选择

2.1.1 温度传感器

方案1:热电偶传感器是温度测量中最常用的传感器,它是由在一端连接的两条不同金属线构成,当热电偶一端受热时,热电偶电路中就有电势差,可用测量的电势差来计算温度。电压与温度是呈非线性关系,温度变化时电压变化很小,并且需要为参考温度(Tref)作第二次测量,并利用测试设备软件和硬件在仪器内部处理电压-温度变换,以最终获得热偶温度(TX)。

方案2:热敏电阻是用半导体材料制成,大多为负温度系数,即阻值随温度增加而降低,它的体积非常小,对温度的变化响应也很快,具有结构简单,测量范围广,热惯性小,准确度高,输出信号远的优点,但价格较高。

方案3:DS18B20的操作用汇编语言编写的具体程序,测温精度高、分辨率高。具有非易失性上、下限报警设定的功能,成本低,易于采集信号。

2.1.2 时钟显示

方案1:采用内部时钟计时,利用单片机内部的振荡器,然后在引脚XTAL1(18脚)和XTAL2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz—12MHz之间选择为了减少寄生电容,更好的保证震荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。

方案2:采用外部时钟芯片DS1302,它是一种。高性能、低功耗、带RAM的实时时钟电路,可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V—5.5V。它的主要特点是采用串关闭行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。

2.1.3 时间温度数据显示

方案1:采用LED数码管显示,LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个,这些段分别由字母a、b、c、d、e、f、g、dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样。

方案2:采用LCD显示器显示。液晶显示器在当今的生活中随处都可以看到,我们采用的LM016L液晶模块采用了HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能。LM016L是一种专门用来显示字母、数位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行距的作用。

2.1.4 数据的串口传送与储存显示

方案1:通过串口将数据传送到另一个单片机系统上显示,采用24C02存储器对数据进

行储存。

方案2:通过串口将数据传送到PC机上并用VB程序编写的界面显示,采用PC机对数据进行储存。

2.2 方案论证

2.2.1 温度传感器

利用热电偶传感器一般会考虑铂电阻和铜电阻,铂电阻适用于中性和氧化性介质,稳定性好,具有一定的非线性,温度越高电阻变化率越小;铜电阻在测温范围内电阻值和温度呈线性关系,温度系数大,适用于无腐蚀介质,超过150度易被氧化。并且采用热电偶传感器或者热敏电阻作为温度传感器,都需要采用专用的温度补偿导线与仪器连接,但是温度补偿导线的价格很高,同时如果线路太长,会影响测量精度,这是直接以模拟量形式进行采集的不可避免的问题。采用新型可编程温度传感器DS18B20进行温度检测可以避免热电偶或热敏电阻作为温度传感器所造成的测量精度误差过大等问题,它的测温范围-55℃~125℃,分辨率最大可达0.0625℃。DS18B20 可以直接读出被测温度值。而且采用3 线制与单片机相连,减少了外部硬件电路,具有低成本和易使用的特点。DS18B20是Dallas半导体公司的数字化温度传感器,它是一种支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。一线总线将独特的电源和信号复合在一起,并仅使用一条线,每个芯片都有唯一的编码,支持联网寻址,简单的网络化的温度感知,零功耗等待等特点。因此采用方案3。

2.2.2 时钟显示

单片机的时钟信号可以由外部振荡和内部振荡两种方式取得, 在引脚XTAL1和XTAL2外接晶振振荡器或陶瓷谐振器,就构成了单片机的内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。虽然采用内部时钟计时,可以节省IO引脚,降低成本,但是内部振荡器使用阻容震荡,其精度不高,为了防止掉电,还需要备一块电池供电。 单片机的外部振荡方式时把已有的时钟信号引入

(对于HMOS的单片机(8031,单片机内。这种方式适宜用来使单片机的时钟与外部信号一致。

8031AH等),外部时钟信号由XTAL2引入,对于CHMOS的单片机(8XCXX),外部时钟由XTAL1引入。采用外部时钟芯片DS1302,不仅仅能对时间进行计时还可以对年、月、日、周进行计时,具有闰年补偿功能而且对于使用串口、或者PWM等对时钟比较敏感的功能,不会产生影响。所以选择方案2。

2.2.3 时间温度数据显示

如果采用数码管动态扫描显示时间温度数据,往往不止一个数码管,一个数码管8段加一个公共端需要9根口线才能完全显示任意字符,为了节省IO口线,就需要用到人眼视觉驻留的原理,每一位数码管显示一会儿,然后关掉,再去显示下一个数码管。使用LCD显示时,由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,所以它的画质高且不会闪烁,由于液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作也更加方便。并且液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的液晶显示器每一个点,在质量上也比相同显示面积的传统显示器要轻得多。同时,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,功耗电量非常少。所以使用方案2。

2.2.4 数据的串口传送与储存显示模块

在这一个通过模块中我们考虑到将两种方法结合起来,因为这两种方式各有其优势和劣势,同时采用可以取长补短,也并不会发生矛盾。串口将数据从一个单片机传送到另一个单片机上设置较为简单,将数据存储到24C02存储器上,不易于对任意时间温度数据进行提取,而将数据传送到PC机上并用VB界面显示出来不仅美观而且信息量丰富,但是有可能会丢失,我们将数据储存在“D:\温度.TXT”目录下不仅存储量大,而且便于直观查看。将两种方法结合起来后,这一个模块的工作情况能够更加的有保障,因此,将方案1与方案2 结合起来。

2.3 小结

通过这一部分的讨论,在比较了各种方案对该设计的影响及达到设计的技术指标的保准后,我们就确定了选用单片机STC89C51为核心元件,温度传感器STC89C52,时钟芯片DS1302,存储芯片24C02,传输芯片MAX232,并且为了保证系统能够更加有保障的传输数据,还采用了串口将数据传送到PC机上并用VB程序编写的界面显示。这样,整个系统的大致所需要的芯片就可以确定了,为单片机添加晶振、保护电阻时所需的器件以及其大小类型,画仿真图的时候可以确定。

3.系统硬件设计

3.1 总体设计

该系统是以STC89C52单片机为核心,采用了新型可编程温度传感器DS18B20进行温度检测,它具有抗干扰能力强、电路简单、精度高等特点,时钟显示模块采用了DS1302,它能够提供包括秒、分、时、日期、月份、年份信息,闰年可自行调整,还可以选择12小时制和24小时制,并通过串口、24C02与主机进行通信,最后以LCD显示。通过按键开关可对日期年月进行手动选择,单片机通过max232串口传输能实现与PC机直接的存储信息交流。

图3-1 硬件总体框图

根据硬件的总体框图,我们画出了相应的proteus仿真图,将正确的程序在入之后,能够显示出正确的时间与所处环境的温度值,如下图所示,是在2012年7月16日晚上20:13:56时,星期一,所测得温度值为37度。

图3-2 总体设计图

3.2 硬件模块电路分析

3.2.1 核心系统模块

STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL高密度非易失储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。12时钟/机器周期和6时钟/机器周期可以任意选择。工作电压为5.5V~3.3 V(5V单片机)/3.8V~2.0V(3V单片机),它的工作频率范围为0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K字节,偏上集成512字节RAM,通用I/O口(32个)复位后为:P1、P2、P3、P4是准双口向上/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。它不仅具有EEPROM功能,还具有看门狗功能。一共有3个16位定时器/计数器,即定时器T0、T1、T2,外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒。STC89C52管脚图如图3-3(a)所示,仿真图如图

3-3(b)所示。

图3-3(a)STC89C52管脚图图3-3(b)STC89C52仿真图

各引脚功能分别为:

VCC:电源电压;

VSS:接地;

P0端口:P0口是一个漏极开路的8位双向I/O口。作为输入端口,每个引脚能驱动8 个TTL负载,对端口P0写入每个引脚驱动,写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。

P1端口:P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动4个TTL输入。对端口写入“1”时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入。

P2端口:P2口是一个带内部上拉电阻的8位双向I/O口。P2的输出缓冲器可驱动4个TTL输入。对端口写入“1”时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。在访问外部程序存储器和16位地址的外部数据存储器时,P2送出高8位地址。在访问8位地址的外部数据存储器时,P2口引脚上的内容在整个访问期间不会改变。

P3端口:P3口是一个带内部上拉电阻的8位双向I/O口。P3的输出缓冲器可驱动4个TTL输入。对端口写入“1”时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。P3口除作为一般I/O口外,还有其他一些复用功能。

RST:复位输入。当输入连续两个机器周期以上高低那平时为有效,用来完成单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器可以AUXR上的DISRTO位可以使此功能无效。DISRTO默认状态下,复为高电平有效。

ALE/ROG:地址锁存控制信号,ALE是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,ROG也用作编程输入脉冲。

STC89C52的工作模式为:

掉电模式:典型功耗<0.1 A,可由外部中断唤醒,中断返回后,继续执行原程序

空闲模式:典型功耗2mA

正常工作模式:典型功耗4Ma~7mA

掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。

3.2.2 温度传感器模块

DS18xx系列温度传感器是数字式温度传感器,相对于传统温度传感器精度高、稳定性好、电路简单、控制方便。DS18B20有很多特性,现列举以下几点:

(1)应用中不需要外部任何元器件即可实现测温电路。

(2)测温范围为-55度—125度,最大精度可以达到0.0625度。

(3)只通过一条数据线即可实现通信。

(4)每个DS18B20器件上都有独一无二的序列号,所以一条数据线上可以挂接很多该传感器。

(5)内部有温度上下限警告功能。

DS18B20的管脚及外部形状图如3-4(a)所示,仿真图如3-4(b)所示

图3-4(a)DS18B20管脚及外部形状图3-4(b)DS18B20仿真图

DS18B20工作时需要接受特定的指令来完成相应的功能,它的指令可分为ROM指令和RAM指令;R OM指令主要是对其内部的ROM进行操作,如查询所使用DS18B20的序列号,如果只使用一个DS18B20,ROM操作一般就可以直接跳过了;RAM指令主要是完成对其内RAM中的数据进行操作,如让其开始进行数据采集、读数据等。DS18B20数字温度传感器是单总线器件,数据的读写只通过一条数据线进行并且这一条线上允许挂很多该传感器;这样对器件进行读写指令时就比较麻烦,必须应用特定时序来识别高低平信号,所以指令表中0、1在写给DS18B20时就得变成代表0、1电平的时序段序列。同样,从DS18B20读数据时,也是由特定的时序来完成数据读取。

DS18B20的工作过程如下:

(1)复位操作

(2)执行ROM操作的5条指令之一:1)读ROM,2)匹配ROM,3)搜索ROM,4)跳过ROM,5)报警搜索

(3)存储器操作命令:温度转换、读取温度、设定上下限温度值指令

(4)读取温度数据:主机读取温度数据后进行数据处理

可以初始化数据精度,按芯片手册写入固定指令。数据位数可设置成9、10、11、12位,其中七位为温度整数部分,1位表示温度正负,其余位数为小数。如9位数据时,有1位为小数,精度为0.5。

DS18B20需要严格的协议以确保数据的完整性,协议包括几种单线信号类型:复位脉冲、存在脉冲、写0、写1、读0和读1。总线这些信号,除存在脉冲外,都是由总线控制器发出的。和DS18B20间的任何通讯都需要以初始化序列开始。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备好发送和接收数据。

DS18B20内部对9位温度数据格式计算的结果可提供0.5度的分辨率。温度以16位带符号位扩展的二进制补码形式读出,表1给出了温度值和输出数据的关系。数据通过单线借口以串行方式输出。DS18B20测温范围为-55度至125度,以0.5度递增。如用于华氏温度,必须要用一个转换因子查找表。读取数据时需要读取前16位数据,低字节在前,高字节为符号位。温度值与输出数据的关系如表3-1

表3-1

温度值与输出数据关系

每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM 中。主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出。ROM命令代码见表3.1。

程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。

DS18B20的测温原理,低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。它的测温原理内部设置如图3-3所示。

图3-5 DS18B20测温原理内部设置

3.2.3 时钟显示模块

DS1302包括时钟/日历寄存器和31字节(8位)的数据暂存寄存器,数据通信仅通过一条输入输出口。实时时钟/日历提供包括秒、分、时、日期、月份、年份信息,闰年可自行调整。可以选择12小时制和24小时制,可以设置AM、BM。DS1302的管脚图与仿真图分别如图3-6(a)和3-6(b)所示,

图3-6(a)DS1302管脚图图3-6(b)DS1302仿真图

各引脚的功能为:

Vcc1:备用电源;

Vcc2:主电源。当V cc2>Vcc1+0.2V时,由Vcc2向D S1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。在实物中,我们将vcc1与一颗3V的钮扣电池相连,从而实现时钟实时更新功能。

SCLK:串行时钟,输入,控制数据的输入与输出;

I/O:三线接口时的双向数据线;

CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。

它的主要工作部件有:移位寄存器、控制逻辑、晶振、时钟和RAM。在进行任何数据传输时,RST必须被制高电平,在每个SCLK上升沿时数据被输入,下降沿是数据被输出,

一次只能读写一位,适度还是写需要通过串行输入控制指令来实现,通过8个脉冲便可读取一个字节从而实现串行输入与输出。最初通过8个时钟周期载入控制字节到移位寄存器。如果控制指令选择的是单字节模式,连续的8个时钟脉冲可以进行8位数据的写和8位数据的读操作,SCLK时钟的上升沿时,数据被写入DS1302,SCLK脉冲的下降沿读出DS1302的数据。8个脉冲便可读写一个字节。在突发模式,通过连续的脉冲一次性都写完7个字节的时钟日历寄存器,也可以一次性读写8~328位RAM数据。

图3-7 DS1302的工作原理图

3.2.4 数据的串口传送与储存模块

对于数据的传送与存储我们分别选用了MAX232和24C02C,由前面的介绍可以了解,数据的存储这一部分,为了安全起见,我们还采用了PC机的功能。

MAX232是一款兼容RS232标准的芯片。由于电脑串口rs232电平是-10V+10V,而一般的单片机应用系统的信号电压是0~+5v,MAX232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS 电平转换成TIA/EIA-232-F电平。它的主要特点是:单5V电源工作;LinBiCMOSTM工艺技术;有两个驱动器和两个接收器;正负30V输入电平;低电源电流,典型值是8mA;符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28;ESD保护大于MIL-STD-883标准的2000V。

图3-8(a)为MAX232的管脚图,图3-8(b)为MAX232的仿真图

图3-8(a)MAX232管脚图图3-8(b)MAX232的仿真图

各引脚的功能为:

C1+,C1-,C2+,C2-:外接电容端;

R1lN,R2lN:2路RS-232电平信号接收输入端;

R1OUT,R2OUT:2路转换后的TTL电平接收信号输出端,送单片机的RXD接收端;

T1lN,T2lN:2路TTL电平发送输入端,接收机的TXD发送端;

T1OUT,T2OUT:2路转换后的发送RS-232电平信号输出端,接传输线;

V+:经电容接+5V电源;

V-:经电容接地。

24C02C是点可擦除PROM,采用256*8-bit的组织结构以及两线串行接口。电压可允许低至1.8V,待机电流和工作电流分别为1 A和1mA。24C02C具有也写功能,每页分别为8字节。图3-9(a)为24C02C的管脚图,图3-9(b)为它的仿真图。

图3-9(a)24C02C管脚图图3-9(b)24C02C仿真图

各管脚功能为:

A0、A1、A2:器件地址选择;

SDA:串行数据/地址;

SCL:串行时钟;

WP:写保护;

Vcc:+1.8V~6.0V工作电压;

Vss:接地。

3.2.5 时间温度数据显示模块

液晶显示器(LCD)具有功耗小、体积小、质量轻、功耗小的特点。点阵字符型液晶显示器把LCD控制器、点阵驱动器、字符存储器集成在一块印刷电路板上,构成便于应用的液晶模块。这类液晶模块不仅可以显示数字、字符,还可以显示各种图形符号及少量自定义符号,并且可以实现屏幕的上下左右滚动,文字的闪烁等功能;人机界面友好,使用操作也更加灵活、方便,使其日益成为各种仪器仪表等设备的首选。LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L 与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种。LM016L的实物图与仿真图分别如图3-10(a)和3-10(b)所示

图3-10(a)LCD1602管脚图图3-10(b)LCD1602仿真图

各引脚的功能为:

VSS:接地;

VDD:接电源(+5V);

V0:液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度);

RS:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;

R/W:R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作;

E:E(或EN)端为使能(enable)端,下降沿使能;

DB0-DB7:双向数据总线7位(其中DB7即最高位,也是busy flag);

BLA:背光电源正极;

BLK:背光电源负极。

其寄存器选择控制表如下表3-2所示:

3.3 发挥部分设计

我们这一组在老师的要求的基础上,加了一个温度报警器的模块,温度报警器广泛应用于工农业生产以及日常生活中:环境温度检测报警、蔬菜大棚、花窖、鱼塘等。这个模块可以在温度过高的时候发出报警的声音,引起人们的注意。

3.4 电路原理图

图3-11电路原理图

3.5 小结

通过对硬件电路进行仿真和电路设计我们发现了很多细小的问题,首先就是单片机的驱动问题,这点在仿真的时候不用外加晶振就可以正常运行,但是实际电路设计的时候一定要注意外接晶振源;在进行仿真测试前一定要多查阅各个芯片的引脚的高低电平的接法,否则会引起芯片不能正常被驱动而导致某个模块不能运行;在设计DS1302的过程中一定要注意添加晶振驱动该芯片工作,这点常常容易被忽略。

仿真通过之后我们就要焊接实物电路板,焊接电路的过程也要注意器件的合理摆放,不要浪费板子的面子也不要影响美观。在调试电路板的过程中我们要注意先检查电路是否有短路问题然后再接上电源进行电平检测,在检查短路问题的过程中我们一定要有耐心。检查完电路的线路问题之后我们就要仔细检查上电之后各芯片的引脚电平是否正常,调试电路板是一个漫长的过程,我们在这个过程中一定要做好各种心理准备,因为可能第一次调试的过程什么结果都没有,然后我们通过不断失败不断进步就能保证最终电路板的成功。

4. 系统仿真与软件设计

4.1 仿真设计与分析

本次设计,我们是通过protues仿真,总的来说就是将温度传感器DS1802检测到的温度和DS1302外部时钟传给单片机,再由单片机将数据发给LCD显示出来,利用按键开关来实现时间的设置与存储。

图4-1系统总流程图

4.2 软件设计

4.2.1温度传感器流程图

DS18B20工作时需要接收特定的指令来完成相应的功能,它的指令分为ROM指令和RAM指令,首先要将温度传感器内存初始化,逐字读取传感器RAM中的的温度数据,并将数据转化为十进制的浮点型数据,最后显示出温度值。其流程图如下:

图4-2 温度传感器流程图

DS1302包括时钟/日历寄存器和31字节(8位)的数据暂存寄存器,数据通信仅通过一条输入输出口。实时时钟/日历提供包括秒、分、时、日期、月份、年份信息,闰年可自行调整。初始化之后,进行写操作,并且按照程序供给的初始时间继续走时,并将数据送入到单片机中再根据日历、时间调整指令的情况进行下一步。其流程图如下:

图4-3 时钟芯片流程图

否无

AT24C02是美国ATMEL 公司的低功耗CMOS 串行EEPROM ,它是内含256×8位存储空间,具有工作电压宽 (2.5~5.5V )、擦写次数多(大于10000次)、写入速度快(小于10ms )等特点。AT24C02中带有片内寻址寄存器。每写入或读出一个数据 字节后,该地址寄存器自动加1,以实现对下一个存储单元的操作。所有字节都以单一操作方;读取。为降低总的写入时间,一次操作可写入多达8字节的数据。其工作流程图如下所示:

图4-4 存储芯片流程图

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验报告

实验报告 专业:计算机科学与技术班级:C093 姓名:孙丽君 学号:098677

实验一:数据传送实验 1.实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—A FH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV@R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H

MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 3.实验结果: 4. CPU 对8031内部RAM存储器有哪些寻址方式? 答:直接寻址,寄存器寻址,寄存器间接寻址,位寻址。

5. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH内容:A0~AF 内部RAM 50H~5FH内容:A0~AF 实验二多字节十进制加法实验 1.实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG0000H RESET: AJMP MAIN ORG0100H MAIN: MOV SP, #60H MOV R0, #31H MOV@R0, #22H DEC R0 MOV@R0, #33H

单片机实验报告

仲恺农业工程学院实验报告纸 自动化学院(院、系)工业自动化专业144班组单片机与嵌入式系统实验课学号201421714406姓名黄国盛实验日期2016年11月05日教师评定 实验一Keil C51集成开发环境的使用练习 一、实验目的 熟悉Keil C51集成开发环境的使用方法。 二、实验设备及器件 IBM PC机一台 三、实验内容 按照Keil C51软件的使用说明进行Keil C51集成开发环境的安装和使用练习,然后按照以下内容建立并编译产生HEX文件。 ORG0000H LJMP Main ORG00F0H Main: MOV R7,#0 Loop: MOV R6,#0 DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R7,Loop;延时 CPL P1.0;P1.0取反 CPL P1.1;P1.1取反 CPL P1.2;P1.2取反 CPL P1.3;P1.3取反 CPL P1.4;P1.4取反

CPL P1.5;P1.5取反 CPL P1.6;P1.6取反 CPL P1.7;P1.7取反 SJMP Main END 四、实验要求 熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。 五、实验预习要求 认真阅读Keil C51软件的使用说明。 六、实验思考题 试写一条把片内RAM50H~59H单元清零的程序。 实现程序如下: ORG0000h LJMP Main ORG0100H Main:MOV R0,#50H;立即数50H(内部RAM地址)传送到R0中 MOV R1,#10;立即数10(循环次数为10次)传送到R1中 MOV A,#0;立即数0传送到A,中将累加器A的值清0 LOOP:MOV@R0,A;将R0内容所指向的单元清0 INC R0;R0内容加1,修改地址指针 DJNZ R1,LOOP;减1不为0判断,若为真跳回循环,否,则运行下一语句 END;结束 七、实验总结 通过实验,熟悉80C51指令系统,熟悉Keil C51集成开发环境的使用方法,熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。加深对内部存储器读写的认识。

实验报告(单片机实验报告)

1 双字节无符号数加法 例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过16位。请编程。 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

单片机实训心得体会

单片机实训心得体会 篇一: 通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。 由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。 踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。 但在这次实训中同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。 这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过

程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。 篇二:单片机实验心得 通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础课理论知识运用到实践中去,我想做类似实习就为我们提供了良好的实践平台 学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。 (4)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。 (5)碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

单片机实验报告一

单片机实验报告 1 姓名 陈奋裕 时间 2014/10/30 地点 机电实验大楼B526 实验题目 软件开发环境和简单程序设计 一、实验目的 1. 熟悉WAVE 软件使用 2. 学习简单程序的调试方法 二、实验主要仪器及环境 PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。 三、实验内容及步骤 1.启动PC 机,打开WAVE 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。 2.打开CPU 窗口,选择单步或跟踪执行方式运行程序,观察CPU 窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及参考程序 实验1 1)参考程序 2)流程图 ORG 0000H START EQU 30H MOV R0, #START MOV R2, #10 mov a,#01h Loop: MOV @R0,A NOP LJMP $ END

五、实验及程序的分析和讨论 (1)第一个程序是将地址为30H到39H的寄存器的内容全部置1。先在R0中存放内部存储器的起始地址30H,R2中存放内部存储器的长度10个,累加器置1,然后利用循环控制指令DJNZ R2,Loop控制10次循环给上述10个单元赋值1.最后,使单片机自身跳转。 (2)实验得到全速执行后相应的测试结果: (3)实验得到30H到39H寄存器执行后的内容: 从该表中也可以看出该程序的功能,即将30H到39H的寄存器内容置1,说明自己的分析是对的。 六、实验小结 1、汇编语言的结果在软件里面全部都是黑色字体,无法编译,在老师的 提醒下,知道了WAVE软件只能执行ASM文件,所以实验前要先将文件 的类型改为.ASM。 2、程序中的逗号要在英文的状态下面编写;若提示有空余符号,则是分 号后面直接写注释,不要添加空格 七、思考题 1、软件开发环境提供了哪些调试手段?各有何特点? 答: 1.伟福仿真器为我们的调试提供了多种方法,它可以编译,以便查 找语法错误; 2.单步执行,来检查每句程序的功能; 3.全速执行程序,来检查整段程序要完成的功能; 4.还可以设置断点进行调试,以便分段执行程序。 2、如何将存储器块的内容移动到另一位置? 答:借助指针和寄存器,利用转移类指令即可将存储器块的内容移动到 另一位置。

工作报告之大学单片机实验报告

大学单片机实验报告 【篇一:单片机实验报告】 单片机实验报告 姓名:班级:学号:任课教师:上课地点: 实验一流水灯实验 一、实验目的及要求 1、闪烁的led; 2、从左到右的流水灯; 3、8只led左右来回点亮; 4、led模拟交通灯。 要求1:led按设定的时间间隔闪烁 要求2:接在p0口的8个led从左到右循环依次点亮,产生走马灯效果要求3:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果; 二、实验原理电路图1、 电路图2、 三、源程序 要求1: #includereg51.h #define uchar unsigned char #define uint unsigned int sbit led=p1^0; //延时 void delayms(uint x) { uchar i; while(x--) {for(i=0;i120;i++); } } //主程序 void main() { while(1) {led=~led;delayms(150); } } 要求2: #include reg51.h #include intrins.h //包含程序中的_cror_(p0,y) #define uchar unsigned char #define uint unsigned int uchar led; void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j-- )for(k=125;k0;k--); } void main() { led=0x7f;//只亮第一个 delay(1000); while(1) { p0=led; delay(500); led=_cror_(led,1);//p0逐步右移一位。} } 要求3: #include reg51.h

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.doczj.com/doc/6310964472.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.doczj.com/doc/6310964472.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

单片机原理及应用实验报告

单片机原理实验报告 专业:计算机科学与技术 学号: :

实验1 计数显示器 【实验目的】 熟悉Proteus仿真软件,掌握单片机原理图的绘图方法 【实验容】 (1)熟悉Proteus仿真软件,了解软件的结构组成与功能 (2)学习ISIS模块的使用方法,学会设置图纸、选元件、画导线、修改属性等基本操作 (3)学会可执行文件加载及程序仿真运行方法 (4)理解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制【实验步骤】 (1)观察Proteus软件的菜单、工具栏、对话框等基本结构 (2)在Proteus中绘制电路原理图,按照表A.1将元件添加到编辑环境中(3)在Proteus中加载程序,观察仿真结果,检测电路图绘制的正确性 表A.1

Switches&Relays BUT BUTTON 【实验原理图】 【实验源程序】 #include sbit P3_7=P3^7; unsigned char x1=0;x2=0 ; unsigned char count=0; unsigned char idata buf[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(int time) { int k,j;

for(;time<0;time--) for(k=200;k>0;k--) for(j=500;j<0;j--); } void init() { P0=buf[x1]; delay(10); P2=buf[x2]; delay(10); } void main() { init(); while(1) { x1=count/10; x2=count%10; P0=buf[x1]; delay(10);

哈尔滨工业大学单片机实验报告

H a r b i n I n s t i t u t e o f T e c h n o l o g y 单片机原理与应用 实验报告 学生姓名: 学号: 班级: 通信工程 专业: 任课教师: 所在单位: 电子与信息工程学院 月5年2013. 软件实验 在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。 实验一清零程序 一、实验目的 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容 把2000~20FFh的内容清零。 三、程序框图

四、实验过程 1、LED环境 ⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。 ⑵在“P.”状态下键入0640,然后按“STEP”或“EXEC”进入实验项目的调试与运行。. 2、PC环境 在与PC联机状态下,编译、连接、下载PH51\se01.asm,用连续或单步方式运行程序。 3、运行结果检查 ⑴在单步运行时,每走一步可观察其运行结果。 ⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~20FFH 中执行程序前后的内容变化。 五、实验结果及分析 实验前截图: 实验后截图:

: 实验源程序ORG 0640H SE01: MOV R0,#00H DPTR MOV DPTR,#2000H ;(2000H送(DPTR 送LOO1: MOVX @DPTR,A ;0INC DPTR ;DPTR+1 1 INC R0 ;字节数加个字节再清FF不到CJNE R0,#00H,LOO1 ; SJMP $ END 实验问题:2000H~20FFh中的内容是什么? 解答:实验运行之前,2000H~20FFh中的内容是随机分配的;在执行完清零程序之后, 2000H~20FFh中的内容都变为0. 实验二拆字程序 一、实验目的 掌握汇编语言设计和调试方法。 二、实验内容 把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。 三、程序流程

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

51单片机实验报告

实验一数据传送实验 实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV @R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 思考题: 1. 按照实验内容补全程序。 2. CPU 对8031内部RAM存储器有哪些寻址方式? 直接寻址,立即寻址,寄存器寻址,寄存器间接寻址。 3. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH ___0A0H~0AFH______________________ 内部RAM 50H~5FH___0A0H~0AFH_______________________ 实验二多字节十进制加法实验

实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。源程序清单:ORG 0000H RESET: AJMP MAIN ORG 0100H MAIN: MOV SP, #60H MOV R0, #31H MOV @R0, #22H DEC R0 MOV @R0, #33H MOV R1, #21H MOV @R1, #44H DEC R1 MOV @R1, #55H MOV R2, #02H ACALL DACN HERE: AJMP HERE DACN: CLR C DAL: MOV A, @R0 ADDC A, @R1 DA A MOV @R1, A INC R0 INC R1 DJNZ R2,DAL CLR A MOV ACC.0 , C RET 思考题: 1. 按照实验内容补全程序。 2. 加数单元、被加数单元和结果单元的地址和内容为? 3130H,2120H,6688H 3. 如何检查双字节相加的最高位溢出? 看psw.3 的溢出标志位ov=1 则溢出 4. 改变加数和被加数,测试程序的执行结果。 实验三数据排序实验

单片机实验报告

本科生实验报告 实验课程单片机原理及应用 学院名称核技术与自动化工程学院 专业名称电气工程及其自动化 学生姓名 学生学号 指导教师任家富 实验地点6C902 实验成绩 二〇一五年三月二〇一五年六月 单片机最小系统设计及应用 摘要 目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用,本次设计课程采用STC89C52单片机和ADC0804,LED显示,键盘,RS232等设计一个单片机开发板系统。进行了LED显示程序设计,键盘程序设计,RS232通信程序设计等。实现了单片机的各个程序的各个功能。对仿真软件keil的应用提升了一个新的高度。单片机体积小、成本低、使用方便,所以被广

泛地应用于仪器仪表、现场数据的采集和控制。通过本实验的学习,可以让学生掌握单片机原理、接口技术及自动控制技术,并能设计一些小型的、综合性的控制系统,以达到真正对单片机应用的理解。 关键词:单片机;智能;最小系统;ADC;RS232;显示;STC89C52 第1章概述 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 第2章实验内容 2.1单片机集成开发环境应用

单片机实验报告含仿真

单片机原理及应用课程 实验报告 专业: 班级: 姓名: 学号:

实验一、keilC51及proteus软件的使用 一、实验目的: 1、掌握keil和proteus软件的基本操作 2、通过具体实例掌握keil和proteus软件的使用。 二、实验原理: keil使用步骤,proteus使用步骤 三、程序: 四、实验结果分析: 五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus软 件进行仿真的步骤。

实验二、并行输入/输出接口实验 一、实验目的: 1、进一步熟悉keil仿真软件、proteus仿真软件的使用。 2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。 3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式0 扩展并行i/0 接口:利用方式1 实现点对点的双机通信;利用方式2 或方式3 实现多机通信。利用方式0 扩展并行i/0 接口MCS 5 1 单片机的串行口在方式0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。 三、程序: #include sbit P1_0=P1^0; void main() { unsigned char i; unsigned int j;

i=0x01; for(;;) { P1_0=0; SBUF=I; while(!TI) {i} P1_0=1;TI=0; for(j=0;j<=254;j++){;} i=i*2; if(i==0x00) i=0x01; } } 四、实验结果分析: 五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

单片机实验报告

实 验 报 告 实验课程:单片机原理及应用 班级: 12自动化2班 学号: 姓名: 教师:张玲 成绩: 实验日期:年月日 实验名称:实验1——计数显示器 一、实验目的: 学习Proteus 软件的使用,掌握单片机原理图的绘图方法。 二、实验内容: 1、绘制“计数显示器”电路原理图; 2、利用提供的hex文件验证此电路的运行效果。 三、实验要求: 提交的实验报告中应包括:1、绘图方法简述,要求说明元件与电源的选取、摆放及属性编辑,总线与标签的画法等内容;2、电路原理图; 3、仿真运行效果展示,要求就仿真文件加载方法及3~4幅运行截图进行简要说明;4、实验小结,说明遇到的主要问题或实验

1体会等。 参考电路原理图如下: 元件类别电路符号元件名称 Microproces sor ICs “U1”80C51 Miscellaneo us “X1”/12MHz CRYSTAL Capacitors“C1”~“C2” /1nF CAP Capacitors“C3”/22μF CAP-ELEC Resistors Packs “RP1”/7-100ΩRESPACK-7 Resistors“R1”/100ΩRES Optoelectro nics “LED1”~ “LED2” 7SEG-COM-CAT-G RN Switches & Relays “BUT”BUTTON 1、编程思路及C51源程序:

2、电路原理图: 3、仿真运行效果展示:

4、实验小结: 熟悉Proteus软件,了解软件的结构组成与功能;学习ISIS模块的使用方法, 学会设置图纸、选元件、线画总线、修改属性等基本操作;学会可执行文件 加载及程序仿法;理解Proteus在单片机开发中的作用,完成单片机电路原 理图的绘制。

单片机实验报告

哈尔滨师范大学计算机科学与信息工程学院 实验报告手册 课程名称:嵌入式系统原理与应用指导教师:王洪侠 专业:计算机科学与技术20 18 年—20 19 年第 1 学期姓名:吴晗学号:2016040860 年级:2016级班级: 2 班

实验报告内容 实验题目:P1口输出实验 实验目的:通过实验了解P1口做为输入输出方式使用时,CPU对P1口的操作方式 实验要求:控制8个LED灯,完成从左到右然后从右到左再从左到右依次的循序流水实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 1.单片机由P2口控制流水灯 2.根据题目要求实现每点亮一盏灯就熄灭前一盏 3.套用循环实现从左到右的动态流水式亮灯 4.完成从左到右再从右到左再从左刀右流水亮灯 程序源代码: #include "reg52.h" #include typedef unsigned int u16; typedef unsigned char u8; #define led P2 void delay(u16 i) { while(i--); } void main() { u8 i; led=0xfe; delay(50000); // while(1) { /* for(i=0;i<8;i++) { P2=~(0x01<

相关主题
文本预览
相关文档 最新文档