基于51单片机课程设计报告

合集下载

51单片机课程设计报告

51单片机课程设计报告

51单片机课程设计报告.成绩:单片机原理及应用课程设计课程名<单片机原理及应用> </单片机原理及应用>学部机械与电子信息工程学部专业移动通信技术学号姓名指导教师日期 .一、设计任务与要求1. 任务:制作并调试51单片机学习板2. 要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会看电路原理图;(3)制作51单片机学习板;(4)学会使用Keil C软件下载调试程序;用调试程序将51单片机学习板调试成功。

二、实验内容(5)(6)(7)(8)(9)*****芯片工作电路,利用晶振提供控制信号。

10引脚下载口与*****芯片相关引脚相连完成下载电路。

8个10K电阻与*****芯片P0口相连,利用上拉电阻组成上拉电路。

使用开关与5.1K电阻连成外部中断0、1电路和复位电路。

利用16个开关做成键盘,实现输入号对已编程的*****芯片的控制并通过数码管显示0--F。

(10)用2片74HC573N具有锁存功能芯片与8个数码管相连,通过编程的*****位选和段选实现输出信号的显示功能。

(11)使用74HC573N锁存功能结合*****AG芯片8非门芯片和74HC04N6非门芯片与4个2N5551三极管实现对步进电机的控制,和控制步进电机的信号结合LED输出显示的功能。

(12)6、利用1片74HC573N芯片与8个共阴极LED实现跑马灯功能。

三、总原理图1.总原理图.四、硬件调试1、是否短路用万用表检查P2两端是短路。

电阻为0,则短路,电阻为一适值,电路正常。

2、焊接顺序焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。

3、器件功能1)检查原理图连接是否正确2)检查原理图与PCB图是否一致3)检查原理图与器件的*****ET上引脚是否一致4)用万用表检查是否有虚焊,引脚短路现象5)查询器件的*****ET,分析一下时序是否一致,同时分析一下命令字是否正确6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的7)飞线。

基于51单片机的温度报警控制系统报告

基于51单片机的温度报警控制系统报告

报告评分批改老师《现代电子综合实验》课程设计报告基于单片机的温度检测控制系统设计学生姓名 学 号专 业 班 级同组学生 提交日期 年 月 日指导教师目录2一、实验目的 .....................................................................................2二、实验要求 .....................................................................................2三、实验开发环境及工具 ...........................................................................2四、按键扫描和液晶显示功能实现 ...................................................................24.1矩阵键盘电路 ...............................................................................4.1.1矩阵键盘电路简介 .....................................................................224.1.2矩阵式按键扫描原理 ...................................................................24.1.3 按键扫描子程序设计思想及流程图 ......................................................34.2 LCD1602显示电路 ..........................................................................34.2.1 LCD1602模块简介 ....................................................................34.2.2 LCD1602模块引脚说明 .................................................................4.2.3 LCD1602控制方式及指令 ..............................................................344.2.4 LCD1602液晶显示子程序设计思想及流程图 ..............................................5五、基于单片机的温度检测控制系统设计过程 .........................................................55.1 系统整体电路框图及功能说明 ................................................................55.2 DS18B20数字温度传感器电路 ..............................................................55.2.1 单总线通信方式简介 ..................................................................65.2.2 DS18B20简介 ......................................................................5.2.3 DS18B20读写操作 ..................................................................665.3 声光报警及控制电路 ........................................................................75.4 软件设计 ..................................................................................5.4.1 主程序设计流程图 ....................................................................775.4.2 DS18B20子程序设计思想及流程图 ...................................................85.4.3 声光报警子程序设计思想及流程图 .....................................................9七、 实验过程及实验结果 ...........................................................................9八、实验中遇到的问题及解决方法 ...................................................................10附件 ............................................................................................一、实验目的(1). 掌握单片机应用系统的设计方法与步骤;(2).掌握硬件电路各功能模块的工作原理、应用电路与编程方法;(3).熟练掌握单总线的应用及编程;(4). 掌握基于单片机的温度检测控制系统的设计与实现。

51单片机课程设计报告

51单片机课程设计报告

51单片机课程设计报告一、课程目标知识目标:1. 理解51单片机的硬件结构、工作原理及其功能特点;2. 学会使用51单片机的指令系统进行程序设计;3. 掌握51单片机与外围电路的接口技术,能实现简单的硬件控制功能;4. 了解51单片机在嵌入式系统中的应用及发展趋势。

技能目标:1. 能够运用C语言编写51单片机的程序,实现基础控制功能;2. 能够运用仿真软件对51单片机程序进行调试,分析并解决简单问题;3. 能够设计简单的51单片机硬件系统,进行电路连接和功能测试;4. 培养学生的动手能力、创新能力和团队协作能力。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情;2. 培养学生严谨、务实的科学态度,提高自主学习能力;3. 培养学生关注社会发展,了解科技在生活中的应用,增强社会责任感;4. 培养学生团队合作精神,尊重他人意见,善于沟通交流。

课程性质:本课程为实践性较强的电子技术课程,以51单片机为核心,结合硬件和软件,培养学生的实际操作能力和创新能力。

学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但实践经验不足。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力和解决问题的能力。

通过课程学习,使学生能够独立完成简单的51单片机控制系统设计。

二、教学内容根据课程目标,教学内容分为以下几个部分:1. 51单片机硬件结构及原理- 熟悉51单片机的内部结构、引脚功能;- 掌握51单片机的工作原理及性能特点。

2. 51单片机指令系统与编程- 学习51单片机的指令集,理解各指令的功能和使用方法;- 掌握C语言在51单片机编程中的应用。

3. 51单片机外围接口技术- 学习51单片机与常见外围电路(如LED、LCD、键盘等)的接口技术;- 掌握外围设备的控制原理及编程方法。

4. 仿真软件的使用- 学习使用Keil、Proteus等仿真软件进行51单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。

基于51单片机的课程设计

基于51单片机的课程设计
-通过51单片机实现简单的数字电压表,学习模拟信号处理技巧;
-探索51单片机在智能家居中的应用,如家居环境监测与控制;
-介绍并实践51单片机与蓝牙模块的连接,实现无线数据通信;
-分析并设计一个简易的抢答器系统,涉及按键扫描、状态机设计等;
-结合课堂所学,开展创新设计竞赛,鼓励学生自主设计并实现具有实际应用价值的单片机控制系统。
-开展综合实训,要求学生团队协作,完成一个综合性的单片机控制系统设计,如智能家居控制系统,提升学生的实际操作能力和项目实践能力。
-汇编语言程序设计
- C语言程序设计
3.《单片机原理与应用》第六章:51单片机的I/O接口及应用
- I/O口的控制方法
-基本输入/输出应用实例
4.《单片机原理与应用》第七章:51单片机的定时器/计数器与中断系统
-定时器/பைடு நூலகம்数器的工作原理及应用
-中断系统的原理及应用
5.《单片机原理与应用》第八章:51单片机的串行通信
-串行通信的原理
-串行通信接口的编程与应用
本章节将以上述内容为基础,结合实际案例,引导学生掌握51单片机的原理、编程及应用。
2、教学内容
本节课程设计将具体包括以下教学内容:
- 51单片机的最小系统构成及其功能分析;
-基本I/O口操作,实现LED灯的闪烁与控制;
-定时器/计数器的编程,实现精确延时及脉冲产生;
5、教学内容
-专题讨论:51单片机在工业控制中的应用,如自动化生产线上的传感器数据采集与处理;
-介绍并实践51单片机与各类传感器(如温湿度、光照、红外等)的接口技术;
-深入讲解51单片机的电源管理,探讨低功耗设计方法;
-通过项目案例,学习如何使用51单片机进行数据加密与解密,增强系统安全性;

基于51单片机简易计算器课程设计报告

基于51单片机简易计算器课程设计报告

基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告
1. 研究背景
•计算器是人们日常生活和工作中常用的工具之一。

•通过设计简易计算器,可以加深学生对51单片机的理解和应用。

2. 目标和需求
•设计一个基于51单片机的简易计算器,能够进行基本的四则运算和开方运算。

•要求计算器能够显示输入和计算结果。

•要求计算器具备简单的界面和操作。

3. 设计方案
•使用51单片机作为计算器的控制核心。

•通过键盘输入数字和运算符,并显示在液晶屏上。

•根据输入的运算符,进行相应的计算,并将结果显示在液晶屏上。

4. 硬件设计
•使用51单片机作为主控芯片。

•连接液晶屏模块,用于显示输入和计算结果。

•连接键盘模块,用于输入数字和运算符。

5. 软件设计
•使用C语言进行编程。

•设计主程序,包括初始化、输入处理和计算输出等功能。

•设计函数,实现基本的四则运算和开方运算。

6. 实验结果
•成功设计并实现了基于51单片机的简易计算器。

•可以正常进行基本的四则运算和开方运算。

•输入和计算结果能够准确显示在液晶屏上。

7. 总结与展望
•通过设计这个简易计算器,学生对51单片机的理解和应用能力有了提高。

•下一步可以考虑增加更多的功能,如科学计算和数据存储等。

以上是本次基于51单片机简易计算器课程设计的报告。

通过这个实验,学生对51单片机的应用能力得到了提升,进一步增强了对计算器的理解。

在未来的课程设计中,可以进一步拓展功能,提升计算器的实用性和功能性。

基于51单片机的酒精浓度测试仪课设报告

基于51单片机的酒精浓度测试仪课设报告

基于51单片机的酒精浓度测试仪课设报告一、项目简介基于51单片机的酒精浓度测试仪是一款实用的检测设备,主要用于检测环境中的酒精浓度。

该测试仪利用气敏传感器来检测空气中的酒精浓度,并通过51单片机进行数据处理和控制。

本报告将详细介绍该测试仪的设计、实现和测试过程。

二、系统设计硬件设计(1)单片机:采用51单片机作为主控制器,负责数据采集、处理和控制。

(2)传感器:选用MQ-3气敏传感器,用于检测空气中的酒精浓度。

该传感器具有灵敏度高、响应速度快、稳定性好的特点。

(3)显示屏:采用LCD显示屏,用于显示酒精浓度、单位等信息。

(4)按键:设置一个按键,用于触发传感器进行酒精浓度检测。

(5)电源:采用USB供电方式,为整个系统提供稳定的电源。

软件设计(1)程序流程:首先进行系统初始化,包括单片机、传感器、显示屏等。

然后进入主循环,等待按键触发,当按键按下时,启动传感器进行酒精浓度检测,并将检测结果显示在显示屏上。

(2)数据处理:对传感器采集的数据进行滤波处理,以减小误差,提高检测精度。

(3)控制算法:根据传感器采集的数据,通过算法计算出酒精浓度值,并进行单位转换。

三、实现过程硬件搭建根据设计要求,将单片机、传感器、显示屏等元件连接起来,构成完整的硬件系统。

软件编程使用Keil软件进行编程,编写程序代码,实现系统功能。

调试与优化对系统进行调试和优化,确保系统工作正常,检测精度符合要求。

四、测试与分析测试环境与设备在实验室环境中进行测试,使用标准酒精溶液作为测试样本。

测试过程将标准酒精溶液分别置于不同浓度水平下,使用本系统进行检测,记录检测结果。

测试结果与分析通过对比标准酒精溶液的实际浓度与本系统的检测结果,分析本系统的检测精度和误差范围。

结果表明,本系统具有较高的检测精度和稳定性,能够满足实际应用需求。

五、结论与展望本报告介绍了基于51单片机的酒精浓度测试仪的设计、实现和测试过程。

通过软硬件结合的方式,实现了对空气中的酒精浓度的快速、准确检测。

51单片机计课程设计

51单片机计课程设计

51单片机计课程设计一、课程目标知识目标:1. 理解51单片机的基本组成、工作原理及其在嵌入式系统中的应用。

2. 掌握51单片机的编程语言(C语言),能够阅读和编写简单的程序。

3. 学习51单片机的I/O口编程、定时器/计数器、中断系统等基础应用。

4. 了解51单片机与其他外围设备的通信接口,如串行通信。

技能目标:1. 能够使用51单片机的开发环境,如Keil uVision和Proteus进行程序设计和仿真。

2. 培养学生的动手实践能力,通过实验箱或面包板搭建简单的51单片机应用电路。

3. 培养学生的问题分析和解决能力,通过编程解决实际问题。

4. 学会查阅技术文档和参考资料,提升自主学习能力。

情感态度价值观目标:1. 培养学生对电子制作和编程的兴趣,激发创新意识和探索精神。

2. 强调团队合作和交流分享的重要性,培养学生的团队协作能力。

3. 增强学生的工程意识,认识到科技对于社会发展的重要性。

4. 引导学生形成严谨的科学态度,注重实践操作的准确性和程序的逻辑性。

本课程针对高年级学生,考虑其已有一定电子和编程基础,课程设计注重理论与实践相结合,通过项目驱动的教学方法,使学生在实践中掌握知识,提升技能,同时培养积极的情感态度价值观。

通过本课程的学习,学生将能够独立完成简单的51单片机项目设计,为后续深入学习嵌入式系统打下坚实基础。

二、教学内容1. 51单片机基础知识- 51单片机结构及工作原理- 51单片机引脚功能及内部资源- 编程环境Keil uVision与Proteus使用方法2. 51单片机C语言编程- 数据类型、运算符与表达式- 控制语句(循环、分支)- 函数的定义与调用- 中断处理程序编写3. 51单片机I/O口编程- I/O口输入输出控制- 延时函数编写- 按键与LED控制4. 定时器/计数器- 定时器/计数器工作原理- 定时器/计数器编程方法- 定时器应用案例5. 中断系统- 中断系统原理与分类- 中断系统编程- 中断应用案例6. 串行通信- 串行通信原理- 51单片机串口编程- 串口通信应用案例7. 综合项目设计与实践- 项目需求分析- 硬件电路设计与搭建- 软件程序设计与调试- 项目展示与评价教学内容依据课程目标和学科特点进行安排,注重知识体系的科学性和系统性。

基于51单片机的电子琴课程设计报告书

基于51单片机的电子琴课程设计报告书

河南理工大学《单片机应用与仿真训练》设计报告基于单片机的电子琴设计姓名:薛吉星 _____学号: 310808020825 _______专业班级:自动化08-8班指导老师:刘巍所在学院:电气工程与自动化学院2011年7月5日本设计主要研究基于AT89C52单片机的简易电子琴设计。

它是以单片机作为主控核心,设置键盘、蜂鸣器等外围器件;另外还用到一些简单器件如:两位数码管,和NPN型三极管及电阻等。

利用按键实现音符和音调的输入;两位的数码管进行被操作的按键显示;用NPN型三极管8550实现低音频功率放大;最后用蜂鸣器进行播放“送别”。

本设计硬件部分主要由最小系统,按键系统模块、数码管显示模块和蜂鸣器模块组成。

其软件部分主要有主程序模块、定时中断程序、定时计数程序、显示程序。

(1)最小系统:它是单片机应用系统的设计基础。

它包括单片机的选择、时钟系统设计、复位电路设计、简单的I/O口扩展、掉电保护等。

(2)按键系统模块:本设计采用10个按键,其中7个按键用来显示7个音调,其它3个按键可以进行高低中音的切换,并自动播放已存歌曲。

(3)数码管显示模块:SM420562段选端接在单片机的P0口,两个位选端分别接在P2^0和P2^1。

(4)蜂鸣器模块:此电子琴发音电路是通过三极管驱动蜂鸣器发音,经过上拉电阻提高驱动能力。

本次设计首先对单片机设计简易电子琴仔细分析,接着制作硬件电路和编写软件的程序,最后进行软硬件的调试运行。

并且从原理图,主要芯片,各模块的原理和各个模块的程序调试来阐述。

利用单片机产生不同频率来获得我们要求的音阶,实现高、中、低共21个音符的发音和显示和音乐播放时的控制显示,并且能自动播放程序中编排的音乐。

系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比高等,具有一定的使用和参考价值。

1.概述 (5)1.1设计背景 (5)1.2设计意义 (5)1.3设计任务 (5)2.系统总体方案及硬件设计 (6)2.1总体设计 (6)2.2单片机选型 (7)2.3单片机的最小工作系统 (7)2.3.1 时钟电路 (7)2.3.2复位电路 (8)2.4原理框图 (8)2.5显示部分设计 (9)2.5.1数码显示方式 (9)2.5.2八位数码管的结构 (9)2.6按键部分设计 (10)2.6.1操作键设计 (10)2.6.2键盘设计 (10)2.6.3去抖动 (11)2.7发音部分设计 (12)3.系统软件设计 (13)3.1系统分析 (13)3.1.1系统软件的组成 (13)3.1.2 系统总体功能流程图 (14)3.2参数计算 (15)3.2.1发音原理 (15)3.2.2 计算举例 (15)3.2.3 计算结果 (15)3.3程序设计 (17)3.3.1 判断音阶(高中低音)子程序 (17)3.3.2 播放子程序(包括自动播放存储音乐和按键发音) (18)4. PROTEUS软件仿真 (20)4.1硬件调试 (20)4.2软件调试 (20)4.3仿真结果(任举一例) (21)4.4结果分析 (21)5. 课程设计体会 (22)参考文献 (23)附1 源程序代码 (24)附2 系统原理图 (33)1.概述1.1设计背景随着电子科学技术的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们带来更多的生活乐趣。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计课题:基于51单片机的交通灯设计专业:机械设计制造及其自动化学号:指导教师:邵添设计日期:2017/12/18成绩:大学城市科技学院电气学院基于51单片机数字温度计设计报告一、设计目的作用本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20,单片机AT89C52,,四位共阴极数码管一个,电容电阻若干。

DS18B20支持“一线总线”接口,测量温度围-55°C~+125°C。

在-10~+85°C围,精度为±0.5°C。

18B20的精度较差,为±2°C 。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。

本次数字温度计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,按键设置部分,时钟电路。

主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阴极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路,按键部分用来设置上下限报警温度。

测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。

二、设计要求(1).利用DS18B20传感器实时检测温度并显示。

(2).利用数码管实时显示温度。

(3).当温度超过或者低于设定值时蜂鸣器报警,LED闪烁指示。

(4).能够手动设置上限和下限报警温度。

三、设计的具体实现1、系统概述方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

方案设计框图如下:方案二:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。

2、单元电路设计与分析1、硬件设计按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。

数字温度计总体电路结构框图所示:单片机的选择单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。

由于器件问题,我们使用了通用的手机5V充电器接口。

复位电路模块单片机系统的复位电路在这里使用的是上电+按钮的复位电路模式,其中电阻R采用的是10KΩ的阻值,电容采用电容值为10uF的电解电容,电路图如下:温度显示模块四位共阴极数码管,能够显示小数。

列扫描用P2.4~P2.7口来实现,列驱动直接51接单片机驱动。

电路图如下:温度传感器模块DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

电路图如下:按键模块按键是用来设置报警的上下限温。

K1是用来进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限调节模式。

在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除按键音,再按一下启动按键音。

在调节上下限温度模式下,K2是实现加1功能,K1是实现减1功能,K3是用来设定上下限温度正负的。

2、软件设计主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。

主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。

温度测量每1S进行一次。

主流程图如下:读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。

在读出时须进行CRC 校验,校验有错时不进行温度数据的改写。

流程图如下:温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。

当采用12位分辨率时,转换时间约为750ms。

在本程序设计中,采用1s显示程序延时法等待转换的完成。

流程图如下:显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。

系统的调试及性能分析:硬件调试,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。

软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。

本程序采用单片机汇编或C语言编写用Keil C51编译器编程调试。

软件调试到能显示温度值,并且在有温度变化时显示温度能改变,就基本完成。

性能测试可用制作的温度计和已有的成品温度计同时进行测量比较。

由于DS18B20的精度很高,所以误差指标可以限制在0.5℃以。

另外,-55~+125℃的测温围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。

四、总结本次的课程设计使我们进一步巩固了书本上的知识,做到了学以致用。

这是我们第二次自己动手设计的电路,通过系统仿真软件Proteus和编译软件Keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现,如温度上下限设置。

由于Proteus并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间在网上查找,今后应该在这方面多多努力。

最后一步的焊接硬件也遇到了不少麻烦。

总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。

其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。

五、附录附录一:元件清单附录二:完整电路原理图附录三:焊接实物图附录四:源程序/********************************************************************* 程序名; 基于51单片机的温度计* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。

K1是用来* 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限* 调节模式。

在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动* 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除* 按键音,再按一下启动按键音。

在调节上下限温度模式下,K2是实现加1功能,* K1是实现减1功能,K3是用来设定上下限温度正负的。

* 编程者:明闯* 编程时间:2014/05/30*********************************************************************/#include<reg52.h>#include<intrins.h> //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int#define uchar unsigned charuchar max=0x00,min=0x00; //max是上限报警温度,min是下限报警温度bit s=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bit s1=0; //s1标志位用于上下限查看时的显示void display1(uint z); //声明display1()函数(display.h头文件中的函数,ds18b20.h要用应先声明)#include"ds18b20.h"#include"keyscan.h"#include"display.h"/******************************************************//* 主函数//*****************************************************/void main(){beer=1; //关闭蜂鸣器led=1; //关闭LED灯timer1_init(0); //初始化定时器1(未启动定时器1)get_temperature(1); //首次启动DS18B20获取温度(DS18B20上电后自动将EEPROM中的上下限温度复制到TH和TL寄存器)while(1){keyscan();get_temperature(0);display(temp,temp_d*0.625);alarm();}}/********************************************************************* 程序名; DS18B20头文件* 编程者:明闯* 编程时间:2014/5/30* 说明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d* (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表* 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。

*********************************************************************/#ifndef __ds18b20_h__ //定义头文件#define __ds18b20_h__#define uint unsigned int#define uchar unsigned charsbit DQ= P2^3; //DS18B20接口sbit beer=P1^0; //用beer表示P1.0sbit led=P1^1; //用led表示P1.1uchar temp=0; //测量温度的整数部分uchartemp_d=0; //测量温度的小数部分bit f=0; //测量温度的标志位,0’表示“正温度”‘1’表示“负温度”)bit f_max=0; //上限温度的标志位‘0’表示“正温度”‘1’表示“负温度”)bit f_min=0; //下限温度的标志位‘0’表示“正温度”、‘1’表示“负温度”)bit w=0; //报警标志位‘1’启动报警‘0’关闭报警/******************************************************//* 延时子函数//*****************************************************/void ds18b20_delayus(uint t) //延时几μs{while(t--);}void ds18b20_delayms(uint t) //延时1ms左右{uinti,j;for(i=t;i>0;i--)for(j=120;j>0;j--);}/******************************************************//* DS18B20初始化函数//*****************************************************/void ds18b20_init(){uchar c=0;DQ=1;DQ=0; //控制器向DS18B20发低电平脉冲ds18b20_delayus(80); //延时15-80μsDQ=1; //控制器拉高总线,while(DQ); //等待DS18B20拉低总线,在60-240μs之间ds18b20_delayus(150); //延时,等待上拉电阻拉高总线DQ=1; //拉高数据线,准备数据传输;}/******************************************************//* DS18B20字节读函数//*****************************************************/uchar ds18b20_read(){uchari;uchar d=0;DQ = 1; //准备读;for(i=8;i>0;i--){d >>= 1; //低位先发;DQ = 0;_nop_();_nop_();DQ = 1; //必须写1,否则读出来的将是不预期的数据;if(DQ) //在12us处读取数据;d |= 0x80;ds18b20_delayus(10);}return d; //返回读取的值}/******************************************************//* DS18B20字节写函数//*****************************************************/ void ds18b20_write(uchar d){uchari;for(i=8;i>0;i--){DQ=0;DQ=d&0x01;ds18b20_delayus(5);DQ=1;d >>= 1;}}/******************************************************//* 获取温度函数//*****************************************************/void get_temperature(bit flag){uchar a=0,b=0,c=0,d=0;uinti;ds18b20_init();ds18b20_write(0xcc); //向DS18B20发跳过读ROM命令ds18b20_write(0x44); //写启动DS18B20进行温度转换命令,转换结果存入部RAMif(flag==1){ //首次启动DS18B20进行温度转换需要500ms,若转换时间不够就出错,读出的是85度的错误值。

相关文档
最新文档