《单片机课程设计_基于89C51的轮胎自动充气压力控制器设计.pdf》由会员分享,可在线阅读,更多相关《单片机课程设计_基于89C51的轮胎自动充气压力控制器设计.pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计单片机系统单片机系统课课程程设设计计成绩评定表设计课题设计课题基于 89C51 的轮胎自动充气控制器设计学院名称学院名称:电气工程学院专业班级专业班级:学生姓名学生姓名:学学号号:指导教师指导教师:设计地点设计地点:设计时间设计时间:指导教师意见:成绩:签名:年月日课程设计单片机系统单片机系统课课程程设设计计课程设计名称:课程设计名称:基于 89C51 的轮胎自动充气控制器设计专专 业业 班班 级级:学学 生生 姓姓 名名:学学号号:指指 导导 教教 师师:课程设计地点:课程设计地点:课程设计时间:课程设计时间:课程设计单片机系统单片机系统课程设计任务书课程设计任务书学生姓名学生姓名题
2、题目目课题性质课题性质指导教师指导教师工程设计专业班级专业班级课题来源课题来源利用 89C51 设计一种轮胎自动充气压力控制器,实现以下功能:主要内容主要内容(参数)(参数)1利用 3 位 LED 显示轮胎压力;2按下充气开关打开电磁阀开始充气;3当轮胎压力达到设定值时控制电磁阀关闭气源。第 1-2 天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第 3-4 天:按照确定的方案设计单元电路。要求画出单元电路图,元件任务要求任务要求(进度)(进度)及元件参数选择要有依据,各单元电路的设计要有详细论述。第 5-6 天:软件设计,编写程序。第 7-8 天:实验室调试。第 9-10 天:撰写课
3、程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。1 张迎新单片微型计算机原理、应用及接口技术(第 2 版)M北京:国防工业出版社,2004主要参考主要参考资料资料2 伟福 LAB6000 系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,20064 夏路易 石宗义Protel 99se 电路原理图与电路板设计教程北京:北京希望电子出版社,2006审查意见审查意见系(教研室)主任签字:系(教研室)主任签字:年年月月日日1学号学号自拟课程设计目目录录1 概述.32 方案设计.32.1 系统框图.32.2 方案选取.42.3
4、 总体方案设计.53 硬件电路设计.53.1 电源电路.73.2 键盘电路.83.3 压力检测电路.113.4 AD转换电路.63.5 显示电路.123.6 气泵控制电路.错误错误!未定义书签。未定义书签。3.7 复位电路.133.8 时钟电路.134 软件设计.144.1 压力检测及 A/D 转换程序设计.144.2 数码管显示程序设计.154.4 外部中断 0 服务程序设计.174.5 系统总体程序设计.186 总结.25附录 A 系统原理图.20附录 B 源程序清单.212课程设计1 1 概述概述随着人们生活水平的不断提高,单片机控制在各领域的发展与应用无疑成为人们追求的目标之一。目前,
5、汽车工业的发展速度很快,传统的轮胎充气设备不能适应现代化生产规模的要求。研制与轮胎流水作业生产线配套的,机械化、自动化、节能高效的充气设备是现代化汽车生产企业亟待解决的实际问题。基于上述两个原因,我们有了研究基于单片机便携式自动控制充气机这一课题的想法,便携式自动控制充气机具有自动充气和放气功能,气压检测和气压预设功能,夜间照明、警示功能,体积非常小巧,性能高、无污染气体排放,适合您的车辆出差、远行,是各车主携带的应急必备工具。本设计就是根据人们对智能化,方便化的需求,而设计的基于单片机控制的智能化产品。同时在选取设计方案和采用元器件方面,该系统本着简单、经济、实用的思想,尽量简化电路设计,用
6、最简单的电路布线和选用最经济实用的器件来达到设计要求。轮胎自动充气压力控制系统具有以下几个基本功能:(1)能够利用按键设定充气值;(2)能够显示设定充气压力和充气过程中轮胎动态压力;(3)当轮胎压力达到设定值时,能自动关闭气泵停止充气。2 2 方案设计方案设计2.12.1 系统框图系统框图根据设计方案我们知道我们需要对轮胎内压力的检测也就是压力检测模块,然后是检测后压力的显示,知道压力数值后决定需不需要充气我们需要充气模3课程设计块,我们需要有给充气泵提供电力的电源模块,然后还要有手动的输入方式也就是键盘模块。我们把本设计初步分为以下几个模块,系统框图如图 2-1 所示。显示模块显示模块压力检
7、测压力检测AT89C51AT89C51充气模块充气模块电源模块电源模块键盘模块键盘模块图 2-1 系统框图2.22.2 方案选取方案选取有上述系统框图可知,自动充气装置由:压力检测模块、核心控制模块、键盘模块、显示模块、充气模块等几部分构成。2.2.12.2.1 压力检测模块压力检测模块采用常见的电阻应变片式的压力传感器和模数转换芯片。压力传感器其本质是利用惠斯通电桥,它具有温度特性好,温度变化带来的误差小。这种结构的基本特性之一是它的差动输出电压 U 与偏置电压U 成正比关系,这种关系隐含压力测量精度直接决定偏置电源的容限值,当四个桥臂电阻达到相应的关系时,电桥输出为零。利用压力电桥获得的压
8、力量模拟值通过 ADC0809 转换后即可供单片机分析使用。2.2.22.2.2 键盘模块键盘模块利用矩阵键盘控制,设定充气预定值和气泵的启停。由于本设计需要设定充气预定值和气泵启停,所需要的按键较多,若采用方案一所占单片机 I/O 资源较多,而矩阵键盘按键多,占用 I/O 口少很好的满足了设计与需求。考虑到键盘需要设置0-9 十个数字和设置启、停按钮,所以我们最终选定使用 3 x 4 的矩阵键盘。2.2.32.2.3 显示模块显示模块4课程设计利用七段数码管显示设定值和轮胎内的当前压力值。考虑到设计需要显示的信息量小,亮度要求高,而数码管显示无闪烁,亮度高,软件控制比较容易,功耗小耐冲击,长
9、寿命等优点。我选用数码管作为显示工具。2.2.32.2.3 其它模块其它模块因为这学期刚刚学习了 AT89C51所以我们选用比较熟悉的 AT89C51作为轮胎自动充气压力控制系统的控制核心。2.32.3 总体方案设计总体方案设计根据需要做的系统要求和我自己的设想,得到了如下的系统结构图,方案总体构架如图 2-2 所示:压力电桥压力电桥信号调理信号调理数码管显示数码管显示A/DA/D转换转换AT89C51AT89C51继电器驱动继电器驱动气泵气泵矩阵键盘矩阵键盘图 2-2 轮胎自动充气压力控制系统结构框图3 3 硬件电路设计硬件电路设计3.13.1 电源电路电源电路51 单片机正常工作电压为 5
10、V,因此我们设计了电源电路为单片机工作供电。如下图 3-1 是为单片机提供电源的电路。在这个电路中采用了三端集成稳压芯片7805,来为单片机提供稳定的 5V的直流电压。5课程设计U7 7805Vi nGND11+5V3VCCD?T142C60.33uF+C8TRANS1BRIDGE132C70.1uF10uF图 3-1 电源电路图3.23.2 键盘电路键盘电路由于本设计需要设定充气预定值和气泵启停,所需要的按键较多,若采用方案一所占单片机 I/O 资源较多,而矩阵键盘按键多,占用 I/O 口少很好的满足了设计与需求。考虑到键盘需要设置 0-9 十个数字和设置启、停按钮,所以我们最终使用 3 x
11、 4 的矩阵键盘。如图按照键盘扫描至获得键号编写程序对应如上图所示。矩阵键盘在系统中原理图如图 3-2 所示。0123456789STARTEND123456781312151431191891716P10/TP11/TP12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRP00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P273938373635343332212223242526272880C51RXDTXDALE/PPSEN10113029图 3-2 阵键盘原理图矩阵键盘工作是利用 P1 口分别对某一行赋低
12、电平,其余行赋值高电平,然后分别扫描各列是否出现低电平,若无退出扫描,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与行线相交叉的 4 个按键之中。若所有列线均为高电平,则键盘中无键按下。断闭合键6课程设计所在的位置是通过读取 P1 口的值,与预设值比对,确定是哪个键按下,在确认有键按下后,就可以进入相应操作程序。3.33.3 压力检测电路压力检测电路轮胎自动充气压力控制系统要根据轮胎内压力当前值的大小来确定充气是否完成,需不需要关闭气泵。因而需要使用到压力应变传感器。这种传感器主要用于对气体、液体的动态和静态的压力的测量。如对内燃机管道和动力设备管
13、道进出、出气孔流液的压力、发动机喷口的压力等的测量。这种传感器主要采用膜片、薄板、筒式等组成的弹性元件。传感器所用的应变片电阻值国内标准有:60、120、350、和 600等各种阻值,其中以 120为最常用。利用电桥测量原理,通过对电路输出电压和标准压强的线性关系,建立具体的数学模型,将电压量的变化改为压力的变化,即可以测出一定范围内的压力值。其中测量电路中最主要的元器件就是电阻应变式传感器。设计还利用了运算放大电路的作用就是把传感器输出的微弱的模拟信号进行一定倍数的放大,以满足 A/D 转换器对输入信号电123平的进行各种转换处理的要求。压力检测部分连接如图 3-3 所示。16DR1A4k1
14、1R3A12016J?NetLabel11211R9A2K4R10A2K416R11A2M16112v1AR?AR?R4A1kR?POT216116OPAMPC2108pfR13A1K1616OPAMP1R5A1K161R12A2M16108pfR2AC11k1R5A120116R8A120161-12v图 3-3 压力检测电路原理图C此部分压力传感器参照了 LAB6000 使用说明书电路原理图,传感器的工作原理,本质上是惠斯通电桥,该电桥温度特性好。当膜片上受到压力使得电桥不平衡,从而产生一个差动的输出信号,这种结构的基本特性之一是它的差动输出电压 U 与偏置电压U 成正比关系,当四个桥臂电
15、阻达到相应的关系时,电桥输出为零,当然它也能提供一种温度补偿最通用的方法。该电路三部分组成(1)7B课程设计电源电路部分;(2)电桥电路部分;(3)放大电路部分。如图所示,传感器采用15V 恒压源 Vcc 供电,经过R1与R2分压(电容 C1 起滤波作用),U2A 起到电压跟随器的作用,所以点 1、2、3 三点处有相同电压U1:U1 R2VCC/(R2 R1)(3.1)根据上式,带入数据R1 4K,R21K,VCC15V,求得U1 3V经过电路分析电桥部分可等效为如图 3-4 所示R3120R46KR*120U oR6120R56KR8120U 1图 3-4 压力传感器电桥电路设桥臂电阻分别为
16、R1,R2,R3,R4,R1 R3 R 1/(1/R3 1/R4)118,R2 R4 R120,则当压力传感器受力时,电阻变化对应的输出电压值为RUOU RR1RRR1RR,由于R1 1,则上式可化简为RUOU 1RRR1R(3.2)R带入电阻、电压值得 Uo=0.25R/R 最后经过放大部分,压力传感器的微弱采样电压,经过放大电路输出的放大。3.4 A/D3.4 A/D 转换电路转换电路A/D 转换的作用是进行模数转换,把接收到的模拟信号转换成数字信号输出。在选择 A/D 转换时,先要确定 A/D 转换精度、转换速度以及转换位数等,8课程设计A/D 转换的位数确定与整个测量控制系统所需测量控
17、制范围和精度有关,在 轮胎自动充气压力控制系统中采用了 8 位 A/D 转换器 ADC0809 引脚如图 3-5 所示26272812345IN-0IN-1IN-2IN-3IN-4IN-5IN-6IN-7ALE1612ref(-)ref(+)ENABLESTA RTCLOCKADD-AADD-BADD-CADC0809msb 2-12-22-32-42-52-62-7lsb2-8EOC2120191881514177252423229610图 3-5 ADC0809引脚图ADC0809 是美国国家半导体公司生产的 CMOS 工艺 8 通道,8 位逐次逼近式 A/D 转换器。8 路模拟信号的分时
18、采集,片内有8 路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为 100s 左右。ADC0809 的主要特性有:(1)8 路输入通道,8 位 A/D 转换器,即分辨率为 8 位。(2)具有转换起停控制端。(3)转换时间为 100s(时钟为 640kHz 时),130s(时钟为 500kHz 时)(4)模拟输入电压范围 05V,不需零点和满刻度校准。ADC0809 主要引脚功能如下:IN0IN7:八路模拟量的输入端。D0D7:A/D 转换后的数据输出端,为三态可控输出,可直接与总线相连。A、B、C:模拟通道地址选择断,A 为低位,C 为高位。ALE:地址锁存允许信号,当此信号有效时
19、,A、B、C 三位地址信号被锁存电路选通对应的模拟输入通道。SC:启动转换信号。通常与单片机的写信号线连接,启动 A/D 转换。EOC:转换结束信号,表示一次转换结束。常作为中断触发信号。OE:输出允许控制信号,通常与系统的读信号线连接,打开9课程设计三态门,此时可通过数据线读到转换结果。本系统 ADC0809 与单片机和压力传感器连接如图 3-6 所示。U 3ad c_ o u t11 123456789U 6O CC1 D2 D3 D4 D5 D6 D7 D8 D1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q1 91 81 71 61 51 41 31 2A D7A D6A D5A D4
20、A D3A D2A D1A D0模拟 信号输 入2 62 72 812345IN-0IN-1IN-2IN-3IN-4IN-5IN-6IN-7A DC0 8 0 9msb 2-12-22-32-42-52-62-7lsb 2-8EO CA DD-AA DD-BA DD-CA LE2 12 01 91 881 51 41 772 52 42 3V CC2 2961 0en ab lestar tIN T_ 07 4 H C5 7 3v cc1 61 2ref(-)ref(+)EN ABLESTA RTCLO CK123456781 31 21 51 43 11 91 89RDWR1 71 6P1
21、0/TP1 1/TP1 2P1 3P1 4P1 5P1 6P1 7IN T1IN T0T1T0EA/V PX 1X 2RESETRDWRP0 0P0 1P0 2P0 3P0 4P0 5P0 6P0 7P2 0P2 1P2 2P2 3P2 4P2 5P2 6P2 73 93 83 73 63 53 43 33 22 12 22 32 42 52 62 72 8A D0A D1A D2A D3A D4A D5A D6A D7d u law elaad c_ o u ten ab lestar tIN T_ 0V CC8 0 C5 1p u mpRX DTX DA LE/PPSEN1 01 13 0
22、2 9图 3-6 单片机和压力传感器连接如原理图所示,ADC0809 的 A、B、C 共同接地选中第 0 通道,即模拟信号从 IN-0 输入到 A/D 转换器,通过单片机 P2.4 引脚 start 送出一个正脉冲,从而启动转换;转换完成后,EOC 输出一个由低到高的跳变沿,经过一个非门取反变为下降沿,出发已经设置为边沿触发的 I 外部中断 0;在中段程序中通过 P.3引脚 enable 送出高电平,控制 ADc0809 数字量允许输出,信号经过 74HC573 锁存器流入 P0 口;通过单片机读程序,把转换后的数字读入片内,进行相应操作后显示在数码管上。10课程设计3.53.5 显示电路显示
23、电路本设计采用 LED 数码管进行显示是因为 LED 数码管具有以下几个优点:(1)能在低电压、小电流条件下驱动发光,能与 CMOS、ITL 电路兼容。(2)发光响应时间极短(0.1s),高频特性好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。数码管有共阴极和共阳极两种类型,为位选端主要进行位控制,断选端则是进行字符控制,数码管有静态显示和动态显示两种方法,说明如下。(1)静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的 I/O 进行驱动,或者使用如 BCD 码二十进位器进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 多,如驱
24、动 5 个数码管静态显示则需要 5840 根 I/O 来驱动,要知道一个 89C51 单片机可用的 I/O 才 32 个。故实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。(2)动态显示驱动:数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划a、b、c、d、e、f、g、dp 的同名端连在一起,另外为每个数码管的公共极 COM 增加位元选通控制电路,位元选通由各自独立的I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通 COM 端电路的控制,所以我们只要将需要显示的数
25、码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个 LED 数码管的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 I/O 口,而且功耗更低。在本设计中过程中,我们查询了大量与车胎压强相关的资料得知汽车轮胎压强一般在 1.5-2.2bar(即 150-220kpa)比较适宜,具体冬夏也有少许差别。所
26、以我们采用3位共阴极数码管作为显示部件。数码管显示部分电路图3-7所示:11课程设计U5dula80C51123456781312151431191891716P10/TP11/TP12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRRXDTXDALE/PPSEN10113029U4P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P2739383736353433322122232425262728AD0AD1AD2AD3AD4AD5AD6AD7dulawelaadc_outenabl estartAD0AD1
27、AD2AD3AD4AD5AD6AD723456789111OCC1D2D3D4D5D6D7D8D74HC573U6welaAD0AD1AD2AD3AD4AD5AD6AD711123456789OCC1D2D3D4D5D6D7D8D74HC5731Q2Q3Q4Q5Q6Q7Q8Q1918171615141312high1Q2Q3Q4Q5Q6Q7Q8Q1918171615141312D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D712345678abacfbdgeecfdgdpdpGNDmi dD0D1D2D3D4D5D6D712345678abacfbdgeecfdgdpdpGND
28、lowD0D1D2D3D4D5D6D712345678abacfbdgeecfdgdpdpGND99pump9图 3-7 数码管显示电路如上述电路图所示,数码管采用动态扫描显示,系统段选码和位选码均是通过 74HC573 分时送出。74HC573 是八个透明的 D 型锁存器,当使能 C 为高电平时,Q 输出将随数据 D 的输入而变。当使能C 为低电平时,输出将锁存在已建立的数据电平上。当系统需要显示数码时,先通过单片机引脚 P0 口送出相应位选码,再控制 P2.0 引脚输出高电平,74HC573(U6)被打开,位选码送到数码管阴极。P2.0 再输出低电平把位选信号所存到 Q 端;此后,单片机P
29、0 口输出相应段选码,P2.1 引脚输出高电平,打开 74HC573(U5)被打开,段选码送到数码管段选端,点亮选中的数码管,并延时1ms;以此为原理第二个、第三个数码管一次被点亮;最后重复上述过程。3.63.6 气泵控制电路气泵控制电路如图 3-8 所示为电磁继电器控制电路气泵的工作电路。12课程设计2 2 0V CCK 1RELAY-SPDT气泵Q 1p u m p9 0 1 3图 3-8 电磁继电器控制电路要控制气泵工作,只需控制电磁阀的闭合与断开。单片机的 pump(P2.7)引脚控制三极管的工作在放大区和截止区。当该引脚输出高电平时,使三极管导通,继电器的内部线圈有电流通过,产生吸合
30、力,将公共端吸合到常开端,则气泵开始充气;当轮胎的气充足后,pump 引脚输出低电平,使三极管截止,则继电器不会产生吸合力,从而断开了气泵的工作。3.73.7 复位电路复位电路复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚上加大于 24 个时钟周期的高点平。本设计复位电路如图 3-9 所示:VCCRSTR14200C522uF接 单 片 机RST引 脚R151K图 3-9 复位电路3.83.8 时钟电路时钟电路电路利用晶振产生固定周期的震荡脉冲。由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器是用来产生基准频率的。通过基准频率来控制电路中
31、的频率的准确性。同时,它还可以产生振荡电流,向单片机发出时钟信号。如图 3-10 为单片机时钟电路13课程设计80C51U41234567813121514Y16MC430PF31191891716P10/TP11/TP12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRRXDTXDALE/PPSEN10113029P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P2739383736353433322122232425262728AD0AD1AD2AD3AD4AD5AD6AD7INT_0VCCC330PF图
32、3-10 单片机时钟电路4 4 软件设计软件设计系统软件设计主要包括压力检测及数模转换程序、数码管显示程序,键盘扫描程序,外部中断 0 服务程序构成。4.14.1 压力检测及压力检测及 A/DA/D 转换程序设计转换程序设计压力电桥和发明和放大电路由硬件控制始终处于工作状态。AD 转换结束方式是选择使用结束限号,触发外部中断 0 的方式。具体工作是:由于 ADC0809的 A、B、C 共同接地,选中第 0 通道,模拟信号从 IN-0 输入到 A/D 转换器,通过单片机 P2.4 引脚 start 送出一个正脉冲,从而启动转换;转换完成后,EOC输出一个由低到高的跳变沿,经过一个非门取反变为下降
33、沿,出发已经设置为边沿触发的 I 外部中断 0;在中段程序中通过 P.3 引脚 enable 送出高电平,控制ADC0809 数字量允许输出,。AD 转换流程如图 4-1 所示。14课程设计开始开总中断设INT0触发方式开启INT0启动AD转换等待中断返回图4-1A/D转换流程4.24.2数码管显示程序设计数码管显示程序设计本设计数码管采用动态扫描方式,通过单片机引脚分别送出相应位选码,选通相应数码管,再用单片机输出相应段选码,点亮选中的数码管,并延时1ms;以此为原理第二个、第三个数码管依次被点亮,再循环此过程。数码管显示流程如图 4-2 所示:15课程设计开始送位选码选通第一位数码管送段选
34、码送位选码选通第二位数码管送段选码送位选码选通第三位数码管送段选码返回图 4-2 数码管显示流程图4.34.3键盘扫描程序设计键盘扫描程序设计矩阵键盘工作是利用键盘扫描,依次检测按键是否按下。首先对某一行赋低电平,其余行赋值高电平,然后分别扫描各列是否出现低电平,若无退出扫描,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与行线相交叉的 4 个按键之中。若所有列线均为高电平,则键盘中无键按下。断闭合键所在的位置是通过读键盘行取列值,与预设值比对确定的。键盘扫描流程如图 4-3 所示。16课程设计开始开始否否是否有键闭合是否有键闭合延时延时10ms10
35、ms去抖动去抖动是否仍有键按下是否仍有键按下是是判断获取键号判断获取键号否否否否按键是否释放按键是否释放是是结束结束图 4-3 键盘扫描流程图4.44.4 外部中断外部中断 0 0 服务程序设计服务程序设计本设计采用外部中断 0 监测 A/D 是否完成,当完成后触发中断,在中断处理中获得此时轮胎气压值,比较是否达到设定值,若是气泵停止工作,若否等待下一次中断。中断处理流程如图 4-4 所示:开始开始关中断关中断获取获取ADAD转换结果转换结果否否是否达到设定值是否达到设定值是是关闭气泵关闭气泵开中断开中断返回返回图 4-4 中断处理流程图17课程设计4.54.5 系统总体程序设计系统总体程序设
36、计根据设计要求,系统工作开始首先调用键盘子程序等待用户输入需要冲气的多少,并把所设定的气压值再数码管上显示一段时间,帮助使用者确定是否有误操作,若有重新输入,若无则按下 start 键,启动气泵开始工作,启泵启动后应该立即调用 AD 转换子程序及显示子程序,动态的显示轮胎内的气压,以及比较现在的气压是否达到用户的要求。由于 LED 显示是动态的。所以必须循环的调用 AD 转换子程序和显示子程序,这样做不仅实时性强,可以让用户了解轮胎内气压的变换,而且可以增强 LED 显示亮度。此外,在设计过程中,我们查阅了大量与轮胎胎压相关的资料,我们查询了大量与车胎压强相关的资料得知汽车轮胎压强一般在 1.
37、5-2.2bar(即150-220kpa)比较适宜,具体冬夏也有少许差别。故在考虑到实际情况和软件编制的简易性的情况下,我们规定用户输入的充气气压只能位于 0255kpa 的范围内。这样一来,由于 ADC0809 的精度为八位,其输出的数字量的范围也是 0255。量化后正好是一对一的关系,就大大的减轻了软件编制的困难。如下图4-5 所示为软件设计总流程图。开始开始键盘子程序键盘子程序显示显示启动气泵工作启动气泵工作A/DA/D转换转换显示显示否否是否完成充气是否完成充气是是停止气泵工作停止气泵工作结束结束图 4-5 软件设计总流程图18课程设计6 6 总结总结两周的单片机课程设计,我从一开始的
38、不知如何下手,到后来的通过去图书馆查阅大量相关资料,还有到网上查阅别人的设计方案,对整个系统有了一定的认识。然后自己动手修修改改到最终确定整个设计方案,做出完整的实验报告,在这个过程中我收获很多。通过本次课程设计对芯片工作原理更加的的熟悉。整个过程我犯了很多错误但是通过改正错误也收获了很多。在这次课程设计我不止实践了课本上的知识也学会了很多单片机实际操作的很多知识和技巧。学会了怎样使用单片机板子,收获良多。参考文献参考文献1 张迎新单片微型计算机原理、应用及接口技术(第 2 版)M北京:国防工业出版社,20042 伟福 LAB6000 系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(
39、第五版)北京:高等教育出版社,20064 夏路易 石宗义Protel 99se 电路原理图与电路板设计教程北京:北京希望电子出版社,20065何立民编著.单片机应用系统设计.北京M:北京航天航空大学出版社,19946杨家成单片机原理与应用及 C51 程序设计北京:清华大学出版社,20077邓兴成单片机原理与实践指导北京:机械工业出版社,20108 李朝青编著.单片机原理及接口技术.北京M:北京航天航空大学出版社,19949 潘新民,王燕芳编著.微型计算机与传感器.北京M:人民邮电出版社,199810 何立民.单片机应用技术选编M.北京航空航天大学出版社,200319课程设计附录附录 A A 系
40、统原理图系统原理图220840V泵气CC9013Q1RELAK1Y-951pumpSPDTSTA62RTEN73D200 R14RST30PFC430PFC3V1KR15CC22uFC56M Y1WR RDVINCCT_016 17918 193114 1512 138 7 6 5 4 3 2 1TRAT1WR RDNS1RESET X X2 1EAT0T1ININ/VT0T1P17 P16 P15 P14 P13 P12PP11/TP10/T80C51U44PSENALE/TXRXPD DP27 P26 P25 P24 P23 P22 P21 P20P07 P06 P05 P04 P03 P
41、02 P01 P003129 30 11 1028 27 26 25 24 23 22 2132 33 34 35 36 37 38 39A A A A A A A ABRIDDD7D6D5D4D3D2D1D02GE1pumpstartenabl w dulaeadc_outela0.33uFC61UV7inGNDw27805eladulaA A A A A A A AA A A A A A A AD7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0+5V9 8 7 6 5 4 3 21119 8 7 6 5 4 3 2111374HUU8D7D6D5D4D3D2D1DC O674
42、H8D7D6D5D4D3D2D1DC O5C573CC573C0.1uFC78Q7Q6Q5Q4Q3Q2Q1Q8Q7Q6Q5Q4Q3Q2Q1Q+12 13 14 15 16 17 18 1912 13 14 15 16 17 18 1910uFC8D D D D D D D D7 6 5 4 3 2 1 0VCCD D D D D D D D7 6 5 4 3 2 1 08 7 6 5 4 3 2 1dp g fedcbahighef9GNDdgadpcbD D D D D D D D7 6 5 4 3 2 1 08 7 6 5 4 3 2 1dp g fedcbamidef9GNDdgadpc
43、bD D D D D D D D7 6 5 4 3 2 1 08 7 6 5 4 3 2 1dp g fedcbalowef9GNDdgadpcb20103pFC11KR24KR1+15V23CAU2A-12V113244+12V110K R7120 R6 1KR51KR4 120 R3 OUT2U1120 R8 IN传1器感2K2KR94R10465CAU2M R123242B2M R1171103pFC21KR13vcc121654321282726AUDC0809ref(+)ref(-ININININININININ2-7-6-5-4-3-2-1-0)CLOSTAENA AAABLEAD
44、DDDDDCKRTLE-C-B-AEOClsb2-82-72-62-52-42-32-2msb2-110 6 92223 24 25717 14 15 8 18 19 20 21starVtenablCCUe6adc_outINT_09 8 7 6 5 4 3 211174HU8D7D6D5D4D3D2D1DC O3C573C8Q7Q6Q5Q4Q3Q2Q1Q12 13 14 15 16 17 18 19A A A A A A A AD0D1D2D3D4D5D6D7课程设计附录附录 B B 源程序清单源程序清单#include#define uchar unsigned char#define
45、uint unsigned intsbit dula=P20;sbit wela=P21;sbit adc_out=P22;sbit enable=P23;sbit start=P24;sbit pump=P27;uint num=0,temp=0,t=0,k;uint high,mid,low;/共阴极数码管编码uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0;/子程序声明void delay(uint z);/延
46、时函数uchar keyscan();/键盘扫描程序display(uchar bai,uchar shi,uchar ge);/数码管显示程序/主程序void main()uchar a,b,c,d,e;21课程设计/开始e=keyscan();while(e!=11)e=keyscan();/获取设定值t=keyscan();while(t=0)t=keyscan();if(t!=0)a=t;t=0;t=keyscan();while(t=0)t=keyscan();b=t;t=0;t=keyscan();22课程设计while(t=0)t=keyscan();c=t;t=0;t=a*10
47、0+b*10+c;/设定值/显示设定值d=50;while(d-)display(a,b,c);/等待启动气泵开始工作pump=1;/启动 AD 转换EA=1;IT0=1;EX0=1;start=0;start=1;start=0;delay(10);while(1)23课程设计display(high,mid,low);delay(10);/中断服务程序void INT_0()interrupt 0 using 1EA=0;enable=1;adc_out=1;adc_out=0;k=P0;if(k0;x-)for(y=110;y0;y-);/键盘扫描函数uchar keyscan()/检测
48、第一行是否有键按下P1=0 xfe;temp=P1;temp=temp&0 xf0;while(temp!=0 xf0)delay(10);temp=P1;temp=temp&0 xf0;while(temp!=0 xf0)temp=P1;switch(temp)25课程设计case 0 xee:num=1;break;case 0 xde:num=2;break;case 0 xbe:num=3;break;case 0 x7e:num=4;break;while(temp!=0 xf0)/松手检测temp=P1;temp=temp&0 xf0;/检测第二行是否有键按下P1=0 xfd;te
49、mp=P1;temp=temp&0 xf0;while(temp!=0 xf0)delay(10);temp=P1;temp=temp&0 xf0;while(temp!=0 xf0)temp=P1;26课程设计switch(temp)case 0 xed:num=5;break;case 0 xdd:num=6;break;case 0 xbd:num=7;break;case 0 x7d:num=8;break;while(temp!=0 xf0)temp=P1;temp=temp&0 xf0;/检测第三行是否有键按下P1=0 xfb;temp=P1;temp=temp&0 xf0;whi
50、le(temp!=0 xf0)delay(10);temp=P1;temp=temp&0 xf0;27课程设计while(temp!=0 xf0)temp=P1;switch(temp)case 0 xeb:num=9;break;case 0 xdb:num=10;break;case 0 xbb:num=11;break;case 0 x7b:num=12;break;while(temp!=0 xf0)temp=P1;temp=temp&0 xf0;return num;/数码管显示函数display(uchar bai,uchar shi,uchar ge)/显示最高位P0=table