收藏 分销(赏)

基于51单片机的吉他调音器系统设计实物制作-学位论文.doc

上传人:a199****6536 文档编号:2179856 上传时间:2024-05-22 格式:DOC 页数:23 大小:2.99MB 下载积分:10 金币
下载 相关 举报
基于51单片机的吉他调音器系统设计实物制作-学位论文.doc_第1页
第1页 / 共23页
基于51单片机的吉他调音器系统设计实物制作-学位论文.doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
课程设计报告 课程名称: 吉他调音器控制系统设计--实物制作 专业班级: 姓 名: 学 号: 课设时间: 指导教师: 批阅时间: 成 绩: 目录 绪论……………………………………………………………………………………1 1、总体设计方案 ……………………………………………………………………1 2、核心芯片结构原理介绍 …………………………………………………………2 2.1、中央控制器--------STC90C516RD+……………………………………………3 2.2、电机驱动芯片——ULN2003…………………………………………………5 3、模拟部分介绍 ……………………………………………………………………6 3.1、输入电路 ……………………………………………………………………6 3.2、放大电路 ……………………………………………………………………6 3.3、滤波电路 ……………………………………………………………………8 3.4、整形输出电路 ………………………………………………………………9 3.5、模拟部分输出波形…………………………………………………………10 3.6、模拟部分实物图……………………………………………………………10 4、软件程序编程语言及开发环境选择……………………………………………11 5、琴弦频率测量模块设计…………………………………………………………11 5.1、频率测量方法的选取………………………………………………………11 5.2、频率测量程序设计说明……………………………………………………12 5.3、单片机程序流程图…………………………………………………………13 5.4、单片机程序 …………………………………………………………………13 5.5、单电机实物图 ………………………………………………………………13 5.6、原件清单 ……………………………………………………………………13 5.7、整体电路图 …………………………………………………………………13 结 论 ………………………………………………………………………………14 附录一 ………………………………………………………………………………15 附录二 ………………………………………………………………………………16 附录三 ………………………………………………………………………………21 附录四 ………………………………………………………………………………22 绪论 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。琴弦音频测定仪的设计正是以单片机为核心,通过其他的外围电路实现琴弦的准确调弦。 我们通过计算得出吉他每一根空弦音的理论音高(十二平均律的),然后看泛音调弦方法得到的音高是不是与之相等即可。对于标准音高a1=440.0000 Hz,那么按照12平均律所生成的各弦空: 1弦空弦,音高e1,频率f = 440.0000 / 2 ^ ( 5 / 12 ) = 329.6276 Hz 2弦空弦,音高b,频率 f = 440.0000 / 2 ^ ( 10 / 12 ) = 246.9417 Hz 3弦空弦,音高g,频率f = 440.0000 / 2 ^ ( 14 / 12 ) = 195.9977 Hz 4弦空弦,音高d,频率 f = 440.0000 / 2 ^ ( 19 / 12 ) = 146.8324 Hz 5弦空弦,音高A,频率f = 440.0000 / 2 ^ ( 24 / 12 ) = 110.0000 Hz 6弦空弦,音高E,频率 f = 440.0000 / 2 ^ ( 29 / 12 ) = 82.4069 Hz 1、总体设计方案 从图一可以看出,本设计可以分为四大模块,分别为声音采集模块、核心控制模块、语音模块设计、外围辅助电路模块。 外围辅助电路模块 核心控制 模块 声音采集 模块 图一 图一 系统总框图 二、实验仪器: (1)声音采集模块的设计:这部分是利用单片机测量琴弦频率的前提,主要功能是将要采集的声音信号转换成可测量的电信号。要保证转换的精度,还要处理好电路本身产生的谐波。电路应该有基本的放大、滤波、比较电路的设计。 (2)核心控制模块的设计:这部分属于系统的软件部分设计。主要是控制芯片的选择和编程语言的选择。通过单片机控制各个子模块的正常工作,实现需要的功能是需要解决的重点。子模块包括:键盘模块、LCD12864显示模块、频率测量模块、PC机通信模块。 (3)外围辅助电路的设计:这部分都是系统的硬件部分设计,包括复位晶振电路,显示电路,电机动作电路等。需要合理将这些电路准确组合并能够实现各自所需的功能。根据设计任务,以及方案的研究,我们最终确定了以下方案: (4)晶振和复位电路:晶振作用是为系统提供基本的时钟信号,通常一个系统共用一个晶振,便于各部分保持同步。复位是单片机的初始化操作。通过选择的控制芯片设计合适的晶振和复位电路。 (5)串口电路:使用MAX232芯片设计一个简单的串口下载电路,为了方便单片机程序的下载。 2、核心芯片结构原理介绍 该系统核心芯片主要有单片机STC90C516RD+ ,ULN2003A驱动电机。 2.1、中央控制器--------STC90C516RD+ STC90C516RD+系列单片机是新一代超高速、低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地。(实物图如图二)。 图二 1.增强型6 时钟/ 机器周期,12 时钟/ 机器周期 8051 CPU 2.工作电压:5.5V - 3.8V(5V 单片机)/3.8V - 2.4V(3V 单片机) 3.工作频率范围:0-40MHz,相当于普通8051的 0~80MHz. 4.用户应用程序空间 4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/ 61K/字节 5.片上集成 1280字节/512/256字节 RAM 6.通用I/O口(35/39 个),复位后为: P1/P2/P3/P4 是准双向口/ 弱上拉(普通8051 传统I/O 口) P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。 7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器 / 仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,8K 程序3 - 5 秒即可完成一片 8.EEPROM 功能 9.看门狗 10.内部集成MAX810专用复位电路,外部晶体12M以下时,可省外部复位电路,复位脚可直接接地。 11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用 12.外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒 13.通用异步串行口(UART),还可用定时器软件实现多个UART 14.工作温度范围:0-75℃/-40-+85℃ 15.封装:LQFP-44,PDIP-40,PLCC-44 单片机各引脚功能:(引脚图如图三) XTAL1(19脚):接外部晶体振荡器的一端。当使用芯片内部时钟时,此脚用于外接石英晶体振荡器和微调电容;当使用外部时钟 图三 时,对于HMOS单片机,此引脚接地;对于CMOS单片机,此引脚作为外部振荡信号的输入端。 XTAL2(18脚):接外部晶体振荡器的另一端,当使用芯片内部时钟时,此脚用于外接石英晶体振荡器和微调电容。当使用外部时钟时,对于HMOS单片机,此引脚接外部振荡源;对于CMOS单片机,此引脚悬空不接。 89C51晶体振荡器频率可在6MHZ~40MHZ之间选择,常选6MHz或12MHz的石英晶体。电容的值没有严格要求,但其取值对振荡器的频率输出的稳定性、大小、振荡电路起振速度稍有影响,C1、C2可在20pF~100pF之间选择。当外接晶体振荡器时,电容可选30pF±10pF;外接陶瓷振荡器时,电容可选40pF±10pF。 控制信号或与其它电源复用引脚 (1)(9脚):复位端。当输入的复位信号持续2个以上机器周期(12个晶体振荡周期)高电平即为有效,用于完成单片机的复位初始化操作。正常工作时,此脚电平应 ≤ 0.5V。 在VCC发生故障、降低到电平规定值掉电期间,此引脚可接备用电源VPD(电源范围5V±0.5V),由VPD向内部RAM供电,以保持内部RAM中的数据。 (2)(30脚):地址锁存使能。 ALE(Address Latch Enable);PROG(Program) 为CPU访问外部程序存储器或外部数据存储器提供地址锁存信号,将低8位地址锁存在片外的地址锁存器中。 引脚第二功能,对片内 Flash编程,为编程脉冲输入端。 (3)(29脚):(Programmer Saving ENable),外部程序存储器读选通信号。 在读外部程序存储器时有效(低电平),以实现外部程序存储器单元的读操作。 在访问外部数据存储器、访问内部程序存储器时无效。 (4)(31脚):(Enable Address/Voltage Pulse of Programming) 访问程序存储控制信号。 当=“0”时,表示读外部程序存储器。 只读取外部的程序存储器中的内容,读取的地址范围为0000H~FFFFH(64KB),片内的4KB Flash 程序存储器不起作用。 当=“1”时,表示对程序存储器的读操作是从内部程序存储器开始,并可延至外部程序存储器。 在PC值不超出0FFFH(即不超出片内4KB Flash存储器的地址范围)时,单片机读片内程序存储器(4KB)中的程序,但当PC值超出0FFFH (即超出片内4KB Flash地址范围)时,将自动转向读取片外60KB(1000H-FFFFH)程序存储器空间中的程序。 对于EPROM(或FLASH)型单片机,在EPROM编程期间,此引脚需加12.75V或21V的编程电压。 2.2、电机驱动芯片——ULN2003 引脚如图四所示,ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。 图四   ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。    ULN2003是一个非门电路,包含7个单元,但独每个单元驱动电流最大可达350mA.资料的最后有引用电路,9脚可以悬空。    比如1脚输入,16脚输出,负载接在VCC与16脚之间,不用9脚。  uln2003的作用:   ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。  输入5VTTL电平,输出可达500mA/50V。  ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。 该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器。         ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。   3、模拟部分介绍     3.1、输入电路 电容话筒是根据电容与两极板间距离成反比,当振动时,电容话筒的两极间距离变化,距离变大时,因为电容变小,所以电压扁高,这时就产生了电信号。电容话筒大多需要用电极化,也有不用极化的,称为驻极体电容话筒,就是一般电话里面使用的,非常廉价。 压电陶瓷是一种特殊的材料,它受到点的作用时,会发生变型,相反,它发生变形时,也会产生电。 图五 这里我们选用驻极体话筒完成设计(电路如图五所示)。 3.2、放大电路 TLC2252是用德州仪器公司先进的LinCMOSTM工艺制造的双路运算放大器,具有满电源电压幅度输出性能,同时比现有的CMOS运放具有更好的输入失调电压和更低的功耗。另外,对于这类低功耗CMOS运放,噪声性能得到了惊人的改进,每一级放大仅需35uA(典型值)的电源电流。而且,共模输入电压范围比通常标准CMOS类型放大器更宽。为了利用这种性能上的改进并使此器件可以适用于更宽范围的应用,用比±5mV更大的最大输入失调电压测试极限来规定VICR。先进的LinCMOSTM工艺使用硅栅技术获得输入失调电压的温度和时间稳定性,这种稳定性远远超过了用金属栅技术所能获得的稳定性。这种技术也使输入阻抗有可能符合或超过顶栅JFET和昂贵的介质绝缘器件的输入阻抗; TLC2252呈现高输入阻抗和低噪声,能很好地适用于高阻抗源,例如电压传感器的小信号状况。由于这些器件功耗低,所以它们在手持监视和 遥感原始传感器应用中工作良好。此外,满电源电压幅度输出特性以及单独或分离电源工作使得这些器件在直 图六 接与模拟数字转换器(ADC)接口时成为主要的选择对象。所有这些特性,再结合它们的温度性能,使得TLC2252系列能理想的适用于声纳、远程传感器、温度控制、有源压阻传感器、加速计、便携式医学应用、手持仪表以及许多其他应用(引脚图如图六所示)。 LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模组,音频放大器、工业控制、DC增益部件和其他所有可用单电 图七 源供电的使用运算放大器的场合(引脚图如图七所示)。 由以上两种放大器和适当参数的电阻电容构成两级放大电路(电路图如图八所示)。 图八 3.3、滤波电路 设计中运放选择TI产品典型的通用四运放LM324,LM324内部包括有两个独立的、高增益、内部频率补偿 的运算放大器,适合于电源电压范围很宽的单电源使用, 也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。适用于一般的带通滤波器的设计,同时具有低功耗的功能,可设计阶数相对高一些的带通滤波器,应用起来节省空间。 巴特沃斯带通滤波器幅频响应在通带中具有最平幅度特性,但是从通带到阻带衰减较慢,这里采用四阶巴特沃斯带通滤波器来对采集进来的音频信号进行滤波(引脚图如图九所示)。 LM324主要参数: 电压增益 100dB 单位增益带宽 1MHz 单电源工作范围 3V~30VDC 每个运放功耗(V=+5V) 1mV/op.Amp 输入失调电压 2mV(最大7mV) 图九 输入偏置电流 50~150nA 输入失调电流 5~50nA 共模抑制比 70~90dB 输出电压幅度 0~1.5VDC(单电源时) 输出电流 40mA 放大器间隔离度 120dB(fo:1~20KHz) 参数选择与计算: 对于低通滤波器的设计,电容一般选取10000pF,对于高通滤波器的设计,电容一般选取0.1uF,然后根据公式 R=1/2Πfc计算得出与电容相组合的电阻值,即得到此图中R9、R4和R17,为了消除运放的失调电流造成的误差,尽量是运放同相输入端与反向输入端对地的直流电阻基本相等,同时巴特沃斯滤波器阶数与增益有一定的关系,根据这两个条件可以列出两个等式:30=R15*R21/(R15+R21),R15=R21(A-1),36=R14*R19/(R14+R19),R19=R14(A-1)由此可以解出R14、R15、R19、R21,原则是根据现实情况稍调整电阻值保持在一定限度内即可,不要相差太大,注意频率不要超过运放的标定频率(电路图如图十所示)。 图十 3.4、整形输出电路 由于单片机识别的应该正弦波,所以需要将滤波之后的信号进行整形得到方波信号输入给单片机进行测频(电路图如图十一所示),R24用于调节比较电压,根据实际情况改变比较点电压。 图十一 3.5、模拟部分输出波形 3.6、模拟部分实物图 4、软件程序编程语言及开发环境选择 以往的单片机系统,其控制程序大多是用相应单片机的汇编指令编制,其执行效率高,但其可读性和可移植性却较差,直接影响其软、硬件的扩展和升级。C语言早期用于编写UNIX操作系统,是一种结构化的语言,可产生紧凑代码。C语言可用许多机器级的函数直接控制操作单片机的硬件,不必通过汇编语言。与汇编语言相比,C语言主要有以下一些优点有:不要求了解单片机的指令系统,仅要求对其存储器结构有初步了解;寄存器分配、存储器寻址及数据类型等细节可由编译器管理;程序由不同的函数构成,便于程序的结构化和模块化;程序的可读性及可移植性较高;关键字及运算符可用近似人的思维方式使用;程序编制及调试时间显著缩短,大大地提高了编程效率;C语言提供的库包含许多标准的子程序,具有较强的数据处理能力。 C语言是一种非常便于使用的计算机高级编程语言,使用C语言进行单片机 尤其是MCS-51系列单片机的开发具有极大的优势。 用C51编制程序时,应遵循结构化、模块化的设计方法。在编程时,可将任务分成若干模块,对每个模块分别进行编制及调试,最后有机结合成一个完整的控制程序。 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。使用C语言编程么Keil几乎就是编程的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令编程事半功倍。 5、琴弦频率测量模块设计 5.1、频率测量方法的选取 测量频率的方法一般分为无源测频法、有源测频法及电子计数法三种。 无源测频法(又可分为谐振法和电桥法),常用于频率粗测,精度在1%左右。有源比较法可分为拍频法和差频法,前者是利用两个信号线性叠加以产生拍频现象, 再通过检测零拍现象进行测频,常用于低频测量,误差在零点几Hz;后者则利用两个非线性信号叠加来产生差频现象,然后通过检测零差现象进行测频,常用于高频测量, 误差在±20Hz左右。以上方法在测量范围和精度上都有一定的不足,而电子计数法主要通过单片机进行控制。 由于单片机的较强控制与运算功能,电子计数法的测量频率范围宽,精度高,易于实现。本设计就是采用单片机电子计数法来测量琴弦频率。 5.2、频率测量程序设计说明 利用单片机的T0、T1的定时计数器功能,完成对输入的信号进行频率计数。频率的测量方法:通过检测一定时间内(1s内)输入方波的个数计算琴弦频率。 T0主要功能时进行计数,T1是进行计时。T0是工作在计数状态下对输入的方波信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此,T0的最大计数频率为250KHz,满足设计要求。对于频率的概念就是在一秒时间内输入脉冲的个数,即为频率值。设定T1工作在定时状态下,每定时1秒到,就停止T0的计数,并从T0的计数单元中读取计数的数值即为琴弦的频率。T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。 定时/计数器T0由TH0和TL0构成,T1由TH1和TL1构成。 TMOD用于控制和确定T0,T1的功能和工作模式。TCON用于控制T0、T1启动和停止计数,同时包括T0、T1的状态。他们属于特殊功能寄存器,这些寄存器的内容靠软件预先设置。系统复位时,寄存器的所有位都被清零。 定时/计数器T0和T1都是加法计数器,每输入一个脉冲,计数器加1,当加到计数器T1为1时再输入一个脉冲,就使计数器发生溢出,溢出时,计数器回零,并置位TCON中的TF0或TF1,以表示定时时间已到或计数值已满,向CPU发出中断申请。 设计数器的最大值为M(在不同的工作模式下,M可以为,或),则置入的初值X可这样来计算。 计数方式时 X=M-计数值 定时方式时 计数值T= (M-X)T=定时值 所以置入的初值 X=M-(定时值/T) T为计数周期,是单片机的机器周期。 当机器周期为1时,工作在模式0时,最大定时值为 若工作在模式1,则最大定时值为。 先对TMOD寄存器赋值,以确定定时器的工作模式是0还是1,即确定机器周期,从而设置定时器/计数器初值。直接将初值写入寄存器的TH0,TL0或TH1,TL1,再根据需要,对寄存器ET0,ET1置初值,开放定时器中断。 最后对TCON寄存器中的TR0或TR1置位,启动定时/计数器,置位以后,计数器T0,T1即按规定的工作模式和初值进行定时计数。 5.3、单片机程序流程图(见附录一) 5.4、单片机程序(见附录二) 5.5、单电机实物图如图 5.6、原件清单(见附录三) 5.7、整体电路图(见附录四) 结 论 本次课程设计的主要内容是吉他调音器控制系统设计。我们采用单片机对琴弦空弦音的频率进行计算判断,并通过控制步进电机正反转从而调节弦松紧度,进而使吉他空弦音频率靠近标准音频率。 本次课程设计所做主要工作概括如下: 1. 介绍课题研究的背景,提出了以单片机为控制核心的琴弦音频测定仪的设计; 2. 提出了几种频率的测量方法,经过比较后确定了基于8051单片机的电子计数法,这种方法测量频率范围宽,精度高,易于实现; 3. 详细阐述了整个系统的软件设计。包括:主程序模块设计,电机转动模块、显示模块; 4. 通过C语言对单片机进行软件编程,基于Keil C51集成开发环境对软件进行编译调试。 琴弦音频测定仪采用高性能单片机控制,性能稳定,可靠性高,具有掉电保护功能,运用的元件也可推广,还能据实际要求扩展功能,应用广泛,性价比高。 在这段时间内,通过查阅各种书籍与网站,同时在指导老师的指导和同学的帮助下,完成了此次课程设计。我们掌握对所学知识得到利用,锻炼我们的实际运用能力,同时让我们认识到团结互助在各种工作中的重要性。课程设计不仅锻炼了我们的动手能力,更加促进了我们对理论联系实际的理解,对我们今后的工作发展有着很大的促进作用。 在此感谢***老师.循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次课程设计的成功离不开老师您的细心指导。   由于本人能力有限,在设计过程中难免出现错误,恳请老师多多指教,我十分乐意接受您的批评与指正,本人将万分感谢。 13 num<yiinpin 结束 LED灯亮 电机反转一圈 否 是 电机正转一圈 num>yiinpin 否 是 根据外部采集频率范围选择标准频率比较,控制电机转向 是 1s定时到 否 yinjie,num,T0_num置零,打开定时计数器0、1 单片机初始化化 开始 附录一 附录二: #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit pulse=P3^5; //T1,计外部脉冲数 sbit led=P2^0; uint num=0,T0_num,n,yinjie,i; uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//电机正转 uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//电机反转 uint code pinpu[ ]={329,247,196,147,110,82 }; // 六弦空弦音 void init() //定时计数初始化 { TMOD=0x51;//T1计数,T0定时 TH1=0;//0; //计数初值 TL1=0;//0; ET1=1; //定时器1允许 TH0=(65536-50000)/256; //计时初值 TL0=(65536-50000)%256; ET0=1; //定时器0允许 TR1=1; //打开计数器 TR0=1; //打开定时器 EA=1; } void delay(uint t) { uint k; while(t--) { for(k=0; k<123; k++); } } void motor_ffw(uint n) //步进电机正转 { uchar i; uint j; for (j=0; j<12*n; j++) //转n圈 { for (i=0; i<8; i++) //一个周期转30度 { P1 = FFW[i]; //取数据 delay(30); //调节转速 } } } void motor_rev(uint n) //步进电机反转 { uchar i; uint j; for (j=0; j<12*n; j++) //一个周期转30度,转n圈 { for (i=0; i<8; i++) { P1 = REV[i]; //取数据 delay(30); //调节转速 } } } //控制步进电机转动子程序 void dianji(uint num) { if(num<360&&num>300) { yinjie=pinpu[0]; //yinjie=329Hz if(num==328||num==329||num==330) { led=0; while(1); } else if(num>yinjie) { motor_ffw(1); } //步进电机正转 else if(num<yinjie) { motor_rev(1); } //步进电机反转 } else if(num<280&&num>220) { yinjie=pinpu[1];//yinjie=247Hz if(num==246||num==247||num==248) { led=0; while(1); } else if(num>yinjie) { motor_ffw(1); } //步进电机正转 else if(num<yinjie) { motor_rev(1); } //步进电机反转 } else if(num<220&&num>165) { yinjie=pinpu[2]; //yinjie=196Hz if(num==195||num==196||num==197) { led=0; while(1); } else if(num>yinjie) { motor_ffw(1); } //步进电机正转 else if(num<yinjie) { motor_rev(1); } //步进电机反转 } else if(num<165&&num>120) { yinjie=pinpu[3]; //yinjie=147Hz if(num==146||num==147||num==148) { led=0; while(1); } else if(num>yinjie) { motor_ffw(1); } //步进电机正转 else if(num<yinjie) { motor_rev(1); } //步进电机反转 } else if(num<120&&num>100) { yinjie=pinpu[4]; //yinjie=110Hz if(num==109||num==110||num==111) { led=0; while(1); } else if(num>yinjie) { motor_ffw(1); } //步进电机正转 else if(num<yinjie) { motor_rev(1); } //步进电机反转 } else if(num<100&&num>62) { yinjie=pinpu[5]; //yinjie=82Hz if(num==81||num==82||num==83) { led=0; while(1); } else if(num>yinjie)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服