stc单片机范文

时间:2023-03-14 02:30:21

stc单片机范文第1篇

所谓PCR(聚合酶链式反应polymerasechainreaction),即体外基因扩增技术,是将试管中标本的单个复制的目的基因在短时间内由人工复制到数千万倍,从而对疾病发展过程中相关基因的变化特征进行检测的新技术。其原理是:先将含有所需扩增分析序列的靶DNA双链经热变性处理(温度t1),解开为两个单链,然后加入引物与互补DNA结合后,经反链杂交复性(退火温度t2),在聚合酶的作用下将引物延伸(温度t3),使DNA重新复制成双链。然后开始下一次循环扩增,每次循环延伸的模板增加1倍,理论上PCR可以按2的n次方倍数扩增,从而将极微量的靶DNA成百万倍地扩增到足够检测分析量的DNA。

PCR的循环程序为:93℃变性30s,55℃退火20s,然后在72℃延伸30s,共循环30~35次。最后一次循环结束后,再将反应管置72℃温育5分钟,以确保充分延伸。

综上所述,PCR循环过程实际上就是一个温度循环控制的过程。在我们的系统中,PCR热循环采用单片机控制先进的平面薄膜加热技术和成熟的冰机致冷系统来实现快速升、降温控制。考虑互换性和便于调试,温度传感器用铂电阻Pt100,测温精度达±0.2℃;温度控制采用PID调节算法,控制精度达±0.3℃,有效地保证了PCR过程的实现。

硬件设计

1单片机系统

在这个系统中,我们选用了STC系列的STC12C5408AD单片机。这是高速、低功耗、超强抗干扰的新一代8051单片机,全部中国本土自主知识产权,指令和8051完全兼容,其中90%的指令仅用3个时钟周期即可完成;内有8KBFLASH程序存储器,512BSRAM和12KBEEPROM,地址0000H~2FFFH;有ISP(在系统可编程)功能,无须专用编程器,通过串口可直接下载用户程序。STC12C5408AD的管脚如图1所示。

2温度变送器

我们采用AD693信号变送器。AD693是一种具有信号放大、补偿基准电压源、V/I变换等功能的单片集成电路,能够和多种传感器相配合,处理0~60mV之间的模拟量信号,并以(4~20mA\0~20mA\12±8mA)标准电流形式输出到测量或控制系统。AD693的12-13短接时,测温范围为0~104℃,输出电流为4~20mA。AD693的内部基准电阻为l00Ω,其温度特性很好,可作为铂电阻的接口用电阻。

铂电阻Pt100的温度特性曲线如图2所示。

由图2可见,铂电阻Pt100与温度的线性关系还比较好,但对于精密测量而言,应依下列公式进行处理。

0≤t

AD693和铂电阻(Ptl00)组成的测温电路如图1所示。由图可见,由于AD693的1-5,2-4脚短接,V5=75mV,因此流过铂电阻(Ptl00)的电流为75mV/l00Ω=0.75mA,在+SIG端V(17)=75mV+RTD×0.75mA;V(17)与V(18)的电压差经AD693电压放大和V/I转换,得到4~20mA的电流输出,再经250Ω精密电阻,得到1~5V的输出电压V0。

3A/D转换TLC2543

STC12C5408AD单片机本身虽有10位A/D转换功能,但我们需要更加精密的器件,因此选用TLC2543芯片。TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程,在工作温度范围内转换时间10μs。由于是串行输入输出结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。

如图4所示,TLC2543与电路的连线简单,三个控制输入端为CS(片选)、输入/输出时钟(I/OCLOCK)以及串行数据输入端(DATAINPUT),一个串行数据输出端(DATAOUT)和一个转换结束输出信号EOC。有11个输入通道AIN0~AIN10,我们选择AIN0,接AD693输出电压VO。采样-保持是自动的;转换结束,EOC输出变高,转换结果由输出端(DATAOUT)串行输出,第一个数据输出发生在EOC的上升沿(不用CLK驱动),其他位发生在I/O时钟的下降沿后。基准电压端REF+接VCC,REF-接50℃时对应的输入电压VO(50),低于VO(50)的输入电压的转换结果为全0,最大输入电压范围取决于两端电压差,这样,就将输入温度范围缩小到50℃~104℃,从而提高了A/D分辨率。

4温度控制接口电路

系统的温度控制如图5所示,由两路固态继电器(SolidStateRelay,缩写SSR)来实现。SSR输入控制电路具有与TTL/CMOS兼容,正负逻辑控制和反相等功能,可以方便地与TTL、MOS逻辑电路直接连接。固态继电器的输入与输出电路的隔离和耦合方式有光电耦合和变压器耦合两种:光电耦合通常使用光电二极管-光电三极管、光电二极管-双向光控可控硅、光伏电池,实现控制侧与负载侧隔离控制。SSR的功率开关直接接入电源与负载端,实现对负载电源的通断切换。一路SSR通过平面薄膜加热进行升温控制:由于SSR内部有过零触发电路,因此很容易就可实现完整的周波控制,避免了非周波控制的高次谐波干扰,从而提高了系统的可靠性;另一路SSR直接控制冰机致冷系统来实现快速降温控制。

软件设计

1Pt100温度与A/D转换值

由温度、Pt100电阻值、输出电压VO、A/D转换值的一一对应关系,我们事先制作了A/D转换值与温度的对应关系表,存储在STC12C5408AD的12KBEEPROM中;单片机在运行时,由A/D转换值可直接查出对应的温度值,从而节省了大量的计算时间。调试时,我们又发现,升温至69℃和90℃之前,以及降温至58℃之前,P15和P16分别都处于低电平状态,即全导通状态;只有当升/降温到了距目标值还差3℃之后,系统才进入PD调控区。因此,我们只要将54~58℃、69~73℃和90~94℃三个区间按0.1℃的精度制作A/D转换值与温度的精确对应关系表,每个区间40个分度,三个区间共120个分度,每个分度3字节,共360字节,这样我们就完成了一个非常精致的A/D转换值与温度的精确对应关系表,既节省了存储空间,又减少了查表的宝贵时间。

2控制算法

温度控制一搬采用PID调节算法,即比例、微分、积分算法。在我们的系统中,由于要控制温度的介质质量少,恒温时间短,调节速度快,因此采用PD调节算法,即比例、微分算法。当升/降温距目标值还差3℃之前,P1.5和P1.6分别都处于低电平状态,即全导通状态;当升/降温到了距目标值还差3℃之后,系统才进入PD调控区。

为减少设计工作量,提高程序运行速度,我们直接用温度的A/D转换值作程序参数,如用AD55、AD72、AD93分别作目标温度的A/D转换值,用AD58D、AD69D、AD90D分别作与目标温度前3℃的偏差绝对值的A/D转换值,用AD553D、AD723D、AD933D分别作与目标温度±0.3℃偏差绝对值的A/D转换值等,汇编时分别用伪指令赋值。

控制周期设为40ms,用定时器0设40ms中断来控制。

中断服务程序

1)首先执行七次连续温度采集,并对其进行排队、取中值,作为本轮温度采集值,存入RAM60H61H,并作为FIFO队列的数据N0,高字节在高位;

2)计算与目标温度的偏差。

当偏差≥目标温度前3℃的偏差的A/D转换值ADXXD时,P1.5或P1.6处于低电平状态,即全导通状态;

当偏差

当偏差≥目标温度±0.3℃偏差绝对值的A/D转换值ADXX3D时,计算FIFO队列的数据N0与N-4的队列偏差;

当偏差大而队列偏差小,说明系统偏离目标较大,且进展较慢,必须加大调控量,P1.5或P1.6处于低电平状态40ms,即全导通状态;

当偏差大而队列偏差亦大时,说明系统偏离目标较大,但进展较快,必需减少调控量,P1.5或P1.6处于低电平状态20ms,即半导通状态,否则容易超调;

当偏差较小而队列偏差大,说明系统偏离目标较小,且进展较快,必须停止调控,P1.5或P1.6处于高电平,即全截止状态;

当偏差较小而队列偏差亦小,说明系统偏离目标较小,但进展较慢,可作小调控,即P1.5或P1.6处于低电平10ms,即半波导通状态;

当偏差

PD控制流程如图6所示。

3)FIFO队列的数据按先进先出原则处理:该队列共保留五组数据,按N0,N-1,…,N-4分别存在60H61H,…,68H69H中,此时,从高位起,将每字节高移两字节,即69H移入6BH,68H移入6AH,…,61H移入63H,60H移入62H,将60H61H预留给下一周期。

4)中断返回

stc单片机范文第2篇

【关键词】液体点滴速度;单片机

1.引言

随着医院管理系统趋向于电子化、网络化,如何利用计算机与现代控制技术提高医疗器械的自动化成为目前主要应用方向之一。静脉输液是临床医学中一个重要的治疗手段,传统的输液过程都是由监护人员手动控制液体点滴速度,造成了监护人员和病人的诸多不方便,也不利于病区的综合管理。本系统应用自动化控制技术实现了对液体点滴速度的监控,该智能液体点滴监控仪可以对多床位进行远程、集中、分床监测,并针对不同病人需不同的输液速度而自动控制点滴数。护士可在护士室监控若干病房的输液情况,而自动调整滴数,减轻护士的工作量,实现医院护理自动化。而且在紧急情况下,可以向总控制台发出报警。监护人员也可以通过远程通信,监控病人输液的整个过程,并对液滴速度进行设置等。

2.系统总体框图

本系统以STC89C52单片机为核心,由光电传感器组成数据采集部分,由步进电机作为驱动部分,采用键盘输入,利用LCD作为显示器。利用串口,实现了主单片机和多个从单片机之间的多机通信,一个主站控制多个从站的有线液体点滴速度监控系统(见图1)。

3.系统硬件设计

1)数据采集

发光二极管发射的平行光束穿过茂菲氏滴管投射到光敏三极管的感光面上,在没有液滴滴落时,光敏三极管接收到的光照度最大,产生的光电流也最大,当有液滴滴落时,由于液滴的形状特性,使平行光束发散,投射到光敏三极管上的光照度将减弱,从而使光敏三极管产生的光电流减小,形成脉冲(见图2)。

2)驱动部分

采用NMOS管IF530构成如图所示的驱动电路。该电路的特点是无反向电流泄放电路,最大驱动电流达1安培。为了避免开机瞬间由于NMOS管全部导通对步进电机造成损坏,在单片机I/O口和MOS管之间加74HC04构成的反相器,以改变驱动逻辑(见图3)。

4.系统软件设计(见图4)

5.系统算法的选择

步进电机采用模糊控制与PI控制结合的算法。当点滴速度设定值与实际值的差值较大时,使用模糊控制,按照差值的符号决定电机运行方向,电机速度固定。当差值较小时,使用PI控制,电机速度均匀变化而无上下震荡现象,能准确定位。参数整定采用试凑法。

6.总结

本系统可方便地实现对单点和多点输液注射过程进行监控与管理,从而改善了工作条件,极大地减少了监护人员的工作量和由于监护不当造成的医疗事故,具有工作稳定、响应速度快、操作简便等优点,在医疗卫生领域中具有广泛的应用前景。

参考文献:

[1]宋雪丽.基于单片机系统的液体点滴速度监控装置设计[J].电脑开发与应用,2007/05.

[2]王紫婷.智能液体点滴速度监控仪[J].自动化与仪器仪表,2004/05.

[3]杨晓.用单片机实现的液体点滴速度监控装置[J].电子世界,2004/02.

stc单片机范文第3篇

关键词:STC89C54;投珠机;语音播报

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)32-7758-03

1 概述

随着各种电子设备的发展,游戏机在娱乐行业得到了很大程度的发展,现已开发出针对各种年龄阶段人群的游戏机。该文重点阐述了一款基于STC8954RD单片机平台的投珠机的设计。该投珠机现已在各大超市或娱乐场所稳定运行,该投珠机通过投币器投入硬币,对应出来相应数量的珠子,在固定的投珠孔投入珠子即可开始游戏。该设备具备断电保护功能和相关数据的累计功能,可以在输入密码情况下随时查询当前累计的钱数,并带有语音播报功能。

2 概述

投珠机电路板右下角有 3个黑色的小按钮,分别是机器的“设置”键、“+”、“-”,可查看并播报投币金额,及修改各项游戏参数。只有在无人游戏状态下,打开机器才可以修改相关设置。 如单独按“+”键、“-”键可设置音乐声音大小。每按一次设置键,均有相应语音提示,此时按“-”键、“+”键可更改参数,并且2秒钟后会自动保存并退出设置状态。可设置游戏模式,模式分为2种:普通模式与智能模式。普通模式是只要向机器投珠,即有反应;而智能模式是只有先投币后,投珠才有反应;并且中奖后机器出珠的数量,是机器接受珠子的数量,超出机器出珠数量,投珠将没有反应。这样可有效避免市场上其他珠子放入机器游戏。此时按“+”“-”键可更改参数。(0代表普通模式,1代表智能模式)。当机器出现故障不能正常运转时,机器会发出报警,并会给出语音提示,只要按照语音提示操作即可排除故障。

3 系统结构

5.2 显示灯程序设计

投珠机显示小灯共16个,都是共阳极接法,通过单片机驱动LN2003驱动,按键检测在检测到玩家投珠后,进入游戏状态,采用的是单个小灯循环跑的形式,每个小灯对应不同的中奖率,分别为5倍,4倍,3倍,2倍,1倍和0倍,按下中间的停止按键,小灯立即停止,如果落在3倍上,那么就是中奖三倍,投入珠子的数量乘以3即为玩家获得的珠子。通过调节不同小灯的延时时间来确定中奖率,也就是把0倍的时间稍微调的长一点,而倍数时间比较短,这样中奖的几率就是可控的,因为间隔的时间较短,玩家一般看不出来。如果玩家长时间没有按停止按键,那么在小灯转了一定的时间自动停止,停止的时间是要求三圈以上加上一个随机时间。显示灯在空闲模式还有小灯整体循环跑的程序和整体闪烁的功能。同时要求在小灯控制的同时配套音乐播放。

5.3 数码管显示程序

数码管显示部分由单片机控制三片74HC595D来控制三个数码管数码管之间输入输出串联起来,各个数码管之间有进位,实际上只使用两个还有一个数码管预留,利用单片机控制74HC595D的第11、 12脚接口来传递数据。在数码管显示子程序里面要做好提取数据的千位、百位、十位、个位,如果要显示一个4位数,或者三位数,那么由两个数码管分两次显示交替实现,先显示千位和百位,再显示十位和个位,中间闪烁间隔,来回显示三次。

5.4 EEPROM存储

在游戏过程中有可能会发生断电的情况,那么要求玩家断电前投币的状态和投珠的状态药能够保持,本系统采用了将玩家投币数和投珠数以及中奖数以及已出珠数四个变量在发生改变时存储在EEPROM中,防止掉电丢失。在主程序开始之前初始化阶段都要求读取这四个变量。

游戏机机主可能要查询机器的中奖率或者总的投币数,在开机状态下,连击六下停止键,进入查询程序,然后输入相应的项目可以通过读取EEPROM来获得这两个数值,同样在这两个变量发生改变的时候,也需要及时的写入EEPROM中。

5.5 中断服务程序

本系统要求游戏机不管处于什么模式,一旦有投币或者投珠的情况,要立即切换到游戏模式中,所以在投币与投珠的两个检测上采用的外中断的形式,投币采用的外中断0,投珠采用的是外中断2实现的,触发中断之后除了立即响应外,还需要修改EEPROM内部的数据。由于系统软件涉及到时间要求,本系统采用了定时器0来及时计时。

6 结束语

本投珠机在单片机控制的基础上,采用了微动开关检测投珠与落珠,利用中断进入游戏程序,并在开始游戏程序之前设置了设定模式。在调试的过程中,发现喇叭有杂音,经检查发现功放部分PCB走线从芯片底下直接穿过的,有电磁干扰,改进PCB解决问题;在批量生产之前厂商提出部分贴片元件0603封装的,操作工人在量产的过程中有难度,加长了工时,换用0805的封装解决问题;第一批生产了一百台机器,发现有部分机器吐珠不正确的情况,经过检查发现时程序不够优化响应不够及时导致的,经修改解决问题。

该游戏机的设计成本较低,具有较高的实用价值。现已量产运行稳定,但智能程度可能不够。

参考文献:

[1] 丁向荣.STC系列增强型8051单片机原理与应用[M].北京:电子工业出版社,2011.

[2] 李群芳.单片微型计算机与接口技术[M].北京:电子工业出版社,2005.

stc单片机范文第4篇

关键词: 单片机;语音芯片;存储;回放

中图分类号:TN912.2 文献标识码:A 文章编号:1671-7597(2012)0720051-02

0 引言

随着科技的快速发展,语音技术将在嵌入式系统、无线互联网以及语音翻译等行业得到广泛的运用。与传统的磁带语音录放系统因体积大、使用不便、放音不清晰相比,本文提出以STC单片机为核心控制单元的体积小巧,功耗低的语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制问题。

1 系统构成

系统通过话筒录入语音数据,经过滤波电路、采样保持电路等处理,由STC89C52单片机控制芯片将语音信号储存在寄存器中。回放时,由单片机控制芯片提取寄存器中的数据,通过功率放大器将语音信号放大后回放出来。同时系统将按键与液晶显示器配合,可以达到对系统的实时控制,从而系统实现了语音数据采样、储存、回放。系统主要分为语音采集部分、控制部分、存储部分、回放部分以及程序部分五个部分。

2 语音信号的处理与控制

2.1 控制处理单元

系统采用12M晶振器的STC89C52单片机作为核心控制单元,其包括按键、晶振、复位等基本的电路。在设计过程中,考虑传统的语音录放系统采用数字化、分立器件搭建而成,使语音信号易失真。因此,系统选用美国ISD公司生产的可反复录取10万次的ISD4004语音芯片。该芯片内部集成振荡、滤波、放大等电路,并且可直接把模拟量的语音信号存储在高密度多电平闪烁存贮陈列中,掉电不丢失存储的信息,因此避免了一般固体录音技术[1]或电路因量化和压缩造成的噪声干扰以及信息丢失。该芯片采用CMOS技术,有4.0、5.3、6.4、8.0kHz的采样频率,录放时间8分钟至16分钟,选择的采样频率越高,录放时间越短。

ISD4004语音芯片设计有串行通信接口(SPI或Microwire),

因此可以通过MCU写入操作指令对其控制。当从设备使能信号(SS或CS)为下降沿时,MCU才与ISD4004进行串行数据传输,并且数据传输的过程中,CS始终保持低电平,如果出现CS上升沿,则会执行相应的指令操作,其相关时序与SPI端口控制位[2]如图1、图2所示。

图1 8位命令格式

ISD4004MP语音芯片在录放音的过程中需遵循上电顺序,用户发完上电指令后,需要等待器件延时(上电延时),才能发操作指令。如果从地址的开始录音直到存贮器末尾才停止,则需要发两次上电指令,等待3次器件延时,具体时序是:发上电指令-等待上电延时-发上电指令-等待上电延时-等待上电延时。

图2 SPI端口控制位

2.2 硬件电路设计

系统硬件电路主要由STC89C52小系统电路、ISD4004组成,包括小系统电路(晶振电路、复位电路)、按键控制电路、ISD4004语音录放电路、话筒输入电路、功率放大电路、电源电路六部分构成,具体的电路图略。ISD4004的16、17脚为语音信号的输入端口,音频信号由13脚输出,并且该端口接放大器的输入端,从而进行音频放大。ISD4004的片选信号CS由STC89C52单片机的IO口P2.0提供。STC89C52单片机的P3.1(TXD)接ISD4004语音芯片的串行时钟(SCLK)的时钟输入端(8引脚),而数据的输入输出则由P3.0(RXD)控制。因STC89C52单片机不具备(SPI)接口[3-4],因此数据的复用通过三态门74LS125来控制,当MCU作为输出时,端口接在ISD4004的10引脚(MOSI)上;当MCU作为接收端时,端口接在ISD4004的11引脚(MISO)。ISD4004语音芯片的中断控制信号(5引脚)由STC89C52单片机的INT0输入。ISD4004的自动静噪端(AMCAP)常常1μF电容构成内部峰值检测电路,最后与地连接,本系统采用的是禁止自动静噪。

单片机的P1.0-P1.5作为按键的输入端,并且P1.5(Ks)用于选择启用或取消循环录音功能。通过端口设置可以看出,系统采用了6个开关(1个微动开关和5个微型按钮开关)来控制相关的功能转换,开关的状态通过MCU来读取,通过SPI接口送入ISD4004中。

除此之外,系统还需设计降压电路,常用的51单片机电源电压都是5V,而ISD4004语音芯片采用3V单电源工作,因此,系统选用LM1117低压差电压调节器调节成3.3V电压,其电路采用经典的低压降三端线性稳压电路[5]。

3 系统软件设计

在该系统的设计中,总体思路把系统分为录音、停止和放音三种状态,状态的改变用按键控制。当处于录音状态时,RECORD_Q为0,播放按键脉冲无效,录音按键脉冲有效;当处于播放状态时,PLAY_Q为0,录音按键脉冲无效,播放按键脉冲有效;当处于停止状态时,录音和播放按键脉冲无效,系统程序流程图如图3所示。

图3 系统程序流程图

主程序先对系统进行初始化,然后只处理键盘事件,判断按键值,并据此设置相应的系统状态和调用相应的函数子程序。录音功能均从设定的地址开始,录音结束由停止键决定,在录音过程中ISD4004内部自动在该段的结束位置插入EOM(结束标志),而放音时ISD4004遇到EOM标志则自动停止放音。在分段录音或放音中,需要按住K1键开始录音,放开K1键结束录音;再按住K1键,开始录第二段,以此类推;按一下K2键,开始放音,等该段放音结束,继续等待;再按下K2键,放第二段,以此类推。

4 结束语

传统的语音存储与回放系统相比,采用STC52单片机与ISD4004语音芯片设计的语音存储与回放系统,器件少、操作方便、音质较好、话音清晰等多方面的优点。在实际应用中,该系统可以运用到众多场合,具有一定的参考价值。

基金项目:西南科技大学大学生创新基金项目(CX11-116)资助

参考文献:

[1]唐明道,语音录放集成电路[J].Electronic Product World,Jan 1997(3):40.

[2]ISD.ISD4004 datasheet [DB/OL].

.

作者简介:

stc单片机范文第5篇

关键词:传感器;180舵机;直流微电机;STC12C5A60S2单片机

1 系统总体设计方案

基于STC系列单片机系统共包括四大模块:控制处理芯片STC12C5A60S2模块、转向舵机模块、驱动电机模块和测距模块。其中STC12C5A60S2单片机是系统的核心部分。它负责接收障碍物距离信息,并对这些信息进行恰当的处理,形成合适的控制量来对舵机和电机进行控制,转向舵机模块控制前轮的左右转动,以起到蔽障左右,驱动电机模块使得单片机控制下稳定走动,测距模块检测到周围环境的距离,接收到数据发送到单片机处理和来自单片机的数据发射到环境。

2 系统的硬件设计

2.1 测距超声波的选取

超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。超声波测距的原理一般采用渡越时间法。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离。US-100超声波测距模块可实现0~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,等多种通信方式,内带看门狗,工作稳定可靠。US 100超声波原理图如图一所示。

2.2 单片机的选取

STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

2.3 舵机的选取

舵机的工作原理:控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

舵机的控制:舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。

2.4 直流微电机的选取

当直流微电机工作时,电源通过电刷将直流电压引入电枢换向器。换向器在电机旋转过程中,将外加直流电压和电流转换成线圈内部的交流电势和电流。这时将在供电电流回路中产生明显的脉动分量。

3 总结

日新月异的科学技术给智能汽车带来了更加光明的发展前景,使得车辆利用传感器结合环境信息做出最优控制策略,实现车辆自动行驶。本文介绍了基于STC系列单片机系统越野模拟车技术,硬件电路的设计及软件的控制方案。经过实际测试,可实现自动避障和越野的功能。解决了越野车发生撞击的功能,使得车的功能增加。

[参考文献]

[1]刘晋,王政林,薛凯方.基于STC12C5A60S2单片机的LED显示屏硬件设计[J].微型机与应用,2011,30(22):1674-7720.9.

[2]陈雅文.直流微电机测速新方法[J].微电机,1999,32(1).

[3]唐文彦.传感器.北京:机器工业出版社,2011-6-12.

[4]廖文丹.US-100超声波测距模块.智能微控工作室,2010.1.31.

stc单片机范文第6篇

关键词: STC单片机; 串口通信; 波特率选择; 自适应方法

中图分类号: TN911?34; TP391 文献标识码: A 文章编号: 1004?373X(2013)23?0041?03

Baud rate adaptive method for STC single?chip microcomputer

ZHAO Pei?yu

(School of Electromechanical and Architectural Engineering, Jianghan University, Wuhan 430056, China)

Abstract : To reduce circuit volume and hardware cost, and at the same time, guarantee the stable and reliable serial port communication, a baud rate adaptive method is proposed. This method makes full use of STC microcontroller′s characteristics of high?speed running, on?chip oscillator, rich on?chip resources. In the serial communication program, the microcontroller′s I/O port and timer are utilized to detect and calculate the fixed character transmitted by host for getting the right baud rate constant, so as to realize the baud rate self?adaption. The design principle and realization method, error analysis, flow chart and part of the program are also given in this paper. The feasibility of the method was verified by a true example.

Keywords: STC single?chip microcomputer; serial communication; baud rate selection; self?adaptive method

0 引 言

串口RS 232是工业控制、仪器仪表、计算机外设常用的一种通信协议。串口通信的波特率一般都是选取标准系列值,并要求通信双方严格遵循相同的波特率,实际应用中,一台设备往往要与多种其他设备联络,为适应各种不同设备的通信速度,就要求该设备能适应不同的波特率,实现这种要求的常见方法有两种,一是增加波特率选择开关,二是设计能自动适应各种常见通信速度的串口。第一种方法增加了硬件,同时针对不同对象需要重新设置开关,在不清楚对方波特率的情况下还无法使用。第二种方法采用软硬件结合,通过检测、计算,自动选择正确的波特率,实际使用极其方便。

自适应波特率串口的实现方法通常有以下几种:

(1)协议约定通信开始时主机固定发送1个字符,从机以不同的波特率试探接收, 当接收到的数据与约定相同时,确定该波特率即是正确的通信波特率。

(2)协议约定通信开始时主机发送1串字符,从机以某固定波特率接收, 然后通过软件分析接收到的数据,计算出接收数据与发送数据之间的倍数关系,从而确定正确的波特率。

(3)协议约定通信开始时主机固定发送1个字符,从机用单片机定时器检测RXD上的信号宽度,通过计算来确定主机的波特率。

以上3种方法,第一种由于需要多次试探,效率很低;第二种计算量过大,不适合单片机处理;第三种方式单片机有现成的定时器资源,计算也相对简单,所以优选这种。

要测量脉冲宽度,前提是单片机的时钟信号必须稳定。目前很多STC单片机可选外接晶振时钟或片内RC振荡时钟,片内RC振荡时钟省去了外部的晶振等元件,成本降低、电路板的体积也可以缩小,这对成本及体积敏感的应用很具优势。但选用片内RC振荡时,频率会有±15%左右的误差,频率的稳定性也比外接晶振要差,按理论计算值设置波特率参数,无法保证可靠的通信,但按以上自适应波特率串口的第三种方法,每次通信前实测、计算、确定波特率常数,就可以实现稳定可靠的通信,这样充分利用了STC单片机的优势。

1 STC单片机的特点

标准51芯片由于定时器最高分辨率只有1 μs,对于较高的通信波特率来说,测量精度不够,导致计算值不准,无法正常工作。STC系列单片机是在标准51单片机基础上发展起来的,它增加了很多实用的接口电路,扩大了时钟的频率范围,设计出了[1T]时钟的芯片,可以通过软件对系统时钟分频,并提供了片内RC振荡时钟,在目前51芯片的市场占有极大的份额。STC系列单片机采用片内RC振荡时钟、自适应波特率串口通信技术,可以广泛地应用于分布式控制、智能仪表、通信等行业。

2 自适应工作原理

STC单片机采用异步通信,UART工作于模式1(8位UART,波特率可变),用定时计数器2做波特率发生器,工作于模式2(8位自动重装模式),主从机按图1方式连接,从机自适应主机的波特率。

图1 系统连接图

自适应过程由主机发送联络字符开始。为了使从机获得最大的测量脉宽,提高测量精度,由主机发送二进制“0”。如图2所示,二进制“0”由1位起始位,8位数据位(低位在先)及1位停止位构成,其中1位起始位和8位数据位全为0,所以低电平的宽度为9 b。

图2 自适应波形图

从机查询RXD引脚的电平,检测到低电平后就启动定时器0开始计时,再检测到高电平就停止定时器0计时,根据定时器0的定时值就可以计算出主机的波特率。

当时钟分频寄存器CLK_DIV=0(不分频),特殊功能寄存器AUXR=0xC0([T0]用[1T]时钟),则:

[每位传送所需时间=1fosc?T0计数值÷9] (1)

[波特率=1每位传送所需时间=fosc?1T0计数值×9] (2)

式中[fosc]为从机的时钟频率。

而STC51系列单片机在UART模式1,时钟模式为[1T]时,其波特率公式为:

[波特率=2SMOD?fosc(256-TH1)×32] (3)

由式(2),式(3)可导出UART时钟为[1T]时:

[TH1(1T)=256-2SMOD?T0计数值288] (4)

STC51系列单片机在UART模式1,时钟模式为[12T]时,其波特率公式为:

[波特率=2SMOD?fosc(256-TH1)×12×32] (5)

由式(2),式(5)可导出UART时钟为[12T]时:

[TH1(12T)=256-2SMOD?T0计数值3 456] (6)

从机UART在模式1下,将式(4)或式(6)计算结果作为定时器1重装值,设定通信参数,通过串口回送应答信号给主机。主机如正确接收到从机回送的信号,就说明从机已完成波特率自适应,可以开始正常通信了。

3 误差分析

为保证可靠通信,要求通信双方的波特率相对误差小于2.5%。

在自适应波特率校准系统中,误差主要来自两个方面,一是定时器[T0]启动和停止滞后造成的误差[ΔT0;]二是波特率发生器[T1]本身固有的一个机器周期误差[ΔT1=±1。]由于STC51单片机采用[1T]时钟定时,[ΔT0]误差只有标准51系列芯片的[112,]系统误差主要由[ΔT1]决定。

以STC12C5620为例,当采用片内RC振荡,时钟频率通常在5.2~6.9 MHz之间。当时钟频率为5.2 MHz,SMOD=1时,UART时钟分别按[12T,][1T]计算,见表1,表2。

表1 UART时钟12分频时计算的波特率误差

表1、表2中加粗部分表示可以选用的波特率值,由表1、表2可知,只要编程时选择合适的时钟,在5.2 MHz时钟频率下,波特率可以在300~115 200 b/s之间实现自适应,由[T1]取整带来的误差在0.5%以内。当系统时钟为6.9 MHz时,用同样的方法计算,也可以证明波特率可以在300~115 200 b/s之间实现自适应,由T1取整带来的误差也在0.5%以内。由此可见,STC12C5620采用片内RC振荡,可以在300~115 200 b/s之间完成波特率自适应,实现稳定可靠的通信。

表2 UART时钟1分频时计算的波特率误差

4 软件流程与程序

主机软件流程图如图3所示,从机软件流程图如图4所示。

图3 主机软件流程图 图4 从机软件流程图

以下为C51波特率自适应程序:

void main (void)

{

AUXR=0xC0;

//AUXR.7=1,[T0]用[1T]时钟;AUXR.6=1,T1用[1T]时钟

SCON =0x50; //SCON: mode 1, 8 b UART, enable rcvr

TMOD|=0x21; //TMOD: timer 0,mode 1,16 b; timer1, mode 2,8 b reload

PCON|=0x80;

TL0=0; //自适应波特率测量

TH0=0; //T0清零

while(RXD); //RXD引脚为高等待

TR0=1; //开始波特率测量

while(!RXD); //RXD引脚为低等待

TR0=0; //STOP T0

RELOAD=256-(TH0*256+TL0)/144-0.5;

//计算波特率常数,时钟[1T,]SMOD=1

TH1=RELOAD;

TR1=1; //TR1: timer 1 run

TI=1; //TI: set TI to send first char of UART

RI=0;

REN=1;

IE=0x90; //EA=1;ES=1;

}

5 应用实例

采用STC12C5620设计的重力检测开关,如图5所示。为降低成本、缩小体积,采用了片内RC振荡,不设按键及显示。重力检测开关首次工作前需设定一些参数,并校准。由于没有键盘及显示,采用和计算机联机设置、校准。本电路采用了上述的自适应波特率工作方式,由PC机作主机,通过串口来初始化重力检测开关的各参数。

图5 重力检测开关

计算机设置界面如图6所示。

图6 计算机设置界面

设置时,将重力检测开关与计算机之间用RS 232线连接好,然后点击PC机软件界面上的“连接串口” 按钮进行波特率自适应,当界面上状态栏提示“连接串口成功!”时,表示波特率自适应工作正确完成,可以进行参数设置和校准操作。设置、校准后,重力检测开关就可脱机正常工作了。

经反复验证,该电路在300~115 200 b/s波特率范围内可稳定通信工作。

6 结 语

该波特率自适应方法,可扩展应用于其他单片机系统,解决对方的波特率未知、或对方的波特率有偏差而无法正常通信的问题,即使对方的波特率不是标准值也可正常工作,具有较大的实用价值。

参考文献

[1] 南通国芯微电子有限公司.STC12C5628AD数据手册[S].南通:南通国芯微电子有限公司,2011.

[2] 刘燕,陈兴文.串行通信的波特率自动检测方法的实现[J].大连民族学院学报,2008,10(1):31?34.

[3] 周建华,万书芹,薛忠杰.一种新颖的UART自适应波特率发生器的设计[J].半导体技术,2007,32(12):1052?1055.

[4] 赵达飞.波特率自适应的模拟串行通信[J].现代计量仪器与技术,2009(7):58?59.

[5] 赵炯.串行数据传输协议的剖析研究[J].计算机工程,2004,30(9):105?108.

[6] 马玉春.串行通信协议的研究及应用[J].计算机应用研究,2004(4):228?232.

[7] 张雷,梁建武,陈英.串行通信协议的研究与实现[J].现代计算机,2006(9):57?59.

[8] 严天华,周辉.效率串行通信协议的设计[J].单片机与嵌入式系统应用,2003(6):75?77.

[9] 乔渠,赵国豪,王文记.串行通信波特率的自动识别[J].单片机与嵌入式系统应用,2007(2):33?35.

[10] 常江,胡丹,常亮.串行通信中的波特率设置和误差分析[J].四川工业学院学报,2004,23(2):22?24.

stc单片机范文第7篇

关键词:单片机 光耦 控制

中图分类号: TP368 文献标识码:A 文章编号:1007-9416(2011)12-0022-01

Abstract:Given the stability of the traditional single-chip control switch is poor,bulky problem of poor and anti-jamming capability,designed and developed a microcontroller-based STC opticalcoupler control switch lights.The control depends on the MCU to complete the synchronization,using a combination of hardware and software protection measures,both beautiful and have good performance to achieve its control.

Key words:Micro Control Unit Opticalcoupler Control

1、引言

随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、闪烁频率等动态参数。这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制进行改进。

2、光耦器件有效抑制单片机系统干扰

共地干扰的存在影响了单片机系统的正常工作,切断共地关系,电信号无法构成回路,单片机和外部设备无法进行信号传输。所以,必须采取某种措施,既能保证将地隔开,又能顺利传送信号。利用光耦器件隔离,能够解决上述问题。光耦器件是把电信号转换为电信号,光信号传送到接受侧再转换为电信号。由于光信号的传送不需要共地,因此可以将光耦器件两侧的地加以隔离。

光耦器件能再传输信号的同时有效地抑制尖脉冲和各种噪声干扰,其原因如下:

(1)光电耦合器的输入阻抗很小,只有几百欧,而干扰源阻抗较大,通常为几百千欧。由分压原理可知,即使干扰电压的幅度较大,光电耦合输入端分得的噪声电压也很小,另外由于干扰噪声的能量小,只能形成微弱电流,而光电耦合器输入部分的发光二极管是在电流状态下工作,干扰噪声即使有很高的电压幅值,也会因为没有足够的电流导致发光二极管不能发光,干扰就被抑制掉。

(2)光电耦合器的输入回路与输出回路之间没有电气连接,没有共地,之间的分布电容很小,而绝缘电阻又很大,因此回路一侧的各种干扰噪声都很难通过光电耦合器馈送到另一侧,避免了共阻抗耦合干扰信号的产生。

光电耦合器的主要优点是单向传输信号,输入和输出完全实现了电气隔离,抗干扰能力强,使用寿命长,传输效率高。光电耦合器的输入回路与输出回路之间可以承受几千伏的高压,即使外设电路出现故障,甚至输入信号短接时,仪表也不会损坏,有很好的安全保障。光电耦合器还具有响应速度快的特点,适用于响应速度要求很高的场合。

单片机有多个输入端口,接收来自远处设备传来的各种现场信号,单片机对这些信号处理后,输出控制信号去执行相应的操作。如果现场环境恶劣,会产生较大的噪声干扰,这些干扰信号一旦进入单片机系统,会造成系统的稳定性和准确性的降低,严重时会产生误操作,造成比较严重的后果。要解决此问题,可在单片机的输入端和输出端用光耦器件作为接口,使信号和噪声之间电气隔离,抑制干扰信号进入单片机系统。

光电耦合器是光电隔离电路的核心器件,它具有单向信号传输、输入输出端完全电气隔离、抗干扰能力强、工作稳定、无触点、寿命长、传输效率高等优点。已经运用于许多领域,在电气绝缘、电平转换、级间耦合、驱动电路、开关电路、斩波器、振荡器、级间隔离、数字仪表、远距离传输、通信设备等方面都有广泛的应用。但光电耦合器虽然是一种电流控制的电流转移器件,具有和双极性晶体管类似的传输特性,但由于它的线性工作区比较窄,电流传输比受温度影响比较明显,不适合作为模拟电路的输入输出隔离。

3、STC11单片机和MAX232及软件

我们选用了STC11单片机和MAX232转换芯片,STC11/10xx系列单片机是宏晶科技设计生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成高可靠复位电路,针对高速通信,智能控制,强干扰场合。STC11/10xx系列单片机的定时器0/定时器1/串行口与传统8051兼容,增加了独立波特率发生器,省去了定时器;传统8051的111条指令执行速度全面提速,最快的指令快24倍,最慢的指令快3倍。国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。

使用图片按钮界面控制单片机通信,由于控制程序存储在STC11单片机的电可擦除Flash闪存EPROM中,如果用户需要更改系统的亮灯位置,无须改变系统硬件电路,只需修改其中程序即可,是一种很有发展前途的灯控制器。

4、结语

本文对基于STC11单片机的光耦控制进行了分析,并实现了控制开关灯,其提高了单片机控制开关的稳定性、精巧性和抗干扰能力,具有较高的实用价值。

参考文献

[1]睢丙东,魏泽鼎.单片机技术与实例[H].北京:电子工业出版社,2005.

[2]王为青,程国钢.单片机Keil Cx51应用开发技术[M].北京:人民邮电出版社,2007.

[3]毕万新.单片机原理与接口技术[M].大连:大连理工大学出版社,2008.

stc单片机范文第8篇

Wang Jianghua;Zhao Yan;Liu Jichao

(①North China Institute of Science and Technology,Beijing 101601,China;②North College of Beijing University of Chemical Technology,Beijing 101601,China)

摘要: 本设计采用STC公司增强型高速单片机STC12C5A60S2为控制器、ISD1420和APR9600语音芯片作为构成语音存储回放系统,16*16LED点阵来完成汉字信息的显示。系统外置汉字码码片,显示内容丰富,硬件看门狗的使用使得系统运行更加可靠。论文详细介绍了该车辆报站系统的设计及软件的编写。

Abstract: This design uses STC enhanced high-speed MCU STC12C5A60S2 as controller, ISD1420 voice chip and APR9600 stores voice playback system as constituted, 16 * 16LED to complete the Chinese characters dot matrix display. External character code system chip, display rich content and the use of the hardware WDT makes the system run more reliably. Paper details the design of the vehicle stop announcement systems and software to write.

关键词: STC12C5A60S2 ISD1420 LED点阵 报站系统

Key words: STC12C5A60S2;ISD1420;LED dot matrix;vehicle stop announcement

中图分类号:TP315 文献标识码:A文章编号:1006-4311(2011)14-0185-02

0引言

随着电子技术的飞速发展,单片机以其强大的功能正在深入到仪器仪表、家电设备控制等多个控制领域。汽车报站装置是近几年来迎单片机的出现而产生的。采用单片机控制的汽车报站装置,节省了大量复杂的数字电路,控制方便,功能强大。其控制的报站系统具有汉字信息显示、FlashRAM闪存录音、抗干扰能力强、运行可靠等诸多功能,更好的方便了乘客的乘车出行,给人们的生活带来极大的方便。

1系统原理分析

系统由单片机主控模块、汉字信息显示单元、语音回放电路和其他电路等模块构成。由高速1T单片机加上内置的硬件看门狗组成的控制核心,负责整个系统的控制,包括车站信息检测,汉字信息的提取显示,语音信息的播放存储等;汉字信息显示单元,在本设计中采用三位16*16点阵完成汉字的显示,译码驱动电路使用的是74LS377加上小功率三极管来完成,汉字码片采用常用的flashrom芯片完成汉字信息的存储;语音存储回放单元使用的是双语音芯片ISD1420和APR9600,主要完成车站信息和广告提示信息的存储和回放,并且外置了功率放大电路,使得语音信息播放清晰洪亮。系统还加装一个两位LED数码管,用来指示车站数目等相关信息。主控CPU内置硬件看门狗定时器,使得系统的运行可靠,方便用于汽车等电磁干扰严重的场合。下图为本系统的整体框图。

2系统硬件分析

2.1 CPU模块本系统中使用了STC高速增强型1T单片机STC12C5A60S2,该芯片是增强型单时钟/机器周期51单片机,是高速低功耗超强抗干扰的新一代8051单片机,指令代码完全兼容传统的8051,但执行速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速8位A/D/转换(300K/S),特别适合一些电机控制,强干扰的场合。用户仅需通过普通的RS232接口即可实现软件的编程下载,节约了编程器,仿真器的硬件投资,同时也使用户系统的升级维护更加方便快捷。(如图2所示)

2.2 汉字信息显示电路本系统汉字信息的显示采用三位16*16LED点阵,由单片机控制显示数据和扫描数据的工作时间,从而达到动态扫描显示的效果。为了使图像运动,就得使显示文件(或数据)在一定时间内刷新,例如,按顺序调整行号,可以使显示图文产生上下平移;而顺序调整列显示数据,就可达到左右平移的目的;同时调整行、列顺序就可得到对角线平移的效果。

刷新时间的控制决定了运动图形文字的显示效果。刷新太慢,动感不显著;刷新过快,中间过程看不清。根据实际的调试,刷新周期一般控制在几毫秒到几十毫秒范围之内。

2.3 语音存储与回放电路语音回放电路采用双语音芯片完成:ISD1420和APR9600。

ISD1420芯片采用CMOS技术,内含振荡器、话筒前置放大、AGC、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。APR9600是继美国ISD公司以后采用模拟存储技术的又一款音质好、噪音低、不怕断电、可反复录放的新型语音电路,单片电路可录放32-60秒,串行控制时可分256段以上,并行控制时最大可分8段。在本设计中ISD1420主要完成车站信息的播放,由二极管组成的译码阵列将该芯片分为8段,系统可以分别对这8段信息进行存储和回放。APR9600主要完成“车辆转弯”、“尊老爱幼”等指示信息的存储与回放。

2.4 其它电路系统中主板带有外置键盘输入装置和2位LED显示屏,用来对系统的各个参数进行设置和状态指示。CPU外置RTC实时时钟电路,使系统报警时间有较为精准的记录。为了使系统输出可以直接驱动扬声器,在本系统中还设计了小功率音频功率放大电路,报站信息清晰洪亮。系统外置X25045看门狗电路,实时监测系统软件的运行情况,增加了系统的可靠性。

3软件系统的设计与调试

本系统软件部分分主程序,中断处理程序两大部分构成,其它开机自检、显示、语音处理、延时等都以子程序的方式供主程序和中断程序调用。下面是本系统部分程序介绍。

3.1 系统主程序主程序开始先进行初始化。软件中的初始化要完成I/O口、中断系统的初始化,以及显示数据地址寄存器单元的清零与赋值,还要关扫描,关显示数据使能端,关LED数码站数指示以及关闭语音电路等等。

3.2 系统中断服务程序中断子程序响应后,由软件判定是哪个键按下,并延时10mS消抖,避免误操作,确定某个按键按下后,跳转到相应的位置去执行子程序。图4为中断处理程序流程图。

3.3 汉字显示程序的处理LED汉字的显示其基本原理与普通的LED数码管动态扫描显示类似:逐次扫描各行(或各列),在对应得时刻将列数据(或行数据)送上,并保持一段时间(我们通常取1mS),扫描频率超过了人眼的分辨极限,我们就不会感觉图形在闪烁,从而达到图像的显示效果。由于显示的稳定度与其显示亮度是成反比的,亮度越高,显示的闪烁感越明显,因此必须综合考虑两者之间的关系,(经实验我们取T=1/24S),这样可达到较好的亮度和显示效果。此外软件处理还包括键盘扫描、语音的处理、汉字花样显示、开机自检等相关程序,限于篇幅在此不再详细介绍。本次设计采用汇编语言编制。相对与C语言来说,汇编语言编制复杂,不宜移植通用性较差,但是汇编语言也有其优势,它面向底层机器,使用户很方便的了解到每时每刻的系统运行状态,尤其是汇编语言编译效率远比C语言高的多,且执行速度快、运行可靠。

4结语

本次系统硬件实验电路板完全由作者手工搭接设计,整机经过认真焊接,多次反复调试,整个系统运行可靠,所有控制功能均已实现。经过长时间开机测试,系统运行良好,强电磁干扰下能够正常工作,无死机现象。下阶段作者将重点研究该系统的实用性、可靠性,改进更好的系统方案,以满足现在市场的需求,尽快的将设计微型化、产品化,更好为公交系统服务,方便乘客的出行。下图5为本系统实验阶段制作的实物样机。

参考文献:

[1]靳达.单片机应用系统开发实例导航.北京:人民邮电出版社,2003,10.

[2]沈红卫.基于单片机的智能系统设计与实现.北京:电子工业出版社,2005.

stc单片机范文第9篇

关键词:STC单片机 PCA模块 软件PWM

PWM全称为Pulse Width Modulation,即脉冲宽度调制,简称为脉宽调制。常见的PWM调制方式是定频调宽,在固定的调制周期内,通过改变有效电平的宽度,即改变占空比(0≤ρ≤1),实现对输出电压的控制。随着单片机技术的飞速发展,当前主流的单片机普遍在片上集成了硬件PWM等功能,使用起来非常方便。但对8位机而言,片内集成的硬件PWM大多为8位分辨率,虽然可以由硬件实现占空比的无缝刷新,但存在分辨率较低的现实问题。笔者利用深圳宏晶科技有限公司出品的51内核STC12C5A60S2系列单片机设计一种软件PWM,可实现从9~16位之间任意分辨率,从而满足控制精度等要求。

一、STC12C5A60S2系列单片机PCA模块介绍

STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换、双串口。它在工业电动机控制中,有不俗的表现。STC12C5A60S2系列单片机集成了两路可编程计数器阵列(PCA)模块,可用于软件定时器、外部脉冲捕捉、高速输出以及PWM输出四种工作模式。

1.PCA模块的结构

PCA含有一个特殊的16位定时器,有2个16位的捕获/比较模块与之相连,如图1所示。

图1 PCA模块结构

每个模块可编程工作在4种工作模式:上升/下降沿捕获、软件定时器、高速输出或PWM输出。16位PCA定时器/计数器是2个模块的公共时间基准,其结构如图2所示。

图2 PCA定时/计数器结构

寄存器CH和CL的内容是正在自由递增计数的16位PCA定时器的值,可通过对CMOD(CMOD寄存器的说明参考下面描述)特殊功能寄存器中CPS2、CPS1和CPS0三个位的编程实现对时钟源的选择,具体配置关系如表1所示。

表1

2.PCA模块相关寄存器

PCA模块相关寄存器及其功能受篇幅限制,在此仅介绍几个关键寄存器,其他部分从略。

(1)CCON-PCA控制寄存器。

CF:PCA计数器阵列溢出标志位。为1表示溢出;为0表示未溢出。可软硬件置位,只能软件复位。

CR:PCA计数器阵列运行控制位。置1,启动;置0,停止。

CCF1:PCA模块1中断标志。当出现匹配或捕获时硬件置位;必须软件清零。

CCF0:PCA模块0中断标志。当出现匹配或捕获时硬件置位;必须软件清零。

(2)CMOD—PCA模式寄存器。

CIDL:空闲模式下是否停止PCA计数的控制位。为1时,停止计数;为0时,继续工作。

CPS2、CPS1、CPS0:PCA计数脉冲源选择控制位。具体配置见上文。

ECF:PCA计数溢出中断使能位。为1时允许CF中断;为0时禁止CF中断。

(3)CCAPMn(n=0,1)——PCA模块工作模式寄存器,配置如表2所示。

表2 PCA模块工作模式设定(CCAPMn,n=0,1)

- ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn 模块功能

0 0 0 0 0 0 0 无此操作

0 0 0 0 0 1 0 8位PWM,无中断

1 1 0 0 0 1 1 8位PWM输出,由低变高可产生中断

1 0 1 0 0 1 1 8位PWM输出,由高变低可产生中断

1 1 1 0 0 1 1 8位PWM输出,由低变高或者由高变低增可产生中断

X 1 0 0 0 0 X 16位捕获模式,由CEXn/PCAn的上升沿触发

X 0 1 0 0 0 X 16位捕获模式,由CEXn/PCAn的下降沿触发

X 1 1 0 0 0 X 16位捕获模式,由CEXn/PCAn的跳变触发

1 0 0 1 0 0 X 16位软件定时器

1 0 0 1 1 0 X 16位高速输出

可见,通过配置,PCA能工作在多种工作模式,具有较强的灵活性。

二、软件实现PWM基本原理

本设计应用PCA模块的高速输出模式实现多位PWM功能。当PCA计数器的计数值与模块捕获寄存器的值相匹配时,PCA模块的CCPn引脚输出将发生翻转。PCA模块高速输出模式框图,如图4所示。

图4 PCA高速输出模式

由图4可见,当激活高速输出模式时,CCAPMn寄存器的TOGn,MATn和ECOMn位都必须置位。一旦出现匹配,在比较匹配中断里判断高速输出的电平,如果是高电平,则向捕获寄存器装入高电平的PCA时钟数;如果是低电平,则装入低电平的PCA时钟数。

设要求的PWM分辨率为n(0≤n≤1),则每个PWM周期为DUTY=2n个PCA时钟。设PWM_high为PWM高电平持续时间,PWM_low为PWM低电平持续时间,则有DUTY=PWM_high+PWM_low,占空比。明显的,分辨率n的值越大,则分辨率越高。

为实现设计功能,需要用到的资源有:PCA可编程计数器阵列、捕获寄存器、匹配中断向量。由于中断处理需要一点时间,输出的占空比不能到0%或100%,所以对占空比有最小和最大值限制,中断处理绝对时间大约为100个系统时钟。

三、参考程序

/* --- STC单片机实现软件PWM功能,本程序以10位PWM为例-----------------*/

#include"STC12C5A60S2.h"/*包含STC12C5A60S2单片机头文件*/

#define PWM_DUTY 1024 ∥定义PWM的周期,数值为PCA所选择的时钟脉冲个数。

#define PWM_HIGH_MAX PWM_DUTY-32 ∥限制PWM输出的最大占空比。

#define PWM_HIGH_MIN 32 ∥限制PWM输出的最小占空比。

sbit CCP0 = P1^3; ∥CCAP0引脚声明

/* -------------- 全局变量定义---------------*/

unsigned int PWM_high; ∥ 定义PWM占空比寄存器,即PWM输出高电平的PCA时钟脉冲个数。

unsigned int PWM_low; ∥ 定义PWM输出低电平的PCA时钟脉冲个数。

unsigned int CCAP0_tmp;//定义CCAP0重装载影射寄存器。

∥=============================================

∥ 函数: void PWM_SetHigh(unsigned int high)

∥ 描述: 写入占空比数据。

∥ 参数: high: 占空比数据,即PWM输出高电平的PCA时钟脉冲个数。

∥=================================================

void PWMn_SetHigh(unsigned int high)

{

if(high > PWM_MAX)

high = PWM_MAX; ∥如果写入大于最大占空比数据,强制为最大占空比。

if(high < PWM_MIN)

high = PWM_MIN; ∥如果写入小于最小占空比数据,强制为最小占空比。

CR = 0; ∥停止PCA。

PWM_high = high; ∥数据在正确范围,则装入占空比寄存器。

PWM_low = PWM_DUTY - high; ∥计算并保存PWM输出低电平的PCA时钟脉冲个数。

CR = 1; ∥启动PCA。

}

∥============================================

∥ 主函数: void main(void)

∥=============================================

void main(void)

{

P1M1 &= ~0x08,

P1M0 |= 0x08; /*设置CCAP0(P1.3)使用PUSH-PULL推挽输出模式。*/

CCON = 0; /*清除CF、CR、CCF0、CCF1*/

IPH |= 0x80; /*PCA中断使用最高优先级*/

IP |= 0x80;

CMOD = 0; /*空闲模式下PCA计数器继续工作,计数器时钟源为系统时钟的12分频,禁止PCA计数溢出(CF)中断*/

CCAPM0 = 0x4d; /*高速输出模式,允许比较匹配中断(ECCF0=1)。*/

CL = 0; /*清空PCA基本计数器。*/

CH = 0;

CCAP0_tmp = 0; /*清空CCAP0重装载影射寄存器。*/

PWMn_SetHigh(512);/*设定占空比数据。*/

CR = 1; /*启动PCA。*/

EA = 1; /*允许总中断*/

while(1);

}

∥=================================================

∥ 函数: void PCA_interrupt (void) interrupt 7

∥ 描述: PCA中断服务程序。

∥ 参数: 无。

∥ 返回: 无。

∥=================================================

void PCA_ISR (void) interrupt 7

{

if(CCF0) /*PCA模块0中断(只开放CCF0中断)*/

{

CCF0 = 0; /*清PCA模块0中断标志*/

if(CCP0)

CCAP0_tmp += PWM_high; /*输出为高电平,则给影射寄存器装载高电平时间长度*/

else

CCAP0_tmp += PWM_low; /*输出为低电平,则给影射寄存器装载低电平时间长度*/

CCAP0L = (unsigned char)CCAP0_tmp;/*将影射寄存器写入捕获寄存器,先写CCAP0L*/

CCAP0H = (unsigned char)(CCAP0_tmp >> 8);/*注意:后写CCAP0H*/

}

}

四、实验验证

某设计项目使用10位软件PWM功能,实验结果如图5、图6、图7所示。

图5 15%占空比

图6 50%占空比

图7 80%占空比

五、结语

本设计在多个实际项目使用,均能很好地实现控制要求,同时大大降低硬件成本。在实际应用中,考虑到中断的消耗,特别是其他中断服务开销很长时间时,有可能会影响本程序的正常运行,因此强烈建议将PCA模块中断优先级设为最高级,以实现更佳控制效果;同时建议在正常运行时,尽量不要关闭。

stc单片机范文第10篇

1.明确实训任务

上电直接进入温度显示,显示精度0.1度。运用温度传感器ds18b20测试环境温度,经单片机接收并对数据处理,用4位共阳数码管显示。上电前长按键则进入时钟显示。长按键1秒进入时钟调分功能,分数码管闪烁,每按一次键分+1,加到60回0;再长按键进入调时功能,时数码管闪烁,每按键一次时+1,加到24回0。时钟计时使用定时器T0,数码管闪烁计时使用定时器T1。拓展功能:设置上下限温度报警,上下限温度值自定义。

2.实训开发环境

现代电子产品,硬件产品从设计到制板周期较长,一般要外加工订做PCB板。为了能在产品焊接调试前验证硬件电路及软件设计缺陷,有经验的工程师一般要进行仿真测试。Proteus是一款比较实用的单片机程序仿真、硬件电路设计及PCB制板软件,具有较为丰富的元件库,并能创建元器件和封装,该软件简单易学且功能强大。keil软件提供视窗化的编辑、编译和调试窗口,可进行单步、断点调试,并可与Proteus仿真软件联接调试以便观察寄存器和RAM数据变化。

3.硬件电路

3.1 电路原理

电路采用数码管静态显示(图1),Proteus仿真电路中的单片机使用AT89C51,实际产品中使用STC10F08XE单片机,可直接驱动1英寸LED数码管,与0.56英寸LED数码管相比较,具有较好的视觉效果。为了方便制板中的布线,进一步加深学生对数码管段码的理解,数码管段码采用了非标准共阳段码格式,这在工程设计中是非常实用的,其中数码管LEFT1使用一种格式,其余三个数码管使用另一种格式。表1列举了P0口数码管LEFT1段码(0~2)计算方式。

3.2 创建元件封装

本例中用的数码管是1英寸共阳LED数码管,Proteus中没有对应的封装。另外按键和DC电源插座也需要创建对应的封装。元器件封装创建后应在原理图中添加指定的封装,将原理图中元器件的引脚序号与封装库中的引脚序号建立一一对应关系。若学生能独立完成,就能很容易的理解元器件引脚排列。

3.3 PCB制板

PCB制板主要任务是元件排列布局和布线,元器布局一般采用自动排列元器件和手动排列相结合的方式,布线通常也采用自动与手动相结合的方式。实训中为了锻练学生的动手能力,采用单面板手动布局和布线。

4.软件设计

项目设计的目的是巩固所学理论知识,因温度计项目包含的单片机知识点有限,为了让学生充分利用所做电路资源,加深对单片机定时计数器的应用,项目中增加了时钟功能。上电前长按键进入时钟功能,直接加电进入温度度功能。利用定时器0实现0.05毫秒时钟计时,计数20次1秒。为了让学生熟练使用独立式按键,增加时钟调整功能,且仅使用一个按键,长按0.5秒进入时、分调整或退出时钟调整,单击按键一次调整时、分+1。利用定时器1实现0.05毫秒时钟调整闪烁计时,计数6次0.3秒数码管亮灭状态取反。学生也可利用此独立按键编写温度计报警功能的上下限温度值调整程序。根据实训时间按排还可加入时钟芯片DS1302,这样可实现时钟显示和温度显示的随意切换,可避免由于使用了定时器中断影响时钟精度,如图2所示。

5.仿真测试

Proteus提供的代码调试窗口可全速、单步、进入子程序、退出子程序、执行到光标行和设置断点多种调试手段,通过查看仿真电路引脚电平、数码管数据显示、CPU寄存器、数据寄存器和SFR等内容变化,以便分析产生问题的原因,查找软硬件错误。

特征数据测试与调试技术是现代单片机应用开发工程师最基本的能力要求,这不仅指软件测试也包括硬件电路纠错,所以在实训过程中应特别强调该能力要素,通过实训养成学生独立思考的习惯,培养学生独立解决问题的能力。部分学生实训过程中不善于动脑,惰性较大。程序编辑输入完成输出结果就认为完成作业作务。其实学生们完成的仅是把书本的程序文档在PC机上录入一遍,有的同学甚至拷贝一份,其实质并没达到程序调试的目的。对于已经完成作业任务的同学,在实训过程中教师可尝试将某些指令或电路有针对性的改错,让他们通过学到的调试技术和方法重新调试查找软硬件错误。一般的编译提示错误学生可能比较好改正,但结构性或非语法类指令错误,编译系统不能提示,学生查错就相对因难,这就要求学生有耐心细致的工作态度,摆脱浮夸的学习作风。另外实训过程中应严格考评,将考评与实训成绩结合。

6.产品焊接调试

6.1 熟练掌握焊接技术

焊接技术是单片机课程设计、装配不可缺少的重要环节,焊接质量的好坏真接影响电子产品的质量性能。学习焊接知识、焊接方法,熟练掌握手工焊接的基本技能,练好焊接基本功也是单片机课程实训的重点内容之一。

6.2 产品焊接测试

上一篇:单片机最小系统范文 下一篇:单片机编程范文

友情链接