tag 标签: C8051F020

相关博文
  • 热度 15
    2015-3-24 13:21
    1052 次阅读|
    0 个评论
          摘要: 在仪器仪表电路中,人机交互界面是必不可少的环节。为了解决单纯采用单片机制作的系统功耗高、速度慢、电路结构繁琐的问题,同时为了发挥出单片机的灵活性和FPGA 的高速性,系统采用C8051F020 单片机和CycloneⅡFPGA 作为系统核心, 设计实现了键盘、LCD 等人机交互功能, 同时预留了部分I/O 接口作为扩展接口使用。采用FPGA 扫描键盘可以极大程度地节省单片机的资源,利用单片机和FPGA 共同控制LCD 可以更好地体现出人机交互的特色。   在现代各类仪器的开发中,人机交互功能正起着无可替代的作用。人机交互界面友好的仪器将更容易操作和使用,从而提高工作效率。液晶显示器(LCD)具有功耗低、价格低、寿命长、接口控制方便等特点,在科研与设计领域正发挥着越来越大的作用。FPGA 作为单片机外设的接口芯片,可以大大简化接口电路,通过对FPGA 进行编程,可以实现常用的译码、地址选通等功能。   本文以C8051F020 单片机与FPGA 互连系统为控制核心,以液晶显示控制器T6963C 为例,结合行扫描键盘,简述了一种人机交互功能的设计。    1 系统设计方案:   FPGA 可在很大程度上扩展单片机的资源,然而人机交互功能仍应尽量减少对单片机及FPGA 的资源消耗, 以便将更多的片内资源用于其他功能的扩展。采用FPGA 扫描键盘可以节省单片机的资源, 同时也能灵活地实现键盘的扩展。而考虑到液晶控制较复杂, 依然采用单片机控制LCD,使LCD 的各种功能得到最大程度的利用,其系统框图如图1 所示。   2 硬件电路及FPGA 接口设计:   2.1 总线接口设计:   这里采用单片机C8051F020 与CycloneⅡ FPGA 互连的系统。C8051F020 器件是完全集成的混合信号系统级MCU芯片,具有64 个数字I/O 引脚,与8051 完全兼容,而且速度得到了极大提高,70%的指令执行时间为1 或2 个系统时钟周期,只有4 条指令的执行时间大于4 个系统时钟周期。此外,C8051F020 系列MCU 对CIP-51 内核和外设有几项关键性的改进,提高了整体性能,更易于在最终应用中使用。如提供22 个中断源、7 个复位源、可编程交叉开关、8 位A/D 转换器、12 位D/A 转换器等。   CycloneⅡ系列FPGA 将低功耗FPGA 的密度规模扩展至68 416 个逻辑单元,并提供高达622 个可用的I/O 接口以及高达1.1 Mb 的片内存储单元 。CycloneⅡ系列成功实现了高效与低功耗的结合,可用于自动化、通信、视频播放等领域。为兼顾成本问题, 本系统采用性价比较高的EP2C8 型FPGA 作为接口器件。   为使单片机的资源可以得到最大的开发,将单片机的高端口,即P4~P7 接入FPGA,并通过FPGA 对外部设备进行访问。在FPGA 中通过Verilog HDL 语言编程实现了3-8 译码器,从而实现了对单片机地址总线的扩展。该3-8 译码器对LCD 以及键盘的键值读取提供使能信号,如图2 所示。   2.2 T6963C 及其接口设计:   T6963C 液晶显示控制器多用于小规模的液晶显示器件,常被装配在图形液晶显示模块上,以内藏控制器型图形液晶显示模块的形式出现。   单片机对T6963C 有2 种访问方式: 直接访问与间接访问。直接访问利用三总线以I/O 设备访问形式进行控制;间接访问则由单片机提供并行接口,以程序控制时序的方式进行控制。为简化程序,这里采用直接访问方式。   该LCM 的FS1 引脚用于控制显示字符的字体。FS1 为高时,LCD 显示6×8 字符;FS1 为低时,LCD 显示8×8 字符。经实践,在显示英文与数字时,6×8 字符更为美观;在显示中文字符时,8×8 字符更为方便。一般系统采用将FS1 接地或接高的方式来固定字体,而本系统采用P2.1 对FS 进行控制,通过改变地址实现改变字体的功能,使得界面的显示更灵活。    2.3 键盘电路设计:   键盘是常用的单片机输入设备,分为编码键盘和非编码键盘。键盘上闭合键的识别由专用硬件译码器实现,并产生键编号或键值的称为编码键盘;靠软件识别的称为非编码键盘。在单片机组成的测控系统及智能化仪器中使用最多的是非编码键盘,本系统设计在FPGA 中编程实现3×6 键盘的行扫描。    由于按键的机械特性,在闭合和断开的瞬间会伴随着一连串的抖动,键抖动会引起一次按键被误读多次,所以必须进行去抖处理,常用的方法为延时去抖动。FPGA 产生键值之后向单片机发送中断,并等待单片机读取键值。由于人脑反应时间相对较长, 键盘中断可以处于相对较低的优先级,因此本文将键盘中断接于外部中断7。   3 软件设计:   软件设计遵循结构化和层次化的设计原则。底层函数直接与硬件沟通,而上层函数直接通过调用底层函数来实现相应功能,从而使上层函数与硬件环境彻底分开。当硬件环境发生变化时,仅修改底层函数便能实现程序的移植。   3.1 液晶驱动模块的编程设计:   本模块的底层函数需要实现写控制字、写参数、查忙等功能。由于采用直接访问,写控制字与写参数的函数只需向控制口或数据口的地址送数即可。由于 LCD 是慢速器件,因此在每次写控制字及写参数之前都需要进行查忙。T6963C的状态字共有7 位有效的状态位,如表1 所示。其中STA1~STA3 最为常用,一般情况下可以不需要对STA5~STA7 进行查忙的程序。   3.1.1 液晶驱动模块的初始化:   T6963C 的最大特点是具有独特的硬件初始值设置功能,显示驱动所需的参数如占空比系数。驱动传输的字节数/行及字符的字体选择等均由引脚电平设置, 这样T6963C 的初始化在上电时就已经基本设置完成,软件操作的重心就可以全部用于显示画面的设计上。因此,初始化时仅需根据实际情况设置文本区域和图形区域的首地址和宽度, 以及CGRAM 偏置地址、合成方式、光标形状等即可正常使用。   液晶驱动模块的初始化函数如下:   void LcdInitial(void)   {   LcdWriteDataD(0x00,0x00,0x40); //设置文本区域首地址为0000H   LcdWriteDataD(0x20,0x00,0x41); //设置文本区域宽度为20H 字节   LcdWriteDataD(0x00,0x04,0x42); //设置图形区域首地址为0400H   LcdWriteDataD(0x20,0x00,0x43); //设置图形区域宽度为20H 字节   LcdWriteDataD(0x03,0x00,0x22); //设置CGRAM 偏置地址,显示存储器的首地址为1800H   LcdWriteDataN(0xa7); //光标形状设置为8×7   LcdWriteDataN (0x80); //启用内部字符发生器,逻辑“或”合成   LcdWriteDataN(0x9c); //开文本和图形显示,禁用光标   LcdClear(3); //清屏   }   3.1.2 英文及汉字的文本显示:   由于英文及数字等常用字符的字模已经固化在CGROM中,因此进行英文的显示时,只需指定显示的地址,再输入该字符对应的标号即可。汉字的显示与英文的显示类似。然而出于其复杂性,一个汉字需要使用4 组点阵才能完整显示。在初始化后将汉字的4 部分字模顺序输入CGRAM 中, 在使用时仅需计算好每一部分的显示地址即可对汉字进行完美显示。   对于一串英文字符的输入, 可以利用字符串的特性进行操作。通过检测‘\0’字符来判断英文字符串的结尾,从而避免了在调用此显示函数时人工计算句子长度的工作。英文字符的 ASCII码值与其在CGROM 中对应的标号恰相差0x20,因此仅需简单的减法即可实现标号的转换。此外,在进行英文的连续显示时,使用了T6963C 的数据自动写指令,从而提高了显示效率。   对于一串中文的显示,则仅需通过循环调用单个中文的显示程序进行实现。注意由于C51 语言中字符串无法支持中文,因此必须人工计算中文字串的长度并将其作为函数传递给此显示函数。   字符发生器CGRAM 中总共可存储32 个汉字,对于需显示较多汉字的应用, 可从需显示的汉字中选出16 个最常用的汉字,固定存放于CGRAM 中,其余汉字仅在需要使用时动态写入CGRAM。这样, 既提高了显示效率, 又解决了CGRAM 过小的问题。   3.1.3 图形显示:   除使用文本显示汉字外,还可采用图形显示的方式。具体方式是将字模以数组的方式保存于单片机的代码段,在需要显示时将数据送入图形区即可。此外,利用图形显示,还可以编写描点程序显示相应波形或者编写绘图程序绘制简易表格,使系统显示结果更加直观,便于分析。     3.1.4 文本特效:   T6963C 可以设置文本属性区,并对文本实现反白、正向闪烁、反向闪烁等特效。使用时仅需将图形显示设置为文本属性区即可。此时图形区的内容将无法显示,若图形区与文本属性区划分在CGRAM 的不同区域,则图形区的内容可以得到保存。利用文本特效,可通过反白或闪烁等效果指示可选选项以及当前选项,从而使界面更易于操作。   3.2 人机交互界面设计:   除基本的10 个数字键以外,还设定了上、下、左、右、确定、取消等按键。此外,按键位置的设计,更符合人们的按键习惯。在界面中采用分级的菜单, 在一级菜单中选定功能之后将进入下一级菜单对功能进行更详细的设定。在人机交互界面中可以使用方向键进行功能的选择,数字键仅用于数据的输入。   界面充分利用了文本特效,对选项采用反向显示表示该选项已选定;对选项采用反向闪烁表示用户可通过方向键改变选项。在需要进行数字输入的界面中打开光标,即可向用户标示数字输入的地方。此外,必要的警告和出错界面的设计将为用户提供更多信息,使人机交互界面更为友好。   4 结束语:   本系统采用键盘+LCD 的输入输出设备, 并且可以通过FPGA 实现各种其他外设的接口电路的设计, 减少了对单片机资源的占用,使得设计灵活、方便。同时FPGA 还可以为单片机提供存储器和I/O 口等资源。本文设计的电路可扩展性强, 在此基础上可将其扩展成各种拥有友好界面的系统,如可控增益放大器、音频信号分析仪、集成运放分析仪等。经实践,该系统稳定易用,实用性强。
  • 热度 19
    2013-11-4 21:20
    1290 次阅读|
    0 个评论
      在数控机床系统中,功能模块可分为两大部分:一部分是实时性要求不高的功能,例如人机界面交互管理等;另一部分是实时性要求高的功能,主要有伺服控制、插补计算等。根据这一特点,该系统采用两级控制结构,利用 IPC丰富的软件资源,提供图形化的人机交互环境;利用嵌入式执行控制器的高实时性和稳定性,实现快速、可靠的控制,充分发挥了二者的优点。两级之间用串行口进行实时通信。本文主要介绍嵌入式执行控制器的实现。   1 数控机床系统硬件结构   数控机床系统硬件结构如图1所示,IPC作为上位机,安装有专用软件,实现人机交互;C8051020芯片及其外围电路构成的嵌入式执行控制器作为下位机,负责实时、可靠的控制。执行控制器通过串行口接收上位机的命令信息(包括:插补命令、开关量控制命令),再将这些信息转换成控制信号输送给相应的执行部件。例如,将插补命令转换成一连串的插补信号,输送给电机控制部件;将开关量控制命令转换成输出信号,通过I/O驱动隔离接口板输送给相应的开关控制器。执行控制器同时还有2个检测任务:一个是刀具是否运动到各轴限位点的检测,另一个是间隙电压的检测。这两个信息将为运动时的自动调节控制提供依据。执行控制器还负责将运行中的状态信息组装成帧,实时地传送给上位机。   2 μC/OS-Ⅱ在C8051F020上的移植   要使用μC/OS-Ⅱ,首先就必须把这个内核成功地移植到C805lF020上。μC/OS-Ⅱ的移植主要是对OS_CPU.H,OS_CPU_A.ASM和OS_CPU_ C.C三个文件进行修改,下面就具体的修改内容做介绍。   2.1 OS_CPU.H文件的修改   OS_CPU.H包括了用#define定义的与处理器相关的常量、宏和类型定义。其中,需要修改的部分如下:    2.2 OS_CPU_A.ASM文件的修改   该文件包含4个汇编语言函数。   (1)OSStartHighRdy()函数在多任务系统启动函数OSStart()中调用。作用是设置系统运行标志位OSRunning=TRUE;将就绪表中最高优先级任务的栈指针Load到SP中,并强制中断返回。   (2)OSCtxSw()函数是在任务级切换函数中调用的。作用是保存当前任务的环境变量,将当前SP存入任务TCB中,载入就绪最高优先级任务的SP,恢复就绪最高优先级任务的环境变量,中断返回。这样就完成了任务级的切换。   (3)OSIntCtxSw()在退出中断服务函数OSIntExit()中调用。作用是实现中断级任务切换。   (4)OSTicklSR()系统时钟节拍中断服务函数,其周期的大小决定了内核所能给应用系统提供的最小时间间隔服务。该中断由C8051F020的TO定时器完成,设置定时时间为20 ms。修改代码如下:   其中:TOVAL是16位定时器T0的时间常数,该系统采用25 MHz的外接晶振,模式1(16位)定时。   2.3 OS_CPU_C.C文件的修改   该文件中定义10个C函数,如下:      其中,最重要的是OSTaskStklnit(),它的作用是初始化堆栈,返回堆栈的最低地址、堆栈的长度,方便汇编语言实现任务的切换。其他9个函数是暂无具体功能,其功能可以根据需要在系统内核扩展时添加。   3 基于μC/OS-Ⅱ的数控机床系统设计   3.1 执行控制器的软件结构   如图2所示,系统总体分为3个功能块,即:与IPC的通信、命令解释和命令执行。其中,通信有发送和接收两方面内容;命令解释时,直接执行开关量控制命令;命令执行中,需要进行插补计算、检测间隙电压和限位开关状态及加工监测。   3.2 任务划分及其优先级的确足   (1)发送任务   嵌入式执行控制器发送给IPC的信息有2种:联络信号和运行中的状态信息。嵌入式执行控制器处于待命状态时,定期向IPC发送联络信号,用于确定IPC是否正常工作。若IPC运行正常,则IPC收到联络信号后,会回送给嵌入式执行控制器一个应答信号,若发送的多次联络信号都未收到应答,则认为IPC出错。嵌入式执行器处于加工状态时,将运行中的状态信息以固定格式定期向IPC发送。IPC收到信息后,将其转换成图形、文字等信息显示出来,提供给操作员,便于实时掌握加工状态,发送任务的实时性要求低。   (2)接收任务   嵌入式执行控制器接收IPC机发送的联络、应答和命令3种信息,若接收到联络信号或应答信号,则接收任务直接处理(发送应答信号或刷新联络状态位);若既不是联络信号也不是应答信号,则认为是命令信息,接收任务将命令完整接收后,关闭写接收缓冲区,激活命令解释任务。接收任务是由通信口接收中断触发的,其实时性要求高。    (3)命令解释任务   命令解释任务首先对接收缓冲区的命令信息进行校验和解释,处理完成后,清空并开放接收缓冲区,允许新命令的接收。这样做的目的是不在接收缓冲区中积压多条命令,在当前命令解释完成之前,不接收新命令,以提高嵌入式执行控制器对命令的响应速度。根据命令执行时间的长短,将命令分为开关量控制命令和插补命令2 种。开关量控制命令的执行时间短,因此在命令解释后直接执行,以减少任务切换的时间消耗。插补命令是加工命令,运行时间长,采用专门的加工监控任务来执行,命令解释任务只负责在命令解释完成后激活加工监控任务。命令解释任务的实时性要求高。   (4)加工监控任务   加工监控任务根据当前的工作状态(手动方式或自动方式)激活插补计算任务,并进行加工状态的监控。手动工作方式下,操作员在PC机上手动控制刀具向 -x,+x,-y,+y,-z,+z六个方向运动、刀具返回基准点、端面找正和孔中心定位等操作。自动工作方式下,操作员向控制器传送直线、圆弧的运动命令,控制器自动完成该线形的运动。加工监控任务的实时性要求较高。   (5)插补计算任务   插补计算任务是计算轮廓起点和终点的中间点坐标值。本系统采用逐点比较法进行插补,插补任务每执行1次产生1个行程增量,每个行程增量以1个脉冲的方式输出给步进电机。插补任务的运行周期可能低于操作系统时钟,达到每秒数千次,因此使用定时器1作为插补运动时间控制器。插补计算任务在该软件中的实时性要求最高。   (6)间隙电压检测和限位开关状态检测任务   该系统用于电火花线切割数控机床,间隙电压是电火花加工时工具(电极丝)与工件之间的放电电压,该数据是对放电加工过程进行实时检测的重要参数,需要实时采集。限位开关是指刀具运动到加工台边界位置时,触发的一个状态开关。当到达这个感应开关时刀具应该停止工作,起到一个保护作用,也就是限定了运动的位移,该信息也需要实时采集。这两个任务具有实时性高,执行频繁,执行时间短的特点,因此把它们设为一个检测任务。与插补任务相同,由于检测任务的运行周期低于操作系统时钟,因此使用定时器3作为检测任务的时间触发器。   上面将实现的功能划分为6个任务,介绍这些任务的功能,并对其实时性要求做了分析。上述任务划分如表1所示。   3.3 任务间通信   在完成任务划分后,还需要考虑任务的通信和同步。发送任务与检测任务是独立的,接收任务、命令解释任务和加工监控任务存在联系,如图3所示,这里需要使用信号量和邮箱解决任务间的通信同步。   (1)命令信号量SemCmd。当接收任务接收到一条命令信息时,发出该信号量,由命令解释任务接收,取出并解释命令后,清除该信号量,允许接收新命令。   (2)加工启动消息邮箱Mbox。当命令解释任务发现命令信息为插补命令时,将信息翻译成约定格式存入邮箱,发送出去,加工监控任务接收。   4 实验结果   实验测试,IPC通过串口向执行控制器发送直线插补命令G01X1000Y2000\LF,如图4所示,观察返回信息中的x,y轴坐标,各点基本分布于点(O,O)与点(1000,2 000)的直线周围,误差小于1个运动当量,这说明整个系统运行正常。   5 结语   C8051F020处理器具有丰富的硬件资源和强大的处理性能,μC/OS-Ⅱ具有实时性高,通用性好,移植、扩展方便等特点。基于该软硬件平台,可以降低系统的复杂度,提高产品的开发速度。经验证,该硬软件系统能满足该数控系统的要求,具有可行性。
相关资源