拨码开关程序
- 格式:doc
- 大小:26.50 KB
- 文档页数:3
基于STM32的步进电机控制器设计熊远生;刘春元;蔡伟忠【摘要】为实现对多台步进电机的控制,开发了基于STM32的步进电机控制器,在硬件设计的基础上,将FreeModbus移植到STM32上,在eMBRegHoldingCB函数中实现了输出脉冲频率、输出脉冲个数、输出脉冲方向和输出脉冲终止信息的可设置和可查询,实验结果表明,所设计的步进电机控制器是可行的.【期刊名称】《制造业自动化》【年(卷),期】2019(041)005【总页数】4页(P39-41,105)【关键词】STM32;步进电机;FreeModbus【作者】熊远生;刘春元;蔡伟忠【作者单位】嘉兴学院机电工程学院,嘉兴314001;嘉兴学院机电工程学院,嘉兴314001;嘉兴学院机电工程学院,嘉兴314001【正文语种】中文【中图分类】TM383.60 引言步进电机转动的角度和输入驱动脉冲的个数成正比,其转动速率可以通过驱动脉冲的频率来控制,有较高的定位精度,无位置累积误差及特有的开环运行机制,与闭环控制系统相比,可减少系统成本,并提高了可靠性,具有较高的控制精度;因此,在精度要求不高的运动控制系统中,在工业领域得到了大量应用[1,2]。
为进一步提高控制精度,在实际应用中广泛应用步进电机细分驱动器,细分驱动器一般提供三个输入接口信号,ENA信号为脱机信号(低电平有效),当此输入控制端为低时,电机励磁电流被关断,电机处于脱机自由状态,此信号在大多数应用时一般悬空,DIR信号方向电平信号输入端,高低电平控制电机正/反转,PUL步进脉冲信号输入,每个信号提供两个输入端,内部用光耦实现隔离。
在工业控制中,有很多应用场合需要在上位机控制多个步进电机同时工作,如在水位传感器的初始螺栓位置调整中,为提高工作效率,希望10个步进电机在上位机控制下带动10个传感器同时进行位置调整。
但是上位机一般不能直接连接细分驱动器,通常采用PLC的普通输出端口连接细分驱动器的DIR信号,PLC的脉冲输出端口连接细分驱动器的PUL信号,PLC与上位机之间通过RS485连接。
DS18B20汇编程序;实验目的:熟悉DS18B20的使用;六位数码管显示温度结果,其中整数部分2位,小数部分4位;每次按下RB0键后进行一次温度转换。
;硬件要求:把DS18B20插在18B20插座上; 拨码开关S10第1位置ON,其他位置OFF; 拨码开关S5、S6全部置ON,其他拨码开关全部置OFF;*****************以下是暂存器的定义*****************************#INCLUDE<P16F877A.INC>#DEFINE DQ PORTA,0 ;18B20数据口__CONFIG_DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS _OSCCBLOCK 20HDQ_DELAY1DQ_DELAY2TEMPTEMP1TEMP2 ;存放采样到的温度值TEMP3COUNTCOUNT1ENDCTMR0_VALUE EQU 0AH ;寄存器初值为6,预分频比1:4,中断一次时间为4*(256-6)=1000usDQ_DELAY_VALUE1 EQU 0FAHDQ_DELAY_VALUE2 EQU 4H;**********************以下是程序的开始************************ ORG 00HNOPGOTO MAIN ;入口地址ORG 04HRETFIE ;在中断入口出放置一条中断返回指令,防止干扰产生中断TABLEADDWF PCL,1RETLW 0C0H ;0的编码(公阳极数码管)RETLW 0F9H ;1的编码RETLW 0A4H ;2的编码RETLW 0B0H ;3的编码RETLW 99H ;4的编码RETLW 92H ;5的编码RETLW 082H ;6RETLW 0F8H ;7RETLW 080H ;8RETLW 090H ;9;***************************主程序******************************* MAINCLRF PORTACLRF PORTBBANKSEL TRISACLRF TRISA ;A口所有先设置为输出CLRF TRISDMOVLW 01HMOVWF TRISB ;B0口为输入,其他为输出MOVLW 06HMOVWF ADCON1 ;关闭所有A/D口MOVLW 01HMOVWF OPTION_REG ;分频比1:4,定时器,内部时钟源BCF STATUS,RP0CLRF TEMPCLRF TEMP1CLRF TEMP2 ;清零临时寄存器MOVLW 8HMOVWF COUNTMOVLW 38HMOVWF FSRCLRF INDFINCF FSR,1DECFSZ COUNT,1GOTO $-3;****************************循环处理部分************************;先启动18B20温度转换程序,在判断温度转换是否完成(需750us);未完成则调用显示子程序,直到完成温度转换;完成后读取温度值;送LCD显示LOOPBTFSC PORTB,0 ;判断温度转换按键是否按下GOTO LOOP1 ;否,转显示CALL DELAY ;消抖BTFSC PORTB,0 ;再次判断GOTO LOOP1CALL RESET_18B20 ;调用复位18B20子程序MOVLW 0CCHMOVWF TEMPCALL WRITE_18B20 ;SKIP ROM命令MOVLW 44HMOVWF TEMPCALL WRITE_18B20 ;温度转换命令CLRF STATUSCALL DELAY_750MS ;调用温度转换所需要的750MS延时NOPCALL RESET_18B20MOVLW 0CCHMOVWF TEMPCALL WRITE_18B20 ;SKIP ROM命令MOVLW 0BEHMOVWF TEMPCALL WRITE_18B20 ;读温度命令CALL READ_18B20 ;调用读温度低字节MOVFW TEMPMOVWF TEMP1 ;保存到TEMP1CALL READ_18B20 ;调用读温度高字节MOVFW TEMPMOVWF TEMP2 ;保存到TMEP2CALL RESET_18B20LOOP1CALL TEMP_CHANGE ;调用温度转换程序CALL DISPLAY ;调用LCD显示程序GOTO LOOP ;循环工作;*********************复位DS18B20子程序************************** RESET_18B20;根据DATASHEET介绍,写数据时应遵照如下规定:;主控制器把总线拉低至少480us,;18B20等待15-60us后,把总线拉低做为返回给控制器的应答信号BANKSEL TRISABCF TRISA,0BCF STATUS,RP0BCF DQMOVLW 0A0HMOVWF COUNT ;160USDECFSZ COUNT,1GOTO $-1 ;拉低480usBSF DQ ;释放总线MOVLW 14HMOVWF COUNTDECFSZ COUNT,1GOTO $-1 ;等待60usBANKSEL TRISABSF TRISA,0 ;DQ设置为输入BCF STATUS,RP0BTFSC DQ ;数据线是否为低GOTO RESET_18B20 ;否则继续复位MOVLW 4HMOVWF COUNTDECFSZ COUNT,1 ;延时一段时间后再次判断GOTO $-1BTFSC DQGOTO RESET_18B20MOVLW 4BHMOVWF COUNTDECFSZ COUNT,1GOTO $-1BANKSEL TRISABCF TRISA,0 ;DQ设置为输出BCF STATUS,RP0RETURN;*********************写DS18B20子程序**************************** WRITE_18B20;根据DATASHEET介绍,写数据时应遵照如下规定:;写数据0时,主控制器把总线拉低至少60us;写数据1时,主控制器把总线拉低,但必须在15us内释放MOVLW 8HMOVWF COUNT ;8位数据BANKSEL TRISABCF TRISA,0BCF STATUS,RP0BCF STATUS,CWRITE_18B20_1BSF DQ ;先保持DQ为高MOVLW 5HMOVWF COUNT1BCF DQ ;拉低DQ15usDECFSZ COUNT1,1GOTO $-1RRF TEMP,1BTFSS STATUS,C ;判断写的数据为0还是1GOTO WRITE_0BSF DQ ;为1,立即拉高数据线GOTO WRITE_ENDWRITE_0BCF DQ ;继续保持数据线为低WRITE_ENDMOVLW 0FHMOVWF COUNT1 ;保持45msDECFSZ COUNT1,1GOTO $-1BSF DQ ;释放总线DECFSZ COUNT,1 ;是否写完8位数据GOTO WRITE_18B20_1RETURN;**********************读DS18B20子程序**************************** READ_18B20;根据DATASHEET介绍,读数据时应遵照如下规定:;读数据0时,主控制器把总线拉低后,18B20再把总线拉低60us;读数据1时,主控制器把总线拉低后,保持总线状态不变;主控制器在数据线拉低后15us内读区数据线上的状态。
MITSUBISHI可编程FX系列指令一程序流程—功能00~0900CJ条件转移01CALL调用子程序02SRET从子程序返回03IRET中断返回04EI开中断05DI关中断06FEND主程序结束07WDT监视定时器08FOR循环开始09NEXT循环结束二传送和比较指令—功能10~1910CMP比较11ZCP区间比较12MOV传送13SMOV移位传送14CML求补运算15BMOV数据块传送16FMOV多点传送17XCH数据交换18BCD求BCD码19BIN求二进制码三算术和逻辑运算指令—功能20~29 20ADD加法21SUB减法22MUL乘法23DIV除法24INC加一25DEC减一26WAND字与27WOR字或28WXOR字异或29NEG求补四循环与移位—功能30~3930ROR循环右移31ROL循环左移32RCR带进位循环右移33RCL带进位循环左移34SFTR位右移35SFTL位左移36WSFR字右移37WSFL字左移38SFWRFIFO写39SFRDFIFO读五数据处理—功能40~4940ZRST区间复位41DECO解码42ENCO编码43SUMON位总数44BON检查位状态45MEAN求平均值46ANS标志置位47ANR标志复位48SQR平方根49FLT整数转换成浮点数六高速处理—功能50~5950REF刷新51REFF刷新与滤波处理52MTR矩阵输入53HSCS高速记数器置位54HSCR高速记数器复位55HSZ高速记数器区间比较速度检测56SPD脉冲输出Speed detect 57PLSY脉宽调制Pulse Y58PWM脉冲调制Pulse width modulation59PLSR带加减速脉冲输出七方便指令—功能60~6960IST状态初始化61SER寻找62ABSD绝对值凸轮顺控63INCD增量凸轮顺控64TTMR示教定时器65STMR专用定时器—可定义66ALT交替输出67RAMP斜坡输出68ROTC旋转台控制69SORT排序八外部I/O设备—功能70~79 70TKY十键输入71HKY十六键输入72DSW拨码开关输入73SEGD七段码译码74SEGL带锁存的七段码显示75ARWS方向开关76ASCASCII变换77PR打印78FROM读特殊功能模块79TO写特殊功能模块九外围设备SER—功能80~89 80RSRS通讯81PRUN8进制位传送82ASCI十六进制至ASCII转换83HEXASCII至十六进制转换84CCD校验码85VRRD电位器读入86VRSC电位器刻度8788PIDPID控制89十F2外部模块—功能90~9990MNETF-16N, Mini网91ANRDF2-6A, 模拟量输入92ANWRF2-6A, 模拟量输出93RMSTF2-32RM, 启动RM94RMWRF2-32RM, 写RM95RMRDF2-32RM, 读RM96RMMNF2-32RM, 监控RM97BLKF2-30GM, 指定块98MCDEF2-30GM, 机器码99十一浮点数—功能110~132 110ECMP浮点数比较111EZCP浮点数区间比较118EBCD浮点数2进制->10进制119EBIN浮点数10进制->1进制120EADD浮点数加法121ESUB浮点数减法122EMUL浮点数乘法123EDIV浮点数除法127ESOR浮点数开方129INT浮点数->整数130SIN浮点数SIN运算131COS浮点数COS运算132TAN浮点数TAN运算147SW AP上下字节交换十二定位—功能155~159 155ABS156ZRN157PLSY158DRVI159DRV A十三时钟运算—功能160~169 160TCMP161TZCP162TADD163TSUB166TRD167TWR169HOUR十四外围设备—功能170~177 170GRY171GBIN176RD3A177WR3A十五接点比较—功能224~246 224LD=(S1)=(S2)225LD>(S1)>(S2)226LD<(S1)<(S2)228LD<>(S1)<>(S2)229LD<=(S1)>=(S2)230LD>=(S1)>=(S2)232AND=(S1)=(S2)233AND>(S1)>(S2)234AND<(S1)<(S2)236AND<>(S1)<>(S2)237AND<=(S1)>=(S2)238AND>=(S1)>=(S2)240OR=(S1)=(S2)241OR>(S1)>(S2)242OR<(S1)<(S2)244OR<>(S1)<>(S2)245OR<=(S1)>=(S2)246OR>=(S1)>=(S2)特殊软元件一PC状态M8000RUN监控(a触点)M8001RUN监控(b触点)M8002初始脉冲(a触点)M8003初始脉冲(b触点)M8004发生出错M8005电池电压下降M8006电池电压下降锁存M8007电源瞬停检测M8008停电检测M8009DC24V关断D8001PLC型号及系统版本D8002存储器容量D8003存储器类型D8004出错M地址号D8005电池电压D8006电池电压下降检出电平D8007瞬停次数D8008停电检测时间D8009DC24V关断的单元编号二时钟M8011震荡周期10msM8012震荡周期100msM8013震荡周期1sM8014震荡周期1分钟M8015计时停止及预置M8016时间读出时显示停止M8017±30秒的修正M8018检测RTC卡盒是否插入M8019实时时钟(RTC)出错D8010当前扫描时间D8011最小扫描时间D8012最大扫描时间D8013秒D8014分D8015时D8016日D8017月D8018年D8019星期(0:星期日~6:星期六)三标志M8020零(加减运算结果为0时置位) M8021借位M8022进位M8023小数点运算标志M8024M8025HSC方式M8026RAMP方式M8027PR方式M8028FROM./TO指令执行中允许中断标志M8029指令执行完成D8028Z寄存器内容D8029V寄存器内容四PLC方式M8030电池LED灯灭指令M8031全清非保持存储器M8032全清保持存储器M8033停止时存储器保持M8034禁止所有输出M8035强制RUN方式M8036强制RUN信号M8037强制STOP信号M8038RAM文件寄存器全清零M8039恒定扫描方式D8039恒定扫描时间FX2N, FX2NC基本性能项目FX2N, FX2NC系列输入继电器X184点合计256点输出继电器Y184点辅助继电器M一般用500点M0~M499保持用(可变)524点M500~M1535保持用(固定)2048点M1024~M3071特殊用256点M8000~M8255状态继电器S初始化用10点S0~S9一般用490点S10~S499锁存用400点S500~S899报警用100点S900~S999定时器T100ms200点T0~T19910ms46点T200~T2451ms4点T246~T249100ms(积算)6点T250~T255模拟计数器C增计数一般用100点(16位)C0~C99 锁存用100点(16位)C100~C199加/减用一般用20点(16位)D200~D999锁存用15点(16位)C100~C199高速用一相10KHz 3点, 7KHz 3点或二相2KHz 2点(总计20KHz)数据寄存器D通用数据存储器一般用200点D0~D199保持用(可变)312点D200~D511保持用(固定)7488点D512~D7999特殊用256点D8000~D8255变址用16点V0~V7, Z0~Z7文件寄存器最大7000点D1000以后(可设)可指定1~14个块,每个块500点指针跳步跳步转移用128点P0~P127输入中断指针6点I00*~I50*定时器中断指针3点I6**~I8**计数器中断指针6点I010~I060频率主控用8点N0~N7常数十进制K32位-2147483648~+2147483647十六进制H32位0~FFFFFFFF(H)FX2N-16M-128M型1 输入输出16-256点2 内置RAM存储器(8000步)。
Lierda NB86-EVK操作使用手册版本:Rev1.3日期:2018-11-09法律声明若接收浙江利尔达物联网技术有限公司(以下称为“利尔达”)的此份文档,即表示您已经同意以下条款。
若不同意以下条款,请停止使用本文档。
本文档版权所有浙江利尔达物联网技术有限公司,保留任何未在本文档中明示授予的权利。
文档中涉及利尔达的专有信息。
未经利尔达事先书面许可,任何单位和个人不得复制、传递、分发、使用和泄漏该文档以及该文档包含的任何图片、表格、数据及其他信息。
本产品符合有关环境保护和人身安全方面的设计要求,产品的存放、使用和弃置应遵照产品手册、相关合同或者相关法律、法规的要求进行。
本公司保留在不预先通知的情况下,对此手册中描述的产品进行修改和改进的权利;同时保留随时修订或收回本手册的权利。
文件修订历史1.0 2018-09-27 新建文档1.1 2018-10-19 更改文档格式1.2 2018-10-27 增加A板LED说明1.3 2018-11-09 增加A板下发命令和A板一键拨测适用模块型号1 NB86-G 全频段版本,20×16×2.2(mm)2 NB86-G宽压型全频段版本,20×16×2.2(mm)安全须知用户有责任遵循其他国家关于无线通信模块及设备的相关规定和具体的使用环境法规。
通过遵循以下安全原则,可确保个人安全并有助于保护产品和工作环境免遭潜在损坏。
我司不承担因客户未能遵循这些规定导致的相关损失。
道路行驶安全第一!当您开车时,请勿使用手持移动终端设备,除非其有免提功能。
请停车,再打电话!登机前请关闭移动终端设备。
移动终端的无线功能在飞机上禁止开启用以防止对飞机通讯系统的干扰。
忽略该提示项可能会导致飞行安全,甚至触犯法律。
当在医院或健康看护场所,注意是否有移动终端设备使用限制。
RF干扰会导致医疗设备运行失常,因此可能需要关闭移动终端设备。
移动终端设备并不保障任何情况下都能进行有效连接,例如在移动终端设备没有花费或SIM无效。
XMCB板快速调试方法:1.所有机械部件安装完毕,控制柜内无短接线;2. 确认安全回路的每一个安全开关均有效,每一层的厅门门锁有效。
观察XMCB电子板上的指示灯,检查输入信号是否正确:注:如果上电后,指示灯的状态和表中所列出的状态不一致,请检查相关的电路和参数(通常参数在电梯出厂时已设定好)。
3. 用ERO或TCI全程运行电梯,检查门区1LV、2LV,强迫减速1LS、2LS等井道信号:查看主板指示灯。
4. 按照控制柜粘贴的简易调试步骤进行井道自学习。
或是按照以下步骤操作均可。
5.确认XMCB驱动部分的M-3-3-1-9中RUN ENABLE参数应为0,M3-3-5中RUN SOURCE SVT应为1。
6.将ERO及TCI拨到正常位置,用服务器操作驱动部分M-3-3-4起动井道自学习。
7.电梯将低速运行至底层平层位置,然后以自学习速度向上进行井道自学习,到达顶层平层后,自学习完成。
8.自学习成功后将RUN ENABLE 参数改成1。
井道位置信息存于M-3-1-4菜单中,请检查是否正确。
对重平衡系数检查确认对重重量是否满足平衡系数的要求4 0~50%之间,通常做到45%。
把平衡负载(45%额定负载)放入轿厢。
进入服务器M3-1-1监控Output current电梯上行及下行的电流值,并把轿厢与对重在中间楼层相遇时的电流记录下来。
如电梯已处于平衡状态,则所记录的上行及下行的电流值应相等(相差不超过1安培)。
否则,往对重架增减对重铁块,直至电梯处于平衡状态。
固定对重架内的重块。
也可以采用手动盘车的方法,靠左右方向用力大小来判断平衡。
微动开关调整调整前,轿厢需要保持清空至少半个小时。
调整过程需要持续进行,不能中断。
依次放入10%,80%,100%的额度载重的砝码,来调节10%防捣乱开关,80%满载开关,100%超载开关。
调整开关时,可以通过服务器的菜单来检验每个开关信号是否正常。
当100%载重时超载开关到作,轿底4个防压螺丝应有1-2mm间隙,此时轿门滑块不能脱出地坎槽。
YD-1011ARM 彩色液晶智能显示器使用说明书欢迎您购买彩色液晶智能显示器本说明书适用于友利华(河南)高科技开发有限公司制造生产的YD-1011ARM智能系列显示器。
!注意∶为防止火灾或电击危险,勿将本机放置在淋雨或潮湿的地方。
使用本机推荐的开关电源。
避免安装不良。
不要在温度太低或太高的地方存贮或使用,严禁阳光长期直射或紫外线照射液晶屏幕!因为本装置是精密装备,所以请不要自行打开,拆开或改装。
避免强烈振动和跌落地上。
用完或发生故障时,请关掉本机。
每次开关机后重新开机的时间应大于5秒钟。
请不要按压本机屏幕。
不可用汽油、酒精或其它化学药剂擦拭,用湿润软布抹净即可。
本机为液晶显示,如果屏幕破损,液晶遗漏在手上、身上或衣服上时,请用肥皂和清水洗净即可。
内有高压,请勿随意拆卸!如有故障请直接同本公司或代理商联系。
敬告:1、日本液晶生产厂家明文告知:彩色液晶屏是采用高新技术通过精密设备制造出来的产品,允许有0.01%(万分之一)的像素有缺陷或出现亮点。
敬请予以理解。
2、本产品自购买之日起免费保修期为一年。
但因使用不当等人为操作失误或不可抗拒力所造成的损坏和故障不在此保修范围之内。
3、为改善性能,本机与说明书可能会进一步改进和补充,恕不另行通知。
○R为友利华(河南)高科技开发有限公司彩色液晶产品的注册商标目录第一章概述 (3)第一节简介 (3)第二节原理框图 (3)第二章性能与接口 (4)第一节性能指标 (4)第二节外部接口 (5)第三节拨码开关设置 (5)第四节通讯接口连线图 (6)第三章安装与通讯 (6)第一节安装准备 (6)第二节串行通讯 (6)第三节并行通讯 (7)第四章命令格式 (7)第一节命令详解 (7)第二节命令总汇 (15)第五章软件升级 (16)第六章外型尺寸 (17)第七章应用举例 (18)附录 (18)附录一:汉字内码查询 (19)附录二:51汇编举例(串口) (19)附录三:51汇编举例(并口) (20)附录四:选配件触摸屏 (22)附录五:A S C I I码表 (23)第一章概述第一节简介彩色液晶显示器作为当代高新技术的结晶产品,它不仅具有超薄平面、色彩逼真的特点,而且还具有体积小、耗电省、寿命长、无射线、抗震、防爆等CRT所无法比拟的优点。
XMCB板快速调试方法:1.所有机械部件安装完毕,控制柜内无短接线;2. 确认安全回路的每一个安全开关均有效,每一层的厅门门锁有效。
观察XMCB电子板上的指示灯,检查输入信号是否正确:注:如果上电后,指示灯的状态和表中所列出的状态不一致,请检查相关的电路和参数(通常参数在电梯出厂时已设定好)。
3. 用ERO或TCI全程运行电梯,检查门区1LV、2LV,强迫减速1LS、2LS等井道信号:查看主板指示灯。
4. 按照控制柜粘贴的简易调试步骤进行井道自学习。
或是按照以下步骤操作均可。
5.确认XMCB驱动部分的M-3-3-1-9中RUN ENABLE参数应为0,M3-3-5中RUN SOURCE SVT应为1。
6.将ERO及TCI拨到正常位置,用服务器操作驱动部分M-3-3-4起动井道自学习。
7.电梯将低速运行至底层平层位置,然后以自学习速度向上进行井道自学习,到达顶层平层后,自学习完成。
8.自学习成功后将RUN ENABLE 参数改成1。
井道位置信息存于M-3-1-4菜单中,请检查是否正确。
对重平衡系数检查确认对重重量是否满足平衡系数的要求4 0~50%之间,通常做到45%。
把平衡负载(45%额定负载)放入轿厢。
进入服务器M3-1-1监控Output current电梯上行及下行的电流值,并把轿厢与对重在中间楼层相遇时的电流记录下来。
如电梯已处于平衡状态,则所记录的上行及下行的电流值应相等(相差不超过1安培)。
否则,往对重架增减对重铁块,直至电梯处于平衡状态。
固定对重架内的重块。
也可以采用手动盘车的方法,靠左右方向用力大小来判断平衡。
微动开关调整调整前,轿厢需要保持清空至少半个小时。
调整过程需要持续进行,不能中断。
依次放入10%,80%,100%的额度载重的砝码,来调节10%防捣乱开关,80%满载开关,100%超载开关。
调整开关时,可以通过服务器的菜单来检验每个开关信号是否正常。
当100%载重时超载开关到作,轿底4个防压螺丝应有1-2mm间隙,此时轿门滑块不能脱出地坎槽。
stm32 的3 种下载程序方式个人记录:了解这些,自己多多总结,也算是对开发板硬件接口的了解。
没总结完,【1】ISP 下载这里类似51.boot1 拨到0,就行了下载需要来回拨动拨码开关【2】J-LINK 可下载可仿真(分为SW 和JTAG 模式)JTAG 或SW 方式,在KEI 的编程选项里面设定,选择好仿真器后,在相关的SETTINGS 设置项里面会有JTAG 和SWD 方式的选择。
只需要修改KEI 环境配置,和硬件设置,这个SWD 只需要5 个,一个电源,一个地和仅需要三根调试线SWDO(可选的跟踪),SWDIO(data I/O),SWDCLK(时钟针)如果用jtag 模式下载的话,需要接:jlink 的第1 脚(VDD)、第3 脚(TRST 对应stm32 的PB4)、第5 脚(TDI 对应stm32 的PA15)、第7 脚(TMS/SWDIO 对应stm32 的PA13)、第9 脚(TCK/SWCLK 对应stm32 的PA14)、第13 脚(TDOSWO 对应stm32 的PB3)、第15 脚(RESET 对应stm32 的NRST)、第4.6.8.10.12.14.16.18.20 中的任意一个脚(地脚)。
如果用sw 模式下载的话,只需要接:jlink 的第1 脚(VDD)、第7 脚(TMS/SWDIO 对应stm32 的PA13)、第9 脚(TCK/SWCLK 对应stm32 的PA14)、第4.6.8.10.12.14.16.18.20 中的任意一个脚(地脚)、需要说明的是第15 脚(RESET 对应stm32 的NRST)可接可不接,大家根据实际自己决定(保险起见还是建议接上)!由此可见:使用SW 模式PA15,PB3,PB4,都自由了就可以做普通IO 口了,只用了stm32 的PA13 和PA14 两个口!所以强烈推荐使用SW 模式。
下载可以用ST visual programmmer 或者直接MDK 下载【3】U-LINK 没用过第三种,不了解tips:感谢大家的阅读,本文由我司收集整编。
欢迎使用本公司制造的矿用产品,我们将保证您使用中的安全一.用途及使用范围矿用隔爆型真空馈电开关(以下简称馈电开关),主要用于煤矿井下交流50Hz,额定电压1140V.660V,额定电流630A及以下线路中,作为供电系统的总开关,分支开关,并可与变压器容量为315~1250kVA移动变电站配套使用。
馈电开关在下列工作环境中能可靠工作:1.海拔高度不超过2000M;2.周围环境温度为-20℃~+40℃;3.空气相对湿度不大于95%(25℃时);4.无淋水及水浸入的地方;5.无强烈颠簸震动以及与垂直面的安装倾斜度不超过15°的环境中;6.在有甲烷和煤尘爆炸危险的矿井中;7.在无破坏金属和绝缘的腐蚀性气体的环境中。
二.技术规格表 1三.外型及安装尺寸如图所示四、结构概述1.本壳体采用钢板焊接加工而成,前门为平面法兰式,门盖采用侧拉快开门型式,其结构是在门盖一侧设置的铰链轴上下两端分别对称设有壳体铰链和门盖铰链,在门盖铰链上穿有一个横轴,横轴中间由连接轴套连接一搬手,搬动搬把使门盖齿板与壳体齿板相互错开,门盖可围绕铰链轴转动至完全打开位置。
前门与隔离开关手柄设有可靠的机械联锁装置,保证当馈电开关处于分闸状态时,门盖方能打开,门盖打开以后,以正常的操作方式不能使馈电开关关合。
2.壳体上部是用钢板焊接成的隔离接线箱,接线箱的两侧各有两个电缆引出装置,正面有两个控制电缆引出装置,并具有压紧螺母,橡胶密封垫和金属垫圈,金属堵板,以保证电缆引出时起到密封作用,不引线时,压紧发兰盘起到防爆作用。
3.壳体内装有630A(500A、400A)真空断路器、电源变压器、脱扣器等电器元件。
630A、500A真空断路器上装有滑轮,可沿导轨前后移动,主回路和控制电路,均采用插接式结构连接,可方便地将机芯拉出壳体,并断开电源,以便用户检修和更换电器元件。
(400A真空断路器与壳体采用悬挂式连接方式)抽屉式结构是结合国内外同类产品特点,优选设计制造而成。
拨码开关控制实验电路图流程图/* 基本开关控制实验 *///==宣告区=================================#include <reg51.h> //定义8051头文件,引入reg52.h#define SW P2//定义开关接至P2#define LED P1//定义LED接至P 1//==主程式=================================main()//主程序开始{ SW=0xff;//规划输入端口while(1)//无穷循环,程式一直跑LED=SW;//读取开关(P2)状态,输出到LED(P1)}//主程序结束思考一下!在本实验里,有没有“抖动”的困扰?若希望拨码开关中的S1、S3、S5三个开关都on,则前四个LED 亮;S2 或 S4 或 S6开关 on,则后四个LED 亮;S7及 S8 开关 on,则所有LED全亮,程序应如何编写?若将拨码开关换成一般家里墙壁上的开关,而LED换成继电器(RELAY),是否可作为家里的负载控制?按钮ON-OFF控制实验按钮ON-OFF 控制实验电路图流程图如下:/* 基本按钮ON-OFF控制实验*///==声明区======================================= #include<reg51.h>//定义8051头文件,引入reg52.h sbit PB1=P2^0;//声明按钮1接至P2.0sbit PB2=P2^1;//声明按钮2接至P2.1sbit LED=P1^0;//声明LED为P1.0//==主程式======================================= main()//主程序开始{ LED=1;//关闭LEDPB1=PB2=1;//规划输入端口while(1)//无穷循环,程式一直跑{if (PB2==0)LED=1;//若按下PB2,则关闭LEDelse if (PB1==0)LED=0;//若按下PB1,则点亮LED}//while循环结束}//结束程序思考一下!在本实验里,有没有“抖动”的困扰?若将按钮开关当成启动电机的ON-OFF开关,而LED换成继电器(RELAY),是否可作为电机控制?若同时按下PB1 与PB2按钮会怎样?按钮切换式控制实验按钮切换式控制实验电路图流程图实验代码:/* 按钮切换式控制实验*///==声明区===================================== #include<reg51.h>//定义8051头文件,引入reg52.h sbit PB1=P2^0;//声明PB1接至P2.0sbit LED=P1^0;//声明LED接至P1.0void debouncer(void);//声明防弹跳函数//==主程序===================================== main()//主程式开始{ LED=1;//关闭LEDPB1=1;//规划P2.0为输入埠while(1)//无穷循环,程序一直跑{ if (PB1==0)//若按下PB1{ debouncer();//呼叫防弹跳函数(按下时)LED=!LED;//切换LED为反相while(PB1 != 1);//若仍按住PB1,继续等debouncer();//呼叫防弹跳函数(放开时)}//if叙述结束}//while循环结束}//主程序结束//==子程序=====================================/* 防弹跳函数函数,延迟约20ms */void debouncer(void)//防弹跳函数开始{ int i;//声明整数变数ifor(i=0;i<2400;i++);//计数2400次,延迟约20ms}//防弹跳函数结束思考一下!在本实验里,改变debouncer函数的时间长短,看看有什么影响?若按住PB1不放会怎样?如何改善?按钮开关应用电路图流程图代码如下:/* 按钮开关应用(两按钮控制七段显示器上下数) *///==声明区==========================================#include<reg51.h>//定义8051头文件,引入reg52.h文件#define SEG P0//定义七节显示器接至P0端口/* 声明七节显示器驱动信号阵列(共阳) */char codeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//数字0-9sbit PB1=P2^0;//声明按钮1接至P2.0sbit PB2=P2^1;//声明按钮2接至P2.1void debouncer(void);//声明防弹跳函数//==主程式=================================main()//主程序开始{ unsigned char i=0;//声明变量i初值=0PB1=PB2=1;//规划输入端口SEG=TAB[i];//输出数字至七段显示器while(1)//无穷循环,程式一直跑{ if (PB1==0)//判断PB1是否按下{ debouncer();//呼叫防弹跳函数i= (i<9)? i+1:0;//若i<9则i=i+1,若i>=9清除为0SEG=TAB[i]; //输出数字至七段显示器while(PB1==0); //PB1是否按住?debouncer(); //呼叫防弹跳函数}//if叙述结束if (PB2==0)//判断PB2是否按下{ debouncer();//呼叫防弹跳函数i= (i>0)? i-1:9;//若i>0则i=i-1,i<=0重设为9SEG=TAB[i];//输出数字至七段显示器while(PB2==0);//PB1是否按住?debouncer();//呼叫防弹跳函数}//if叙述结束}//while循环结束}//主程序结束//==子程序==================================/* 防弹跳函数函数,延迟约20ms */void debouncer(void)//防弹跳函数开始{ int i;//声明整数变量ifor(i=0;i<2400;i++);//计数2400次,延迟约20ms}//防弹跳函数结束思考一下!在本实验里,若按钮按住不放,会怎样?如何改善?在本实验里,若PB1与PB2两个按钮同时按,会怎样?BCD数字型拨码开关实验BCD数字型拨码开关实验电路图流程图实验代码:/* BCD数字型指拨开关实验*///==声明区======================================#include<reg51.h>//定义8051头文件,引入reg52.h文件#define SEG P0//定义七节显示器接至P0#define SW P2//定义开关接至P2/* 声明七节显示器驱动信号阵列(共阳) */char codeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//数字0-9#define SW_H() SW&0x0f//读取开关值(P2清除高4bits)//==主程序======================================main()//主程序开始{ SW=0xff;//规划输入埠while(1)//无穷循环,程序一直跑SEG=TAB[SW_H()];//读取开关值,输出至七节显示器(P0)}//主程序结束思考一下!在本实验里,有没有“抖动”的困扰?若把本单元的BCD数字型拨码开关,改为16进位数字型拨码开关,程序应如何修改?多重按钮开关实验多重按钮开关实验电路图流程图实验中的自编库函数/* myio.h自己写的程序库*///==声明区============================== #define LED P1//定义LED接至P1void debouncer(void);//声明防弹跳函数void delay10ms(int);//声明10毫秒延迟函数void alter(int);//声明交互闪烁函数void left(int);//声明单灯左移函数void right(int);//声明单灯右移函数void pili(int); //声明霹雳灯函数void flash(int);//声明闪烁函数//==自己写的子程序========================/* 防弹跳函数函数,延迟约20ms */void debouncer(void)//防弹跳函数开始{ delay10ms(2);//延迟约20ms}//防弹跳函数结束/* 延迟函数开始,延迟约x 10ms */void delay10ms(int x)//延迟函数开始{ int i,j;//声明整数变量i,jfor (i=0;i<x;i++)//计数x次,延迟约x 10msfor (j=0;j<1200;j++);//计数1200次,延迟约10ms }//延迟函数结束/* 高低位元交互闪烁函数,执行x次*/void alter(int x)//高低位元交互闪烁函数开始{ int i;//声明变量iLED=0x0f;//初始状态(高位元亮,低位元灭)for(i=0;i<2*x-1;i++)//i变量for循环执行2x-1次{ delay10ms(50);//延迟50*10m=0.5sLED=~LED;//LED反相输出}//i变量for循环结束delay10ms(50);//延迟50 10m=0.5s}//高低位元交互闪烁函数结束/* 全灯闪烁函数,执行x次*/void flash(int x)//全灯闪烁函数开始{ int i;//声明变量iLED=0x00;//初始状态(全亮)for(i=0;i<2*x-1;i++)//i变量for循环执行2x-1次{ delay10ms(50);//延迟50 10m=0.5sLED=~LED;//P0反相输出}//i变量for循环结束delay10ms(50);//延迟50 10m=0.5s}//全灯闪烁函数结束/* 单灯左移函数,执行x圈*/void left(int x)//单灯左移函数开始{ int i, j;//声明变量i,jfor(i=0;i<x;i++)//i循环,执行x圈{ LED=0xfe;//初始状态=1111 1110for(j=0;j<7;j++)//j循环,左移7次{ delay10ms(25);//延迟25 10m=0.25sLED=(LED<<1)|0x01;//左移1位後,LSB设为1 }//j循环结束delay10ms(25);//延迟25 10m=0.25s}//i循环结束*/}//单灯左移函数结束/* 单灯右移函数,执行x圈*/void right(int x)//单灯右移函数开始{ int i, j;//声明变量i,jfor(i=0;i<x;i++)//i循环,执行x圈{ LED=0X7f;//初始状态=0111 1111for(j=0;j<7;j++)//j循环,右移7次{ delay10ms(25);//延迟25 10m=0.25sLED=(LED>>1)|0x80;//左移1位後,MSB设为1 }//j循环结束delay10ms(25);//延迟25 10m=0.25s}//i循环结束}//单灯左移函数结束/* 霹雳灯函数,执行x圈*/void pili(int x)//霹雳灯函数开始{ int i;//声明变量ifor(i=0;i<x;i++)//i循环,执行x圈{ left(1);//单灯左移一圈right(1);//单灯左移一圈}//i循环结束}//霹雳灯函数结束多重按钮开关实验之一:代码/* 多重按钮开关实验之1 *///==声明区================================#include<reg52.h>//定义8051头文件,引入reg52.h文件#include"myio.h"//自己写的I/O程序库sbit PB1=P2^0;//声明PB1=P2.0sbit PB2=P2^1;//声明PB2=P2.1sbit PB3=P2^2;//声明PB3=P2.2sbit PB4=P2^3;//声明PB4=P2.3//==主程序================================ main()//主程序开始{ LED=0xff;//初始状态(LED全灭)P2=0xff;//规划P2输入端口while(1)//无穷循环,程序一直跑{ if (PB1==0)//如果按下PB1{ debouncer();//防弹跳alter(3);//高低位元交互闪烁三次flash(3);}//全灯闪烁三次else if (PB2==0)//如果按下PB2{ debouncer();//防弹跳left(3);//单灯左移三圈flash(3);}//全灯闪烁三次else if (PB3==0)//如果按下PB3{ debouncer();//防弹跳right(3);//单灯右移三圈flash(3);}//全灯闪烁三次else if (PB4==0)//如果按下PB4{ debouncer();//防弹跳pili(3);//霹雳灯三圈flash(3);}//全灯闪烁三次}//while循环结束}//主程序结束思考一下!在本实验里,若同时按下多个按钮会如何?在本实验里,若按住按钮不放会如何?在本实验里,其中debouncer函数是个延迟20毫秒的函数,而delay10ms函数是个延迟10毫秒的函数,可否使用delay10ms 函数取代debouncer函数?如何修改?在本实验里,其中alter函数是个高四位与低四位交替闪烁的函数,而flash函数是个8灯闪烁的函数,其不同在于其初始值。
$include(c8051f360.inc)
DAT BIT P1.0
CLK BIT P1.1
DAT1 BIT P1.4
CLK1 BIT P1.5
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV SFRPAGE,#00H
MOV PCA0MD ,#00H //关看门狗
MOV P1,#0FFH
MOV 30H,#10
MOV 31H,#10
MOV 32H,#06
MOV 33H,#05
MOV 34H,#04
MOV 35H,#03
MOV 36H,#02
MOV 37H,#01
MOV 38H,#10
MOV 39H,#10 // 显示缓冲单元
LCALL INIT //360系统初始化
CALL DISP//
CALL DELAY
CALL DELAY
A1: CALL KEY_DOOR//
CALL DISP
CALL DELAY//
AJMP A1//
//-------------------------------------------------------------
INIT: MOV SFRPAGE, #0FH
MOV OSCICN , #83H //使能内部高频振荡器,且不分频=24.5MHZ
MOV RSTSRC , #40H //使能VDD
MOV P1MDOUT, #27H //P1.4(165的输出端)为漏极开路
//P1.5 P1.2 P1.1 P1.0为推挽输出MOV XBR1, #40H //使能交叉开关
MOV SFRPAGE, #00H
RET
//------------------------------------------------------------
KEY_DOOR:
JB P2.0,B1//
MOV 32H,#0FFH//拨码开关1闭合(ON)——一号数码管灭
AJMP B11//
B1: MOV 32H,#01H //拨码开关1断开(OFF)——一号数码恢复为1 B11: JB P2.1, B2//
MOV 33H,#0FFH//拨码开关2 ON——二号数码管灭
AJMP B21//
B2: MOV 33H,#02H //拨码开关2 OFF——二号数码恢复为2
B21: JB P2.2,B3//
MOV 34H,#0FFH//拨码开关3 ON——三号数码管灭
AJMP B31
B3: MOV 34H,#03H// 拨码开关3 OFF——三号数码恢复为3
B31: JB P2.3,B4//
MOV 35H,#0FFH//拨码开关4 ON——四号数码管灭
AJMP B41
B4: MOV 35H,#04H //拨码开关4 OFF——四号数码恢复为4
B41: JB P2.4,B5
MOV 36H,#0FFH//拨码开关5 ON——五号数码管灭
AJMP B51
B5: MOV 36H,#05H//拨码开关5 OFF——五号数码恢复为5
B51: JB P2.5,B6
MOV 37H,#0FFH//拨码开关6 ON——六号数码管灭
AJMP B61
B6: MOV 37H,#06H//拨码开关6 OFF——六号数码恢复为6
B61:
RET
//--------------------------------------------------------
//显示子程序
DISP: MOV R4,#10
MOV R0,#30h
MOV DPTR,#TAB
LOOP1:
MOV A,@R0
MOVC A,@A+DPTR
MOV R5,#08H
LOOP:
RRC A
CLR CLK
NOP
MOV DAT,C
SETB CLK
DJNZ R5,LOOP
INC R0
DJNZ R4,LOOP1
RET
TAB: DB 88h,0ebh,4ch,49h ,2bh,19h,18h,0cbh,08h,09h,00H
//-------------------------------------------------------
//延时子程序
DELAY:MOV R7,#0FFH ;;;######延时1s计算6*{2+1+ff*[2+1+ff*(2+1)]} /大约M3:MOV R6,#0FFH
M4:MOV R5,#0FH
DJNZ R5,$;
DJNZ R6,M4;
DJNZ R7,M3
RET
END。