单片机原理及应用
- 格式:docx
- 大小:1.99 MB
- 文档页数:17
单片机的工作原理与应用单片机(Microcontroller)是一种集成了微处理器核心、存储器、输入输出接口和时钟等基本功能的微型计算机系统。
它由微处理器、存储器、输入输出(I/O)端口、计时/计数器等部件组成。
单片机广泛用于电子产品中,如家电、车载设备、工业自动化、医疗设备等领域。
本文将详细介绍单片机的工作原理以及应用领域。
一、单片机的工作原理1.1 微处理器核心单片机的微处理器核心通常采用ARM、MCS-51等架构。
微处理器核心是单片机最重要的部分,负责解析和执行程序指令。
它包含算术逻辑单元(ALU)、寄存器以及总线接口等重要模块,能够对数据进行运算和逻辑操作。
1.2 存储器单片机内部集成了不同类型的存储器,包括程序存储器(ROM或Flash)和数据存储器(RAM)。
程序存储器用于存放程序指令,数据存储器用于存放程序执行过程中的临时数据。
存储器的容量决定了单片机能够存储的程序和数据量的大小。
1.3 输入输出接口单片机通过输入输出接口实现与外部设备的数据交互。
输入接口用于接收外部设备的信号输入,而输出接口用于向外部设备输出数据。
常见的输入输出接口包括GPIO(通用输入输出口)、串口、模拟/数字转换器(ADC/DAC)等。
1.4 时钟单片机需要一个准确的时钟信号来同步其工作。
时钟信号可以是外部引脚接入的晶振,也可以是内部产生的振荡电路。
时钟信号的频率决定了单片机的工作速度,一般以MHz为单位。
二、单片机的应用领域2.1 家电单片机在家电领域有着广泛的应用。
例如空调、洗衣机、电视等家电产品经常使用单片机作为控制器,实现功能的调控和智能化操作。
2.2 车载设备单片机在车载设备中发挥着重要作用。
汽车电子控制单元(ECU)就是由单片机实现的,它可以监测和控制车辆的各种系统,如发动机控制、制动系统等,提高了车辆的性能和安全性。
2.3 工业自动化工业自动化是单片机的另一大应用领域。
单片机通过与传感器、执行器等设备的配合,实现工业生产中的自动控制、数据采集和处理等功能。
电路中的单片机工作原理及应用单片机(Microcontroller),又称微控制器,是一种集成电路芯片,集成了中央处理器(CPU)、存储器(RAM、ROM)、输入输出端口(I/O)、定时器计数器(Timer/Counter)等功能模块,能够完成数字信号的输入、输出、处理和控制等任务。
在电路设计与嵌入式系统开发中,单片机广泛应用于各种控制系统、自动化设备以及智能家居等领域。
本文将详细介绍单片机的工作原理及其应用。
一、单片机的工作原理单片机的工作原理主要涉及到CPU、存储器、输入输出端口以及时钟系统等关键部件。
1. CPU单片机的核心部件是中央处理器(CPU),它负责执行程序指令、进行数据处理和控制操作。
CPU包括运算器、控制器和寄存器等功能单元。
运算器用于进行数据运算和逻辑运算,控制器用于解析和执行指令,寄存器则用于存储数据、地址和状态等信息。
2. 存储器单片机中的存储器主要包括随机存取存储器(RAM)和只读存储器(ROM)。
RAM用于存储程序指令和数据,可以读写操作;ROM则存储了单片机的固定程序,无法进行写操作。
存储器的容量决定了单片机可以处理的数据量和程序规模。
3. 输入输出端口单片机的输入输出端口(I/O)用于与外部设备进行数据交换和通信。
通过输入端口,单片机可以接收外部传感器的信号;通过输出端口,单片机可以控制外部执行器的动作。
输入输出端口的种类和数量取决于具体的单片机型号和应用需求。
4. 时钟系统时钟系统是单片机的基准,提供时序信号用于同步各个部件的工作。
单片机的时钟可以通过外部晶振或者内部振荡电路来提供,时钟频率决定了单片机的运行速度。
二、单片机的应用单片机广泛应用于各个领域,下面介绍几个常见的应用场景。
1. 控制系统单片机作为嵌入式控制器,可以用于各种控制系统,如温湿度控制、光照控制、电机控制等。
通过读取传感器信号、进行数据处理和输出控制信号,单片机能够实现系统的自动化和智能化。
2. 自动化设备在工业自动化领域,单片机也扮演着重要角色。
单片机技术的原理及应用单片机(Microcontroller)是一种带有计算机功能的芯片,通常包含有处理器、内存、输入输出端口、定时器、计数器等功能模块。
它集成了多种外围设备功能于一个芯片中,因此被广泛应用于自动化控制、仪器仪表、家电电子、医疗设备、安全监控、智能交通等领域。
那么,单片机技术的原理是什么?它有哪些应用场景呢?一、单片机技术的原理单片机主要由中央处理器、存储器和外设接口三部分组成。
中央处理器是单片机的核心组成部分,其作用是执行程序、获取和处理数据,控制系统的运行。
存储器是单片机的数据储存部分,主要分为程序存储器(ROM)和数据存储器(RAM)两种类型。
其中ROM是只读存储器,用于存储单片机的程序代码和指令;而RAM是随机存储器,用于存储程序的中间结果、数据、程序计数器等。
外设接口包括输入输出接口、定时计数器、中断控制器等,用于与外部设备进行通信和数据交换。
单片机技术的实现过程主要包括指令执行周期和中断等操作。
指令执行周期是指单片机在每个指令周期内的操作,其基本过程包括取指、译码、执行和存储四个步骤。
中断操作是指当单片机执行某些任务时,遇到紧急情况需要停止当前操作,同时执行其他任务的操作过程。
二、单片机技术的应用单片机技术广泛应用于各个领域,以下列举几个具体的应用场景:1、智能家居控制:通过单片机技术可实现家电设备自动化控制,如智能门锁、智能灯光等。
通过单片机芯片集成了输入输出端口、计时器、PWM控制等功能,可实现对家电设备的远程控制和定时开关。
2、医疗设备:单片机技术在医疗设备上应用较为广泛,如心电图、血糖仪、血氧仪等。
通过单片机芯片集成的高精度ADC、LCD显示器、脉冲宽度调制器等模块,可实现对生命体征的监测和数据处理。
3、智能交通:当今城市交通越来越拥堵,为了保障交通安全和优化交通流量,智能交通系统应运而生。
单片机技术被应用于交通信号灯、车辆卡口等设备中,可实现自动控制、数据采集等功能。
单片机的基本原理及应用单片机(Microcontroller)是一种集成电路,内部集成了处理器核心、存储器、输入/输出接口以及各种外设等功能模块,常用于嵌入式系统中。
它具有体积小、功耗低、成本较低、可编程性强等特点,被广泛应用于工业控制、家电、汽车电子、通信设备等领域。
本文将介绍单片机的基本原理及其在各个领域的应用。
一、单片机的基本原理单片机的基本原理是通过内部的处理器核心来执行指令,控制其他功能模块的工作。
其内部核心主要由运算器、控制器和时钟电路组成。
1. 运算器(ALU)运算器是单片机的核心部件,负责执行各种算术和逻辑运算。
它通常由逻辑门电路构成,能够进行加减乘除、与或非等运算。
2. 控制器控制器是单片机的指令执行单元,负责控制各个部件的工作。
它根据程序存储器中的指令,逐条执行并控制其他模块的工作。
3. 存储器存储器用于存储程序指令和数据。
单片机通常包含闪存(Flash)和随机存储器(RAM)。
闪存用于存储程序,RAM用于存储运行时数据。
4. 时钟电路时钟电路提供单片机的时钟信号,控制指令和数据的传输和处理速度。
它通常由晶体振荡器和分频器组成。
二、单片机的应用领域1. 工业控制单片机在工业控制领域应用广泛。
它可以控制工业生产中的各种设备,如温度控制、压力控制、自动化装置等。
通过编程,单片机能实现精确控制和监测,提高生产效率和产品质量。
2. 家电在家用电器中,单片机也有着广泛的应用。
例如,微波炉、洗衣机、空调等均采用单片机来实现控制功能。
通过编写程序,单片机可以根据用户的需求自动调节设备的工作状态,实现智能化控制。
3. 汽车电子单片机在汽车电子领域扮演着重要角色。
它被用于发动机控制、车载娱乐、安全系统等各个方面。
通过单片机的实时控制,汽车性能得到提升,驾驶安全得到保障。
4. 通信设备单片机广泛应用于通信设备中,如手机、调制解调器等。
它可以实现信号处理、数据存储和传输等功能,提升通信设备的性能和稳定性。
单片机的原理及应用单片机(Microcontroller Unit,简称MCU)是一种集成电路,具有处理器核心、存储器和各种外设接口,被广泛应用于各个领域。
本文将介绍单片机的原理以及一些常见的应用。
一、单片机的原理单片机作为一种嵌入式系统,其原理是通过将处理器、存储器和外设集成在一个芯片上,形成一个完整的计算机系统。
这种集成能力使得单片机具备了较高的性能和灵活性。
具体来说,单片机的原理包括以下几个方面:1. 处理器核心:单片机内部搭载了一个或多个处理器核心,常见的有8位、16位和32位处理器核心。
处理器核心负责执行指令集中的指令,对输入信号进行处理并控制外设的工作。
2. 存储器:单片机内部包含了程序存储器(ROM)和数据存储器(RAM)。
ROM用于存储程序代码,RAM用于存储数据。
这些存储器的容量和类型不同,可以根据实际需求进行选择。
3. 外设接口:单片机通过外设接口与外部设备进行通信。
常见的外设接口包括通用输入输出(GPIO)、串行通信接口(UART、SPI、I2C)、模拟数字转换器(ADC)等。
外设接口使单片机能够与其他硬件设备进行数据交互。
4. 时钟系统:单片机需要一个稳定的时钟信号来同步处理器和各个外设的工作。
时钟系统通常由晶振和计时电路组成,产生稳定的时钟信号供单片机使用。
二、单片机的应用单片机作为一种高性能、低成本、小体积的集成电路,广泛应用于各个领域。
以下是一些单片机的常见应用:1. 家电控制:单片机可以作为家电控制系统的核心,通过与传感器、执行器等外部设备的连接,实现对家电的智能控制。
例如,通过使用单片机可以实现空调、电视、洗衣机等家电的远程控制和定时控制等功能。
2. 工业自动化:单片机在工业自动化中发挥着重要的作用。
它可以用于控制和监控工业设备,实现自动化生产。
例如,生产线上的温度、压力、速度等参数可以通过单片机进行实时采集和控制。
3. 智能交通:交通系统中的信号灯、执法摄像头等设备可以利用单片机进行控制和管理。
单片机的工作原理和应用一、单片机的定义单片机(Microcontroller Unit,简称MCU)是一种集成了中央处理器、存储器、输入输出接口和定时器等功能模块于一芯片上的微型计算机系统。
二、单片机的工作原理单片机的工作原理可以简单分为以下几个方面:1. 中央处理器(CPU)单片机的CPU是整个系统的核心,它负责执行程序代码、进行算术逻辑运算和控制调度等操作。
CPU由控制单元和算术逻辑单元组成,控制单元用于控制整个系统的操作,算术逻辑单元则用于进行运算操作。
2. 存储器单片机的存储器包括程序存储器(ROM)和数据存储器(RAM)。
程序存储器用于存放程序代码,数据存储器用于存放程序运行过程中所需的数据。
程序存储器一般是只读的,数据存储器可以读写。
3. 输入输出接口单片机的输入输出接口用于与外部设备进行数据交互。
输入接口用于接收来自外部设备的输入信号,输出接口用于向外部设备输出信号。
通过输入输出接口,单片机可以与各种外部设备进行通信,实现对外界环境的感知和控制。
4. 定时器定时器是单片机中的一个重要模块,它用于产生一定时间间隔的定时信号。
通过配置定时器的工作模式和计数值,可以实现各种定时功能,如延时、定时中断等。
三、单片机的应用单片机作为一种微型计算机系统,广泛应用于各个领域。
以下是单片机常见的应用场景:1. 嵌入式系统单片机作为嵌入式系统的核心,广泛应用于家电、汽车、通信、工控等领域。
通过单片机的处理能力和输入输出接口,可以实现对嵌入式系统的控制和管理。
2. 自动化设备单片机在自动化设备中的应用非常广泛,如机器人、自动售货机、自动加工设备等。
通过单片机的计算和控制能力,可以实现对自动化设备的智能控制和运行。
3. 智能家居单片机在智能家居领域的应用也越来越广泛。
通过单片机的输入输出接口和通信功能,可以实现对家居设备的智能控制和管理,如智能灯光控制、智能门锁等。
4. 电子产品单片机在电子产品中的应用也非常常见,如电视机、手机、音响等。
单片机的工作原理及应用探析概述单片机(Microcontroller Unit,简称MCU)是一种集成了微型计算机的所有功能于一片硅芯片上的嵌入式系统。
它具有CPU、内存、输入/输出端口及各种外设等功能模块组成。
本文将对单片机的工作原理和应用进行探析,从硬件和软件层面深入了解单片机的工作机制及其在各个领域的应用。
一、单片机的工作原理1. CPU(Central Processing Unit,中央处理器):单片机的核心部分,负责指令的执行、数据的操作和控制任务的完成。
它包括运算部分(ALU)、控制部分(CU)和寄存器等组成。
通过解析存储在程序存储器中的指令,CPU可以进行算术运算、逻辑运算、条件判断、数据传输等操作。
2. 存储器:单片机的存储器主要包括程序存储器(Program Memory)和数据存储器(Data Memory)。
程序存储器用于存储程序的指令,常用的有只读存储器(ROM)和闪存(Flash Memory);数据存储器用于存储程序所需要的数据,常用的有随机存储器(RAM)和非易失性存储器(EEPROM)。
程序存储器和数据存储器的可读写性与存储容量等特点不同。
3. 输入/输出端口:单片机可以通过外部输入/输出端口与外界进行数据的收发和通信。
输入端口接收外部信号,例如传感器信号、按键输入等;输出端口则将处理后的数据发送给外部设备,如显示器、打印机等。
通过输入/输出端口的设置和控制,单片机能够实现对外部环境的感知和控制。
4. 外设接口:单片机可以通过外设接口与各种外部设备进行通信和控制。
常见的外设包括显示器、键盘、麦克风、喇叭、传感器等。
通过外设接口,单片机可以实现与外界设备的数据交互和控制操作。
5. 时钟电路:单片机依赖时钟信号来控制各个模块的运行。
时钟电路产生稳定的时钟信号,通过与CPU和其他模块的协同工作,确保单片机的正常运行。
时钟信号的频率越高,单片机的运算速度越快。
二、单片机的应用探析单片机作为一种小型、低功耗、集成度高的嵌入式系统,在各个领域有着广泛的应用。
单片机的原理和应用一、引言单片机(Microcontroller)是一种集成了中央处理器(CPU)、存储器(ROM、RAM)和各种输入输出接口的微型计算机系统芯片。
它具有体积小、功耗低、性能强大等特点,在各种电子设备中得到广泛应用。
本文将介绍单片机的原理和应用,并提供相应的PDF格式文档供读者参考。
二、单片机原理单片机是基于微处理器的一种计算机系统,具有以下主要组成部分: - 中央处理器(CPU):负责执行指令和数据处理的核心部分。
- 存储器:包括只读存储器(ROM)和随机存储器(RAM)。
- 输入输出接口:用于与外部设备进行数据交互。
- 定时器:提供精确的计时和延时功能,用于控制各种时间相关的操作。
- 中断系统:允许外部设备中断CPU的正常执行,以处理紧急事件。
三、单片机应用单片机在各种电子设备中广泛应用,下面列举了一些常见的应用领域和示例:1. 智能家居•温度和湿度监控系统•照明控制系统•安全警报系统2. 工业自动化•机器人控制系统•传感器数据采集和处理•生产线自动控制3. 汽车电子•发动机管理系统•车载娱乐系统•防盗和安全系统4. 医疗设备•医疗监测设备•心电图仪•持续血糖监测仪5. 通信设备•手机终端控制器•无线射频模块•蓝牙通信模块6. 智能穿戴设备•智能手表•健身追踪器•智能眼镜四、单片机学习资料推荐学习单片机需要详细的资料和教程,以下是一些值得推荐的资源(附带PDF格式文档):•《单片机原理与应用教程》:介绍单片机的基本知识和实践应用的教程,适合初学者。
•《51单片机原理与应用》:深入讲解51单片机原理和典型应用案例,适合有一定单片机基础的学习者。
•《ARM Cortex-M微控制器原理与应用》:介绍ARM Cortex-M系列单片机的原理和应用,适合进阶学习者。
五、总结单片机作为微型计算机系统芯片,具有广泛的应用领域和强大的功能。
通过学习单片机的原理和应用,可以掌握电子设备控制的基本知识,并能够实践开发各种电子产品。
单片机原理及应用课程设计报告书题目: DS18B20数字温度计目录1.引言 (1)1.1.设计意义 (1)1.2.系统功能要求 (2)2.方案设计 (2)3.硬件设计 (2)4.软件设计 (5)5.系统调试 (7)6.设计总结 (8)7.附录 (9)8.作品展示 (15)9.参考文献 (17)DS18B20数字温度计设计1.引言1.1.设计意义在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。
而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。
其缺点如下:●硬件电路复杂;●软件调试复杂;●制作成本高。
本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55~125℃,最高分辨率可达0.0625℃。
DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的热点。
1.2.系统功能要求设计出的DS18B20数字温度计测温范围在-55~125℃,误差在±0.5℃以内,采用LED数码管直接读显示。
2.方案设计按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。
数字温度计总体电路结构框图如4.1图所示:图4.13. 硬件设计温度计电路设计原理图如下图所示,控制器使用单片机AT89C2051,温度传感器使用DS18B20,使用四位共阳LED数码管以动态扫描法实现温度显示。
主控制器单片机AT89C2051具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适合便携手持式产品的设计使用。
系统可用两节电池供电。
AT89C2051的引脚图如右图所示:1、VCC:电源电压。
2、GND:地。
3、P1口:P1口是一个8位双向I/O口。
口引脚P1.2~P1.7提供内部上拉电阻,P1.0和P1.1要求外部上拉电阻。
P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(ANI0)和反相输入(AIN1)。
P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。
当P1口引脚写入“1”时,其可用作输入端,当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。
当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流。
4、P3口:P3口的P3.0~P3.5、P3.7是带有内部上拉电阻的七个双向I/O 口引脚。
P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。
P3口缓冲器可吸收20mA电流。
当P3口写入“1”时,它们被内部上拉电阻拉高并可用作输入端。
用作输入时,被外部拉低的P3口脚将用上拉电阻而流出电流。
5、RST:复位输入。
RST一旦变成高电平所有的I/O引脚就复位到“1”。
当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。
每一个机器周期需12个振荡器或时钟周期。
6、XTAL1:作为振荡器反相器的输入和内部时钟发生器的输入。
7、XTAL2:作为振荡器反相放大器的输出。
总线驱动器 74LS24474LS244为3态8位缓冲器,一般用作总线驱动器。
引脚图见上图。
显示电路显示电路采用4位共阳极LED数码管,从P1口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用8055三极管。
温度传感器 DS18B20DS18B20的性能特点:1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。
2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
6、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
DS18B20与单片机的接口电路(引脚图见右图)DS18B20可以采用电源供电方式,此时DS18B20的第1 脚接地,第2脚作为信号线,第3脚接电源。
4. 软件设计系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。
4.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。
温度测量每1s进行一次。
主程序流程图如图4.1所示。
4.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。
在读出时必须进行CRC校验,校验有错时不能进行温度数据的改写。
读出温度子程序流程图如下图所示:读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。
在读出时须进行CRC校验,校验有错时不进行温度数据的改写。
得出温度子程序流程图如下图所示。
温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。
当采用12位分辨率时,转换时间约为750ms。
在本程序设计中,采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如下图所示。
计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
计算温度子程序流程图如下左图所示.现实数据刷新子程序现实数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
现实数据刷新子程序流程图如下右图所示.5.系统调试系统的调试以程序调试为主。
硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。
软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。
本程序采用单片机汇编或C语言编写用Wave3.2或Keil C51编译器编程调试。
软件调试到能显示温度值,并且在有温度变化时显示温度能改变,救基本完成。
性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。
由于DS18B20的精度很高,所以误差指标可以限制在0.5℃以内。
另外,-55~+125℃的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。
DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应用开发,但在实际设计中应注意以下问题;1、DS18B20工作时电流高大1.5mA,总线上挂接点数较多且同时进行转换时要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFET供电。
2、连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。
3、在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号。
一旦某个DS18B20接触不好或断线,当程序读DS18B20时,将没有返回信号,程序进入死循环。
这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。
6.设计总结历时2个星期的单片机课程设计已经结束了,在这两个星期的时间里,我们在老师的指导下完成了基于DS18B20的数字温度计的设计和制作。
在进行实验的过程中,我们了解并熟悉DS18B20、AT89C2051以及74LS244的工作原理和性能。
并且通过温度计的制作,我们将电子技能实训课堂上学到的知识进行运用,并在实际操作中发现问题,解决问题,更加增加对知识的认识和理解。
在课程设计的过程中,也遇到了一些问题。
比如最开始根据课本上的电路图进行合理的设计布局和布线。
有些同学的布局不合理,导致焊接的过程中任务相当繁重,并且不美观。
在之后的烧程序调试的时候,出现问题之后,没有合理布线的同学在查找问题的过程中相当棘手。
在焊接过程中,出现最多的就是虚焊问题。
对于这个问题,在焊接的过程中,我尽量依照书中的指导,尽量将焊点焊成水滴状,最后接电后再根据数码管的显示情况进行逐个排查。
在将程序烧到单片机之后,接上电源,发现数码管没有出现正常的“000.0”,而是出现了“666.6”,在检查线路无误之后,和其他的同学讨论之后得出结论:书中程序是对于单片机、电阻及数码管是直接连接而设计的,而在加入了74LS244之后,要将8个输入输出端口进行掉序。
于是,我便将8个端口进行调换,之后再次接通电源,数码管显示“000.0”,调试成功。
在自己的温度计制作完成之后,我还帮助其他没有完成的同学进行检修,并且成功帮助2位同学找到问题进行解决,最后都调试成功。
总之,在这2个星期中,通过自己在实验室动手制作数字温度计,不仅将课本的知识与实践相结合,而且在实践中更加深入了解书中原本抽象的知识。
这也是整个课程设计中最有收获的地方。
7.附录源程序代码/**************************************************************** *****///// DS18B20温度计C程序// 2005.2.28通过调试/**************************************************************** *****///使用AT89C2051单片机,12MHZ晶振,用共阳LED数码管//P1口输出段码,P3口扫描//#pragma src(d:\aa.asm)#include "reg51.h"#include "intrins.h" //_nop_();延时函数用#define Disdata P1 //段码输出口#define discan P3 //扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P3^7; //温度输入口sbit DIN=P1^0; //LED小数点控制uint h;//////*******温度小数部分用查表法**********//Uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x0 7,0x08,0x08,0x09,0x09}uchar code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xb f};/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; // 列扫描控制字uchar data temp_data[2]={0x00,0x00}; // 读出温度暂放uchar data display[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据,一个运算暂存用///////***********11微秒延时函数**********///void delay(uint t){for(;t>0;t--);}///***********显示扫描函数**********/scan(){char k;for(k=0;k<4;k++) //四位LED扫描控制 {Disdata=dis_7[display[k]];if(k==1){DIN=0;}discan=scan_con[k];delay(90);discan=0xff; }}/////***********18B20复位函数**********/ow_reset(void){char presence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();DQ=0; //delay(50); // 550usDQ=1; //delay(6); // 66uspresence=DQ; // presence=0继续下一步}delay(45); //延时500uspresence = ~DQ;}DQ=1;}/////**********18B20写命令函数*********///向 1-WIRE 总线上写一个字节void write_byte(uchar val){uchar i;for (i=8; i>0; i--) //{DQ=1;_nop_();_nop_();DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us DQ = val&0x01; //最低位移出delay(6); //66usval=val/2; //右移一位}DQ = 1;delay(1);}///*********18B20读1个字节函数********///从总线上读取一个字节uchar read_byte(void){uchar i;uchar value = 0;for (i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ = 0; //_nop_();_nop_();_nop_();_nop_(); //4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); //4us if(DQ)value|=0x80;delay(6); //66us}DQ=1;return(value);}///***********读出温度函数**********///read_temp(){ow_reset(); //总线复位write_byte(0xCC); // 发Skip ROM命令write_byte(0xBE); // 发读命令temp_data[0]=read_byte(); //温度低8位temp_data[1]=read_byte(); //温度高8位ow_reset();write_byte(0xCC); // Skip ROMwrite_byte(0x44); // 发转换命令}///***********温度数据处理函数**********/work_temp(){uchar n=0; //if(temp_data[1]>127){temp_data[1]=(256-temp_data[1]);temp_data[0]=(256-temp_data[0]);n=1; }//负温度求补码display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);// display[3]=display[4]/100;display[1]=display[4]%100;display[2]=display[1]/10;display[1]=display[1]%10;if(!display[3]){display[3]=0x0A;if(!display[2]){display[2]=0x0A;} }//最高位为0时都不显示if(n){display[3]=0x0B;}//负温度时最高位显示"-"}/////**************主函数****************/main(){Disdata=0xff; //初始化端口discan=0xff;for(h=0;h<4;h++){display[h]=8;}//开机显示8888ow_reset(); // 开机先转换一次write_byte(0xCC); // Skip ROMwrite_byte(0x44); // 发转换命令for(h=0;h<500;h++){scan();} //开机显示"8888"2秒while(1){read_temp(); //读出18B20温度数据work_temp(); //处理温度数据for(h=0;h<500;h++){scan();} //显示温度值2秒}}////*********************结束**************************//作品展示。