版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前STCuniosystemonchipunusuali/o,arduino构架设计,即使没有单片机知STCuino的时候就会发现,STCuino已经IO口电路,使用起来非常简单。当然不arduinoarduino也并没有受到工程师们的青睐。STCunioarduino的特点,函数库是开源的。当大家很想学demo本篇主要讲解的对象主要是非电子专业的学者,即类似arduino的开发。若想学习单片第1章STCunio的基本函STCunioIO口有四种模式:PullUp(上拉、HighZ(输入高阻)、OpenD(开漏、OutPP(推挽输出),pinMode用以配置引脚为这四种模式的其中一种,它是一个无返回值函数,函数OutPPOpenD模式引脚上加上拉电阻后,功能与PullUp相同。该函数位于GPIO.c文件。intgreenled=4;intredled=5;voidmain(){{digitalWrite(greenled,LOW); digitalWrite(greenled,HIGH); }}电平。该函数无返回值,函数有pin和value两个参数,pin参数表示要设置的引脚(数字0~15,valueLOWOutPPvalue:HIGH或LOWintgreenled=4;intredled=5;voidmain(){{digitalWrite(greenled,LOW); digitalWrite(greenled,HIGH); }}OutPP数位于GPIO.c文件。value:HIGH或LOWintgreenled=4;voidmain(){digitalWrite(greenled,LOW);{}}HIG(低电平pinHIGHLOW。在使用(PullUpGPIO.cHighZ模式,引脚若悬空,获取的电平会不确定。HIGH或void{intintredled=7;intgreenled=5;fori=8i<=11 {}fori=5i<=7 {} u8switch(temp){case0x0e:case0x0d:casecase
}}}ogRead函数用于引脚的模拟量电压值,参数pin(模拟0~5)表示所要获取模拟量int0~1023。该函数位于ADC.c文件中。void{intu8ogPin=1;{val=ogRead(ogPin); //readtheinputpinprintf("advalueis0x%x\n",val);}}ogWrite函数通过 好的对蓄电池充电。调制技术还广泛应用在电力电子变换领域。在使用 先将引脚配置成输出模式(OutPP。将该函数位于PCA.c文件。 pin:希望输出的引脚,只5~713~15.value:输出值(0~255)PCA_Clock_xT:输出频率为时钟频率的1/x/256,包括PCA_Clock_1T,PCA_Clock_2T,PCA_Clock_4T,PCA_Clock_6T,PCA_Clock_8T,PCA_Clock_12T。假如PCA_Clock_xT为PCA_Clock_12T,时钟频率为,则频率为/12/256=3600Hz。void{intintredled=7;intblueled=6;fori=5i<=7 {} PCA_Clock_12T);ogWrite(blueled,177,}}tone()函数是在引脚上输出占空比为50%的一可调频率的,发出的会一直持续直到nTone()tone()的引脚可以用来给一个蜂鸣器、咪头、扬声器发出一定频率,引脚必须驱动低电平打开的PNP晶体管或P沟道的mosfet管,如果你想使用 intcodemelody[]void{{for(thisNote=0;{}}}intcodemelody[]{void{{for(thisNote=0;{}}}引脚配置成输出模式(PullUp、OutPPOpenD必须外加上拉电阻。将该函数位于GPIO.c文件。voidmain() intdataPin=8;intclockPin=9;intST_CP=10;intclock1Pin=12;{u8i;{}}}shiftIn函数能够将数据通过串行的方式在引脚上输入,相当于一般意义上的同步串行通信,这是控制器与控制器、控制器与传感器之间常用的一种通信方式。在使用shiftIn前要先将dataPin引脚配置成输入模式(PullUpOpenD必须外加上拉电阻。将该函数位于GPIO.c文件。delay_msLED灯闪烁程序中经常用到,参数表示延时时长,单位ms,函数无返回值。void{intgreenled=4;{digitalWrite(greenled,LOW); digitalWrite(greenled,HIGH); }}10us(1ms=1000usbitRead(value,bit)的作用是读出value的第bit位,然后返回。bitSet(value,bit)valuebit1。STCunioUSART1.cC51stdio.h共同来实现的。Serialbegin(u32baud)stdio.h的Serialbegin函数的作用是初始化串口,包括波特率(自适应时钟、数据位、串口中断。这是STCunio自动的必要程序,请参考bootloader。stdio.h常用库函数可以参考C51DevelopmentTools,在keilu4->Help,点击uVisionHelp就会弹出C51DevelopmentTools,在索引输入stido.h就可以找到这些库函数。void{intintargsread=0;u8ogPin=0;{val=ogRead(ogPin); //readtheinputpinprintf("advalueis%x\r\n",val);}}SPISTCunioSPISPI.c的库函数来实现的,很方便地将STCunio作为主设备与其SPIbegin函数使能SPI功能,并将MCU设为主机模式,将SPI设置到数字 、、、号,分别为对应SPI的SS、MOSI、MISO、SCLK。SPIsetBitOrder函数的作用是在设置串行数据传输时是低位还是,函数有一个u8类型的参数bitOrder,有LSBFIRST(最低位)和MSBFIRST(最)两种类型bitOrder:u8类型,LSBFIRSTMSBFIRST。无SPIsetClockDividerSPI串行通信的时钟,通信时钟是有系统时钟分频而得到,分频值可选、u8rate,有4中类型,对4个分频值rateu0SCLKSCLK上升沿采样,下降沿驱动数据,SCLK空闲时为0。1SCLKSCLK上升沿驱动数据,下降沿采样,SCLK空闲时为0。2SCLKSCLK下降沿采样,上升沿驱动数据,SCLK空闲时为1。3SCLKSCLK上升沿驱动数据,下降沿采样,SCLK空闲时为1。mode:u8类型,SPI_MODE0、SPI_MODE1、SPI_MODE2、SPI_MODE30、1、 、、、号可以用作普通的IOcabs(charcabschar型val的绝对值,并返回数值。cabs(charval:charchar类型,|val|abs(intcabs(intval:intint类型,|val|labs(longlcabs(longval:longlong类型,|val|labs函数是取参数float型vallcabs(floatval:floatfloat类型,|val|sqrt(floatsqrt函数的作用是计算valsqrt(floatfloatexp函数的作用是计算自然对数e的val次幂,并将计算值返回。e≈2. floatfloat型,logelog10(floatfloatsin(floatfloatcos(floatfloattan(floatfloatasin函数的作用是计算浮点数valacos(floatacos函数的作用是计算浮点数valacos(floatatan(floatval:float型,取值范围必须在-1~1之间。sinh(floatcosh(floatcosh的作用是计算浮点数valtanh(floattanh(float参数y:float型x:float型float型,不小于valfloatfloor(floatfloor(floatfmod(floatx,floatfmod(floatx,floatfloat型,x/y (floatval,floatmodfval分解成整数部分和小数部分,并返回小数部分,整数部分存放在*n指 (floatval,floatfloat型,valpow(floatx,floatpow(floatx,floaty:float型,幂指数floatPID控制器具有结构简单、容易实现、控制效果好、鲁棒性强等特点,是迄今为止最稳++_++_ +
模拟PID控制系统结构图v(t)K(e(t)TpTi
e(t)dtT)t)
nvK(e1deTTenen1)KeKeK(e nT Ti
j
pn jo
式中,KiKPTTiKdKP
T为控制器输出的控制量,也可取其递推算法△vnvnvn1KPenen1KienKden2en1en2vnvn1Kpenen1KIenKDen2en1en2
1位置Uout=UpUiUd 积分环节,Uin-1Uin-1=Ui,作为下一个Ud=(err-errn-1)*Kd,errn-1errn-1err,作为下一个周期使用,err=referenceInputmeasuredOutput。referenceInput为参考输入,measuredOutput为当前测量值也为反馈值,一般为AD采样或计数器得来。2增量Uoutn=Uoutn-1+errn*a+errn-1*b+errn-2*ca=Kp+Ki+Kdb=-(Kp+c=errn=referenceInputnmeasuredOutputnerrn-1errn,errn-2errn-1作为下一个周期PID控制算法,下面将进行PID的库函数进行讲解,本文主要以位置式PID进行讲解。kp、ki、kda、b、cpidbegin函数之前需15PID运算也是可以的,但是浮点数运算会占用大量的时间和空间,无论是MCU还是DSP选择整型运算要比浮点运算优越很多。a:Q15(KpKiKd),int型b:Q15(-(Kp2*Kd),int型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版高科技产品出口许可与合同履行协议3篇
- 二零二五版国际贸易合同担保法风险管理合同3篇
- 碎石加工设备2025年度保险合同2篇
- 二零二五版企业员工劳务派遣与员工福利保障合同3篇
- 二零二五年度粮食储备与农业产业化合作合同3篇
- 二零二五年度高层综合楼公共收益分配管理合同3篇
- 二零二五年度校车运营服务与儿童座椅安全检测合同3篇
- 二零二五版带储藏室装修包售二手房合同范本3篇
- 二零二五年房地产合作开发与股权让渡综合合同2篇
- 二零二五年度花木种植与生态农业园区建设合同3篇
- 毕淑敏心理咨询手记在线阅读
- 亚硝酸钠安全标签
- pcs-985ts-x说明书国内中文版
- GB 11887-2012首饰贵金属纯度的规定及命名方法
- 小品《天宫贺岁》台词剧本手稿
- 医院患者伤口换药操作课件
- 欠薪强制执行申请书
- 矿山年中期开采重点规划
- 资源库建设项目技术规范汇编0716印刷版
- GC2级压力管道安装质量保证体系文件编写提纲
- 预应力混凝土简支小箱梁大作业计算书
评论
0/150
提交评论