当前位置:文档之家› 51系列单片机闭环温度控制实验

51系列单片机闭环温度控制实验

51系列单片机闭环温度控制实验
51系列单片机闭环温度控制实验

51系列单片机闭环温度控制实验

(一)、系统的总体设计

1.1 设计背景

温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人工操51系列单片机直流电机闭环调速实验劳动强度大。即使有些用户采用半导体二极管作温度传感器,但由于其互换性差,效果也不理想。在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。对工业生产可靠进行造成影响,甚至操作人员的安全。为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。本设计由于采用了新型单片机对温度进行控制,以其测量精度高,操作简单。可运行性强,价格低廉等优点,特别适用于生活,医疗,工业生产等方面的温度测量及控制。

本设计是一个数字温度测量及控制系统,能测柜内的温度,并能在超限的情况下进行控制、调整,并报警。保证环境保持在限定的温度中。

1.2 电路的总体工作原理

温度控制系统采用AT89S51八位机作为微处理单元进行控制。采用4X4键盘把设定温度的最高值和最低值存入单片机的数据存储器,还可以通过键盘完成温度检测功能的转换。温度传感器把采集的信号与单片机里的数据相比较来控制温度控制器。

系统框图如图1.1:

AT89S51为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89S51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器为点阵字符LCD,1602液晶模块。检测范围5摄氏度到60摄氏度。本系统除了显示温度以外还可以设置一个温度值,对所测温度进行监控,当温度高于或低于设定温度时,开始报警并启动相应程序(温度高于设定温度时,风扇开;当温度低于设定温度时,加热器开)。

中央微处理器AT89S51:AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80S51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率,并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式。AT89S51单片机综合了微型处理器的基本功能。按照实际需要,同时也考虑到设计成本与整个系统的精巧性,所以在本系统中就选用价格较低、工作稳定的AT89S51单片机作为整个系统的控制器。

二、方案论证

本章主要对毕业设计的题目进行了分析,根据要实现的功能,综合比较几种设计方法,提出了实现系统功能的最佳方案。

2.1 题目分析

本设计是一个数字温度控制系统,能测量温度,并能在超限的情况下进行控制、调整,并报警。

2.1.1 具体指标

正常工作温度范围: 5℃~60℃

温度误差:<1℃

2.1.2 具体控制要求

根据设计的要求,要利用温度传感器实时温度。当温度高于设定的温度时(60℃),打开降温装置进行调整使温度在设定的范围内。当温度低于设定的温度时(5℃),打开升温装置进行调整使温度在设定的范围内。同时要求能设定温度。毕业设计的主要任务是能对温度进行自动的检测和控制。设计中采用单片机来控制温度,因此要有温

度的采集电路,键盘显示电路,温控电路,报警电路等几个部分。

要实现系统的设计要用到的知识点有单片机的原理及其应用,温度传感器的原理和应用,及键盘和显示电路的设计等。

2.2 温度传感器的选择

2.2.1 采用模拟集成温度传感器

集成传感器是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成温度传感器,它是将温度传感器集成在一个芯片上、可完成温度测量及模拟信号输出功能的专用IC。模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差

小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。图2-1是AD590用于测量热力学温度的基本应用电路。因为流过AD590的电流与热力学温度成正比,当电阻R1和电位

V随温度的变化为1mV/K。但由于AD590的器R2的电阻之和为1kΩ时,输出电压O

增益有偏差,电阻也有误差,因此应对电路进行调整。调整的方法为:把AD590放

V=273.2mV。或在室温下(25℃)条件下调整电于冰水混合物中,调整电位器R2,使0

V=273.2+25=298.2(mV)。但这样调整只可保证在0℃或25℃附近有较高精位器,使0

度。

AD590把被测温度转换为电流再通过放大器和A/D转换器,输出数字量送给单片机进行温度控制。

图2.1 基于AD590测温基本应用电路

2.2.2 采用数字单片智能温度传感器

智能温度传感器(亦称数字温度传感器)是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,已开发出多种智能温度传感器系列产品。智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU). 智能温度传感器的总线技术也实现了标准化、规范化,所采用的总线主要有单线(1-WIRE)总线、I2C总线、SMBUS总线和SPI总线。温度传感器作为从机可通过专用总线接口与主机进行通信。智能温度控制器是在智能温度传感器的基础上发展而成的。典型产品有DS18B20,智能温度控制器适配各种微控制器,构成智能化温控系统;它们还可以脱离微控制器单独工作,自行构成一个温控仪。DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可

达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为 -55℃~+125℃,在-10℃~+85℃范围内,精度为0.5℃。DS18B20的精度较差为±0.2℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量。如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。

DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的“DS1820”体积更小、更经济、更灵活。使您可以充分发挥“一线总线”的长处。DS18B20、DS1822“一线总线”数字化温度传感器。

由于DS18B20将温度传感器、信号放大调理、A/D转换、接口全部集成于一芯片,与单片机连接简单、方便,与AD590相比是更新一代的温度传感器,所以温度传感器采用DS18B20。

2.3 显示器的选择

2.3.1 LED显示器

采用传统的七段数码LED显示器。LED虽然价格便宜,但在现代的许多仪表、各种电子产品中逐渐被LCD所取代。

2.3.2 LCD液晶屏

采用LCD液晶屏进行显示。LCD液晶显示器是一种低压、微功耗的显示器件,只要2~3伏就可以工作,工作电流仅为几微安,是任何显示器无法比拟的,同时可以显示大量信息,除数字外,还可以显示文字、曲线,比传统的数码LED显示器显示的界面有了质的提高。在仪表和低功耗应用系统中得到了广泛的应用。优点为:

1 显示质量高,由于液晶显示器的每一个点收到信号后就一直保持那种色彩和亮度恒定发光,因此液晶显示器的画质高而且不会闪烁。

2 数字式接口,液晶显示器都是数字式的,和单片机的接口简单操作也很方便。

3 功率消耗小,相比而言液晶显示器的主要功耗在内部电极和驱动IC上,因而

耗电量比其他器件要小很多。

虽然LCD显示器的价格比数码管要贵,但它的显示效果好,是当今显示器的主流,所以采用LCD 作为显示器。

2.4 单片机的选择

2.4.1 采用凌阳单片机

随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(DSP,Digital SignalProcessing)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的CPU内核采用凌阳最新推出的μ’nSP?(Microcontroller and Signal Processor)16位微处理器芯片(以下简称μ’nSP?)。围绕μ’nSP?所形成的16位μ’nSP?系列单片机(以下简称μ’nSP?家族)采用的是模块式集成结构,它以μ’nSP?内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件。μ’nSP?内核是一个通用的核结构。除此之外的其它功能模块均为可选结构,亦即这种结构可大可小或可有可无。借助这种通用结构附加可选结构的积木式的构成,便可形成各种不同系列派生产品,以适合不同的应用场合。这样做无疑会使每一种派生产品具有更强的功能和更低的成本。

利用凌阳单片机有一定的好处凌阳的优势是硬件性能,抗干扰能力强,但凌阳单片机我们没有系统的学习,这对于刚接触单片机的我们来说不是很容易上手,其价格也要比89S51昂贵一些,因此我们并没有将其作为首选。

2.4.2 采用AT89C51单片机

由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。

单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两个分支。通用计算机系统主要用于海量高速数值运算,不必兼顾控制功能,其数据总线的宽度不断更新,从8位、16位迅速过渡到32位、64位,并且不断提高运算速度和完善通用操作系统,以突出其高速海量数值运算的能力,在数据处理、模拟仿真、人工智能、图像处理、多媒体、网络通信中得到了广泛应用;单片机作为最典型的嵌入式系统,由于其微小的体积和极低的成本,广泛应用于家用电器、机器人、仪器仪表、工业控制单元、办公自动化设备以及通信产品中,成为现代电子系统中最重要的

智能化工具。因此,单片机的出现大大促进了现代计算机技术的飞速发展,成为近代计算机技术发展史上一个重要里程碑。

由于MCS系列单片机集成了几乎完善的中央处理单元,处理功能强,中央处理单元中集成了方便灵活的专用寄存器,这给我们利用单片机提供了极大的便利。单片机把微型计算机的主要部件都集成在一块芯片上,使得数据传送距离大大缩短,运行速度更快,可靠性更高,抗干扰能力更强。由于属于芯片化的微型计算机,各功能部件在芯片中的布局和结构达到最优化,工作也相对稳定。51的优点是价钱便宜,I/O 口多,程序空间大。因此,测控系统中,使用51单片机是最理想的选择。单片机属于典型的嵌入式系统,所以它是低端控制系统最佳器件。单片机的开发环境要求较低,软件资源十分丰富,开发工具和语言也大大简化。单片机的典型代表是Intel公司在20世纪80年代初研制出来的MCS51系列单片机。MCS51单片机很快在我国得到广泛的推广应用,成为电子系统中最普遍的应用手段,并在工业控制、交通运输、家用电器、仪器仪表等领域取得了大量应用成果。

以MCS-51技术核心为主导的单片机已成为许多厂家、电气公司竞相选用的对象,并以此为基核,推出许多与MCS51有极好兼容性的CHMOS单片机,同时增加了一些新的功能,所以用AT89C51。

三、系统的硬件设计

3.1 单片机最小系统的设计

目前的单片机开发系统只能够仿真单片机,却没有给用户提供一个通用的最小系统。由设计的要求,只要做很小集成度的最小系统应用在一些小的控制单元。其应用特点是:

(1)全部I/O口线均可供用户使用。

(2)内部存储器容量有限(只有4KB地址空间)。

(3)应用系统开发具有特殊性

图 3.1 最小系统图

单片机最小系统如图3.1所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入,P3口具有第二功能为系统提供一些控制信号。时钟电路用于产生MCS-51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。MCS-51内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体的振荡频率为12MHz。

把EA脚接高电平,单片机访问片内程序存储器,但在PC值超过0FFFH(4Kbyte 地址范围)时,将自动转向执行外部程序存储器内的程序。

MCS-51的复位是由外部的复位电路来实现。采用最简单的外部按键复位电路。按键自动复位是通过外部复位电路的来实现的.我们选用时钟频率为12MHz,C1取47μf。

3.2 温度传感和控制电路设计

TLC5615是带有缓冲基准输入(高阻抗)的10位电压输出数字--模拟转换器(DAC)。DAC具有基准电压两倍的输出电压范围,且DAC是单调变化的。器件使用简单,用单5V电源工作。器件具有上电复位(power-on-reset)功能以确保可重复启动。PTC_NICKEL作为感应器件,TLC2543 12位开关电容型逐次逼近模数转换器,它具有

三个控制输入端,采用简单的3线SPI串行接口可方便地与微机进行连接,是12位数据采集系统的最佳选择器件之一。本文介绍了该芯片的功能、时序,并给出了8051单片机的接口电路。

图 3.3 温度传感控制电路图

3.4 键盘电路的设计

用AT89C51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;液晶显示器上显示每个按键的“0-F”序号。对应的按键的序号排列如图3.5

图3.4中微处理单元是AT89C51单片机,X1和X2接12M的两脚晶振,接两个30PF的起振电容,J1是上拉电阻.单片机的P1口8位引脚与行列式键盘输出脚相连,控制和检测行列式键盘的输入.行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,有键按下时,行线的电平状态将由与此行线相连接的列线的电平决定.键盘输入的信息主要进程是:

1 CPU判断是否有键按下.

2 确定是按下的是哪个键.

3 把此键所代表的信息翻译成计算机可以识别的代码或者其他的特征符号.

图 3.4 键盘硬件电路图

3.5 显示电路的设计

液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。

根据显示内容和方式的不同可以分为,数显LCD,点阵字符LCD,点阵图形LCD 在此设计中我们采用点阵字符LCD,这里采用常用的2行16个字的1602液晶模块。

1602采用标准的14脚接口,其中:

第1脚:VSS为地电源第2脚:VDD接5V正电源

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

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15~16脚:空脚。

与单片机的连接如图3.7所示。

图 3.5 液晶显示电路图

四、系统的软件设计

4.1 系统的主程序设计

主程序是系统的监控程序,在程序运行的过程中必须先经过初始化,包括键盘程序,中断程序,以及各个控制端口的初始化工作。流程图如 4.1 所示。系统在初始化完成后就进入温度测量程序,实时的测量当前的温度并通过显示电路在LCD上显示。程序中以中断的方式来重新设定温度的上下限。根据硬件设计完成对温度的控制。按下4*4键盘上的A键可以设定温度上限,按下B键可以设定温度下限。系统软件设计的总体流程图

图 4.1 系统总体设计流程图

4.2 中断程序的设计

MCS-51单片的中断系统有5个中断请求源,用户可以用关中断指令“CLR EA”来屏蔽所有的中断请求,也可以用开中断指令“SET EA”来允许CPU接收中断请求。在本设计中我们选用INTO来作为中断请求源。

INT1—外部中断请求0,由INTO引脚输入,中断请求标志为IE0。

ORG 0000H

LJMP MAIN

ORG 0003H (中断入口地址)

JMP INT0

ORG 0038H(主程序的起始地址)

MAIN: (主程序)

MCS-51响应中断后,就进入中断服务程序,中断程序的基本流程图如下图

图 4.2 中断服务程序基本流程

五、系统的控制

本章对系统的硬件控制进行概述。分别对温度控制电路,报警电路及LCD液晶显示电路进行说明。

5.1 温控电路及报警电路的控制

图 5.1 硬件报警电路

5.2 LCD1602显示电路的控制

把8根数据线和P2口连接,把3根控制线和P2.5、P2.6、P2.7连接。给VCC端加上+5V的电压,GND端接地。VEE端的驱动电压不要过大,要调节滑动变阻器使VEE在0.7伏以下显示器才能工作。

5.3 使用说明

键盘中阿拉伯数字0~9是数据输入键,A键是写上限的功能键,B键是写下限的功能键,C键是取消键,其他的键置空。

六、全文总结

这次毕业设计基本的完成了任务书的要求,实现了温度的控制。通过测试表明系统的设计是正确的,可行的。但是由于设计者的设计经验和知识水平有限,系统还存在许多不足和缺陷。

在本次毕业设计中,不仅自己付出了很多心血,也得到了很多老师和同学的支持,

为我创造了很多有利条件,在这里,我要特别感谢我的导师单丹老师,在毕业设计的开始,单老师给了我很多帮助,指导我了解了很多单片机的相关知识,并在当我设计遇到困难时,及时的给予帮助和鼓励,同时,对我其他学科的鼓励也渗透在毕业设计的同时,给了我莫大的信心,为我顺利完成毕业设计起到了非常重要的作用。同时。我还要感谢实习组及实验室的所有老师,为我的毕业设计提供了非常便利的条件。最后还要感谢帮助我的同学,在我遇到困难时给予我耐心的帮助。

再次对在本次毕业设计中给予过我帮助的老师和同学至上我最真挚的谢意。

七、参考文献

[1] 沙占友. 集成温度传感器原理与应用. 北京:机械工业出版社,2002,84~95.

[2] 刘君华. 智能传感器系统. 西安:西安电子科技大学出版社,1999,83~105.

[3] 沙占友. 智能化传感器原理与应用. 北京:电子工业出版社,2004,99~108.

[4] 赵负图. 传感器集成电路手册. 北京:化学工业出版社,2002,692~703.

[5] 张毅刚. MCS-51单片机原理及应用. 哈尔滨:哈尔滨工业大学出版社,2004,81~94

[6] 李玉峰,倪虹霞MCS-51系列单片机原理与接口技术. 北京:人民邮电出版社,2004,187~216.

[7] 林伸茂. 8051单片机彻底研究经验篇. 北京:人民邮电出版社,2004,7~14.

[8] 沙占友. 单片机外围电路设计. 北京:电子工业出版社,2003,37~48.

[9] 何希才. 传感器及其应用电路. 北京:电子工业出版社,2001,36~47.

[10] Intel:MCS-51 Family of Single Chip Mirocomputers User’s Manual,1990,3~9.

[11] 吴金戌,沈庆阳,郭庭吉.《8051单片机实践与应用》[M].北京:清华大学出版社,2002.

[12] 高峰,《单片微型计算机与接口技术》[M].北京:科学出版社,2003.

附录:实验程序

#include

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

/*cch test res 2013 12 12*/

sbit led = P3^7;

uint da=0; //cch test

uchar flag = 0;

/*TLC5615 DA*/

sbit dacs = P3^2;

sbit daclk = P3^3;

sbit dadin = P3^1;

sbit dadout = P3^0;

/*LCD1602 parameter*/

sbit lcden = P2^0; //LCD can port

sbit lcdrs = P2^1; //LCD data command select ports uchar code table0[] = ".";

uchar code table1[] = "CPID";

uchar code table2[10]="0123456789";

uchar code table3[10]=" ";

uint num;

/*Control the heating thermistor port*/

sbit Control = P2^2; //temperature control

uint Control_num = 20;

/*TLC2543 12 serial ADC*/

sbit ADOUT = P2^3;

sbit ADIN = P2^4;

sbit ADCS = P2^5;

sbit ADCLK = P2^6;

sbit ADEOC = P2^7;

/*PID paremeters of the strture*/

typedef struct PID{

uint SetPoint;

uint Proportion; //P

uint Integral; //I

uint Derivative; //D

uint LastError; //Error[-1]

uint PrevError; //Error[-2]

uint SumError;

}PID;

struct PID spid; //PID Control Structure

uint rout; //PID Response (output)

uint rin; //PID Feedback (input)

uchar high_time,low_time; //占空比

uint set_temper; //仿真预设实际有AD采样电阻的电压确定uint temper;

uint s;

/*The function name*/

uint key,k;

uchar key_scan();

void delay(uint n);

void PIDInit(PID *PP);

uint PIDCalc(PID *pp,uint NextPoint);

void write_PID(uchar add,uint date);

void key_process();

uint read2543(uchar port);

void write_com(uchar com); //LCD write command function

void write_data(uchar date); //LCD write data function

void write_ADtemperture(uchar add,uint date); //The system default value void write_ADtest(uchar add,uint date);//Actual temperture testing system void lcd1602_init();

void Time0_init();

void compare_temper();

void DA_Conver(uint DA_V alue);

void main()

{

unsigned long int ad_out=0;

uchar i;

high_time=50;

low_time=50;

PIDInit(&spid); //Initalize structure

spid.Proportion = 9; //set PID Coefficients

spid.Integral = 8;

spid.Derivative = 6;

spid.SetPoint = 100; //set PID SetPoint

lcd1602_init();

// Time0_init();

led = 0; //cch test res 2013 12 12

while(1)

{

key_scan();

delay(10);

key_process();

write_ADtemperture(8,read2543(0x00));

write_ADtest(8,read2543(0x10));

set_temper = read2543(0x00); //get temper //通道0:port=0x00

temper = read2543(0x10); //通道1:port=0x10

if(flag == 0)

{

compare_temper();

}

}

}

void delay(uint n)

{

uint i;

for(i=110;i>0;i--)

for(n;n>0;n--) ;

}

uchar key_scan()

{

uint temp1,temp2;

P1 = 0x0f; //Line set high

temp1 = P1;

if(temp1 != 0x0f) //keys pressed

{

delay(5);

temp1 = P1; // delay shake elimination

if(temp1 != 0x0f)

{

P1 = 0xf0; //row set high

temp2 = P1;

if(temp1 == 0x0e) //first line

{

k = 0;

switch(temp2)

{

case 0xe0: //first lie

key = 1; break;

case 0xd0: //second

key = 2; break;

case 0xb0:

key = 3; break;

case 0x70:

key = 4; break;

}

}

else if(temp1 == 0x0d)

{

k = 0;

switch(temp2)

{

case 0xe0: //first lie

key = 5; break;

case 0xd0: //second

key = 6; break;

key = 7; break;

case 0x70:

key = 8; break;

}

}

else if(temp1 == 0x0b)

{

k = 0;

switch(temp2)

{

case 0xe0: //first lie

key = 9; break;

case 0xd0: //second

key = 10; break;

case 0xb0:

key = 11; break;

case 0x70:

key = 12; break;

}

}

else if(temp1 == 0x07)

{

k = 0;

switch(temp2)

{

case 0xe0: //first lie

key = 13; break;

case 0xd0: //second

key = 14; break;

西南科技大学单片机原理实实验四及代码

2.1 实验四中断实验 一、实验目的 加深对MCS-51单片机中断系统基础知识的理解。 二、实验设备 Keil C单片机程序开发软件。 Proteus仿真软件 DP51-PROC单片机综合实验仪。 三、实验内容和步骤 内容: 利用外部中断输入引脚(以中断方式)控制步进电机的转动。要求:每产生1次中断,步进电机只能步进1步。 实验程序: 使用INT0的中断服务程序控制步进电机正向步进;使用INT1中断服务程序控制步进电机反向步进。 设计思路: ①主程序在完成对INT0和INT1的设置后,可进入死循环(等待中断请求)。 ②为便于实验观察和操作,设INT0和INT1中断触发方式为边沿。 ③步进电机的转动控制由外部中断的服务程序来实现。 ④当前步进电机的相位通电状态信息可以使用片内RAM中的一个字节单元来存储。 设计参考: ①主程序需要设置的中断控制位如下: IT0和IT1 外部中断触发方式控制 0=电平 1=边沿(下降沿) EX0和EX1 外部中断允许控制0=屏蔽 1=允许 PX0和PX1 中断优先级级别控制0=低级 1=高级 在同级别(PX0=PX1)时INT0的优先级高于INT1 EA 中断允许总控制0=屏蔽 1=允 许 ②外部中断服务程序的入口地址: 0003H 外部中断0 0013H 外部中断1 预习: 1)编写好实验程序。 2)根据编写的程序和实验步骤的要求制定调试仿真的操作方案。

实验单元电路: 1) 步进电机驱动电路。 步进电机共有4相,当以A →B →C →D →A →B …的顺序依次通电时,电机就会正转,若按相反的顺序依次通电,电机就会反转。每顺序切换一相(1步),电机旋转18°,切换的频率决定电机的转速(切换的频率不能超过电机的最大响应频率)。根据图 2.4中的电路,当BA (插孔)输入为高时,对应的A 相通电。 2) SW 电路 开关SW X 拨在下方时,输出端SWX 输出低电平,开关SW X 拨在上方时,输出端SWX 输出高电平。其中SW1和SW3具备消除抖动电路,这样,SW1或SW3每上下拨动一次,输出端产生单一的正脉冲(上升沿在前,下降沿在后)。 3) LED 和KEY 电路 步骤: 1) 在S : \ STUDY \ Keil 文件夹中新建Ex04文件夹(该文件夹用于保存本次实验的所 有内容),通过网上邻居将服务器上本次实验共享文件夹下的所有文件拷贝到S : \ STUDY \ Keil \ Ex04文件夹中。 2) 在Keil C 中创建一个新工程,新工程保存为S : \ STUDY \ Keil \ Ex04\Ex04.uv2,然 后选择单片机型号为Generic 中的8051。 图2.5 单脉冲电路原理图 +5V +5V 图2.4 步进电机驱动电路原理图 LED1 LED8 +5V 8 图2.6 LED 和KEY 电路 +5V 8

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

80c51单片机交通灯课程设计报告1.pdf

80C51单片机交通灯课程设计报告 目录 第一章引言 (3) 第二章单片机概述 (4) 第三章芯片介绍 (6) 3.1AT89S51单片机介绍 (6) 3.1.1简介 (6) 3.1.2主要管脚介绍 (6) 3.274LS164介绍 (8) 3.3共阳数码管介绍 (8) 3.3.1分类简介 (8) 图3.3LED数码管引脚定义 (9) 3.3.2驱动方式 (9) 3.3.3主要参数 (10) 3.3.4应用范围 (10) 第四章系统硬件设计 (11) 4.1硬件设计要求 (11) 4.2硬件设计所用元器件 (11) 4.3硬件设计图 (11) 4.4设计流程图 (12) 第五章系统软件设计 (13) 5.1流程图 (13)

5.2程序设计 (14) 第六章结论 (16) 参考文献 (18)

第一章引言 在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。 本文为了实现交通道路的管理,力求交通管理先进性、科学化.分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力。

51单片机20个实验-代码详细

第一章单片机系统板说明 一、概述 单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。 该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。为适应市场上多种单片机器件的应用,该系统采用“单片机板+外围扩展板”结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了各院校不同的教学需求。 二、单片机板简介 本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。因此构成单片机实验系统。 1、主要技术参数 (1)MSC-51单片机板 板上配有ATMEL公司的STC89C51芯片。 STC89C51资源:32个I/O口;封装DIP40。 STC89C51开发软件:KEIL C51。 2、MSC-51单片机结构 (1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。 (2)单片机板左上侧有一个串口,用于下载程序。 (3)单片机板的四周是所有I/O引脚的插孔,旁边标有I/0引脚的脚引。 (4)单片机板与各个模块配合使用时,可形成—个完整的实验系统。 三、母板简介 主要技术参数 (1)实验系统电源 实验系统置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。 主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.doczj.com/doc/b513509535.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/b513509535.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单片机的交通灯设计 专业:机械设计制造及其自动化 学号: 指导教师:邵添 设计日期: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转换电路,感温电路比较麻烦。 方案设计框图如下:

51单片机实例(含详细代码说明)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248=498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时, 延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平, 即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5.程序框图 如图4.1.2所示

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单片机流水灯实验报告

51单片机流水灯试验 一、实验目的 1.了解51单片机的引脚结构。 2.根据所学汇编语言编写代码实现LED灯的流水功能。 3.利用开发板下载hex文件后验证功能。 二、实验器材 个人电脑,80c51单片机,开发板 三、实验原理 单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用rl或rr a实现位的转换。 A寄存器的位经过rr a之后转换如下所示: 然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。 四、实验电路图

五、通过仿真实验正确性 代码如下:ORG 0 MOV A,#00000001B LOOP:MOV P2,A RL A ACALL DELAY SJMP LOOP DELAY:MOV R1,#255 DEL2:MOV R2,#250 DEL1:DJNZ R2,DEL1 DJNZ R1,DEL2 RET End 实验结果:

六、实验总结 这次试验我通过Proteus仿真实现对流水灯功能的实现。受益匪浅,对80c51的功能和结构有了深层次的了解,我深刻的明白,要想完全了解c51还有一定距离,但我会一如既往的同困难作斗争。在实验中,我遇到了不少困难,比如不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。这些错误令我明白以后在试验中要步步细心,避免出错。

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)

51单片机实验程序

3 3 3 用查表方式编写y=x1 +x2 +x3 。(x 为0~9 的整数) #include void main() { int code a[10]={0,1,8,27,64,125,216,343,512,729}; //将0~9 对应的每位数字的三次方的值存入code中,code为程序存储器,当所存的值在0~255 或-128~+127 之间的话就用char ,而现在的值明显超过这个范围,用int 较合适。int 的范围是0~65535 或-32768~32767 。 int y,x1,x2,x3; //此处定义根据习惯,也可写成char x1,x2,x3 但是变量y 一定要用int 来定义。 x1=2; x2=4; x3=9; //x1,x2,x3 三个的值是自定的,只要是0~9 当中的数值皆可,也可重复。 y=a[x1]+a[x2]+a[x3]; while(1); //单片机的程序不能停,这步就相当于无限循环的指令,循环的内容为空白。 } //结果的查询在Keilvision 软件内部,在仿真界面点击右下角(一般初始位置是右下角)的watch 的框架内双击“double-click or F2 to add”文字输入y 后按回车,右侧会显示其16 进制数值如0x34,鼠标右键该十六进制,选择第一行的decimal,可查看对应的10 进制数。 1、有10 个8 位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的 数据(1 的个数为偶数)都要存到内RAM50H 开始的数据区中。试编写有关程序。 #include void main() { int a[10]={0,1,5,20,24,54,64,88,101,105}; // 将所要处理的值存入RAM 中,这些可以根据个人随意设定,但建议不要超过0~255 的范围。 char i; // 定义一个变量 char *q=0x50; // 定义一个指针*q 指向内部0x50 这个地址。 for(i=9;i>=0;i--) //9~0 循环,共十次,也可以用for(i=0;i<10;i++) { ACC=a[i]; //将a[i] 的值赋给累加器ACC if (P==0) //PSW0 位上的奇偶校验位,如果累加器ACC 内数值1 的个数为偶数那么P 为0,若为奇数,P 为1。这里的P 是大写的。 { *q=a[i]; q++; // 每赋一个值,指针挪一个位置指向下一个。 } } while(1); //同实验一,程序不能停。 }

(完整word版)51单片机课程设计实验报告

51单片机课程设计报告 学院: 专业班级: 姓名: 指导教师: 设计时间:

51单片机课程设计 一、设计任务与要求 1.任务:制作并调试51单片机学习板 2.要求: (1)了解并能识别学习板上的各种元器件,会读元器件标示; (2)会看电路原理图; (3)制作51单片机学习板; (4)学会使用Keil C软件下载调试程序; 用调试程序将51单片机学习板调试成功。 二、总原理图及元器件清单 1.总原理图 2.元件清单 三、模块电路分析 1. 最小系统: 单片机最小系统电路分为振荡电路和复位电路, 振荡电路选用12MHz 高精度晶振, 振荡电容选用22p和30p 独石电容;

图 1 图 2 复位电路使用RC 电路,使用普通的电解电容与金属膜电阻即可; 图 3 当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST 为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST 为低电平。正常工作为低电平,高电平复位。 2. 显示模块: 分析发光二极管显示电路: 图 4 发光二极管显示电路分析:它是半导体二极管的一种,可以把电能转化成光能,常简写为

LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,产生自发辐射的荧光。图中一共有五个发光二极管其中一个为电源指示灯,当学习板通电时会发光以指示状态。其余四个为功能状态指示灯,实际作用与学习板有关 分析数码管显示电路 图 5 数码管显示电路分析:数码管按段数分为七段数码管和八段数码管,图中所用为八段数码管(比七段管多了一个小数点显示位),按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管.共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。数码管主要用来显示经电路板处理后的程序的运行结果。图中使用了八个八段数码管,可以显示八个0-15的数字。使用数码管可以直观的得到程序运行所显示的结果.也可以显示预置在学习板上的程序,主要通过16个开关来控制。 四、硬件调试 1、是否短路 用万用表检查P2两端是短路。电阻为0,则短路,电阻为一适值,电路正常。 2、焊接顺序 焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。 3、器件功能 1)检查原理图连接是否正确 2)检查原理图与PCB图是否一致 3)检查原理图与器件的DATASHEET上引脚是否一致 4)用万用表检查是否有虚焊,引脚短路现象 5)查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确 6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的 7)飞线。用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出现在什么地方。 1、详细描述硬件安装过程中出现的故障现象,并作故障分析,及解决方法。 六、软件调试

C51单片机实验报告

实验报告册 课程名称:单片机原理与应用B 指导老师:xxx 班级:xxx 姓名:xxx 学号:xxx 学期:20 —20 学年第学期南京农业大学工学院教务处印

实验目录实验一:指示灯/开关控制器 实验二:指示灯循环控制 实验三:指示灯/数码管的中断控制 实验四:电子秒表显示器 实验五:双机通信

姓名:学号:班级:成绩: 实验名称:指示灯/开关控制器 一、实验目的: 学习51单片机I/O口基本输入/输出功能,掌握C语言的编程与调试方法。 二、实验原理: 实验电路原理图如图所示,图中输入电路由外接在P1口的8只拨动开关组成;输入电路由外接在P2口的8只低电平驱动的发光二极管组成。此外,还包括时钟电路、复位电路和片选电路。 在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的亮灯状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。 三、软件编程原理为; (1)8只发光二极管整体闪烁3次

亮灯:向P2口送入数值0; 灭灯:向P2口送入数值0FFH; 闪烁3次:循环3次; 闪烁快慢:由软件延时时间决定。 (2)根据开关状态控制灯亮或灯灭 开关控制灯:将P1口(即开关状态)内容送入P2口;无限持续:无条件循环。 四、实验结果图: 灯泡闪烁:

按下按键1、3、5、7:

经检验,其余按键按下时亦符合题目要求。 五、实验程序: #include"reg51.h" void delay(unsigned char time) { unsigned int j=15000; for(;time>0;time--) for(;j>0;j--); } void main(){ key,char i; for(i=0;i<3;i++) { P2=0x00; delay(500); P2=0xff; delay(500) } while(1) { P2=P3;

89C51单片机课程设计之秒表设计实验报告.

这里可以加学校LOGAL 单片机课程设计报告 院系:12级物信系 班别:光信息科学与技术7班 课程名称:秒表设计 姓名:龚俊才欧一景 学号:1210407033 1210407041 指导老师:张涛 2011.12.23

目录 1课程设计的目的和任务 1.1 单片机秒表课程设计的概述 1.2课程设计思路及描述 1.3 课程设计任务和要求 2硬件与软件的设计流程 2.1系统硬件方案设计 2.2软件方案设计 3 程序编写流程及课程设计效果3.1源程序及注释 3.2原理图分析 3.3课程设计效果 4 心得体会 5 相关查阅资料

1. 课程设计的目的和任务 1.1单片机秒表课程设计的概述 一、课程设计题目 秒表系统设计——用STC89C52RC设计一个4位LED数码显示“秒表”,显示时间为 00.00~99.99秒,每10毫秒自动加一,每1000毫秒自动加一秒。 二、增加功能 增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。 三、课程设计的难点 单片机电子秒表需要解决三个主要问题,一是有关单片机定时器的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。 四、课程设计内容提要 本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有两个开关按键:其中key1按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key2按键按下去时数码管清零,复位为“00.00”. 五、课程设计的意义 1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步 的了解。 2)掌握定时器、外部中断的设置和编程原理。 3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的 计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义 六、课程设计仪器 a) 集成电路芯片8051,七段数码管,89C51单片机开发板 b) MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2)。

心率计51单片机代码.doc

#include "STC12C5A.h" #include "SMG.h" #define FSOC 24000000L #define T1MS (65536-FSOC/12/1000) sbit LED0 = P0^0; unsigned int count=0;计时标志数 unsigned int xinlv=0;心率计算器 unsigned char seg[10] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; sbit HC595_RST = P0^6; sbit HC595_SCK = P0^4; sbit HC595_RCK = P0^5; sbit HC595_DAT = P0^7;

外部中断代码void Exti0_Init() { IT0 = 1; //下降沿触发 TCON.0=1 EX0 = 1; //开外部中断0 IE.0=1 EA = 1; //开总中断 } void Exit0_ISR() interrupt 0 { Xinlv++; LED0=0; delay_ms(2); LED0=1; } 定时器代码void Timer0_Init() { TMOD = 0x01; TR0 = 1; //16位定时器工作方式 TH0 = T1MS>>8; TL0 = T1MS; ET0 = 1; //打开定时器0中断 EA = 1; //打开总中断 } void Timer0_ISR() interrupt 1 { unsigned int temp; count++; TH0 = T1MS>>8; TL0 = T1MS; if(count=5000) temp=Xinlv; for{} SMG_Display(temp); }

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. 改变加数和被加数,测试程序的执行结果。 实验三数据排序实验

51单片机电子时钟课程设计报告报告

目录 第一部分设计任务和要求 1.1单片机课程设计内 容 (2) 1.2单片机课程设计要求………………………………………………… 2 1.3系统运行流程………………………………………………………… 2 第二部分设计方案 2.1 总体设计方案说明 (2) 2.2 系统方框图 (3) 2.3 系统流程图 (3) 第三部分主要器材及基本简介 3.1 主要器材 (4) 3.2 主要器材简介 (4) 第四部分系统硬件设计 4.1 最小系统 (6) 4.2 LCD显示电路 (6) 4.3 键盘输入电路 (7) 4.4 蜂鸣器和LED灯电路 (7)

第五部分仿真电路图与仿真结果 (8) 第六部分课程设计总结 (8) 第七部分参考文献 (9) 附录A 实物图 附录B 系统源程序 第一部分设计任务和要求 1.1 单片机课程设计内容 利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。 1.2 单片机课程设计要求 1.能实现年、月、日、星期、时、分、秒的显示; 2.能实现调时功能; 3.能实现12/24小时制切换; 4.能实现8:00—22:00整点报时功能。 1.3 系统运行流程 程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。若没到则循环执行。计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。调时闪烁中断服务程序

用于被调单元的闪烁显示。调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。实现了对时间的设置和修改、LCD显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。第二部分设计方案 2.1 总体设计方案说明 1.程序设计及调试 根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。 2.硬件焊接及调试 根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。3.后期处理 对设计过程进行总结,完成设计报告。 2.2 单片机系统方框图

51单片机蜂鸣器奏乐实验汇编代码

LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5:NOP MOV R6,A INC DPTR MOV A,#0 MOVC A,@A+DPTR MOV R7,A SETB TR0 MUSIC2:NOP CPL P3.2 MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 MOV 20H,#00H INC DPTR LJMP MUSIC1 MUSIC3:NOP CLR TR0 MOV R2,#0DH

MOV R2,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1 END0:NOP MOV R2,#0FFH MUSIC6:MOV R3,#00H LJMP MUSIC0 DEL:NOP DEL3:MOV R4,#02H DEL4:NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: DB 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H DB 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H DB 30H, 1CH, 10H , 18H DB 20H, 15H, 20H , 1CH DB 20H, 20H, 20H , 26H DB 40H, 20H , 20H , 2BH DB 20H, 26H, 20H , 20H DB 20H, 30H , 80H , 0FFH DB 20H, 20H, 1CH , 10H DB 18H, 10H, 20H , 20H DB 26H, 20H , 2BH , 20H DB 30H, 20H , 2BH , 40H DB 20H, 20H , 1CH , 10H DB 18H, 10H, 20H, 20H DB 26H, 20H , 2BH, 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H DB 26H, 40H, 20H , 20H

51单片机信号发生器实验报告

微控制器技术创新设计实验报告姓名:学号:班级: 一、项目背景 信号发生器也叫做振荡器或是信号源,在现在的科技生产实践中有着广泛而重要的应用。现在的特殊波形发生器在价格上不够经济,有些昂贵。而基于AT89C51单片机的函数信号发生器可以满足此要求。根据傅里叶变换,各种波形均可以用三角函数的相关式子表示出来。函数信号发生器能够产生多种波形,如三角波、锯齿波、矩形波、方波和正弦波。 二、项目整体方案设计 可以利用单片机编程的方法来实现波形的输出。可选用AT89C51作为控制器,输出相应波形的数字信号,再用D/A 转换器输出相应波形的模拟信号。用DAC0832作为D/A转换器,再经过两级放大后输出,最终在示波器上显示。可以使用按键扫描来实现波形的变化

三、硬件设计 四、软件设计 #include #define uchar unsigned char #define uint unsigned int Const tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff}; void delay(void) { uchar i; for(i=230;i>0;i--); }

void main() { uchar i; while(1) { for(i=0;i<18;i++) { P1=tab[i]; delay(); } } } 五、实验结果

六、项目总结 通过这次实验设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。我感慨颇多,在着手设计的这段日子里,我又学到了很多东西。特别是理论联系实际。我认为掌握单片机的应用及开发技术是最基本的也是必要的。单片机是以后从事相关嵌入式研发最为基本的入门芯片。所以学好单片机是我们电子类的必要任务。通过这次单片机课程设计的顺利完成,离不开付老师指导,也离不开班上同学的耐心帮助。在此,我对所有帮助过我的老师和同学表示我真挚的感谢!

单片机实验

实验一:MCS-51单片机开发环境的应用(2学时) 实验目的: 掌握MCS-51单片机实验系统的使用,以及在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 实验要求: ⑴将数据存储器的40H~4FH的内容赋值成00H~0FH,并将40H~4FH 的内容整体复制到50H~5FH。 ⑵将数据存储器的40H~4FH的内容赋值成00H~0FH,并将两两相加之和送到50H~57H的数据空间中。 实验二:MCS-51汇编语言典型算法程序设计(2学时) 实验目的: 掌握汇编语言程序设计的方法及常用算法的实现。 实验要求: ⑴将数据存储器的40H~4FH中杂乱无序的数按降序排列。 ⑵将两个ASCII码表示的两位10进制数转换成压缩BCD码(低4位存个位,高4位存十位)。

实验三:单片机I/O实验(2学时) 实验目的: 掌握MCS-51单片机的I/O口使用方法。 实验要求: ⑴P1口作输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 ⑵P1.0,P1.1作为输入口接两个拨动开关,P1.2,P1.3作输出口接两个发光二极管,编写程序读取开关状态,将此状态在发光二极管上显示出来。 实验四:单片机定时器实验(2学时) 实验目的: 了解MCS-51单片机定时器的结构及使用方法。 实验要求: 用CPU内部定时器方式计时,实现每秒钟输出状态发生一次翻转。

实验五:单片机中断实验(2学时) 实验目的: 掌握中断控制单元的设置方法及中断的编程方法。 实验要求: ⑴用单次脉冲申请中断,在中断处理程序中对输出信号进行翻转。 ⑵用单次脉冲申请中断,要求程序中对每次中断进行计数,并将计数结果显示在发光二极管上。 实验六:单片机综合实验(4学时) 实验目的: 通过实验培养学生综合设计能力,并从整体上了解单片机的性能。实验要求: 本实验模拟交通信号灯控制,一般情况下正常显示,当有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。设急救车通过路口时间为10秒。急救车通过后,交通恢复正常。本实验需用另一台PC机上的串口调试助手(或超级终端)发送“1”,表示有急救车通过。

相关主题
相关文档 最新文档