完整版基于LPC1754条形码打印设计毕业设计Word文档下载推荐.docx
《完整版基于LPC1754条形码打印设计毕业设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整版基于LPC1754条形码打印设计毕业设计Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
现在很多较复杂的器件都支持JTAG协议,例如ARM器件、DSP器件以及FPGA器件等。
标准的JTAG接口是4线:
TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。
【7】如今JTAG接口的连接有两种标准,即14针接口和20针接口,其定义分别如下所示。
【8】
图3-2-2JTAG调试接口电路
本设计采用芯片自带JTAG外设,TCK——测试时钟输入;
TDI(测试数据输入,数据通过TDI输入JTAG口);
TDO(测试数据输出,数据通过TDO从JTAG口输出);
TMS(选择测试模式。
TMS用来设置JTAG口处于特定的测试模式)。
TRSIN、RTck、RTIN(复位脚,输入功能,低电平有效)。
【9】另外采用R82,R83,R84,R85,上拉电阻,r86,87,r88,r89,r90组成的下拉电阻,增强调试过程中的稳定性。
并且采用当前主流的JLINK调试器经行芯片控制程序在线调试,
3.2.3复位电路
整个打印系统中,复位电路只是整个电路中的一小部分,但它却是最小系统中的不可或缺的组成部分,复位电路可以使单片工作在稳定状态,没有复位电路,单片机可能受到外界的磁场的干扰从而引起内部电平的波动,造成工作不稳定的情况。
复位电路在最小系统中的作用主要表现为,在刚开始给系统上电的时候,由于电容的隔直通交的作用下,上电瞬间,电流会通过电容到底,从而给点评及的复位管脚发送一个复位信号,使单片机系统将恢复初始状态,待电源稳定以后,复位管脚为高电平,单片机正常运行,使整个系统开始正常工作。
图3-1-1为此电路的复位电路。
LPC1754单片机为低电平复位,复位的方式有很多种例如:
看门狗复位、按键复位、上电复位等方式,本文采用上电复位,上电复位主要作用于上电瞬间,保证系统在上电后从初始状态运行。
当给LPC1754控制器的外部引脚RESET一个低电平信号时可将微控制器恢复到初始状态。
3.2.4时钟电路
时钟电路是是一个单片机系统的心脏,它控制着单片机运行过程中的节奏。
LPC1754就是通过复杂的时序电路,从而完成了计算和控制不同的指令功能的。
LPC1754的时钟信号主要由两种方式产生:
一种是内部时钟产生方式,就是利用芯片内部自带的振荡电路,给单片机提供时钟信号:
另外一种参数时钟方式为外部时钟振荡方式,时钟信号由外部时钟接口引入。
一个单片机系统,如果没有时钟产生电路来产生时钟信号,来驱动单片机,单片机是不能工作的。
时钟电路的主要作用就是用来配合外部晶体振荡电路产生晶体振荡信号的电路,传送给单片机,从而给单片机提供了运行过程中必须的时钟信号,如果振荡电路没有振荡信号,运行时钟不能给单片机提供工作频率,单片机就不能够正常的工作,另外,但时钟电路产生的时钟信号,超过了LPC1754的工作频率,LPC1754同样不能正常的工作,这种工作模式就好比人的心脏的跳动是一样。
图3-1-5是此系统的时钟模块电路图,它是此电路的振荡源,为整个电路的稳定性提供保障。
其中电容为谐振电容,需根据震荡频率进行选择,焊接时尽量靠近微控制器的时钟引脚,晶振即可用有源晶振也可采用无源晶振。
如下图所示X1为32.768K的无源晶振,它与C46,C47组成单片机的RTC振荡源,为系统能够掉电过程中,提供时钟基准,使打印时间不需要重复设定。
X2为12M的无源晶振,它与C48,C49组成单片机工作过程中的记数基准。
图3-2-3时钟电路
3.3步进电机驱动系统
3.3.1步进电机驱动模块
如图3-2-1和3-2-2为步进电机电路,此条形码打印系统有两个直流步进电机,其中一个步进电机驱动打印头,另外一个电机驱动裁纸刀,两个步进电机都要由LPC1754单片机控制,因为单片机的电流电压小无法驱动步进电机,所以就采用A4982电机驱动芯片对其驱动。
A4982SLP是其主要的优点为:
驱动电流大,具有制动检测选择电流衰减的模式,混合和慢电流衰减模式,低功耗同步整流,内部低电压锁定保护▪Automaticcurrentdecaymodedetectionselection(UVLO),交叉电流保护(线序接反保护)。
它是一个完整的微电机驱动内置的易于操作的翻译。
它的设计操作,双极步进电机在全,半,季,和第十六步模式,与高达35V、2A的输出驱动能力。
modes,withanoutputdrivecapacityofupto35Vand±
2A.
TheA4982includesafixedoff-timecurrentregulatorwhich
A4982SLP内部只带一个电流调节器的功能,可以做到固定时间关断,可以在慢、混合衰减模式下正常工作的能力。
ET的包装符合客户要求,材料采用高级环保材料,引脚相邻引脚短路orfire.Additionally,thedevicedoesnotcausesmokeorfire
不会产生烟火。
pin-to-adjacent-pinshort,thedevicedoesnotcausesmoke此外,当任何引脚对地短路或开路该装置不产生烟雾或火灾。
简单操作是控制方便的关键,它可实现一个脉冲一个微步调节。
其外围电路也相对简单,能自动选择电机运行过程中电流的衰减模式,当设定的关断时间结束后,采用混合衰减电流模式。
图3-3-1步进电机驱动
如图3-2-1所示,本设计中,驱动芯片的逻辑控制电压采用3.3V电压,所以其控制是可以直接用单片机IO口来控制。
采用单片机的P0[8]口控制步进电机的5,6脚,从而控制驱动的细分模式,使其能在单步微调和16细分微调之间转换。
使控制方便。
单片机P0[6]脚输出PWM波形给驱动芯片的11脚,来控制步进电机的步进速度和走纸距离。
DIR脚为正反转控制引脚,打印机在打印过程中如果识别到卡纸现象,可以手动控制步进电机,使其恢复。
ENABLE脚为驱动芯片使能脚,它为高电平时电机才能正常工作,否则电机不工作,可作为电机停止时,防止误操作,可将此脚拉低。
R7与R8并联,电阻为0.5R,R9和R10并联,电阻也为0.5R,四个电阻控制着芯片驱动相线的电流,改变这几个电阻的阻值,就可以改变驱动模块的驱动电流的大小从而改变电机的运行力道,不过正常情况下,为保护步进电机,电流一般都会选择在电机允许运行电流范围内,避免驱动电流过大时步进电机发热烧毁。
同事避免了驱动模块由于长时间工作在大电流状态下,发热烧毁。
VH电源输入脚通过C9和C11滤波后,作为电机的驱动电源为步进电机提供驱动电流。
由于VH电源在电源输入端已经通过大电容滤波电路变得平滑稳定了,这里C9和C11采用0.1uF的陶瓷贴片电容,滤掉电源的低频小脉冲即可。
12脚REF脚为驱动电机电流控制脚,可通过改变这个脚的电压来改变电机运行过程中的电流输出,其电流控制范围在限流电阻限流以下任意调节,本设计这里通过LPC1754的IO口输出脚,控制有R13,R14,12,R16组成的自动半流电路,从而可以控制电机在非运行状态下的通过电流,从而为整个系统降低了功耗。
▪LowRDS(ON)outputs
图3-3-2驱动芯片内部结构图
3.3.2步进电机选型及其优点
本设计所用的电机为4相步进电机。
所有的步进电机都是采用单极性直流电源供电。
给2相4线的步进电机的各相绕组,按合适的时序通电,不仅电机就能根据电流流入的快慢,按一定的角度进行步进转动。
步进电机有如下优点:
1.不需要反馈,控制简单。
2.与上位机的连接、控制速度,电机的启动和停止,电机的反转,以及驱动电路的设计与调试都很简单。
3.没有角累积误差。
4.停止时也可保持转距。
5.没有转向器等机械部分,不需要保养6.不需要传感器,也可以精确的定位。
7.根椐给定的脉冲周期,能够以任意速度转动。
但是,这种电机也有自身的缺点。
8.难以获得较大的转矩
9、不宜用作高速转动10.在体积重量方面没有优势,能源利用率低。
11.超过负载时会破坏同步,速工作时会发出振动和噪声。
12.成本较低。
步进电机的接线方法,开始时,开关q2接通VCC,q1、q3、q4断开,N2相磁极和转子0号和3号齿对齐,同时,转子的1号和4号齿就和N3、N4相绕组磁极会产生错齿;
2号和5号齿就和N4、N1相绕组磁极产生错齿。
当开关q3接通VCC后,q2、q1、q4断开,由于N3相绕组的磁力线和1号与4号齿之间,产生的磁力线的作用,转子会随着线圈的切割磁力线的左右那个而转动。
当1号和4号齿,与q3相绕组的磁极对齐。
而0号和3号齿和q1、q2相绕组产生错齿,2号和5号齿就和q1、q4相绕组磁极产生错齿。
按照这种方式,q1、q2、q3、q4四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
图3-3-3二相4线制步进电机原理图
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
步进电机在额定通电电流范围内,负载的变化都不能影响它的运行速度、停止的位置;
对步进电机有影响的只有脉冲信号的频率和发送给驱动模块的脉冲数。
所以只要给步进电机驱动模块一个电脉冲信号,步进电机就会根据驱动模块的细分情况,转过一个1细分数的步距角。
因为这一线性关系,又因为步进电机只有周期性的误差而没有累积误差等特点。
步进电机主要应用在速度、位置等精确的控制领域,在这些领域里用步进电机来控制就变的非常简单了。
由3-2-1可知,步进电机的旋转方向是可以通过步进电机的驱动芯片控制的,只要LPC1754芯片给步进电机的DIR、使能、复位、MS1和MS2这几个引脚设定好然后给STEP引脚一个设定好的上升沿就可以发自己所需要的脉冲。
3.4打印头工作模块
加热元器件是热敏打印头的关键核心,热敏打印头控制芯片前段有一排细小的半导体元器件,这些元器件排列密度很高,其排列密度从200dpi到600dpi不等;
当电流流过这些元器件时候,会很快使他们产生高温,而,热敏打印纸是经过特殊的化学处理的纸张,表面有很厚的一层化学物质层,涂层在遇到这些发热的元件时,温度在极短的时间内会升的很高,热敏纸上的化学涂层就会发生化学反应,现出黑色。
有规则的给热敏纸加热就能得到有规则的图案,现在的热敏头一般有三四百个方点,打印机利用点阵可以把打印点印在在热敏纸的任意位置上。
这种技术已用于纸张打印机和标签打印机上。
上位机将需要打印的数据传送给热敏打印机后,LPC1752接收到,将数据变化单片机可以处理的位图数据。
位图数据是由ASCII码组成,单片机按照位图数据的数据信息,控制打印机处理芯上的加热元件,使其通电发热,这样纸张接触到发热的答应头,会显示黑色的点,打印机根据打印信息,将所有点打印出来,就变成打印纸上的内容了。
此次设计的系统目标是微型化设计,除了选用体积较小的主控芯片和控制电路外,打印机芯的大小选择也很重要,本次设计采用56MM规格的热敏打印芯片。
以下是其主要参数:
打印方法热敏行式打印
打印点数448点行
点密度(点毫米)8
打印宽度(毫米)56
纸张宽度(毫米)60~62.5
点间距(毫秒)0.125
尺寸大小(毫米)95x74x30
打印头温度侦测热敏电阻
缺纸检测反射型光电传感器
3.5热敏打印头过热保护模块
热敏打印头的工作时候需要加热,其加热时间大概在1ms左右。
长时间对热敏打印头加热,或者加热时间到哦还继续加热的话,热敏头很容易烧毁,因此热敏打印头必须添加过热保护电路。
本文采用热敏电阻实现过热保护功能,因为热敏电阻随着温度的变化其阻值会发生相应的变化而且具有使用寿命期限长,反应灵敏,检测精度精准、体积小等优点,如图3-4-1所示,图中R58电阻是为负温度系数热敏电阻,随着温度的升高热敏电阻两端的电压会降低,当单片机检测到此处电压为低电平时就进入中断就不给打印头发送信号,打印头没有接受到信号就不工作,当检测到电压变高时,延时一段时间出中断,CPU就恢复工作,从而起到过热保护作用。
图3-5-1热敏打印头过热保护电路
3.6热敏打印头缺纸检测模块
如图3-5-1、3-5-2以及3-5-3为缺纸检测模块电路,本文采用反射型光电传感器完成缺纸检测工作。
光电传感器是,是将被测量物的状态变化,转换成光信号的变化;
然后通过光电元器件,将光信号转变成电信号输出。
光电传感器一般包括三部分:
发射端和接收端以及检测部分。
发射端实际就是1个红外LED,接收端是1个三极管。
发射端通电后,发出的红外光遇到检测物后,发射到接收端,触发接收端的三极管工作。
实现接收端中三极管的发射级电平变化。
从图3-5-1可知,当单片机给OPTO_LEDS一个低电平信号则Q6三极管导通,此三极管中的NEOP_LED引脚就与原点传感器电路(图3-5-2所示)中的对应引脚相接,从而光电开关导通,二极管发光,并将多路选择器中的MUX_A引脚、MUX_B引脚以及使能引脚EN都至为低电平将MUX_C引脚(图3-5-3所示电路)
图3-5-2热敏打印头缺纸检测电路
置高,这样此电路便能输出NEOP_OPTO引脚的信号了,然后根据电压高低判断是否有纸,倘若有纸发光二极管发出的光线将被打印纸反射到光敏三极管上,光敏三极管就可以导通,发射极就把高电平信号给CPU表示有纸,若没有纸则发光二级管发出的光将无法反射到光敏三极管上,光敏三极管便无法导通,发射极就将低电平发送给CPU表示无打印纸。
此电路之所以用光敏三极管来检测信号是因为光敏三极管不仅能将光信号转换成电信号还因为它对信号具有放大功能而且灵敏度比普通光电二极管更高。
图3-5-3热敏打印头缺纸检测电路
图3-5-4热敏打印头缺纸检测电路
4.系统软件设计
在完成硬件设计后接着就应该着手软件设计,本系统软件设计主流程图如图4-1-1所示
图4-1-1主程序流程图
此系统初始化包括:
打印头控制ThermalHeadCtrlInit();
传感器控制(SensorDetectInit());
步进电机控制(MotorCtrlInit());
以及打印信息(PrintMemInit());
等。
此打印机的软件设计主要通过RS232通信串口接受来自上位机传来的数据信息并检测是否有打印数据的命令。
如果有打印数据则先进行串口通信协议转换而后判断是否有数据输入。
在接受到数据后要先判断数据是命令字还是字符,如果是命令字系统则要处理控制命令,如果是字符则先对字符进行识别然后系统进入打印状态后先寻找打印字符的首地址,并按照该字符的要求从字库中取出相应点阵。
而后取出的点阵放入SPI数据寄存器中病将它传输到打印头机芯寄存器中。
此后裁刀复位然后加热打印并同步走纸,再判断数据是否取完,如果取完则返回否则回到控制命令里继续判断。
4.1热敏投打印初始化函数
voidThermalHeadCtrlInit()热敏打印头初始化函数
{
LPC_GPIO1->
FIODIR|=((0x03<
<
25)|(0x03<
28));
置位驱动模块控制管脚
FIOCLR=((1<
29)|(1<
26));
置位电机速度控制脚(pwm)
FIOSET=((1<
28)|(1<
25));
电机驱动模块使能
SPIInit();
调用SPI初始化函数
}
4.2SPI数据发送函数
voidSPI_SendData(uint8_tdata)数据发送函数
{
LPC_SPI->
SPDR=data;
装载要发送的数据
while(0==(LPC_SPI->
SPSR&
0x80));
清中断标志位
4.3SPI初始化函数
voidSPIInit(void)初始化SPI函数
LPC_PINCON->
PINSEL0|=(0x03ul<
30);
PINSEL1|=(0x03ul<
2)|(0x03<
4);
SPCR=(0<
3)|(0<
4)|(1<
5)|(0<
6)|(0<
7);
SPCCR=0x8;
4.4热敏打印数据处理函数
uint8_tThermalHeadWorkStart(uint8_t*pBuf,uint32_tlen)热敏打印数据处理函数
uint32_ti;
for(i=0;
i<
len;
i++)
{
SPI_SendData(*pBuf++);
将需要发送的数据发送给上位机
}
FIOCLR=1<
28;
热敏打印头驱动模块速度控制脚置位
for(i=0;
i<
10;
i++);
延时10us
FIOSET=1<
电机驱动模块使能脚使能
29;
关驱动使能,电机停止
return0;
无返回值
4.4热敏打印头停止打印函数
uint8_tThermalHeadWorkStop()热敏打印头停止打印
停止驱动模块打印输出
总结
本次课题设计研究并实现了基于Cortex-M3的条形码打印设计。
在此次设计过程中上网查阅了大量的参考文献以及数据手册等资料,经过不断的学习研究终于完成了毕业设计的全部工作。
当看到自己设计的作品成功运转时,内心分外激动,长久以来紧张的心瞬间释放,一切的付出因为这个小小的成果而得到释然欣慰。
基于Cortex-M3的条形码打印设计在硬件设计上不但要掌握LPC1754芯片的各个引脚功能以及寄存器结构等还要懂得灵活运用芯片提供的的外设IO口。
软件设计部分要懂得灵活应用Cortex-M3提供的功能齐全的丰富库函数以实现各个功能模块的控制。
同时还要了解LPC1754外设接口的电器特性以及软件实现方式。
此次的毕业设计对我受益颇多。
因为从拿到设计后就开始着手研究遇到不懂的地方就上网查阅资料向导师咨询,在这个学习过程中培养了我的自学能力和动手能力。
最让人意外的是刚开始自己是非常被动的学习,后来由于求知的欲望竟然很享受这个学习探知的过程。
但在此次研究中我也意识到自己需要的学习的地方还多,要不满足于现状,再接再厉。
致谢
在郑州轻工业学院我度过了四年的青春时光,接受了正规的高等教育,学到了不少专业知识以及做人的道理。
毕业之际,我感谢这所大学所给予我的一切。
首先要感谢我的毕业设计指导老师杜海明老师和我的校外指导老师方丹,因为毕业设计是在两位老师的悉心指导下完成的。
本设计从选题到完成,每一步都倾注了老师大量的心血。
老师指导我的论文的写作的方向和架构,帮我分析题目中所遇到的问题,教会我