一、设计题目:直流电机调速二、设计思路1. 问题的提出能否以单片机现有资源模拟调整直流电动机的转速。2. 分析问题的功能(1) .在 P1.0 引脚输出低频脉宽调制信号(PWM),PWM 信号的脉冲占空比(脉 动电压的高电平常间占周期比)可以通过和 P1 连接的按键设定,从而调整直 流电动机的转速。(2) .软件设计:按问题功能分模块,简述各模块功能。根据实际构思程序分为两个模块模块 1 为通过计数来控制对 P1.0 的置 1 和清 0;模块 2 为根据按键设置改变输出脉冲的占空比。三、详细设计:1.硬件详细设计:(1).电路图:JK6IJK17I ©Mu-GND(2).进行硬件资源分配P1.0 连 ZDJ-A,输出 PWM 波,实现电动机调速;P1.1 连 KEY1,增加占空比,使电机加速;P1.2 连 KEY2,减小占空比,使电机减速;P3.0 连蜂鸣器,当加速到最大值或减速到最小值蜂鸣器会报警;INT0 连 KEY3,使直流电机停机。2.软件详细设计:(1)地址模块设定主程序和中断服务程序初始地址ORG 80HAJMP MAINORG83HAJMPSTOPORG 8BHAJMP INTT0ORG 81H(2)主程序准备模块为定时器、堆栈栈底地址、软件计数值、赋初值,选择定时器 2 工作方式,允许定时器 0、外部中断,打开总中断、定时器 0 中断和外部中断。MAIN:MOVSP,#60H;给堆栈指针赋初值MOVPWMH,#03H;给定初始高电平脉冲个数MOVCOUNTER,#01HMOVPWM,#0AHMOVTMOD,#02H;定时器 0 在模式 2 下工作MOVTL0,#48H;定时器每 2us 产生一次溢出MOVTH0,#48H;自动重装的值SETBET0;使能定时器 0 中断SETBEA;使能总中断SETBPX0;使外部中断 0 为最高优先中断SETBTR0;开始计时(3)定时器中断模块实现方法:使用定时器产生定时每 2us 产生一次溢出中断,在中断服务中通过计数来控制对 P1.0 的置 1 和清 0,输出 PWM 波。INTT0:PUSHPSW;现场保护PUSHACCINCCOUNTER;计数值加 1MOVA,COUNTERCJNEA,PWMH,INTT01;假如等于高电平脉冲数CLRP1.0;P1.0 变为低电平INTT01:CJNE A,PWM,INTT02;假如等于周期数MOVCOUNTER,#01H;计数器复位SETBP1.0;P1.0 为高电平INTT02:POPACC;出栈POPPSWRETI(4)调速模块实现方法:在程序执行过程中,读取按键设置,根据按键设置改变输出脉 冲的占空比,按 KEY1 时可以加速,按 KEY2 时可以减速。KSCAN:JNB P1.1,K1CHECK;扫描 KEY1,JNB P1.2,K2CHECK;扫描 KEY2,假如按下 KEY2,跳转到 KEY2处理程序SJMP KSCANK1CHECK:JB P1.1,K1HANDLE;去抖动,假如按下 KEY1,跳转到 K...