微机测控系统课程设计
{情绪压力与情商}机油压力测试
设计
微机测控系统课程设计
指导教师签名: 年 月 日
目录
摘
要…………………………………………………………………………………………
2
1 引
言………………………………………………………………………………………3
问 题 的 提
出……………………………………………………………………………3
任 务 与 分
析……………………………………………………………………………3
2 方 案 设
计…………………………………………………………………………………4
系 统 设 计 方
案…………………………………………………………………………4
系 统 总 体 框
图…………………………………………………………………………4
3 系 统 硬 件 设
计……………………………………………………………………………5
单片机……………………………………………………………………5
微机测控系统课程设计
……………………………………………………………………………
…8
时 钟 电
路………………………………………………………………………………11
复 位 电
路………………………………………………………………………………11
一 五 压 力 传 感
器…………………………………………………………………12
液 晶 显 示
器…………………………………………………………………12
4 系 统 软 件 设
计……………………………………………………………………………一三
软件环境介绍………………………………………………………………
一三
软 件 环 境 介
绍………………………………………………………14
软件环境介绍………………………………………………………………
一五
程序流程图…………………………………………………………………………
一五
5 系 统 调 试 过
程…………………………………………………………………………17
微机测控系统课程设计
设 计 总
结……………………………………………………………………………………21
致
谢…………………………………………………………………………………………
22
参 考 文
献……………………………………………………………………………………23
附 录
1………………………………………………………………………………………24
摘要
机油压力是汽车发动机的重要参数之一。如何利用已学知识模拟机油
压力检测,并且对机油压力进行电控是开始本设计的初衷。本此设计通过以
AT89C51单片机为中心,通过 MPX41一五模拟产生一个信号,通过 ADC0808
数据转换送入单片机进行处理,再从单片机 P0 口将电平信号送入液晶显示
器 C实现动态显示。并在超过机油压力安全值时由单片机控制 LED进行光报
警,同时当机油压力过高或者过低时通过电机控制活塞阀进行放油处理。此
说明书给出了系统的设计原理图,以及 PCD印制板图,并在 Proteus软件中
进行仿真实现设计功能。
关键词:AT89C51单片机机油压力电机控制
微机测控系统课程设计
1引言
问题的提出
随着进入电气时代,越来越多的电子技术被应用在现代汽车上。汽车也将由
单纯的机械产品向高级的机电一体化产品方向发展。由于实时驾驶信息系统及多
媒体设备在汽车上普及,汽车更具个性化、通用性、安全性和舒适性。汽车在人
们的生活中不仅仅是代步工具,而逐步成为一种生活的方式。在汽车电子领域的
研究成为汽车研发中最活跃的一部分。随着进入电气时代,电子测控装置被广泛
应用于各种电器机械产品上,本次课程设计的任务就是基于单片机设计机油压力
测控系统,检测机油压力。
任务与分析
本次设计的任务是基于单片机机油压力电控系统设计。要求是本此设计通过
以 AT89C51单片机为中心,通过 MPX41一五模拟产生一个信号,通过 ADC0808数
据转换送入单片机进行处理,再从单片机 P0 口将电平信号送入液晶显示器
LM061L 实现动态显示。此说明书给出了系统的设计原理图,以并在 Proteus 软件
中进行仿真实现设计功能。
本系统可以分为以下 6大主要模块:
(1)AT89C51模块:用于数据处理,初值设定。
(2)ADC0808:进行数据转换,将压力传感器采集的模拟信号转换为数字信
号。
(3)MPX41一五:采集模拟压力信号。
(4)液晶显示器 LM061L:用于实时的显示机油压力信息。
2系统方案设计
微机测控系统课程设计
系统设计方案
本此设计通过以 AT89C51单片机为中心,通过 MPX41一五模拟产生一个信号,通
过 ADC0808 数据转换送入单片机进行处理。指定机油压力正常的范围是 20—80
(MPa),从单片机 P0口将电平信号送入液晶显示器 LM061L实现动态显示。
系统总体框图
当程序启动后,程序进入初始化阶段。时钟电路的晶振产生外部振荡脉冲信号送
入 AT89C51单片机的 XTAL2口。单片机 AT89C51执行编写在其内部的程序,处理
从 ADC0808送来的信号,并送到 P0口输出到液晶显示器 LM061L显示。
3系统硬件电路设计
单片机
通过对多种单片机性能的分析,最终认为 89C51是最理想的电子时钟开发芯片。
89C51是一种带 4K字节闪烁可编程可擦除只读存储器的低电压,高性能 CMOS8位
微处理器,器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的
MCS-51指令集和输出管脚相兼容。由于将多功能 8位 CPU和闪烁存储器组合在单
个芯片中,ATMEL的 89C51是一种高效微控制器,而且它与 MCS-51兼容,且具有
4K 字节可编程闪烁存储器和 1000 写/擦循环,数据保留时间为 10 年等特点,是
最好的选择。
MCS-51 系列单片机是 Intel 公司 1980 年推出的高性能 8 位单片微型计算机主要
有 8031、8051、8751 这三种机型,他们的指令系统与芯片引脚完全兼容,仅片
内 ROM有所不同。主要功能为:
·8位 CPU;
·片内带振荡器,振荡频率 f的范围为 -12MHZ,可有时钟输出;
微机测控系统课程设计
·128B片内数据存储器;
·4KB片内程序存储器;
·程序存储器的寻址范围为 64KB;
·片外数据存储器的寻址范围为 64KB;
·21B专用寄存器;
·4个 8位并行 I/O口:P0,P1,P2,P3;
·1个全双工串行 I/O口,可多机通信;
·2个 16位定时/计数器;
·中断系统有 5个中断源,可编程为两个优先级;
·111条指令,含乘法指令和除法指令;
·有强的位寻址,位处理能力;
·片内采用单总线结构;
图 3-189C51单片机引脚图
89C51单片机与早期 Intel的 1芯片的外部引脚和指令系统完全兼容,只不过用
FlashROM替代了 ROM/EPROM而已。89C51单片机内部结构如图所示。
图 3-289C51单片机内部结构示意图
各引脚的功能如下:
·VCC:供电电压。
·GND:接地。
·P0口:P0口为一个 8位漏级开路双向 I/O口,每脚可吸收 8TTL门电流。当
P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储
器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入
口,当 FIASH进行校验时,P0输出原码,此时 P0外部必须被拉高。
微机测控系统课程设计
·P1口:P1口是一个内部提供上拉电阻的 8位双向 I/O口,P1口缓冲器能接
收输出 4TTL门电流。P1口管脚写入 1后,被内部上拉为高,可用作输入,P1口
被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH编程
和校验时,P1口作为第八位地址接收。
·P2口:P2口为一个内部上拉电阻的 8位双向 I/O口,P2口缓冲器可接收,
输出 4个 TTL门电流,当 P2口被写“1”时,其管脚被内部上拉电阻拉高,且作
为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内
部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存
取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当
对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2
口在 FLASH编程和校验时接收高八位地址信号和控制信号。
·P3口:P3口管脚是 8个带内部上拉电阻的双向 I/O口,可接收输出 4个 TTL
门电流。当 P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输
入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
·RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期高电
平时间。
·ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址
的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以
不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对
外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,
将跳过一个 ALE脉冲。如想禁止 ALE的输出可在 SFR8EH地址上置 0。此时,ALE
只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果
微机测控系统课程设计
微处理器在外部执行状态 ALE禁止,置位无效。
·:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期
两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。
·:当保持低电平时,则在此期间 CPU 只访问外部程序存储器(0000H-FFFFH),
不管是否有内部程序存储器。注意加密方式 1 时,将内部锁定为 RESET;当端保
持高电平时,则执行内部程序存储器中的程序。在 FLASH编程期间,此引脚也用
于施加 12V编程电源(VPP)。
·XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
·XTAL2:来自反向振荡器的输出。
为了满足多种需要,目前国内外各半导体器件生产厂家设计并生产出了多种多样
的 ADC 芯片。仅美国 AD 公司的 ADC 产品就有几十个系列、近百种型号之多。从
性能上讲,它们有的精度高、速度快,有的则价格低廉。从功能上讲,有的不仅
具有 A/D转换的基本功能,还包括内部放大器和三态输出锁存器;有的甚至还包
括多路开关、采样保持器等,已发展为一个单片的小型数据采集系统。
ADC0808是采样分辨率为 8位的、以逐次逼近原理进行模/数转换的器件。其内部
有一个 8通道多路开关,它可以根据地址码锁存译码后的信号,只选通 8路模拟
输入信号中的一个进行 A/D 转换。ADC0808 是 ADC0809 的简化版本,功能基本相
同。一般在硬件仿真时采用 ADC0808进行 A/D转换,实际使用时采用 ADC0809进
行 A/D转换。
ADC0808 是 CMOS 单片型逐次逼近式 A/D 转换器,它有 8 路模拟开关、地址锁
存与译码器、比较器、8位开关树型 A/D转换器。
微机测控系统课程设计
图 3-3AD0808引脚图
1)主要技术指标和特性
(1)分辨率:8位。
(2)总的不可调误差:ADC0808为±1/2LSB,ADC0809为±1LSB。
(3)转换时间:取决于芯片时钟频率,如 CLK=500kHz时,TCONV=128μs。
(4)单一电源:+5V。
(5)模拟输入电压范围:单极性 0~5V;双极性±5V,±10V(需外加一定电路)。
(6)具有可控三态输出缓存器。
(7)启动转换控制为脉冲式(正脉冲),上升沿使所有内部寄存器清零,下降
沿使 A/D转换开始。
(8)使用时不需进行零点和满刻度调节。
2)内部结构和外部引脚
ADC0808/0809 的内部结构和外部引脚分别如图 和图 所示。内部
各部分的作用和工作原理在内部结构图中已一目了然,在此就不再赘述,下面仅
对各引脚定义分述如下:
图 3-4ADC0808/0809内部结构框图
(1)IN0~IN7——8 路模拟输入,通过 3 根地址译码线 ADDA、ADDB、ADDC
来选通一路。
(2)D7~D0——A/D转换后的数据输出端,为三态可控输出,故可直接和微
处理器数据线连接。8位排列顺序是 D7为最高位,D0为最低位。
(3)ADDA、ADDB、ADDC——模拟通道选择地址信号,ADDA为低位,ADDC为
高位。地址信号与选中通道对应关系如表 所示。
微机测控系统课程设计
(4)VR(+)、VR(-)——正、负参考电压输入端,用于提供片内 DAC 电阻网
络的基准电压。在单极性输入时,VR(+)=5V,VR(-)=0V;双极性输入时,VR(+)、
VR(-)分别接正、负极性的参考电压。
表 3-1地址信号与选中通道的关系
地址
ADDC ADDB ADDA
选中通道
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
(5)ALE——地址锁存允许信号,高电平有效。当此信号有效时,A、B、C
三位地址信号被锁存,译码选通对应模拟通道。在使用时,该信号常和 START信
号连在一起,以便同时锁存通道地址和启动 A/D转换。
(6)START——A/D 转换启动信号,正脉冲有效。加于该端的脉冲的上升沿
使逐次逼近寄存器清零,下降沿开始 A/D转换。如正在进行转换时又接到新的启
动脉冲,则原来的转换进程被中止,重新从头开始转换。
(7)EOC——转换结束信号,高电平有效。该信号在 A/D转换过程中为低电
微机测控系统课程设计
平,其余时间为高电平。该信号可作为被 CPU查询的状态信号,也可作为对 CPU
的中断请求信号。在需要对某个模拟量不断采样、转换的情况下,EOC 也可作为
启动信号反馈接到 START端,但在刚加电时需由外电路第一次启动。
(8)OE——输出允许信号,高电平有效。当微处理器送出该信号时,
ADC0808/0809的输出三态门被打开,使转换结果通过数据总线被读走。在中断工
作方式下,该信号往往是 CPU发出的中断请求响应信号。
3)工作时序与使用说明
当通道选择地址有效时,ALE 信号一出现,地址便马上被锁存,这时转换启
动信号紧随 ALE 之后(或与 ALE 同时)出现。START 的上升沿将逐次逼近寄存器
SAR复位,在该上升沿之后的 2μs加 8个时钟周期内(不定),EOC信号将变低电
平,以指示转换操作正在进行中,直到转换完成后 EOC再变高电平。微处理器收
到变为高电平的 EOC信号后,便立即送出 OE信号,打开三态门,读取转换结果。
模拟输入通道的选择可以相对于转换开始操作独立地进行(当然,不能在转
换过程中进行),然而通常是把通道选择和启动转换结合起来完成(因为
ADC0808/0809 的时间特性允许这样做)。这样可以用一条写指令既选择模拟通道
又启动转换。在与微机接口时,输入通道的选择可有两种方法,一种是通过地址
总线选择,一种是通过数据总线选择。
如用 EOC 信号去产生中断请求,要特别注意 EOC 的变低相对于启动信号有 2
μs+8 个时钟周期的延迟,要设法使它不致产生虚假的中断请求。为此,最好利
用 EOC上升沿产生中断请求,而不是靠高电平产生中断请求。
时钟系统
利用芯片内部振荡电路,在 XTAL1、XTAL2 引脚上外接定时元件,内部振荡电路
微机测控系统课程设计
便产生自激振荡,用示波器可以观察到 XTAL2输出时钟信号。
振荡晶体选择 12MHz。电容只无严格要求,但电容取值对振荡频率输出的稳定性、
大小、振荡电路起振速度有少许影响,C1和 C2可在 20-100pF取值,但在,60-70pF
时振荡器有较高的频率稳定性。
图 3-5内部时钟电路
复位电路
复位电路通常采用上电自动复位和按钮复位两种方式。本次设计采用按键复位电
路。按键复位电路是在按键瞬间接地来实现的,其电路如图 3-6所示。按下复位
按钮后,电源对按键 RESET端维持两个机器周期的高电平实现复位的。
图 3-6复位电路
一五压力传感器
MPX41 一五系列压电电阻传感器是一个硅压力传感器。这个传感器结合了高级的
微电机技术,薄膜镀金属。还能为高水准模拟输出信号提供一个均衡压力。在 0℃
-85℃的温度下误差不超过 %,温度补偿是-40℃-125℃。
图 3-7压力传感器
液晶显示器 LM061L
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种.8
位字符编码和字符的对应关系,CGRAM 是为用户编写特殊字符留用的,它的容量
仅 64字节,可以自定义 8个 5*7点阵字符或者 4个 5*10点阵字符,AC可以存储
DDRAM和 CGRAM的地址,如果地址码随指令写入 IR,则 IR自动把地址码装入 AC,
同时选择 DDRAM或 CGRAM但愿,LM016L液晶模块的引脚功能如下表所示:
图 3-8LM061L引脚图
4系统软件设计
软件环境介绍
本系统的硬件设计首先是在 Proteus 软件环境中仿真实现的。Proteus 软件
是来自英国 Labcenterelectronics公司的 EDA工具软件,Proteus软件有十多年
的历史,在全球广泛使用,除了具有和其它 EDA 工具一样的原理布图、PCB 自动
或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是互动的。
针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件
源码级的实时调试。如果有显示及输出,配合系统配置的虚拟仪器如示波器、逻
辑分析仪等,还能看到运行后输入输出的效果。Proteus 建立了完备的电子设计
开发环境,尤其重要的是 ProteusLite可以完全免费,也可以花微不足道的费用
注册达到更好的效果。
Proteus是目前最好的模拟单片机外围器件的工具。可以仿真 51系列、AVR、
PIC等常用的 MCU及其外围电路(如 LCD,RAM,ROM,键盘,马达,LED,AD/DA,
部分 SPI 器件,部分 IIC 器件...)。其实 Proteus 与 multisim 比较类似,只不
过它可以仿真 MCU,当然,软件仿真精度有限,而且不可能所有的器件都找得到
微机测控系统课程设计
相应的仿真模型,用开发板和仿真器当然是最好选择,可是初学者拥有它们的可
能性比较小。当然,硬件实践还是必不可少的。在没有硬件的情况下,Proteus
能像 pspice仿真模拟/数字电路那样仿真 MCU及外围电路。另外,即使有硬件,
在程序编写早期用软件仿真一下也是很有必要的。Proteus 软件主要具有以下几
个方面的特点:
1)设计和仿真软件 Proteus 是一个很有用的工具,它可以帮助学生和专业人士
提高他们的模拟和数字电路的设计能力。
2)它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来
代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。
3)它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。
4)它可以仿真目前流行的单片机,如 PICS,ATMEL-AVR,MOTOROLA,8051等。
5)在设计综合性方案中,还可以利用 ARES开发印制电路板。
μVision 软件环境介绍
KeilC51 是美国 KeilSoftware 公司出品的 51 系列兼容单片机 C 语言软件开发系
统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,
因而易学易用。Keil提供了包括 C编译器、宏汇编、连接器、库管理和一个功能
强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)
将这些部分组合在一起。运行 Keil 软件需要 WIN98、NT、WIN2000、WINXP 等操
作系统。如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选,即使不使
用 C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工
具也会令你事半功倍。
Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。
微机测控系统课程设计
Keil 公司由两家私人公司联合运营,分别是德国慕尼黑的 KeilElektronikGmbH
和美国德克萨斯的 KeilSoftwareInc。Keil公司制造和销售种类广泛的开发工具,
包括 ANSIC编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作
系统核心(real-timekernel)。有超过 10万名微控制器开发人员在使用这种得到
业界认可的解决方案。其 KeilC51 编译器自 1988 年引入市场以来成为事实上的
行业标准,并支持超过 500种 8051变种。Keil公司在 2007年被 ARM公司收购。
其两家公司分别更名为 ARMGermanyGmbH 和 ARMInc 和。Keil 公司首席执行官
ReinhardKeil 表示:“作为 ARMConnectedCommunity 中的一员,Keil 和 ARM 保
持着长期的良好关系。通过这次收购,我们将能更好地向高速发展的 32 位微控
制器市场提供完整的解决方案,同时继续在 uVision 环境下支持我们的 8051 和
C16x编译器。”
C51 工具包的整体结构,uVision 与 Ishell 分别是 C51forWindows 和 forDos 的
集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用 IDE 本身或其它编辑器编辑 C 或汇编源文件。然后分别由 C51 及
C51 编译器编译生成目标文件(.OBJ)。目标文件可由 LIB51 创建生成库文件,也
可以与库文件一起经 L51连接定位生成绝对目标文件(.ABS)。ABS文件由 OH51转
换成标准的 Hex文件,以供调试器 dScope51或 tScope51使用进行源代码级调试,
也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如 EPROM
中。
软件介绍
Protel 印制板设计软件包是澳大利亚 ProtelTechnology 公司与 1990 年推出的
电子 CAD产品,具有方便、易学、实用、快速以及高速度、高步通率的特点。它
微机测控系统课程设计
采用了分层次下拉窗口菜单结构形式,用户基本上不需要记背太多的键盘命令,
用鼠标点击菜单命令就能操作,Protel有着很高的自动布线布通率。布通率是电
子产 CAD产品的一项重要指标,它反映电子元件在电路图中连接关系有多少能在
印刷版图中实现。在设计常用的单、双面印制板时只要选择适当的元件布局和布
线策略方法,Protel 就可以轻易的达到 98%-100%的布通率。对于极少数不能布
通的定方,Protel可以用飞线指示出来,引导用户用手工方法连通。另外,Protel
有强大的宏命令设置功能,利用宏命令功能多定义的热键可以大大提高操作速度。
Protel 已成为印制板设计加工方面的工业标准。据初步统计 Protel 在 CAD 的市
场占有率达 95%,成为电子产品制造业界的首选 CAD软件。
程序流程图
(1)主程序流程图
图 4-1主程序流程图
主程序流程图说明:
程序初期,定时器、寄存器初始化,将传感器采集的数据经传给 ADC0808,通过
数据转换子程序将模拟信号转换为数字信号信号通过显示子程序,将数字显示在
LCD上。
(2)A/D转换子程序流程图:
系统初始化
调用显示程序,LCD 显
示
微机测控系统课程设计
子程序流程图说明:
在此流程图中,主要说明的是本次设计的 A/D数据转换过程。单片机 AT89C51的
、、口连接 ADC0808的 OE、START和 EOC端口,压力信号通过 IN0
端口传给 ADC0808进行模数转换,将检测的数据传送给单片机。
显示子程序流程说明:
开始阶段,将液晶显示器初始化,然后将写入光标跳到目标位,单片机 P0 口控
制 LCD的 D0-D7口,读入数据显示实时机油压力。调用延时程序,返回程序继续
显示。
5系统调试过程
通过上面的硬件设计和软件设计过程,设计的工作已经基本完成,接下来的
工作就是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些
错误,从而进行下一步的修改。
(1)Protel电路调试
在 Protel 的元件库里建立 89C51,没有 LCD 液晶显示器,单击【Edit】按键,对
元件库的进行编辑,再建立新的封装库编写其封装,连线。电路调试:单击
【ERC】按键,进行节气点 ERC 检查;单击【BillofMaterial】生成元件列表,
检查元器件封装;单击【CreatNetlist】生成网络列表。
图 5-1Protel原理图
(2)KeiluVision3中程序编写与调试
将已经设计好的程序写入 KeiluVision3 软件中,用 C 语言进行程序编译。将有
错误提示的程序修改过来,显示 0error,0warning,最后 hex文件的生成,为电
路仿真做准备。
微机测控系统课程设计
(3)在 Proteus中,对硬件电路图进行设计和绘制、仿真。
首先列出单片机芯片 AT89C51,ADC0808,内部时钟电路,复位电路,电机控制电
路等,然后连线。将在 Keil软件里已经编译好的程序输入单片机。双击单片机,
加载编译好的程序生成的.hex文件,按下仿真按钮,观察仿真是否正常进行。
图 5-2Protues仿真图
当对机油压力值实时检测时,会根据检测到值得改变相应的显示不同的值。
当机油压力为 49Mpa时,传感器和显示器的数值分别如下:
图 5-3Protues仿真传感器图 1
图 5-4Protues仿真 LM061L显示图 1
当机油压力为 71Mpa时,传感器和显示器的数值分别如下:
图 5-5Protues仿真传感器图 2
图 5-6Protues仿真 LM061L显示图 2
设计总结
本次课程设计是要求我们基于单片机设计机油压力电控系统,其功能是以
AT89C51 单片机为中心,在 MPX41 一五模拟产生一个信号后,通过 ADC0808 将模
拟信号转化为数字数据转换送入单片机进行处理,再从单片机 P0 口将电平信号
送入液晶显示器 LM061L实现动态显示。
设计一个控制系统,最重要的是要深刻理解其原理以及其实际用途,然后才能根
据其原理进行整个系统的设计。用理论指导实践可以达到事倍功半的效果,而有
坚实的理论做基础也会使设计变得得心应手。在设计电路的过程中应注意充分利
用并扩展所学过的基础知识,设计的过程就是学习的过程,在设计过程中验证理
论的正确性,弥补知识的漏洞。正确对待设计过程中遇到的错误,遇到错误与问
题要敢于面对并设法找到解决的办法。通过对该电路的设计过程,而且我还查阅
了不少相关资料,更深刻地认识和巩固了平时所学的知识,使理论与实践有机结
微机测控系统课程设计
合,提高了我对所学专业的兴趣并积累了一些相关经验。我认为这就是一种很好
的提高自身能力的方法。这个设计的大部分内容都是在网上和书籍上找的内容,
自己做了一点点小小的改动,在上网找资料的同时也学到了许多东西,找到了很
多学习单片机的网站,里面的内容都比较适合我初学者去学,有些网站还专门介
绍这种单片机的类型、用法、功能等等。通过这个课程设计,使我发现,小小的
一片单片机有这么强大的功能,能应用于各种领域。我应该在自己以后的学习中,
不仅要有刻苦努力,要有钻研精神,还要有创新,对自己感兴趣的一定要用心去
学。虽然自己尽了很大的努力,但是还有很多不尽人意的地方,我想大概是由于
开展独立开发经验不足的缘故吧,作为一个学汽车电子的学生,我想我有必要通
过这次课更多的了解自己的不足,从而在以后的学习工作中不断增强自己的动手
能力,争取在电路设计方面取进步。该电路还有很多缺陷。今后我要加强学习,
去认识更深层的科学知识,使我设计出来的东西更加完美。要严格要求自己,就
像严格要求设计的每一个细节一样。
致谢
在赵玲老师以及同学的指导和帮助之下,我终于完成了本次的课程设计,其
中关于单片机设计的各种书籍也给了我很大的帮助和指导。也正是通过这次的课
程设计的学习与提高,让我对单片机有了更进一步的认识,对硬件以及软件的设
计也有很大的提高。让我能够将以前在课堂上学到的知识与实践紧密的结合起来,
对自己的能力也是一种很好的锻炼。在此,我向赵老师和帮助过我的老师和同学
们,表示崇高的敬意和衷心的感谢
微机测控系统课程设计
参考文献
[1]张毅刚,彭喜元.单片机原理与应用设计.电子工业出版社,2008.
[2]先锋工作室.单片机程序设计实例.清华大学出版社,2003.
[3]周国雄,晏密英.单片机应用系统设计精讲.中国铁道部出版社,2011.
[4]赵佩华.单片机接口技术及应用.机械工业出版社,.
[5]唐岚.汽车测试技术.机械工业出版社,.
[6]彭忆强、吴琼、葛晓成.电子线路辅助分析软件在汽车电子方向相关课程中的
应用.高等教育研究,2008,.
[7]张西振.汽车发动机电控技术.北京:机械工业出版社,2004.
附录 1
源程序代码:
/******************************
2010级汽电一班:杜晨瑞
*******************************/
#include<>
#include<>
#include<>
#include<>
#defineLCDP0
typedefunsignedcharuchar;
typedefunsignedintuint;
/*LCD显示屏控制*/
sbitRS=P2^2;
sbitRW=P2^3;
sbitE=P2^1;
/*AD转化控制部分*/
sbitSTART=P3^0;
微机测控系统课程设计
sbitOE=P3^1;
sbitEOC=P3^3;
intsetspeed;
ucharAD;
voidad_0808()
{
START=0;//启动转换
START=1;
START=0;
while(!EOC)//等待转换完毕的信号,当 EOC=1时转换完毕
{
;
}
OE=1;//输出三态门打开,将转换的结果输出到数据总线上
AD=P1*100/255;//
OE=0;
}
voidadc()
{
ad_0808();
setspeed=(int)AD;
}
voiddelay(uinta)
{
uinti,j;
for(i=0;i<a;i++)
for(j=0;j<200;j++);
}
voidDelay()
{
uinti;
for(i=0;i<225;i++);
}
/*************LCD显示部分*******************/
微机测控系统课程设计
/*把 1个命令写入 LCD*/
voidvWriteLM(ucharlcdCommand)
{
Delay();//先延时。
E=1;//然后把LCD改为写入命令状态。
RS=0;
RW=0;
LCD=lcdCommand;//再输出命令。
E=0;//最后执行命令。
}
/*把 1个数据写入 LCD*/
voidvWriteData(ucharlcdData)
{
Delay();//先延时。
E=1;//然后把LCD改为写入数据状态。
RS=1;
RW=0;
LCD=lcdData;//再输出数据。
E=0;//最后显示数据。
}
/*把 1个字符显示到当前光标处*/
voidvShowOneChar(ucharlcdChar)
{
switch(lcdChar)
{
case'':vWriteData(0x20);break;
case':':vWriteData(0x3A);break;
case'0':vWriteData(0x30);break;
case'1':vWriteData(0x31);break;
case'2':vWriteData(0x32);break;
case'3':vWriteData(0x33);break;
case'4':vWriteData(0x34);break;
case'5':vWriteData(0x35);break;
case'6':vWriteData(0x36);break;
微机测控系统课程设计
case'7':vWriteData(0x37);break;
case'8':vWriteData(0x38);break;
case'9':vWriteData(0x39);break;
case'A':vWriteData(0x41);break;
case'B':vWriteData(0x42);break;
case'C':vWriteData(0x43);break;
case'D':vWriteData(0x44);break;
case'E':vWriteData(0x45);break;
case'F':vWriteData(0x46);break;
case'G':vWriteData(0x47);break;
case'H':vWriteData(0x48);break;
case'I':vWriteData(0x49);break;
case'J':vWriteData(0x4A);break;
case'K':vWriteData(0x4B);break;
case'L':vWriteData(0x4C);break;
case'M':vWriteData(0x4D);break;
case'N':vWriteData(0x4E);break;
case'O':vWriteData(0x4F);break;
case'P':vWriteData(0x50);break;
case'Q':vWriteData(0x51);break;
case'R':vWriteData(0x52);break;
case'S':vWriteData(0x53);break;
case'T':vWriteData(0x54);break;
case'U':vWriteData(0x55);break;
case'V':vWriteData(0x56);break;
case'W':vWriteData(0x57);break;
case'X':vWriteData(0x58);break;
case'Y':vWriteData(0x59);break;
case'Z':vWriteData(0x5A);break;
default:break;
}
}
/*把 1个字符串显示到当前光标处*/
voidvShowChar(ucharlcdaChar[])
微机测控系统课程设计
{
ucharlcdCount;
for(lcdCount=0;;lcdCount++)
{
vShowOneChar(lcdaChar[lcdCount]);
if(lcdaChar[lcdCount+1]=='\0')
break;
}
}
/*把一个三位数字显示出来*/
voidvShowNumber(uintuiNumber)
{
ucharlcdaNumber[3],lcdNumCount;
if(uiNumber>999)
uiNumber=999;
lcdaNumber[0]=uiNumber/100;//把计算数字的每个位存入数组。
lcdaNumber[1]=(uiNumber-100*(int)lcdaNumber[0])/10;
lcdaNumber[2]=uiNumber-100*(int)lcdaNumber[0]-10*lcdaNumber[1];
for(lcdNumCount=0;lcdNumCount<3;lcdNumCount++)
{
vShowOneChar(lcdaNumber[lcdNumCount]+48);//从首位到末位逐一输出。
}
}
voidLCD_init()
{
vWriteLM(0x01);//清屏
vWriteLM(0x38);//显示模式设置:8位 2行 5x7点阵
vWriteLM(0x0C);//(0x0C)文字不动,光标自动右移
vWriteLM(0x0F);//显示器开、光标开、闪烁开
}
voidmain(void)
{
LCD_init();
delay(20);
微机测控系统课程设计
vWriteLM(0x01);//清屏
vWriteLM(0x80);//写入显示起始地址
vShowChar("NOWPRESS:");
while(1)
{
delay(50);
adc();
vWriteLM(0x89);
vShowNumber(setspeed);
}
}
微机测控系统课程设计