网上有关“请简述单片机系统的设计过程是怎样的”话题很是火热,小编也是针对请简述单片机系统的设计过程是怎样的寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
您好:手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,咨询加微信【】很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的
1.手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,通过添加客服微信
2.咨询软件加微信【】在"设置DD功能DD微信手麻工具"里.点击"开启".
3.打开工具.在"设置DD新消息提醒"里.前两个选项"设置"和"连接软件"均勾选"开启"(好多人就是这一步忘记做了)
4.打开某一个微信组.点击右上角.往下拉."消息免打扰"选项.勾选"关闭"(也就是要把"群消息的提示保持在开启"的状态.这样才能触系统发底层接口)
单片机应用系统设计分为硬件设计与软件设计两部分及系统调试三个部分,大致过程如下:一、硬件电路设计1、根据任务需求规划确定单片机类型及外围接口电路方案;2、根据方案设计具体电路。二、软件设计1、根据目标任务的功能需求,结合硬件电路控制方式,规划设计软件功能模块;2、将功能模块细化成流程图;3、根据流程图编写程序代码;4、将编译后的目标代码下载到实物单片机或虚拟单片机进行软件仿真调试;三、系统调试1、将初调成功的目标的代码下载到单片机目标试验板进行软硬件联调及功能验证;2、验证成功符合设计要求,就可以进入小批量测试了。
用MSP430单片机设计充电器方案?
要:本文介绍了一种基于MSP430 单片机的温度测控装置。该装置可实现对温度的测量,并能根据设定值对环境温度进行调节,实现控温的目的。控制算法基于数字PID算法。
0 引言
温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用[1]。单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。
本文设计了一种基于MSP430单片机的温度测量和控制装置,能对环境温度进行测量,并能根据温度给定值给出调节量,控制执行机构,实现调节环境温度的目的。
1 整体方案设计
单片机温度控制系统是以MSP430单片机为控制核心。整个系统硬件部分包括温度检测系统、信号放大系统、A/D转换、单片机、I/O设备、控制执行系统等。
单片机温度控制系统控制框图如下所示:
温度传感器将温度信息变换为模拟电压信号后,将电压信号放大到单片机可以处理的范围内,经过低通滤波,滤掉干扰信号送入单片机。在单片机中对信号进行采样,为进一步提高测量精度,采样后对信号再进行数字滤波。单片机将检测到的温度信息与设定值进行比较,如果不相符,数字调节程序根据给定值与测得值的差值按PID控制算法设计控制量,触发程序根据控制量控制执行单元。如果检测值高于设定值,则启动制冷系统,降低环境温度;如果检测值低于设定值,则启动加热系统,提高环境温度,达到控制温度的目的。
2 温度信号检测
本系统中对检测精度要求不是很高,室温下即可,所以选用高精度热敏电阻作为温度传感器。热敏电阻具有灵敏度较高、稳定性强、互换精度高的特点。可使放大器电路极为简单, 又免去了互换补偿的麻烦。
热敏电阻具有负的电阻温度特性,当温度升高时,电阻值减小,它的阻值—温度特性曲线是一条指数曲线,非线性度较大。而对于本设计,因为温度要求不高,是在室温环境下,热敏电阻的阻值与环境温度基本呈线性关系[2],这样可以通过电阻分压简单地将温度值转化为电压值。
给热敏电阻通以恒定的电流,可得到电阻两端的电压,根据与热敏电阻特性有关的温度参数T0 以及特性系数k,可得下式
T=T0-kV(t) (1)
式中T为被测温度。
根据上式,可以把电阻值随温度的变化关系转化为电压值随温度变化的关系,由于热敏电阻的电信号一般都是毫伏级,必须经过放大,将热敏电阻测量到的电信号转化为0~3.6之间,才能在单片机中使用。
下图为放大电路原理图。稳压管的稳压值为1.5V。
由于传感器输出微弱的模拟信号,当信号中存在环境干扰时,干扰信号也被同时放大,影响检测的精度,需用滤波电路对先对模拟信号进行处理,以提高信号的抗干扰能力。本系统采用巴特沃斯二阶有源低通滤波电路。选取该巴特沃斯二阶有源低通滤波电路的截止频率
fH=10 kHz 。
3 控制系统设计
3.0 软件设计
单片机温度控制器控制温度范围100℃到400℃,采用通断控制,通过改变给定控制周期内加热和制冷设备的导通和关断时间,来提高和降低温度,以达到调节温度的目的。
软件设计中选取控制周期TC 为200(T1×C) ,导通时间取Pn ×T1×C ,其中Pn 为输出的控制量,Pn值介于0~200之间, T1 为定时器定时的时间,C为常数。由上两式可看出,通过改变T1 定时时间或常数C,就可改变控制周期TC 的大小。温度控制器控制的最高温度为400℃,当给定温度超过400℃时以400℃计算。
图3为采样中断流程图。
数模转换部分使用单片机自带的12位A/D转换器,能同时实现数模转换和控制,免去使用专用的转换芯片,使系统处理速度更快,精度更高,使电路简化。采样周期为500 μs ,当采集完16个点的数据以后,设置标志“nADCFlag =1”,通知主程序采集完16个点的数据,主程序从全局缓冲区里读出数据。
为进一步减小随机信号对系统精度的影响,A/D转换后,用平均值法对采样值进行数字滤波。每16个采样点取一次平均值。然后将计算到的平均值作为测量数据进行显示。同时,按照PID算法,对温度采样值和给定值之间的偏差进行控制,得到控制量。采样全过程完成后就可屏蔽采样中断,同时启动T1定时[3],进入控制过程。
温度值和热敏电阻的测量值在整个温度采样区间内基本呈线性变化,因此在程序中不需要对测量数据进行线性校正。MSP430的T1定时器中断作为控制中断,温度采样过程和控制输出过程采用了互锁结构,即在进行温度采样,温度值处理和运算等过程时T1不定时,待采样全过程进行完时再启动T1定时并同时屏蔽采样中断。T1定时开始就进入控制过程,在整个控制过程中都不采样,直到200(T1×C) 定时时间到,要开始新一轮的控制周期。在启动采样的同时屏蔽T1中断。
图4为T1定时中断流程图。
图中,M代表定时器控制周期计数值,N则表示由调节器计算出的控制量。首先判断控制周期TC是否己经结束。若控制周期TC已结束(即M=0),则屏蔽T1定时器中断,进行新一轮温度采样;若控制周期TC还未结束〔即M≠0 〕,则开始判断导通时间是否结束。若导通时间己结束(即N=0),则置输出控制信号为低,并重新赋常数C值,启动定时器定时,同时退出中断服务程序;若导通时间还未结束(即N ≠0 ),则置输出控制信号为高,控制执行其间继续导通,重新赋常数C值,启动定时器定时,同时退出中断服务程序。
3.1 数字PID
本文控制算法采用数字PID 控制,数字PID 算法表达式如下所示:
其中,KP 为比例系数;KI=KPT/TI 为积分系数;T 为采样周期,TI 为积分时间系数;KD=KPTD/T 为微分系数,TD 为微分时间系数。u(k) 为调节器第k次输出, e(k) 为第k 次给定与反馈偏差。
对于PID 调节器,当偏差值输出较大时,输出值会很大,可能导致系统不稳定,所以在实际中,需要对调节器的输出限幅[4],即当|u|>umax 时,令u=umax 或u=-umax ,或根据具体情况确定。
3.2 温度调节
PI 控制器根据温度给定值和测量值之间的偏差调节,给出调节量,再通过单片机输出PWM 波,调节可控硅的触发相位的相位角,以此来控制执行部件的关断和开启时间,达到使温度升高或降低的目的。随后整个系统再通过检测前一阶段控制后的温度,进行近一步的控制修正,最终实现预期的温度监控目的。
4 结论
本设计利用单片机低功耗、处理能力强的特点,使用单片机作为主控制器,对室内环境温度进行监控。其结构简单、可靠性较高,具有一定的实用价值和发展前景。
参考文献
[1] 赵丽娟,邵欣.基于单片机的温度监控系统的设计与实现.机械制造,2006,44(1)
[2] 张开生,郭国法.MCS-51 单片机温度控制系统的设计.微计算机信息,2005,(7)
[3] 沈建华,杨艳琴,翟骁曙..MSP430 系列16 位超低功耗单片机原理与应用.清华大学出版社,2004,148-155
[4] 赖寿宏.微型计算机控制技术.北京:机械工业出版社,1994:90-95
求单片机试验板的设计毕业设计一份
高效、低成本及可靠的电池充电器设计可用各种方法来实现,但采用8 位闪速MCU 不仅能缩短设计时间、降低成本及提供安全可靠的产品,而且还能使设计人员以最少的工作量来进行现场升级。考虑到电池安全充电的成本、设计效率及重要性,基于MCU 的解决方案可为设计者们提供诸多优势。通过选择带适当外围与闪存的8 位MCU,工程师们能充分利用其优势来设计一种离线锂电池充电器。带2KB 闪存及适当外围以提供一种廉价解决方案的飞利浦 80C51 型MCU 就是这样一个例子。集成化闪存还能提供高效及方便地调试应用代码并进行现场软件升级(如果需要)的能力。由于设计界不仅熟悉而且广泛接受8 位MCU,故软硬件开发可快速进行。由众多厂商提供的各种功能强大且并不昂贵的应用开发工具,也是这种方法的另一项优势。利用这种方法,设计团队不仅能极大地缩短设计周期,而且还能进行更为复杂的设计,并使项目的整体材料费(BOM)不超出可接受的范围。
外围电路集成
譬如,当MCU 集成有内部振荡器时,离线锂电池充电器设计可从以下两方面获益。首先,可省掉外部振荡器,从而节省成本及PCB 占位;其次,内部振荡器可提高系统启动时的稳定性。四通道A/D 转换器是设计工程师们应该寻求集成到芯片中的另一种有价值的外围电路。除能比使用外部A/D 转换器更节约成本外,还能用它来检测充电电压、电流及电池温度--几乎包括安全电池充电操作中的所有重要参数。用来实现以下所介绍设计的MCU(P89LPC916)不仅集成了上述所有这些特性而且还拥有可同时在两个时钟上执行指令的高性能处理器架构,从而将其性能提高至标准80C51 器件的6 倍。Time0(计时器0)很容易被配置成PWM 输出,故易于设置及使用PWM 功能。
基本电池充电标准
本设计为专门针对额定700-750mAh 、3.6V 放电电压及4.2V 电压极限的锂电池充电器解决方案。充电顺序分成以下三个阶段:预充电阶段、恒定电流充电阶段及恒定电压充电阶段。当电池只剩下很少的电量且因此而只能产生很低的输出电压时,就必须有预充电阶段。在此情况下,必须采用低电流充电以保护电池。但如果被充电电池可产生较高电压(>3V),则可省略掉预充电阶段。当然,这是最普遍的情况。大部分电能是在恒定电流及恒定电压充电阶段从充电器流入电池。电池的最大允许充电电流由该电池的额定容量决定。对于快速充电,例如额定700mAh 的电池,可用350-400mA 电流来充电。在锂电池情况下,MCU 必须在保持电池正常充电电压的同时还监视充电电流,以在电池充满时能终止充电过程。温度监视可用来确保执行安全的充电步骤,因为随着电池充满,任何额外的电能都将被转换成热量。尽管MCU 必须为其完成的功能增加温度监视,但当今市场上的大多数锂电池都带有内置过充电保护,故温度监视尽管需要但却很少使用。
降压转换器设计
若要设计一种带锥形端接特性的充电器,最有效及最经济的方法是采用降压转换器来作为开关调整器。降压转换器使用电感来储存电能。图1a 及1b 分别为开关处于通/断位置时的降压转换器工作示意图。
图1:(a):降压转换器开关“开”;(b):降压转换器开关“关”。
来自PWM 的信号控制充电开关。当开关闭合时(图1a),电流由于充电器提供的电压(充电器Vin)而流过电路,此时电容通过电感充电。当开关打开时(如1b 所示),电感试图通过感应电压来保持电流流动,但它不能立刻充电。然后电流流过肖特基二极管并给电容充电。此过程循环往复。当通过减少PWM 占空比来缩短开关“通”时间时,平均电压减少。相反,当通过增加PWM 占空比来延长开关“断”时间时,平均电压增加。故通过控制PWM 占空比来使MCU 调整充电电压(或电流)可达到所需的输出值。在讨论设计细节以前,需先讨论与电感及
电容有关的两个要点:
1.电感大小不难看出,确定降压转换器电感的大小是达到合适充电电压及电流的关键。电感大小也与成本有关。电感容量可用公式1 来计算:公式1 其中:Vi:输入至开关的充电器电压;Vsat:开关“通”时开关的电压损失;Vo:电压输出;T:PWM 周期;DutyCycle:PWM 占空比;Io:电流输出(亦即恒定电流充电)。公式1 显示PWM 的开关频率越高(亦即开关周期T 越小),则所需的电感越小,这有助于减少器件成本。
2.电容大小还需注意的是,此电路中的电容完全是用来减少纹波电流,故越大越好,因为纹波与电容值成反比。
设计要点
本设计基于飞利浦P89LPC916 型MCU,其整体设计思想是,通过先用恒定电流充电、然后再用恒定电压充电来实现尽可能快的充电。MCU还控制用于指示充电器工作状态的LED。
1.精密电源VDD 需采用精密电压源,因为此电压被用作DA-DA 转换器的电压参考。低压降(LDO)调整器为该电压源的最佳选择,且本设计采用3 端LDO LM1117 来为VDD 提供精密3.31 V 电源。
输出解决方案Timer0(定时器0)的一个通道用来产生控制降压转换器开关的PWM 信号。由于LPC916 带有其自己的片上RC 振荡器,故充电更加稳定而有效--尤其在电压控制工作模式下。所需的PWM 频率仅大约为14kHz,故能很好地控制在片上振荡器的频率范围内。可通过改变降压转换器的“开”时间来调整PWM 占空比。
系统设计
图2 为锂电池充电器系统组成框图。其中PWM 输出控制充电开关,且其占空比可根据需要用充电电压及电流的反馈来调整。LPC916 的8 位片上高速A/D 转换器提供了监视充电电压所需的高精度。避免锂离子应用中的过充电非常重要,因为将充电保持在其最大值以内可延长电池的使用寿命。表1 为该电路的输入/输出参数规格。
表1:图2 电路的输入、输出参数规格。
下一步是计算电感值,首先必须指出的是,公式1 给出了占空比、输出电流、PWM 周期及其他变量之间的关系。电感值可通过假设Vi=5.1V、所需输出电压Vsat=0.5V(在Io=350mA 上,Vo=4.25V、所需输出电流Io=350mA 、1/T=14.7kHz 以及占空比为50%来计算)。采用以上这些值,用公式1 可计算出电感值不小于10μH。在本设计中,建议电感值为33-10μH 。尽管可以采用大于5.1V 的输入电压,但更高的输入电压要求采用更高频率的PWM 或更大的电感,从而使器件成本提高。
图2:由LPC916 控制的锂电池充电器解决方案
锂电池应以三个独立的阶段来充电。如果电池电压低于3V,则需要有预充电阶段且充电电流应保持为65mA。一旦电池电压达到3V+-1% ,即开始进入快速充电阶段,并采用350mA 的恒定充电电流。通过调整控制脉冲可使充电电流保持恒定。当电池电压达到4V+-1% 时,即开始接恒定电压充电阶段。此时电压被保持在4.23V,充电电流处于监视下。
在恒定电压充电阶段之后,电池被另外再充电50 分钟,同时保持充电电流小于30mA。充电时间可用一个计时器来控制,但监视充电终结的方法有三种:检测充电电流、使用计时器以及监视温度(可选)。
图3:锂电池充电过程
充电过程如图3 所示。从一个阶段进入到另一个阶段的准确标志如下:预充电阶段(当需要时):如果Vbat<3.0(1%,则设置Iout=10%;Ireg=65mA ;快速充电阶段(恒定电流充电):当Vbat<=4.00+-1%V 时,设置Iout=Ireg=350mA;计时器控制充电阶段(恒定电压充电):当Ibat<60mA 时,设置Vout=Vreg=4.23V(50 分钟)以保证电池充分充电,但使充电电流小于30mA。充电在4 小时内完成。考虑到最终用户,设计中采用了LED 状态指示灯,以提供有关充电序列状态的信息。
设计方案的测试
可用来在充电过程中测试该设计的电路框图如图4 所示。用两块万用表来测量Vout 及Vsense_res 读数。Vout=Vbat+Vsense_res ,充电电流可用公式Iout=Vsense res/0.75 来计算。
图4:测试电路
当充电开始时,每15 秒记录一次数据,但当电流及电压稳定后,记录周期可缩短为每5 秒记录一次。结果可能会随不同电池的化学特征而变化,而且电池的起始电压也对结果有影响。图5 及图6 显示该设计满足指标。
图5:输出电压测试结果
图6:输出电流测试结果
13.?动态数码显示技术?
1.?实验任务?
如图4.13.1所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。?
2.?电路原理图?
图4.13.1?
3.?系统板上硬件连线?
(1.?把“单片机系统”区域中的P0.0/AD0-P0.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;?
(2.?把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;?
(3.?把“单片机系统”区域中的P1.7端口用导线连接到“独立式键盘”区域中的SP1端口上;?
4.?程序设计内容?
(1.?动态扫描方法?
动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。?
(2.?在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。?
(3.?对于显示的字形码数据我们采用查表方法来完成。?
5.?程序框图?
图4.13.2?
6.?汇编源程序
ORG?00H
START:?JB?P1.7,DIR1
MOV?DPTR,#TABLE1
SJMP?DIR
DIR1:?MOV?DPTR,#TABLE2
DIR:?MOV?R0,#00H
MOV?R1,#01H
NEXT:?MOV?A,R0
MOVC?A,@A+DPTR
MOV?P0,A
MOV?A,R1
MOV?P2,A
LCALL?DAY
INC?R0
RL?A
MOV?R1,A
CJNE?R1,#0DFH,NEXT
SJMP?START
DAY:?MOV?R6,#4
D1:?MOV?R7,#248
DJNZ?R7,$
DJNZ?R6,D1
RET
TABLE1:?DB?06H,5BH,4FH,66H,6DH
TABLE2:?DB?78H,79H,38H,38H,3FH
END
7.?C语言源程序
#include?<AT89X51.H>
unsigned?char?code?table1[]={0x06,0x5b,0x4f,0x66,0x6d};
unsigned?char?code?table2[]={0x78,0x79,0x38,0x38,0x3f};
unsigned?char?i;
unsigned?char?a,b;
unsigned?char?temp;
void?main(void)
{
while(1)
{
temp=0xfe;
for(i=0;i<5;i++)
{
if(P1_7==1)
{
P0=table1[i];
}
else
{
P0=table2[i];
}
P2=temp;
a=temp<<(i+1);
b=temp>>(7-i);
temp=a|b;
for(a=4;a>0;a--)for(b=248;b>0;b--);
}
}
关于“请简述单片机系统的设计过程是怎样的”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!