压力测量仪的设计LED显示-单片机应用课程设计_第1页
压力测量仪的设计LED显示-单片机应用课程设计_第2页
压力测量仪的设计LED显示-单片机应用课程设计_第3页
压力测量仪的设计LED显示-单片机应用课程设计_第4页
压力测量仪的设计LED显示-单片机应用课程设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 名 称: 单片机应用课程设计 课 程 代 码: 题 目:压力测量仪的设计(LED显示) 学 生 姓 名: 学 号: 年级/专业/班: 学院(直属系) : 机械工程与自动化学院 指 导 教 师: 邓成中 课程设计成绩评定标准及成绩评定表学生姓名: 学号: 年级/班: 所属学院(直属系): 所在专业: 项目分值优秀(100x90)良好(90x80)中等(80x70)及格(70x60)不及格(x1000次)Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 AT89C52 P为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。4:A/D转换模块ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。8位分辨率双通道A/D转换输入输出电平与TTL/CMOS相兼容5V电源供电时输入电压在05V之间工作频率为250KHZ,转换时间为32SADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能项见官方资料。 如资料 所示,当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行 输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。 作为单通道模拟信号输入时ADC0832的输入电压是05V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。5:显示模块 1、首先要了解的是此数码管为共阳极数码管,即三极管Q1、Q2、Q3、Q4导通时数码管才能点亮,亦即相应的单片机P2.3、P2.、P2.、P2.0为低电平。2、采用LED动态扫描显示原理如下: (1)P23、P22、P21、P20输出高电平,关闭所有数码管; (2)显示个位把要显示的数据送到P0.0-P0.7,P23送低电平,延时5毫秒(时间不能太长,否则数码管会闪烁),P23送高电平; (3)显示十位把要显示的数据送到P0.0-P0.7,P22送低电平,延时5毫秒(时间不能太长,否则数码管会闪烁),P22送高电平; (4)显示百位把要显示的数据送到P0.0-P0.7,P21送低电平,延时5毫秒(时间不能太长,否则数码管会闪烁),P21送高电平; (5)显示千位把要显示的数据送到P0.0-P0.7,P20送低电平,延时5毫秒(时间不能太长,否则数码管会闪烁),P20送高电平。 (6)以此顺序循环,把它做成子程序,在主循环中调用。6:晶振电路 MCS-51系列单片机的时钟信号通常用两种电路形式得到,即内部震荡方式和外部振荡方式,本设计才用内部震荡方式。在引脚XTAL1和XTAL2外接晶体振荡器,就构成了内部振荡电路,如上图所示,图中C1 、C2起稳定震荡频率、快速起振的作用,电容值一般在5PF到30PF。晶体常选用6MHz 、12MHz 或24MHz采用串口时常使用11.0592MHz。内部震荡方式所得到的时钟信号比较稳定。7:复位电路复位操作通常有两种形式:上电复位和按钮复位,本设计采用的是上电复位,如右图所示。其工作原理为:上电瞬间RC电路充电,RST引脚端出现正脉冲,只要RST端保持在两个时钟周期以上的高电平,就能使单片机有效复位。8:电路原理图四、仿真1、编译调试程序2、Keil与Proteus联调3、仿真结果附件一(程序代码)#include #include intrins.h#define uint unsigned int#define uchar unsigned char/ADC0832的引脚sbit ADCS =P31; /ADC0832 chip seclectsbit ADDI =P32; /ADC0832 k insbit ADDO =P32; /ADC0832 k outsbit ADCLK =P30; /ADC0832 clock signal080307208unsigned char dispbitcode8=0xf1,0xf2,0xf4,0xf8,0xef,0xdf,0xbf,0x7f; /位扫描unsigned char dispcode11=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff; /共阳数码管字段码unsigned char dispbuf4;uint temp;uchar getdata; /获取ADC转换回来的值void delay_1ms(void) /12mhz delay 1.01ms unsigned char x,y; x=3; while(x-) y=40; while(y-); void display(void) /数码管显示函数 char k; for(k=0;k1)&0x1; _nop_(); _nop_(); ADCLK=0;/拉低CLK端,形成下降沿3 ADDI=1;/控制命令结束 _nop_(); _nop_(); dat=0; for(i=0;i8;i+) dat|=ADDO;/收数据 ADCLK=1; _nop_(); _nop_(); ADCLK=0;/形成一次时钟脉冲 _nop_(); _nop_(); dat=1; if(i=7)dat|=ADDO; for(i=0;i8;i+) j=0; j=j|ADDO;/收数据 ADCLK=1; _nop_(); _nop_(); ADCLK=0;/形成一次时钟脉冲 _nop_(); _nop_(); j=j7; ndat=ndat|j; if(i=1; ADCS=1;/拉低CS端 ADCLK=0;/拉低CLK端 ADDO=1;/拉高数据端,回到初始状态 dat=8; dat|=ndat; return(dat); /return ad k/*主程序*/void main(void) while(1) unsigned int temp; float press; getdata=Adc0832(0); if(14getdata243) /当压力值介于15kpa到115kpa之间时,遵循线性变换 int vary=getdata;/y=(115-15)/(243-13)*X+15kpapress=(10.0/23.0)*vary)+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论