精密测控与系统课程设计_第1页
精密测控与系统课程设计_第2页
精密测控与系统课程设计_第3页
精密测控与系统课程设计_第4页
精密测控与系统课程设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、.西南交通大学课程设计名称: 微机与单片机课程设计 院 (系): 机械工程学院 专 业: 测控技术与仪器 年 级: 2013级 指导教师: 李艳萍 姓 名: 贺申羽 学 号: 20131100 2016年11月一、软件设计任务1了解DICE5212K开放式综合实验仿真系统的硬件结构及原理2设计相应的软件程序3利用DICE5212K开放式综合实验仿真系统完成硬件、软件调试4完成设计报告二、系统单元模块原理及程序流程图2.1键盘主要功能:通过键盘输入指定要显示的数字。键盘输入应解决的问题:按键识别、消除按键抖动、串键保护具体说明:.键盘:它是由一组按压式或触摸式开关构成的阵列。智能仪表键盘的设置应

2、由该仪表具体的功能来决定,因此,智能仪表往往采用专用的功能键盘。.矩阵式键盘:按键电路可以有2种方式:一种方式是直接按键设计,这种设计电路适用于按键较少的控制;另一种方式是矩阵式键盘的设计,它适用于按键数量较多的场合。矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。在按键数量较多的场合,矩阵式键盘比独立式键盘要节省很多的I/O口。图1:矩阵式键盘连接示图.行扫描法:它是采用步进扫描方式,CPU通过输出口把一个“步进的0”逐行加至键盘的行线上,然后通过输入口检查列线的状态。由行线、列线电平状态的组合来确定是否有键按下,并确定被按键所处的行、列位置。2.2 LED

3、数码管主要功能:显示经由键盘输入的数字。具体说明:数码管显示原理通常采用的数码管是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。八段数码管是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。本文采用共阴极编码 其中两个COM端连在一起,为公共端,共阴数码管要将其接地。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为

4、位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f; 共阴极的数码管0f的段编码为:unsigned char code table=/共阴极0f数码管编码0x3f,0x06,0x5b,0x4f,/030x66,0x6d,0x7d,0x07,/470x7f,0x6f,0x77,0x7c,/8b0x39,0x5e,0x79,0x71/cf;LED动态扫描方式:动态扫描显示接口是单片机中应用最

5、为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LE

6、D使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。图:LED显示电路图:LED动态扫描电路图:按键与显示器组合显示电路2.3DICE-5212K 单片机试验开发系统简介DICE-5212K 多功能单片机实验开发系统是MCS-51 单片机原理与接口C8051 嵌入式单片机控制技术自动化控制CPLD/FPGA 技术传感器控制等课程教学的最佳配套实验设备。以小系统、多功能、易扩展为设计思想,系统的地址总线、数据总线、控制总线全部引出,对用户开放,并留有扩展单元(区),这样学校可以从需要出发,灵活选配各种扩展模块,为各类院校的教学实验、课程设计、毕业设计提供了良好的实验开发环境,也是科研、开

7、发工作者的得力助手。系统硬件构图2.4 系统开关设置(1)SW1(EA 端):程序空间选择开关,SW1>IP,选择 CPU 内部(一般不设置此模式,如果将目标程序通过烧写器写入单片机内部 FALSH ROM 中,要运行写入的程序时需设置到该模式,一般用于工程人员的目标系统开发),SW1>UP(出厂模式),选择 CPU 外部,此时可脱机运行 EPROM 中固化的程序,也可用仿真器进行联机实验。(用短路块选择)(2)SW3、SW4、SW5:为键盘/显示选择开关,开关置 ON(出厂模式),键盘/显示控制选择系统配置的 8155 接口芯片,反之由用户选择自定义的 I/O 接口芯片控制,在本

8、机实验中,除 8279 实验外,键盘/显示为出厂模式。(3)KB1 开关:KB1 开关有两种工作模式,平时都工作在“一般模式”,当我们用到单片机 ISP 在线编程功能时,将 KB1 开关打在“编程模式”。(ISP 在线可编程 AT89SX 系列单片机)。(4)KB2 开关(用短路块实现):为 “MCS-51 系统”与“C8051F 系统”读写信号切换开关。当使用“MCS-51 系统”时,将两个短路插在1和2位置,使用“C8051F 系统”时,将两个短路块插在2和3位置。(5)JF_1 (IDC34)口为公司 DICE-3000 仿真器专用接口,如果配 DICE-KEIL USB 仿真器,该接口

9、无须连接。2.5可编程并行接口芯片8255A微机系统的信息交换有两种方式:并行通信接口方式和串行通信接口方式。接口电路在CPU和I/O设备之间起着信号的变换和传输的作用。8255A可为CPU与外部设备之间提供并行输入/输出的通道。由于它是可编程的,可以通过软件来设置芯片的工作方式,因此,用8255A连接外部设备时,通常不用再附加外部电路,使用教方便。并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。在输入过程中,输入设备把数据送给接口,并且使状态线“输入准备好”有效。接口把数据存放在“输入缓冲寄存器”中,同时使“输入回答”线有效,作为对外设的响应。外设在收到这个回答信号后,就撤消数

10、据和“输入准备好”信号。数据到达接口中后,接口会在“状态寄存器”中设置输入准备好标志,或者向CPU发一个中断请求。CPU可用查询方式或中断方式从接口中读取数据。接口中的数据被读取后,接口会自动清除状态寄存器中的标志,且撤消对CPU的中断请求。在输出过程中,每当输出寄存器可以接收数据,接口就会将状态寄存器中“输出准备好”状态置1或向CPU发一个中断请求,CPU可用查询或中断方式向接口输出数据。当CPU输出的数据到达接口后,接口会清除“输出准备好”状态,把数据送往外设,并向外设发一个“数据输出准备好”信号。外设受到驱动后,便接收数据,并向接口电路发一个“输出回答”信号,接口收到该回答信号后,又将状

11、态寄存器中“输出准备好”置位,以便CPU输出下一个数据。三、软件设计3.1程序流程图:开始输出位选通信号初始化显示参数延时关所有位显示位选通信号移位取显示数据指向下一个显示数据数据移位输出到1646位完成?输出时钟脉冲到164否8段码完成?否是是返回3.2键盘扫描显示原理及程序流程图键盘输入的三大问题:1.按键识别:通常有行扫描法和线反转法。本次采用的是行扫描法。即如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。2.消除按键抖动: 一般的按键所用开关都是机械弹性开关,由于机械触点的弹性作用,按键开关在闭合时不会

12、马上稳定地连接,在断开也不会马上完全的断开,在闭合和断开的瞬间均有一连串的抖动。按键按下和松开的时候都存在着抖动。抖动时间的长短因按键的机械特性不同而有所不同,一般为5ms10ms。 3.串键保护:由于操作不慎,可能会导致同时有几个键同时按下,成为串键。处理技术有三:两键同时按下:只有一个键按下才读取键盘,最后仍被按下的是有效的正确按键软件扫描键盘;当第一个按键未松开时,按第二个按键不产生选通信号。n键同时按下:不理会所有按下的键,或者将所有的按键信息存储,然后逐个处理。n键锁定:只处理一个键,任何其它按下又松开的键不产生任何代码。通常第一个按下或最后一个松开的按键产生代码。程序流程

13、图:四、源代码程序8255各个功能口的地址如下图所示:8255方式控制字如下所示:D7:标志位,D7=1;D6、D5:A组工作方式选择。0 0 A口和C口高4位工作于方式0。0 1 A口和C口高4位工作于方式1。1 * A口工作于方式2。D4:D4=0,A口为输出口;D4=1,A口为输出口。D3:D3=0,C口高4位为输出口;D3=1,C口高4位为输入口。D2:B组工作方式选择。0 B口和C口低4位工作于方式0;1 B口和C口低4位工作于方式1D1:D1=0,B口为输出口;D1=1,B口为输入口。D0:D0=0,C口低4位为输出口;D0=1,C口低4位为输入口。连接方式:用排线将P0口和825

14、5数据端连接起来,用排线将8255的PA口与SW4、 PB口与SW3连接,用排线将PC口SW5连接起来。/数码管按键显示/ #include<reg51.h>#include<absacc.h>/-定义使用的IO口-/-定义PA、PB、PC端口及命令端口地址-/#define PA XBYTE0x0FF28#define PB XBYTE0x0FF29#define PC XBYTE0x0FF2A#define COM XBYTE0x0FF2B/-定义矩阵键盘使用的8255接口-/#define GPIO_KEY_0 PA#define GPIO_KEY_1 PC#de

15、fine GPIO_DIG PB/-定义全局变量-/unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char KeyValue;/用来存放读取到的键值unsigned char KeyState;/记录按键的状态,0没有,1有unsigned char DisplayData8;/用来存放要显示的2位数的值/-声明全局变量-/void

16、Delay10ms(unsigned int c); /误差 0usvoid KeyDown(); /检测按键函数void DigDisplay(); /动态显示函数/main主函数/void main(void)KeyState=0;COM=0X99;while(1)KeyDown(); if(KeyState=1)DisplayData3=DisplayData2;DisplayData2=DisplayData1;DisplayData1=DisplayData0;DisplayData0=DIG_CODEKeyValue;KeyState=0;DigDisplay();/数码管显示/v

17、oid DigDisplay()unsigned char i;unsigned int j;COM=0X89;for(i=0;i<8;i+)switch(i) /位选,选择点亮的数码管,case(0):GPIO_KEY_0=0X01; break;/显示第0位case(1):GPIO_KEY_0=0X03; break;/显示第1位case(2):GPIO_KEY_0=0X13; break;/显示第4位default:GPIO_KEY_0=0X33; break;/显示第5位switch(i) case(0): GPIO_DIG=DisplayData0; case(1): GPIO

18、_DIG=DisplayData1;case(2): GPIO_DIG=DisplayData2;default: GPIO_DIG=DisplayData3;/发送段码j=10; /扫描间隔时间设定while(j-);GPIO_DIG=0x00;/消隐/检测有无按键按下并读取键值/void KeyDown(void)unsigned int a=0;GPIO_KEY_0=0xff;if(GPIO_KEY_0!=0xff) Delay10ms(1);a+;a=0;if(GPIO_KEY_0!=0xff)KeyState=1;/有按键按下/测试列GPIO_KEY_0=0XFF;/ Delay10

19、ms(1);switch(GPIO_KEY_0)case(0X3F):KeyValue=0;break;case(0XCF):KeyValue=15;break;case(0XF3): KeyValue=14;break;case(0XFC):KeyValue=13;break;/default:KeyValue=17;/检测出错回复17意思是把数码管全灭掉。/测试行GPIO_KEY_1=0XF0;/Delay10ms(1);switch(GPIO_KEY_1)case(0X70): switch(KeyValue) case(0):KeyValue=KeyValue+7;break; cas

20、e(15):KeyValue=KeyValue-7;break; case(14):KeyValue=KeyValue-5;break; case(13):KeyValue=KeyValue-3;break; ;break;case(0Xb0): switch(KeyValue) case(0):KeyValue=KeyValue+4;break; case(15):KeyValue=KeyValue-10;break; case(14):KeyValue=KeyValue-8;break; case(13):KeyValue=KeyValue-2;break; ;break;case(0Xd0): switch(K

温馨提示

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

评论

0/150

提交评论