搜档网
当前位置:搜档网 › 基于C#和51单片机的实验室温度自动监控报警系统

基于C#和51单片机的实验室温度自动监控报警系统

基于C#和51单片机的实验室温度自动监控报警系统
基于C#和51单片机的实验室温度自动监控报警系统

《C#程序设计》

课程设计报告

(2013 — 2014 学年第 2 学期)

题目:基于C#和51单片机的实验室温度

监控系统

专业:通信工程

班级:5B

姓名学号:冯旭瀚20113100141

陈健林20113100128

苏炳昌20113100107

指导教师:唐小煜

成绩:

目录

摘要 (1)

第一章绪论 (2)

1.1 设计目的 (2)

1.2 开发工具选择 (2)

1.3 开发环境 (2)

1.4 本报告的主要内容 (2)

第二章需求分析 (3)

2.1系统需求简介 (3)

2.1.1系统目标 (3)

2.1.2功能需求分析 (3)

2.1.3性能需求分析 (3)

第三章总体设计 (4)

3.1设计概述 (4)

3.2系统总体结构及功能模块划分 (4)

第四章详细设计 (5)

4.1概述 (5)

4.2系统程序流程图 (5)

4.3系统功能模块简介 (6)

4.3.1系统界面 (6)

4.3.2单片机模块 (7)

第五章主要功能模块代码 (9)

5.1 C#代码 (9)

5.2 单片机模块代码 (17)

第六章课程设计心得 (20)

第七章设计日志 (21)

基于C#和51单片机的实验室温度监控

系统

摘要

本文描述的是基于PC与单片机——软硬结合的温度监控系统,主要功能模块包括:单片机温度采集模块,串口通信模块及XML数据存储模块,分别实现环境温度感应与监控,数据通信与格式转换,数据库存储与信息查询。三部分连接组合,既能从硬件上实时监控当前温度,并直接给以肉眼警报信号;又能从软件上随时查询以往温度信息。

第一章绪论

1.1 设计目的

本课程设计的目的是使学生能熟练掌握单片机程序设计,串口通信程序编写,XML数据库操作,并将三者充分结合,展示系统实际功效。希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。

1.2 开发工具选择

本系统后台数据库采用XML,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;并用Microsoft 公司的Visual Studio 2008作为主要开发工具,可与XML无缝链接。系统前端采用单片机温度监控系统,实时向PC传送温度数据。

1.3 开发环境

系统前端平台:单片机

系统开发语言:C#

数据库:XML

1.4 本报告的主要内容

本报告详细的介绍了温度自动监控系统的开发过程,主要涉及到的工作如下:系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。

第二章需求分析

2.1系统需求简介

2.1.1系统目标

(1)单片机自动向PC传输当前的温度数据

(2)管理员能随时查看以往温度信息

(3)系统在温度超标时能发出警报

2.1.2功能需求分析

本系统的功能需求分析如下:

(1)当前温度监控:使用单片机温度监控模块,实时接收当前温度信息,并每隔一定时间通过串口发送温度数据到PC;

(2)管理员查询以往温度信息:通过串口将接收到的温度信息存储到XML 中,并添加当前的时间,以便管理员能直接,清晰地查看;

(3)温度超标时报警:主程序中添加监控模块,在温度超过预定值时,及时产生信号告诉单片机启动报警装置。

2.1.3性能需求分析

(1)单片机硬件需求:简单方便的小模块,便于放置且稳定性高,但监控数

据精度不需要太高。

(2)数据库软件需求:数据容量足够大,并能方便查询,且不易丢失。

第三章总体设计

3.1设计概述

根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能;

3.2系统总体结构及功能模块划分

经过对系统的分析,将温度监控系统划分三个功能模块:单片机温度监控模块,串口数据通信模块,XML数据存储与查询模块。如图3.2.1 系统的总体结构。

图3.2.1 系统的总体结构

第四章详细设计

4.1概述

详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

4.2系统程序流程图

程序流程图又称为程序框图,它可将整个程序的总体流程清楚明白的显示出来。

如图4.2.1系统总流程图结构

4.3系统功能模块简介

4.3.1系统界面

用户打开串口,成功匹配后发送指令让单片机工作,接收显示温度数据及当前时间,并用画出曲线显示温度变化。系统界面如图4.3.1。

图4.3.1 系统界面

单击“新建XML文件”,创建名为“aaa”的XML文件,如图4.3.2所示

图4.3.2 创建XML文件

图4.3.3温度正常时监控界面

当温度超过31度时,显示告警信息,并通知单片机启动制冷设备。

图4.3.4温度过高时监控界面

4.3.2单片机模块

温度传感器DS18B20,具有体积小,硬件开销低,抗干扰能力强,精度高的特点,与单片机构成温度采集模块。单片机等待接收PC的指令后,开始获取当前温度数据,并通过串口发送到PC。单片机P0^7口亮时为单片机开始工作,P0^6口亮时为启动制冷设备。单片机工作如图4.3.5,如图4.3.6。

图4.3.5 单片机正常工作图

图4.3.6 单片机启动制冷设备图

第五章主要功能模块代码

5.1 C#代码

using System;

using System.Collections.Generic;

using https://www.sodocs.net/doc/3f1091591.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.IO.Ports;

using System.Xml;

namespace _11_Serial

{

public partial class F_Serial : Form

{

private XmlDataDocument xmlDoc;//声明全局变量xmlDoc,类型是XmlDataDocument

//声明加载xml文件的方法

private void xmlLoad()

{

xmlDoc = new XmlDataDocument();

xmlDoc.Load("D:\\aaa.xml");//文件名是aaa.xml

}

//自定义委托类型,委托签名(解释见PPT)与该委托将要绑定的方法签名应保持一致(本例为不带参数的方法)

//委托类型应在本处而不能在方法里面定义

public delegate void ReadSptEventHandler();

//实例化一个串口

SerialPort sp = new SerialPort();

public F_Serial()

{

InitializeComponent();

}

///

///控件加载后设置

///

///

///

private void Serial_Load(object sender, EventArgs e)

{

//将可用的串口名填充到下拉菜单中

comboBox1.DataSource = SerialPort.GetPortNames();

}

///

///选择串口并打开

///

///

///

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {

//打开新串口前,先关闭之前已打开的串口,避免长期占用系统资源

if (spt.IsOpen)

{

spt.Close();

}

//重新设置选定串口

spt.PortName = comboBox1.Text; //指定要使用的串口号 spt.BaudRate = 9600; //设定波特率

spt.DataBits = 8; //设定字长

spt.StopBits = System.IO.Ports.StopBits.One; //设定停止位

spt.Parity = System.IO.Ports.Parity.None; //设定奇偶验证协议 spt.Encoding = Encoding.UTF8; //设定通信中使用的字符集

spt.DtrEnable = true; //数据终端准备就绪(可以接收数据)

spt.ReadTimeout = 1000; //设置数据读取超时为1秒

spt.WriteTimeout = 1000; //设置数据发送超时为1秒

//打开串口

try

spt.Open();

if (spt.IsOpen)

{

CloseSpt.Enabled = true;

msgshow.Text = "成功打开串口" + spt.PortName; }

}

catch (Exception msg)

{

msgshow.Text = msg.Message;

}

}

///

///关闭指定串口

///

///

///

private void CloseSpt_Click(object sender, EventArgs e) {

spt.Close();

if (!spt.IsOpen)

{

CloseSpt.Enabled = false;

msgshow.Text = "已成功关闭串口" + spt.PortName; }

}

///

///发送串口信息

///

///

///

private void DataSend_Click(object sender, EventArgs e) {

try

{

//发送一行数据

spt.WriteLine(TextToSend.Text);

}

catch (Exception msg)

{

MessageBox.Show(msg.Message);

}

///

///接口接收数据时调用事件函数

///

///

///

private void spt_DataReceived(object sender, SerialDataReceivedEventArgs e)

{

//直接使用同步的方法启动一个委托,程序会在此处等待,直至全部数据读取完毕,

ReadSptEventHandler rse = new ReadSptEventHandler(ReadSpt);

Logs.Invoke(rse);

}

///

///

///

//串口数据读取在文本框中显示并写入XML

void ReadSpt()

{

//以字符的方式读取串口的全部数据

string rstr = spt.ReadExisting();

//C#获取当前时间的格式

DateTime.Now.ToShortTimeString();

DateTime dt = DateTime.Now;

//将数据添加到Logs控件

Logs.AppendText(rstr);

//将Logs控件的光标移到最末尾处

Logs.ScrollToCaret();

//把串口数据写入XML文件

xmlLoad();//调用加载xml文件的方法

XmlNode xmldocSelect = xmlDoc.SelectSingleNode("root");//xml文件的根结点是root

XmlElement el = xmlDoc.CreateElement("data");//添加person节点

XmlElement time = xmlDoc.CreateElement("time");

time.InnerText = dt.ToLongTimeString().ToString();

XmlElement temperature = xmlDoc.CreateElement("temperature");

//将log里文本框中的每行数据写进XML里面

int a = Logs.Lines.Length-1;//获取文本框的有效数据行数,除去空格行 temperature.InnerText = Logs.Lines[a-1];//文本框中的最后一行为空格行,应减去

el.AppendChild(time);

el.AppendChild(temperature);

xmldocSelect.AppendChild(el);//将节点data加到根节点root下

xmlDoc.Save("D:\\aaa.xml");//保存,这个十分重要,否则没有数据

//温度过高报警

int HighTemperature = int.Parse(Logs.Lines[a - 1]);

if (HighTemperature > 31)

{

spt.WriteLine("3");

MessageBox.Show("温度过高", "报警", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

//DrawC();

}

///

///定时器函数(每秒执行)

///

///

///

private void timer1_Tick(object sender, EventArgs e)

{

DrawC();

}

///

///根据Logs的值进行绘图

///

void DrawC()

{

//20130503 增加绘图方法,实现串口数据的图形呈现

Graphics mygraphics = Graphics.FromHwnd(pictureBox1.Handle);

mygraphics.Clear(pictureBox1.BackColor);

if (checkBox1.Checked)

{

Pen mypen = new Pen(Color.Blue, 1);

//画坐标轴

mypen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;

int y0 = pictureBox1.Height - 30; //原点位置

int y1 = y0 - 5;

int y2 = y1 - 40;

int y3 = y2 - 40;

int y4 = y3 - 40;

int y5 = y4 - 40;

int y6 = y5 - 40;

mygraphics.DrawLine(mypen, new Point(20,y0), new

Point(pictureBox1.Width, y0)); //画X轴

mygraphics.DrawLine(mypen, new Point(20, pictureBox1.Height), new Point(20, 0)); //画Y轴

//写Y坐标值

mygraphics.DrawString("27", new Font("宋体", 10), Brushes.Red, 0, y1);

mygraphics.DrawString("28", new Font("宋体", 10), Brushes.Red, 0, y2);

mygraphics.DrawString("29", new Font("宋体", 10), Brushes.Red, 0, y3);

mygraphics.DrawString("30", new Font("宋体", 10), Brushes.Red, 0, y4);

mygraphics.DrawString("31", new Font("宋体", 10), Brushes.Red, 0, y5);

mygraphics.DrawString("32", new Font("宋体", 10), Brushes.Red, 0, y6);

//写X坐标值

//mygraphics.DrawString("", new Font("宋体", 10), Brushes.Red, 20, y0 + 10);

int xx = 10, //X轴单位偏移量

xy = 2; //幅值增益

//定义数据点

Point[] ps = new Point[Logs.Lines.Length - 1]; //最后一行为空行,忽略掉

for (int i = 0; i < ps.Length; i++)

{

try

{

//转化坐标值

int tmp =

Convert.ToInt32(Logs.Lines[i].Replace(Environment.NewLine, ""));

if (tmp == 27)

{ ps[i] = new Point(20 + i * xx, y1); }

else

{ ps[i] = new Point(20 + i * xx, y1-(tmp-27)*40); }

}

catch

{

//非法数据设为0值

ps[i] = new Point(20+i * xx, y0);

}

}

//画曲线

mypen.Color = Color.Red;

mypen.EndCap = System.Drawing.Drawing2D.LineCap.NoAnchor;

if (ps.Length > 1)

{

mygraphics.DrawCurve(mypen, ps);

}

}

}

private void Logs_TextChanged(object sender, EventArgs e)

{

//DrawC();

}

private void checkBox1_CheckedChanged(object sender, EventArgs e) {

//DrawC();

}

private void button1_Click(object sender, EventArgs e)

{

//选择保存路径

SaveFileDialog sf = new SaveFileDialog();

sf.Filter = "XML文件|*.xml|所有文件|*.*";

if (sf.ShowDialog() != DialogResult.OK)

{

MessageBox.Show("请选择文件后继续");

return;

}

string path = sf.FileName;

//按格式写入文件

XmlTextWriter xw = new XmlTextWriter(path, Encoding.UTF8);

//设置Indenting属性让子节点自动从父节点缩进

xw.Formatting = Formatting.Indented;

//开始一个新文档

xw.WriteStartDocument();

//开始写入数据(从根元素开始)

xw.WriteStartElement("root");

//结束根元素

xw.WriteEndElement();

//结束文档

xw.WriteEndDocument();

//关闭文件

xw.Close();

//提示

MessageBox.Show("写入XML文件 " + "D:\\aaa.xml"+ " 成功"); }

private void button2_Click(object sender, EventArgs e)

{

//读取XML

DataSet ds = new DataSet();

ds.ReadXml("D:\\aaa.xml");

//填充数据(DataSet中的第一张表格)

dataGridView1.DataSource = ds.Tables[0];

}

private void TextToSend_TextChanged(object sender, EventArgs e) {

}

}

}

5.2 单片机模块代码

#include

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit led0=P0^7;

sbit led1=P0^6;

uint TPH; //存放温度值的高字节

uint TPL; //存放温度值的低字节

//uint TP;

int TP;

//float TP; //存放温度值的十进制数

uchar shi,ge,shifen,baifen,qianfen,a,flag_on,flag_off;

void conversion(uint angle);

void sentdata(uchar);

/****************************************************************************** ***************************

** 函数功能:延时函数

** 函数说明:利用软件延时,占用CPU,经调试最小单位大约为1ms

** 入口参数:time:需要延时的时间,单位ms

** 出口参数:无

******************************************************************************* **************************/

void Delay_ms(uint time)

{

uint i,j;

for(i = 0;i < time;i ++)

for(j = 0;j < 930;j ++);

}

void conversion(int angle)

{

shi=(uint)angle/10+0x30; //加0x30这样才能正确转化为字符的ascll码在电脑上显示出来

ge=(uint)angle%10+0x30;

shifen= (uint)(angle*10)%10+0x30;

baifen= (uint)(angle*100)%10+0x30;

qianfen=(uint)(angle*1000)%10+0x30;

}

void sentdata(uchar dat)

{

ES=0;

SBUF=dat; //发送数据时,要关闭中断位,否则程序会一直发送第一位数据

while(!TI); //发送数据完后TI会自动置1,并申请中断,所以用来检测数据是否发送完

TI=0;

ES=1; //发送完后,打开中断位

}

void ser_init()

{

TMOD=0X20;

TH1=0XFD; //定时器1装初值,计算出波特率为9600bps

TL1=0XFD;

//TH1=0XFE;

//TL1=0XFE;

TR1=1;

SM0=0;

SM1=1;

REN=1;

EA=1;

ES=1;

}

void main()

{

ser_init();

while(1)

{

if(flag_off==0)

{

if(flag_on==1)

{

DS18B20_Reset(); //设备复位

DS18B20_WriteByte(0xCC); //跳过ROM命令

DS18B20_WriteByte(0x44); //开始转换命令

Delay_ms(1000); //延时等待转换完成

DS18B20_Reset(); //设备复位

DS18B20_WriteByte(0xCC); //跳过ROM命令

基于51单片机的温度警报器的设计

西安文理学院物理与机械电子工程学院课程设计任务书

目录 摘要 (3) 1 引言 (3) 1.1课题背景 (3) 1.2研究内容和意义 (5) 2 芯片介绍 (5) 2.1 DS18B20概述 (5) 2.1.1 DS18B20封装形式及引脚功能 (6) 2.1.2 DS18B20内部结构 (6) 2.1.3 DS18B20供电方式 (9) 2.1.4 DS18B20的测温原理 (10) 2.1.5 DS18B20的ROM命令 (11) 2.2 AT89C52概述 (13) 2.2.1单片机AT89C52介绍 (13) 2.2.2功能特性概述 (13) 3 系统硬件设计 (13) 3.1 单片机最小系统的设计 (13) 3.2 温度采集电路的设计 (14) 3.3 LED显示报警电路的设计 (15) 4 系统软件设计...................................................15 4.1 流程图........................................................15 4.2 温度报警器程序.................................................16 4.3 总电路图..................................................... 19 5总结 (20)

摘要 随着时代的进步和发展,温度的测试已经影响到我们的生活、工作、科研、各个领域,已经成为了一种非常重要的事情,因此设计一个温度测试的系统势在必行。 本文主要介绍了一个基于AT89C52单片机的数字温度报警器系统。详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警,并可以根据需要任意上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。DS18B20与AT89C52结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机;温度检测;AT89C52;DS18B20; 1 引言 1.1课题背景 温度是工业对象中主要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的温度处理要求严格控制。随着科学技术的发展,要求温度测量的范围向深度和广度发展,以满足工业生产和科学技术的要求。 基于AT89C51单片机提高了系统的可移植性、扩展性,利于现代测控、自动化、电气技术等专业实训要求。以单片机为核心设计的温度报警器,具有安全可靠、操作简单方便、智能控制等优点。 温度对于工业生产如此重要,由此推进了温度传感器的发展。温度传感器主要经过了三个发展阶段[1]: (1)模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、

基于AT89C51单片机的温度传感器

基于AT89C51单片机的温度传感器 目录 摘要.............................................................. I ABSTRACT........................................................... I I 第一章绪论 (1) 1.1 课题背景 (1) 1.2本课题研究意义 (2) 1.3本课题的任务 (2) 1.4系统整体目标 (2) 第二章方案论证比较与选择 (3) 2.1引言 (3) 2.2方案设计 (3) 2.2.1 设计方案一 (3) 2.2.2 设计方案二 (3) 2.2.3 设计方案三 (3) 2.3方案的比较与选择 (4) 2.4方案的阐述与论证 (4) 第三章硬件设计 (6) 3.1 温度传感器 (6) 3.1.1 温度传感器选用细则 (6) 3.1.2 温度传感器DS18B20 (7) 3.2.单片机系统设计 (13)

3.3显示电路设计.................................错误!未定义书签。 3.4键盘电路设计................................错误!未定义书签。 3.5报警电路设计.................................错误!未定义书签。 3.6通信模块设计.................................错误!未定义书签。 3.6.1 RS-232接口简介..............................错误!未定义书签。 3.6.2 MAX232芯片简介.............................错误!未定义书签。 3.6.3 PC机与单片机的串行通信接口电路.............错误!未定义书签。 第四章软件设计..................................错误!未定义书签。 4.1 软件开发工具的选择..........................错误!未定义书签。 4.2系统软件设计的一般原则.......................错误!未定义书签。 4..3系统软件设计的一般步骤......................错误!未定义书签。 4.4软件实现....................................错误!未定义书签。 4.4.1系统主程序流程图.........................错误!未定义书签。 4.4.2 传感器程序设计...........................错误!未定义书签。 4.4.3 显示程序设计.............................错误!未定义书签。 4.4.4 键盘程序设计.............................错误!未定义书签。 4.4.5 报警程序设计.............................错误!未定义书签。 4.4.6 通信模块程序设计.........................错误!未定义书签。 第五章调试与小结..................................错误!未定义书签。致谢...............................................错误!未定义书签。参考文献...........................................错误!未定义书签。附录...............................................错误!未定义书签。系统电路图.......................................错误!未定义书签。系统程序.........................................错误!未定义书签。

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 口,如图所示:

基于51单片机设计的带有测温功能的电子时钟汇总

、 职业技能训练之 电子技术课程设计报告 学院电子与信息学院 设计题目基于51单片机设计的带有测温功能的电子时钟班级XXX 姓名XXX 学号XXX 指导教师XXX 时间2012年06月25日

目录 一、设计要求 二、课程设计的方案、目的及意义 三、硬件设计方案 四、软件设计方案 五、总结 六、参考资料

一、设计要求 用51单片机设计带温度显示的电子时钟,具体要求如下: 1、利用DS1302时钟芯片实现时钟功能模块。 2、时钟要求可以调节时间:年、月、日、时、分、秒。 3、利用LCD1602显示。 4、利用DS18B20芯片实现温度功能模块。 5、利用按键完成各项功能。 二、课程设计方案、目的及意义 1、总体方案: 用STC89C51单片机作为CPU主控制器,DS1302时钟芯片提供准确时钟信号,DS18B20温度传感器采集温度信息,三个按键进行加减调整、功能切换作用,通过LCD1602对外多功能显示。 2、具体方案: CPU控制所有模块,通过循环反复从DS1302中读取时钟信息,传送至LCD1602显示,得到基本时钟功能。当分为59,秒为56时开始,每隔一秒LED 灯点亮240毫秒,0分0秒时LED灯点亮700毫秒。从而实现整点光报时。 定时循环从DS18B20中读取温度信息,传送至LCD1602显示,得到基本温度计功能。当温度高于30度(包括30度)时,点亮红色LED灯,提醒当天为高温天气。低于0度时,点亮蓝色LED灯,提醒当天为冰冻天气。 键盘使用扫面方式,MENU键控制功能切换,完成时钟和温度间的转换。OK键控制时间调整与确定,UP、DOWN键调节时间,R、L 键选择调整对象。进入调整时,暂停DS1302数据读取,并将改变的时间数据写入DS1302,并送LCD1602显示,同时,启动LCD1602光标闪烁,确定调整对象,完成人机对话。退出调整时,停止写入数据,重新读取DS1302时钟信息。从而完善时钟功能。 3、目的及意义 可作为产品生产,作为居家的时钟显示与温度计。

基于51单片机的的温度报警器设计

1引言 (1) 1.1 单片机的应用背景 (1) 2 总体设计方案 (2) 2.1 功能简介 (2) 2.2 设计思路 (2) 2.3 芯片器材 (3) 3 硬件设计 (3) 3.1 AT89C51 (3) 3.1.1 AT98C51引脚图 (3) 3.1.2 AT89C51结构特点 (5) 3.2 温度获取 (5) (7) 3.3 时钟电路 (8) 3.4 温度显示电路 (8) 3.5报警电路 (10) (10) 4 程序设计 (10) 4.1 程序流程图 (11) 4.2 初始化子程序 (11) 4.3 读子程序 (12) 4.4 写子程序 (13) 4.5 数据处理子程序 (13) 4.6 显示子程序 (15) 4.7报警子程序 (17) 5 实验仿真 (18) (18) 6 总结 (19) 参考文献 (20) 附录 (21) 1引言 1.1 单片机的应用背景 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通信与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机,更不用说自动控制领域的机器人、智能仪表、医疗机械了。

世面上主要的单片机类型有Motorola 单片机、Microchip 单片机、东芝单片机、8051单片机、Atmel 单片机等。此次课设中用到的是ATMEL公司,下面着重介绍一下ATMEL公司的单片机。 ATMEL 公司是世界上著名的高性能低功耗非易失性存储器和数字集成电路的一流半导体制造公司。ATMEL 公司最令人注目的是它的EEPROM 电可擦除技术闪速存储器技术和质量高可靠性的生产技术。在CMOS 器件生产领域中,ATMEL 的先进设计水平优秀的生产工艺及封装技术一直处于世界的领先地位。这些技术用于单片机生产,使单片机也具有优秀的品质在结构性能和功能等方面都有明显的优势,ATMEL 公司的单片机是目前世界上一种独具特色。 而性能卓越的单片机它在计算机外部设备通讯设备自动化工业控制宇航设备仪器仪表和各种消费类产品中都有着广泛的应用前景。其生产的AT90系列是增强型RISC内载FLASH单片机,通常称为A VR系列。AT91M系列是基于ARM7TDMI 嵌入式处理器的ATMEL 16/32 微处理器系列中的一个新成员,该处理器用高密度的16 位指令集实现了高效的32 位RISC 结构且功耗很低。另外ATMAL的增强型51系列单片机目前在市场上仍然十分流行,其中AT89S51十分活跃。 当今社会,人们在追求高质量的生活,所以生活中离不开单片机,根据国家权威统计显示,目前我国的单片机容量达3亿片,且每年以大约20%的速度增长,但在世界市场我国的占有率还不到1%。沿海地区尤其像电子产品高度发达的深圳大部分单片机应用更是广泛,这种发展趋势也不断向内地辐射,因此,学好单片机有很重要的意义。 2 总体设计方案 2.1 功能简介 8位LED数码管直接显示DS18B20所测量的温度,超出-50~110℃范围时喇叭报警,并且对应的发光二极管开始闪烁,在温度范围内时喇叭停止报警并且数码管显示其温度,测量精度为0.5℃。 2.2 设计思路

(完整word版)基于51单片机的温度控制系统设计

基于51单片机的水温自动控制系统 0 引言 在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。 1 设计任务、要求和技术指标 1.1任务 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。 1.2要求 (1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,停止加热。 (3)用AD转换器把采集到的模拟温度值送入单片机。 (4)无竞争-冒险,无抖动。 1.3技术指标 (1)温度显示误差不超过1℃。 (2)温度显示范围为0℃—99℃。 (3)程序部分用PID算法实现温度自动控制。 (4)检测信号为电压信号。 2 方案分析与论证 2.1主控系统分析与论证 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。 2.2显示系统分析与论证 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.sodocs.net/doc/3f1091591.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.sodocs.net/doc/3f1091591.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

基于51单片机的家用温湿度语音播报系统设计

毕业设计(论文) 题目:基于51单片机的家用温湿度语音播报系统设计 姓名 学院名 专业 指导教师 2014年月日

诚信承诺 本人__________声明,本论文及其研究工作是由本人在导师指导下独立完成,论文所利用的一切资料均符合论文著作要求,且在参考文献中列出。 签名:日期:

摘要 本系统是一个基于单片机AT89C51的语音播报系统的设计,用来测量环境温湿度,整个设计系统分为5部分:单片机控制、DHT11温湿度传感器、液晶显示、语音播报以及键盘控制电路,整个设计是以AT89C51为核心,选用DHT11温湿度传感器,LED12864液晶显示器实现。当测量温湿度超过设定的温度上下限时,启动蜂鸣器和指示灯报警。语音录放选用的集成块是ISD1420 芯片,其保真度高,录音效果好,而且经济实惠。LCD采用的是LCD12864,它具有功耗低、体积小、显示内容丰富、超薄轻巧等优点,应用越来越广泛。整个设计的重点在于编程,因为其外围电路相对比较简单,实现容易。在本论文中附带了软件实现的流程图以及部分子程序以及各种硬件电路图。 关键词:液晶显示;语音播报; ISD1420

ABSTRACT This system is a design of the speech thermometer according to the microprocessor AT89C51,which is used to measure the environment temperature, The whole design system is divided into 5 parts: A microprocessor control, temperature sensor,the LCD display, the speech report and the keyboard control circuit, at the same time ,The whole design take AT89C51 as the core, choose to single bus digital temperature sensor DS18B20, DS1302 serial clock chip, RT1602 LCD monitor realization, LCD display the current date, time, weeks and temperature. When measuring temperature over set temperature fluctuation limit, start with light alarm buzzer. Temperature display stability, and temperature measurement error acuities 1℃, plus or minus temperature the decimal part retained two significant digits. Increased Celsius temperature conversion contrast with Fahrenheit and sets up a display function beep voice automatically broadcast time temperature, manual real-time broadcast time temperature function. The speech recoding &; p layback I choose to use is the IC of ISD1420, it has high fidelity, good record effective, and economic. The LCD I choose is TC1602A, its power consume is low, it has many advantages , for example, the volume is small, the contents is abundant, super thin and agile etc, and its application is becoming more and more extensive. The whole design lies in the program, because its outer circuit is much more simple, and it can carry out more easily. In my thesis, there are flow chart and parts subprogram and various hardware circuit diagrams. Key Words: DS18B20;LCD;speech function;sounding and light alarm.

基于51单片机的数字温度报警器

摘要:随着传感器在生产生活中更加广泛的应用,一种新型的数字式温度传感器实现对温度的测试与控制得到了更快的开发。本文设计了一种基于单片机AT89C52的温度检测及报警系统。该系统将温度传感器DS18B20接到单片机的一个端口上,单片机对温度传感器进行循环采集。将采集到的温度值与设定的上下限进行比较,当超出设定范围的上下限时,通过单片机控制的报警电路就会发出报警信号,从而实现了本次课程设计的要求。该系统设计和布线简单、结构紧凑、体积小、重量轻、抗干扰能力较强、性价比高、扩展方便,在工农业等领域的温度检测中有广阔的应用前景。本次课程设计的测量范围为0℃--99℃,测量误差为±2℃。 关键字:温度传感器、单片机、报警、数码管显示 一、概述 本次设计可以应用到许多我们用过的软件设计,将前面所学的知识融汇在一起实现温度监测及其报警的功能,来提醒农民当前大棚内温度是否适合农作物的生长。 电子技术是在十九世纪末、二十世纪初开始发展起来的新兴技术,在二十世纪发展最迅速,应用最广泛,成为近代科学技术发展的一个重要标志。 随着电子技术的飞速发展,电子技术在日常生活中得到了广泛的应用,各类转换电路的不断推出以及电子产品的快速更新,电子技术已成为世界发展和人们生活中必不可少的工具。 本次课设应用Protues软件设计一个温度检测报警系统,用温度传感器DS18B20采集大棚内的温度,当大棚内的温度高于30℃。或低于15℃。时,电路发出报警信号并显示当前温度,达到提醒农民的效果。 本次课设要求设计一个温度监测报警显示电路,要求温度范围:0℃--99℃;测量误差为±2℃;报警下限温度为:15℃;报警上限温度为:30℃。 二、方案论证 设计一个用于温室大棚温度监测系统。大棚农作物生长时,其温度不能太低,也不能太高,太低或太高均不适合农作物生长。该系统可实时测量、显示大棚的温度,当大棚温度超过农作物生长的温度范围时,报警提醒农民。 方案一: 方案一原理框图如图1所示。 图1 大棚温度检测系统的原理框图 方案二: 方案二原理框图如图2所示。

基于51单片机的温度控制系统的设计

基于单片机的温度控制系统设计 1.设计要求 要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。具体设计要求如下: ①数码管或液晶显示屏显示室内当前的温度; ②在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别是设置键、加1键、减1键和启动/复位键; ③DS18B20温度采集; ④超过设置值的±5℃时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。 2.方案论证 根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学习中接触到的51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。温度采集直接可以用设计要求中所要求的DS18B20。报警和指示模块中,可以选用3种不同颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择。 方案一:使用LED数码管显示采集温度和设定温度; 方案二:使用LCD液晶显示屏来显示采集温度和设定温度。 LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。LCD显示屏可识别性较好,背光亮度可调,而且比LED 数码管显示更多字符,但是编程要求比LED数码管要高。综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的看到实际温度与警戒温度的对比。LCD 显示模块可以选用RT1602C。

3.硬件设计 根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD 显示模块、报警与指示模块。其相互联系如下图1所示: 图1 硬件电路设计框图 单片机时钟电路 形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。本次设计采用内部时钟方式,如图2所示。 单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为此放大器的输入端和输出端,其频率范围为~12MHz ,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一 起形成了一个自激振荡电路,为单片机提供时钟源。 复位电路 复位是单片机的初始化操作,其作用是使CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作,以防止电源系统不稳定造成CPU 工作不正常。在系统中,有时会出现工作不正常的情况,为了从异常状态中恢复,同时也为了系统调试方便,需要设计一个复位电路。 单片机的复位电路有上电复位和按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图3。复位电路主要完成系统 图2 单片机内部时钟方式电路 图3 单片机按键复位电路

51单片机数字电压表实验报告

微控制器技术创新设计实验报告 姓名:学号:班级: 一、项目背景 使用单片机AT89C52和ADC0808设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示。在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为 5V;显示精度伏。 二、项目整体方案设计 ADC0808 是含8 位A/D 转换器、8 路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。ADC0808的精度为 1/2LSB。在AD 转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关树组的256 电阻分压器,以及一个逐次通近型寄存器。8 路的模拟开关的通断由地址锁存器和译码器控制,可以在8 个通道中任意访问一个单边的模拟信号。

三、硬件设计 四、软件设计#include<> #include""

#define uchar unsigned char #define uint unsigned int sbit OE = P2^7; sbit EOC=P2^6; sbit START=P2^5; sbit CLK=P2^4; sbit CS0=P2^0; sbit CS1=P2^1; sbit CS2=P2^2; sbit CS3=P2^3; uint adval,volt; uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; void delayms(uint ms) {

基于51单片机自行车测速系统设计

摘要 随着居民生活水平的不断提高,人们对于生活质量的要求也日益增加,尤其是对健身的要求。自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。自行车的速度里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。而对于自行车运动员来说,最为关心的莫过于一段时间内的训练效果。因为教练要根据一段时间内运动员的训练效果进行评估,从而进行适当的调整已使运动员达到最佳的状态。因此爱好自行车运动的人十分学要一款能测速的装置,以知道自己的运动情况。并根据外界条件,如温度,风速等进行适当的调节,已达到最佳运动的效果。 关键词:单片机、LED显示、里程/速度、霍尔元件

第一章系统总方案分析与设计 1.1 课题主要任务及内容 本课题主要任务是利用霍尔元件、单片机等部件设计一个可用LED数码管实时显示里程和速度的自行车的速度里程表。本文主要介绍了自行车的速度里程表的设计思想、电路原理、方案论证以及元件的选择等内容,整体上分为硬件部分设计和软件部分设计。 本文首先扼要对该课题的任务进行方案论证,包括硬件方案和软件方案的设计;继而具体介绍了自行车的速度里程表的硬件设计,包括传感器的选择、单片机的选择、显示电路的设计;然后阐述了该自行车的速度里程表的软件设计,包括数据处理子程序的设计、显示子程序的设计;最后对本次设计进行了系统的总结。 具体的硬件电路包括AT89C52单片机、霍尔元件以及LED显示电路等。 软件设计包括:中断子程序设计,里程计算子程序设计,显示子程序设计。软件采用汇编语言编写,软件设计的思想主要是自顶向下,模块化设计,各个子模块逐一设计。 1.2 任务分析与实现 本设计的任务是:以通用AT89C52单片机为处理核心,用传感器将车轮的转数转换为电脉冲,进行处理后送入单片机。里程及速度的测量,是经过AT89C52的定时/计数器测出总的脉冲数和每转一圈的时间,再经过单片机的计算得出,其结果通过LED显示器显示出来。 本系统总体思路如下:假定轮圈的周长为L,在轮圈上安装m个永久磁铁,则测得的里程值最大误差为L/m。经综合分析,本设计中取m=1。当轮子每转一圈,通过开关型霍尔元件传感器采集到一个脉冲信号,并从引脚P3.2中断0端输入,传感器每获取一个脉冲信号即对系统提供一次计数中断。每次中断代表车轮转动一圈,中断数n和周长L的乘积为里程值。计数器T1计算每转一圈所用的时间t,就可以计算出即时速度v。当里程键按下时,里程指示灯亮,LED切换显示当前里程;当速度键按下时,速度指示灯亮,LED切换显示当前速度。 要求达到的各项指标及实现方法如下: 1. 利用霍尔传感器产生里程数的脉冲信号。 2. 对脉冲信号进行计数。 实现:利用单片机自带的计数器T1对霍尔传感器脉冲信号进行计数。 3. 对数据进行处理,要求用LED显示里程总数和即时速度。 实现:利用软件编程,对数据进行处理得到需要的数值。 最终实现目标:自行车的速度里程表具有里程、速度测试与显示功能,采用单片机作控制,显示电路可显示里程及速度。

单片机课程设计报告——温度报警器

单片机原理与应用 课程设计报告 { 课程设计名称:温度报警器设计 专业班级: 13计转本 | 学生姓名:张朝柱肖娜 学号: 140 113 指导教师:高玉芹 设计时间: 2016-11—2017-12 成绩: 信电工程学院

摘要 2009年6月14日随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。 本文主要介绍了一个基于AT89C52单片机的测温系统,详细描述了利用液晶显示器件传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机AT89C51;DS18B20温度传感器;液晶显示LCD1602。

目录 1绪论 (1) 温度报警器简介 (1) 温度报警器的背景与研究意义 (1) 温度报警器的现状及发展趋势 (1) 2 系统整体方案设计 (2) 设计目标 (2) 系统的基本方案 (2) 系统方案选择 (2) 各模块方案选择 (3) 主要元器件介绍 (3) STC89C52的简介 (3) DS18B20的简介 (4) 3 系统的硬件设计与实现 (5) 系统硬件概述 (5) 主要单元电路的设计 (5) 键盘扫描模块电路的设计 (5) 单片机控制模块电路的设计 (5) 报警模块电路的设计 (6) LCD1602显示模块电路的设计 (7) 4 系统的软件设计与实现 (8) KEIL软件介绍 (8) 系统程序设计流程图 (8) 主程序软件设计 (8) 按键软件设计 (9) 密码设置软件设计 (9) 开锁软件设计 (10) 5 系统仿真设计 (12) Proteus 软件介绍 (12) Proteus 仿真图 (12) 硬件调试 (13) 调试结果 (13) 6 结论 (14)

基于51单片机的心率体温测试系统

摘要 本文介绍了一种基于51单片机的心率体温采集系统。首先介绍了51系列单片机的内部相关配置、工作原理以及编程方法,其次介绍了温度传感器PT100的相关测温方法以及通过红外光电传感器TCRT5000对射的方法来抓取人体脉搏信号。此次设计的电路部分主要包括:传感测量电路、放大电路、滤波整形电路、AD转换电路、计数显示电路、控制电路、电源供电电路等。通过按键开始测试,将PT100及TCRT5000输入的微弱信号进行放大整形,最后AD采集转换传送给单片机,在LCD1602上显示相关体温及心率信息。 本次硬件设计基于比较稳定可行、低成本的设计思想,软件设计采用模块化的设计方法,并且详细分析了红外传感器TCRT5000应用于心率测量上以及PT100应用于温度测量上的原理及优点,阐述了其他各配合电路的组成与工作特点,并且通过仿真进行电路的可行性验证,最后完成实物电路的设计,使得本次课题的预期结果得以实现。 关键词:51单片机;传感器;仿真;AD转换 -I

Abstract This paper introduced a heart rate and body temperature acquisition system that based on 51 single chip microcomputer. First the internal configurations of 51 single chip microcomputer are introduced. And the paper also tell how 51 single chip microcomputer works and how can we program on it. Then the method of using temperature sensor PT100 to get body temperature is introduced, and we use infrared photoelectric sensor TCRT5000 to get the pulse signal of human body.The design of the circuit mainly comprises sensing circuit , amplifying circuit, filtering and shaping circuit, AD converting circuit, counting and displaying circuit, controlling circuit, power supplying circuit and so on. When the keyboard is pressed, the system starts to get signal. The small signal from PT100 and TCRT5000 will be amplified and shaped. Then ad converter will change the analog signal into digital signal and send to 51 single chip microcomputer . At last LCD1602 will display the information of body temperature and heart rate. Keywords: Piezoelectric sensors;control circuit;counters;Multisim2001 simulation software control circuit. -II

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

基于单片机的温度报警器解读

基于STC89C51的温度报警器设计 一.设计背景 温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。温度控制电路在工农业生产中有着广泛的应用。日常生活中也可以见到,如电冰箱的自动制冷,空调器的自动控制等等。在工业生产中,温度、压力、流量和液位是四种最常见的过程变量。其中,温度是一个非常重要的过程变量。例如:在冶金工业、化工工业、电力工业、机械加工和食品加工等许多领域,都需要对各种加热炉、热处理炉、反应炉和锅炉的温度进行监控。然而,用常规的监控方法,潜力是有限的,难以满足较高的性能要求。采用单片机来对它们进行监控不仅具有监控方便、简单和灵活性大的优点,而且可以大幅度提高被测温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的监控问题是一个工业生产中经常会遇到的监控问题。现代社会是信息化的社会,随着安全化程度的日益提高,而通过温度报警器及时报警,避免不必要的损失。 二.设计功能介绍 此次要设计的是一个温度报警器,DS18B20采集温度数据送到单片机,单片机根据收到的数据判断是否超过报警界限,如果超过做出报警响应,报警界限可调。12864显示单片机收到的数据。 三.主要器件简介 MCS-51简介 8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: ·中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 .数据存储器(RAM) 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

相关主题