凌阳单片机

2024-06-18

凌阳单片机(精选5篇)

凌阳单片机 篇1

1 系统的设计

凌阳16位单片机集成度高、体积小、可靠性好,内部含有10位A/D转换器,简化了电路,16位的性能有较高的数字信号处理速度,提高了精度。凌阳16位单片机是基于SOC的新型的数/模混合的系统级芯片。在一个芯片内集成了单片机数据采集或控制系统所需的模拟和数字外设及其它功能部件。另外,凌阳单片机还增加了适合于DSP的某些特殊指令;有些系列的单片机还嵌入了LCD控制/驱动和双音多频发生器功能。这些都进一步扩大了单片机的应用范围。

2 峰-峰值保持数据采集电路

2.1 电流、电压信号的放大电路

考虑到要满足对大小信号的处理,采用CC4051来选择,对电压、电流信号的放大,通过单片机对CC4051进行控制,使放大倍数可以为1/2、X10两种不同的值。如图2所示。这样能满足对大小不同信号的放大要求,硬件电路简单,容易实现。

图2电流、电压信号放大电路(参见右栏)

2.2 数据保持部分

对电压、电流信号进行同时测量,可用由集成运算放大器LM348组成的峰-峰值信号保持电路(如图3所示),被测信号从IN脚输入,OUT脚是对电压、电流进行峰值

保持功能,用凌阳单片机的一个I/O接口就可以对保持器进行控制。进行测量时,用单片机同时锁定被测电压和电流信号的峰-峰值信号后,即可以分别测量电压和电流量,且不需要考虑时差问题。采用这种方案可减小系统带来的误差。

3 单片机系统相位角处理模块

相位角测量方法为先对电流信号和电压信号分别测量。测量时,单片机先对电压信号进行转换,而此时电流信号被送到保持器进行保持,等待电压信号处理完毕。电压与电流相位差Φ及功率因数cosΦ的测量。电路得到的各点波形如图4所示。其中Uv为正弦交流电压,Ui为同一相正弦电流变换而成的电压波。

由于同一相内Uv和Ui之间有超前滞后两种情况,且相位差均小于90?时,相功率P=0属极少情况,故图4分析了Ui滞后Uv的情况,对于Ui超前Uv,分析结论亦相同。由波形图可见,U-I的相位差Φ所允许时间TΦ=10ms-T。

因此只要测出T的时间,求出TΦ,再按上式计算出Φ,cosΦ亦可随之求出。SPCE061A内部的十六位定时器在49.152MHz的晶振时每1μs加1,故可以用来测定T的时间。若定时器1LSB角度Φ',则Φ'/0.02=180°/10ms,即Φ'=1.44°。所以只要求出TΦ=1388H-T(T为定时器读出的计数值),再乘以1.44?即为Φ的实际相位角。

4 电路调试方法和过程

采用先分别调试各单元模块,调通后再进行整机调试的方法,提高调试效率。

4.1 数据采集、放大模块调试

利用P3.4和P3.5控制模拟开关CC4051,使输入信号与函数信号发生器输出相联,通过改变P3.4和P3.5管脚的电平来改变放大倍数,用万用表测试输入输出电压,再调节函数信号发生器的输出,用万用表测试输入输出电压是否正确;数据保持器则用单片机P1.4来控制,并用示波器观察波形。调试结果显示,模块可以正常工作。

4.2 数据信号频率相位角模块调试

将函数信号发生器的输出与相位角处理模块输入相联接,调节函数信号发生器的输出频率,用示波器观察该模块的输出波形,并与单片机P3.3口相连接。经过检验,相位角模块电路能正常工作。

4.3 A/D转换模块调试

由于凌阳单片机SPCE061内部有2个10位的A/D转换器,因此不用接外部A/D转换电路,只需要编写程序对其进行简单测试即可正常工作。

当每个独立模块能正常工作了,再把各模块线路连接好进行系统程序调试,被测的两路输入信号电压、电流波型可先采用函数信号发生器进行模拟,接上凌阳单片机SPCE061仿真器进行调试程序,对数据采集、放大模块的各输入、输出信号进行测量计算,对数据信号频率相位角模块的相位角进行计算,当系统程序调试成功后,再把程序下载到凌阳单片机SPCE061中进行整机调试。最后把调试结果显示出来,整个系统能正常工作。

5 误差分析及改善措施

(1)采用SPCE061A的10位A/D转换器测量零电压时,显示在0.0048828125~0.009765625V之间跳动,原因是SPCE061A的10位A/D转换时,有1~2个步长的误差,即4.8828125~9.765625mV之间。由于误差恒定,采用软件对误差进行补偿。

(2)由于电路信号处理部分的元器件以及模拟开关CC4051上有一定的压降(约20m V),虽经软件、硬件修正,在小幅值的情况下仍会有一定误差。

(3)整个系统板由手工焊接完成,布线无法避免线路之间以及外界的电磁干扰,从而会导致一定的误差。

(4)功率的测量由电压、电流的测量值间接得到,由于误差的累计效应也会使有用功率、无用功率测量值与理论值存在差异。

6 结束语

数字式工频有效值多用表以数字方式对电压有效值、电流有效值、功率角进行显示,功率的测量由间接得到。本系统以SPCE061为核心部件,利用软件编程,实现对交流电压值、交流电流值、功率角的测量。尽量做到线路简单,减小电磁干扰,充分利用软件编程,弥补元器件的精度不足。

数字式工频有效值多用表以数字的方式对电压有效值、电流有效值、功率角进行显示,从而可以得到有功功率、无功功率和功率因数,方便实用。在设计中采用凌阳单片机具有速度快、价格低、可靠性高、体积小、实用、功耗低等特点。

摘要:工频表采用具有集成度高、数字处理速度快、功能强、低功耗等优点的凌阳16位单片机以数字形式对电压有效值、电流有效值、相位角进行显示。设计分为三个模块:数据采集、数据处理和显示模块。数据信号采集用CMOS系列产品CC4051和运算放大器LM348,对大、小信号分别进行放大处理,采用74LS00和LM324产生相位角;数据处理以凌阳单片机SPCE061为核心,对采集信号进行精确控制和严格计算;显示部分由CC4056驱动和74LS138移位选择与数码管构成。

关键词:数据采集,数据处理,显示模块

参考文献

[1]罗亚非.凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2003,12.

[2]李广第,朱月秀,王秀山.单片机基础[M].北京:北京航空航天大学出版社,2001,7.

[3]华中理工大学电子学教研室.电子技术基础[M].北京:高等教育出版社,1999,6.

[4]薛钧义,张彦斌.凌阳16位单片机原理及应用[M].北京:北京航空航天大学出版社,2003,2.

凌阳单片机 篇2

使用ROB0026 Arduino循迹避障小车平台, 小车由3个轮子组成, 前方2个轮子经过齿轮连接2台直流电机 (左右各一台) , 后方由1个钢珠转向轮组成, 能够承受的最大负载是0.8KG (当电机电压达到9V时) 。

跑道说明:如图1所示, 跑道由转弯标志线和边界线组成, 转弯标志线和边界线均为黑色介质。

2 硬件设计

2.1 主控模块

方案一:采用ATEML公司的AT89C51单片机。51单片机价格便宜, 应用广泛, 但是功能单一, 采用MCS-51单片机实现控制和脉冲计数, 转换速度较慢, 并且51单片机需要仿真器来实现软硬件调试, 实现较为繁琐、复杂。

方案二:采用凌阳公司的SPCE061A单片机作为主控单元的核心。该单片机具有丰富的I/O端口, 用并口连接线可以实现在线调试, 大大简化了系统的开发调试复杂度和成本, 集成PWM输出, 产生PWM波简便易行。

这里选择第二种方案, 可以很方便的产生两路PWM波, 控制电机。

2.2 电源模块

方案一:选用6节干电池供电。采用6节干电池供电的电压为9V, 可以直接给电机供电, 但不能给凌阳SPEC061A单片机供电, 凌阳SPCE061A单片机工作电压是3~6V, 因此需要对9V电压降压, 采用LM7805三端稳压器, 将电压降为6V, 给凌阳SPCE061A单片机供电。

方案二:选用蓄电池供电。选用12V的蓄电池给步进电机供电, 电压稳定、时间长, 功耗比起干电池就相当小了, 可以持续供电。

结合题目要求的圈数及上面的方案, 选择方案二。

2.3 电机模块

方案一:采用步进电机来实现。用步进电机来驱动小车的行驶, 可以实现小车转弯角度小, 容易转向, 但是步进电机转速慢, 小车速度太慢。

方案二:采用直流电机来实现。直流电机具有调速特性好、调速方便, 能承受频繁冲击负载, 具有转速快、过载能力强、直流减速电机力矩大等特点。

根据智能小车系统, 使用第二组方案, 采用ROB0026 Arduino 循迹避障小车平台自带的130直流电机, 它的工作电压范围为3~9V。

2.4 电机驱动模块

由于单机片不能直接驱动电机, 所以需要电机驱动电路模块。

方案一:自己搭建驱动电路, 优点是价格便宜;缺点是电路复杂, 实现较为繁琐, 复杂。

方案二:采用电机驱动模块L298N。优点是:很简单的就可以实现电机正反转及调速;启动性能好, 启动转矩大;工作电压可达到36V, 4A;可同时驱动两台直流电机, 控制小车的左右轮, 实现直行、转弯、加减速。缺点是:价格稍贵。

因此, 采用第二种方案。

2.5 寻迹模块

方案一:采用光电传感器ST198搭建外围电路来实现, 缺点是测量距离较近, 范围在2~10mm可调, 感光性不好, 受可见光的影响比较大, 优点是体积小。

方案二:采用红外蔽障传感器来实现。红外蔽障传感器可通过电位器可在3~80cm之间可调, 具有很高的灵敏度, 不受可见光的影响, 可直接连接单片机的I/O口。它有一个发射管和一个接收管, 当遇到障碍物或者是吸光介质 (如黑色) 时, 接收管不能收到发射管发送的红外线, 输出不同的高低电平, 这样可以检测道路上的黑色转弯标志线和边界线。

综上所述, 第二种方案更好, 所以采用第二种方案。

红外蔽障传感器原理如图2所示。

红色:接4.5~5V电源, 黄色:接单片机, 输出数字信号给单片机, 绿色:接电源负极。

红外蔽障传感器可通过电位器, 在3~80cm之间可调, 不受可见光的影响。当前方无障碍物时, 输出口输出高电平;当有障碍物或者是吸光介质 (如黑色) , 输出口输出低电平。红外蔽障传感器对黑色不反射, 智能小车跑道转弯标志线和边界线都是黑色, 可以通过红外蔽障传感器检测黑色转弯标志线和边界线。

本设计中使用3个红外蔽障传感器, 分别检测转弯标志线和左右边界线。表1列出3个红外蔽障传感器的状态。

2.6 PWM调速方法的论证

PWM调速原理如图3所示。

根据改变占空比的方法不同, PWM调速可以分为以下3种:

1) 定宽调频。这种方法是保持T1不变, 只改变T2, 使周期也随之改变。

2) 调频调宽。这种方法是保持T2不变, 而改变T1, 使周期也随之改变。

3) 定频调宽。这种方法是保持周期不变, 而同时改变T1、T2。

前两种方案由于在调速是改变了脉冲频率, 故当控制脉冲频率与系统的固有频率接近时, 将会引起振荡, 因此, 采用定频调宽。

定频调宽时加在电机两端的平均电压为Uo=T1/ (T1+T2) *VCC。可以通过调整 PWM 的占空比, 来改变 T1 和 T2 的比值, 从而改变Uo的大小。这样就可以通过 PWM资源调节加在电机两端的平均电压, 从而改变电机的转速, 最终实现调节小车速度的目的。

凌阳SPCE061A单片机提供了两个16 位的定时/计数器:TimerA和TimerB。TimerA为通用计数器;TimerB为多功能计数器。

定时器发生溢出后会产生一个溢出信号 (TAOUT/TBOUT) 。一方面, 它会作为定时器中断信号传输给CPU中断系统;另一方面, 它又会作为4位计数器计数的时钟源信号, 输出一个具有4位可调的脉宽调制占空比输出信号APWMO或BPWMO (分别从IOB8 和IOB9输出) , 可用来控制马达或其他一些设备的速度。

本设计使用凌阳SPCE061A单片机分别从IOB8 和IOB9口输出两路PWM波, 来控制左右轮电机, 改变两路PWM波的脉宽调制占空比, 实现左右轮的不同转速。

2.7 系统硬件结构

根据上面的分析论证, 设计的系统总体结构如图4所示。

3 电路原理图设计

3.1 红外蔽障传感器接线图

红外蔽障传感器接线图如图5所示。

红外蔽障传感器1、2接入反相器CD4096的1、3管脚, 经2、4管脚输入到SPCE061单片机的IOB2、IOB3口, 分别检测跑道的外边界线和内边界线, 当检测到黑色标志线时, SPCE061A单片机接收到中断信号, 开始中断处理, 实现小车左右转向不跑出跑道。红外蔽障传感器3接单片机的IOA3口, 当检测到行驶道上有黑色转弯标志线时, 小车开始转弯。

4 软件设计

系统软件采用C语言开发, 程序在Windows XP环境下采用unSPIDE3.0.0软件编写, 可以实现小车对红外蔽障传感器状态的查询、输出脉冲占空比的设定、采用中断方式处理左右红外蔽障传感器检测到边界线转向、左右轮电机停止转向等功能。

5 总结

设计采用凌阳公司16位SPCE061A单片机为控制核心, 实现了小车的控制, 通过测试, 系统达到了设计的要求, 能够自动在跑道内行驶。

摘要:小车硬件系统以凌阳公司16位SPCE061A单片机为控制核心, 选用驱动模块L298N驱动直流电机, 以红外蔽障传感器检测道路上的黑色转弯标志线来实现小车的自动转向不跑出跑道的功能。

关键词:智能小车,SPEC061A,红外蔽障传感器,直流电机

参考文献

[1]安岩.自动循迹智能小车的设计[J].苏州科技学院学报 (工程技术版) , 2010, 23 (1) .

[2]凌阳科技大学计划.凌阳单片机在大学电子竞赛中的应用[M].北京航空航天大学出版社, 2005.

[3]陈永真, 宁武, 蓝和慧.新编全国大学生电子设计竞赛试题精解选[M].电子工业出版社, 2009.

凌阳单片机 篇3

1 CAN智能节点的系统构成

由于CAN总线采用多自主方式工作,可挂多达110个节点。控制系统的构成由计算机和智能节点组成。如图1所示,与DCS控制系统不一样的是它的拓扑结构。不是所有的下位机都以上位机为中心,而是所有的节点(包括上位计算机)都以“平等主体”的形式挂接在总线上。智能节点能够采集现场数据,并根据接收到的命令或者主动将数据发送到CAN总线。可以通过事先设置验收码和验收屏蔽码控制智能节点从总线上接收哪些数据或命令。如果某些数据需要进一步复杂的处理,则上位计算机可以从总线上接收数据。当上位机需要对某个节点施加控制动作时,可以采用点对点方式与该节点通信;而当它需要同时对所有节点施加控制动作时,可以采用广播方式将命令发送到总线。这样当系统正常运行时完全可以没有上位机的参与,大大减少了数据的传输量,同时提高了系统的实时性和可靠性。本文以开发设计CAN总线智能节点为重点。

2 智能节点的硬件设计

本文CAN总线智能节点采用凌阳公司的SPCE061A单片机作为CAN智能节点的微处理器。SPCE061A是凌阳公司推出的一款16位单片机,内嵌32 KB Flash,其核心具有较高的处理速度,能够更容易、更快速地处理复杂的数字信号[2]。CAN控制器采用PHILIPS公司生产的SJA1000,它是集成的独立CAN控制器(与PHILIPS早期的CAN控制器PCA82C200完全兼容),负责完成CAN总线通信协议的物理层和数据链路层的功能[3]。CAN驱动器采用的是TJA1040,它提供了CAN控制器与物理总线之间的接口以及对CAN总线的差动发送和接收功能,可以向下兼容PCA82C250/251,并可以在很多已有的PCA82C250/251应用中使用,而对硬件和软件不需要做任何修改。

CAN智能节点的电路原理图如图2所示。虽然整个电路比较简单,但结合本文设计、现场调试的体会,给出下面几点说明:

(1)SJA1000的片选、读、写、复位、中断,锁存引脚由SPCE061A的IOA2~IOA7口来控制,因为SPCE061A的IOA0~IOA7用做输入口时具有唤醒功能(即输入电平变化引起CPU中断),能降低功耗。

(2)SJA1000并没有和单片机共用复位电路,而是通过SPCE061A的IOA2口来控制,这样,SJA1000的复位就可以方便地由单片机通过软件来控制。

(3)SJA1000的地址/数据端和单片机的P0口相连时,不需要再加锁存器,因为它内部已经有地址/锁存功能[4]。

(4)SJA1000的TX1脚悬空,RX1引脚的电位必须维持在约0.5 V以上,否则将不能形成CAN协议所要求的逻辑电平。

(5)总线上电阻R1、R2一定不能省略,它们对匹配总线阻抗起着相当重要的作用,如果去掉它们[5],系统通信的可靠性和抗干扰能力就会大大降低,甚至不能正常工作。

3 CAN智能节点的软件设计

CAN智能节点的软件设计大体可以分为两部分:一部分为初始化,其中包括单片机SPCE061A的初始化和CAN控制器SJA1000的初始化;另一部分为节点实际要完成的数据采集和对执行机构的控制功能,初始化以后,节点就可以工作。但要完成实际的任务,还要设计出应用层软件。对于基于SPCE061A单片机的CAN总线系统,初始化的流程基本是一致的,下面给出了SPCE061A单片机初始化程序。

由于SPCE061A没有专用的片选、读、写、复位、中断、锁存引脚,因此须用SPCE061A编写出实现SPCE061A对SJA1000的读写操作功能的函数程序,分别记做read()write()。

CAN具有较强的纠错能力,适用于高噪声环境,并具有较远的传输距离[6],现已广泛应用于许多领域,该智能节点利用凌阳公司的61板仿真器进行调试,能模拟实现通信功能。在此基础上构建CAN总线控制系统具有实际意义,但针对不同的控制系统,在硬件和软件上需作相应的改动。该设计作为CAN总线节点的一个模块,能够与仪器仪表等设备相结合,使其具有网络通信的能力,有着广阔的应用前景。

参考文献

[1]阳宪惠.现场总线技术及其应用.北京:清华大学出版社,1998.

[2]罗亚非.凌阳16位单片机应用基础.北京:北京航空航天大学出版社,2003.

[3]饶运涛.现场总线CAN原理和应用技术.北京:北京航空航天大学出版社,2002.

[4]刘光,梁涛.CAN总线智能节点的设计和实现[J].微计算机信息,2006,22(6-2):102-104.

[5]谢立,纪荣.基于C8051F023和CAN总线的数据采集通信系统设计[J].测控技术,2006,25(5):71-74.

凌阳单片机 篇4

1 系统硬件组成

整个系统由信息输入、数据采集、逻辑控制和显示输出四个模块组成。其中,信号采集模块主要完成对当前教室光线的明暗以及教室中的人数等外接数据的获取,以供以单片机为核心的控制部分进行逻辑判断,最终单片机将运算结果输出给数码管、液晶显示屏,同时对教室灯光进行控制。

1.1 信息输入模块

该部分主要由一个2*4的按键组成[1],其主要用于完成作息时间、当前时间的设定以及一周、一月进入该教室的人数查询。其各个键的功能如表1所示。

1.2 数据采集模块

该部分由方波发生器模块、红外线传感器收发射模块和整波模块组成。采用运算放大器LM324产生的频率为1KHz的方波信号[2],用来作为红外发射管的驱动信号。在红外接收端接受到该信号之后,利用整波模块对其进行直流滤波,再用RC积分电路对滤波后的信号进行积分平波。因此,当没有人通过红外传感器时,单片机接收到的为高电平信号,当有人通过时,单片机接受到的为低电平信号。单片机可以通过判断接受到的信号的下跳沿来判断是否有人通过[3]。

因为该系统要对教室中的人数进行统计,所以要对学生是进入教室还是走出教室进行判断,为解决给问题,该系统设计了两路红外传感器。这样,当有人通过传感器时,单片机就可以通过判断两个传感器被遮挡的先后顺序来确定此人是进入教室还是走出教室。

1.3 控制模块

在该系统中,控制器主要用于接收两个外部中断信号,由此判断是进教室还是出教室。同时,控制器自动统计每天进入教室的人数,响应内部中断以实现报警、定时关灯、刷新数码管和液晶显示屏,通过键盘设置时间日期、查看相关信息。对于控制器的选择有以下两种方案。

方案一:CPLD(complex programmable logic device)

CPLD可以实现各种复杂的逻辑功能,规模大,密度高,稳定性好,且可以在线仿真、调试,易于功能扩展。但编程和外部电路复杂,设计调试难度较大,同时由于其集成度高,使得成本也偏高。

方案二:凌阳SPCE061A单片机

16位凌阳61单片机算术运算功能强,精度高,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其体积小、功耗低、性价比高、技术成熟等优点,使其在各个领域得到了广泛应用。

因此,在该设计中我们采用了凌阳单片机作为系统的控制器,其整个系统的硬件框图如图1所示。

1.4 显示输出模块

为了实现较好的人机交互界面,在该系统中采用了数码管、液晶显示屏等多种显示输出设备,其中四位数码管主要用来显示时间,三维数码管用来显示当前该教室中人数,采用ROHS JHD636M1液晶显示屏显示用户的设定作息时间及用户所查询的信息。

2 软件设计

本设计中SPCE061A单片机做为控制的核心,负责整个系统的逻辑运算,因此软件设计是系统能否稳定运行以及能否实现设计功能的关键。该系统中SPCE061A单片机主要完成接收外部数据———处理数据———显示数据。所以软件的重点是:如何接收外部数据,如何处理以及如何显示这些数据。

因此,在该软件实现中我们采用了模块化的实际方案,整个软件设计由初始化模块、键盘接收模块、中断处理模块、数据显示模块和定时报警模块五个模块组成,其整体流程图如图2所示。

初始模块主要完成I/O口、定时/计数器、中断以及液晶显示屏的初始化,键盘接收模块主要用于接收初始变量的设定,如当前时间、作息时间等。同时也接受相关数据的查询,如查询一周之内进入该教室的总人数,一个月内进入该教室的总人数,最后一人离开教室的时间等,数据显示模块用于显示当前的时间、当前教室的人数、作息时间以及用户要查询的相关数据。报警提示功能用于晚上熄灯前如果教室还有人,在熄灯前的一定时间内利用声光提示将要关灯[4,5]。

在给系统的五个模块中最主要的也是实现比较复杂的模块就是中断处理模块。中断处理模块的流程图如图3所示。

3 调试和总结

在整个系统设计完成之后我们在调查研究的基础上,对什么光线情况下应该开灯及系统在判断学生进出教室上进行了设定验证,同时我们也对系统的定时报警关灯系统以及目前教室人数、进入教室的人次均进行了调试,结果显示该系统可以稳定运行且效果理想。

本系统主要是应用于教室的灯光控制,但是对于一些公共场合如会议室、办公室等场所,只要在该系统的基础上稍加改动,便可以很好的满足其需要,因此该系统的可移植性好,应用前景广阔。

摘要:为实现对教室灯光的有效利用、掌握了解学生学习情况,设计了该控制系统,该系统以凌阳61单片机作为控制核心,利用红外、光敏传感器获取教室人员及光照情况,利用喇叭,数码管、液晶显示屏等电路来报警、显示时间、人数等信息。调试结果证明该系统具有很好的人机交互界面,能对教室灯光进行智能控制,对教室人数和进入教室的人次进行正确统计。且电路简单,成本底。不仅实现了节约能源,了解学生等功能,而且可移植性好,可以应用到图书馆、会议室、办公室等场所。具有很好的实际应用价值和广泛的应用空间。

关键词:多功能,凌阳单片机,红外传感器,光敏传感器,人机交互

参考文献

[1]钱建海.单片机实现PS/2键盘的接口设计及模块化编程[J].电脑知识与技术,2007(14):409-410.

[2]周潮.常用电子元件及典型应用[M].北京:电子功用出版社,2005.

[3]陈永甫.红外辐器件有典型应用[M].北京:电子工业出版社,2004.

[4]张培仁.张志坚高修峰十六位单片微处理器原理及应用(凌阳SPCE061A)[M].北京:清华大学出版社,2005.

凌阳单片机 篇5

关键词:单片机,汇编语言,操作系统

随着嵌入式计算机系统复杂程度的不断提高和实时多任务的需求, 促使越来越多的用户选用实时操作系统 (RTOS) 。与大多数商用RTOS相比, μC/OS- Ⅱ实时操作系统的源代码资源公开;更重要的是 μC/OS- Ⅱ实时操作系统的内核非常精练, 比较适合硬件资源有限的单片机控制系统, 因此, 研究 μC/OS- Ⅱ在各种嵌人式系统上的移植和应用开发具有十分重要的意义[1]。

本次设计的主要目标是将 μC/OS- Ⅱ嵌入式操作系统移植在凌阳16 位单片机微控制器上。在移植过程中, 针对凌阳16 位单片机的结构特点, 用凌阳单片机的汇编语言改写了 μC/OS-Ⅱ嵌入式操作系统中与微处理器硬件相关的那部分汇编语言代码。移植中改写的代码模块主要包括数据类型的定义、任务切换前后环境的保护与恢复、操作系统临界区处理函数等。

一、μC/OS- Ⅱ操作系统

μC/OS- Ⅱ操作系统具有公开源代码、可固化、可裁剪、多任务、可移植性等特点, μC/OS-Ⅱ源码决大部分使用移植性很强的ANSI C写的, 与微处理器硬件相关的部分是用汇编语言写的。汇编语言编写的部分已经压到最低的限度, 以使 μC/OS- Ⅱ可以移植到其他微处理器上。只要移植的目标处理器具有堆栈指针, 具有CPU内部寄存器入栈、出栈的指令, μC/OS- Ⅱ就可以移植到各种不同的处理器上。

二、μC/OS- Ⅱ操作系统在SPCE061A上的移植

(一) 如何移植

所谓移植, 就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植, 大部分的 μC/OS- Ⅱ代码是用C语言写的;但仍需要用C和汇编语言写一些与处理器相关的代码, 这是因为 μC/OS- Ⅱ在读写处理器寄存器时只能通过汇编语言来实现。由于 μC/OS- Ⅱ在设计时就已经充分考虑了可移植性, 所以μC/OS- Ⅱ的移植相对来说是比较容易的[2], 移植工作包括以下几个内容:

1.用#define设置一个常量的值 (OS_CPU.H)

2.声明10 个数据类型 (OS_CPU.H)

3.用#define声明三个宏 (OS_CPU.H)

4. 用C语言编写六个简单的函数 (OS_CPU_C.C)

5.编写四个汇编语言函数 (OS_CPU_A.ASM)

(二) 移植代码验证

1.软硬件开发环境

本次设计使用61 板, 该板上有一个基于凌阳公司un SP内核SPCE061A的微控制器。61 板配有凌阳自行研发设计的16 位单片机开发环境IDE[3]。此工具在Windows环境下操作, 支持标准C语言和汇编语言, 集编译、编程、链接、调试和仿真于一体, 应用方便简单易学。集成开发环境IDE具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等, 是编程、调试工作方便且高效。此外, 它的软件仿真功能可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。在集成开发环境IDE中, 可以非常方便将编写好的程序, 通过61 板配套的下载线下载到61 板上进行在线调试[4]。

2.具体验证

在本次设计中, 首先, 在un SP1.16.1 集成开发环境中建立一个工程, 加入主文件及用户自编的任务、μC/OS- Ⅱ嵌入式操作系统文件及移植后的汇编代码、开发板引导文件。然后, 设置编译选项, 连接, 在un SP1.16.1 集成开发环境中运行, 在计算机上进行软件仿真器下载到微控制器中并进行硬件仿真调试, 经检验, 用户任务能够正常运转。

在本次设计中编写了任务A, 任务B, 任务C, 分别控制LED1, LED2, LED3 的闪烁并分别延时1s、2s、3s。

将Task A和Task B进行任务切换的代码所附如下:

实验结果:任务A、任务B、任务C分别控制了LED1、LED2、LED3 的闪烁并分别延时了1S、2S、3S。

三、结语

本文通过详细研究 μC/OS- Ⅱ的移植特点和内核结构, 完成了 μC/OS- Ⅱ在凌阳单片机上的移植并通过代码测试。通过上述移植过程, 能够对任务堆栈、任务调度有深刻理解。总之, 在单片机上应用嵌入式操作系统后, 由嵌入式操作系统来管理硬件和软件资源, 大大方便了应用程序的设计和扩展, 也使单片机应用于复杂的场合变得可能。

参考文献

[1]赵志刚, 吴志刚.μC/OS-Ⅱ操作系统向PIC18平台移植方法的研究[J].计算机测量与控制, 2007, 15 (9) :1217-1219.

[2]Alow orth Steve T.Introduetion To Real-Time Software Design[Z].Newyork:Springer verlag, 1981.

[3]“61板”使用说明书.

上一篇:热风干燥处理下一篇:电能表自动化检定