找回密码
 立即注册
查看: 33|回复: 2

15-2 直流电机调速,江协科技讲普中51单片机开发板STC89C52学习板 配套程序, A2标准版

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2026-07-23 09:36:34
已绑定手机

231

主题

172

回帖

1081

积分

版主

积分
1081
发表于 2026-7-13 13:37:00 | 显示全部楼层 |阅读模式
15-2 直流电机调速,江协科技讲普中51单片机开发板STC89C52学习板 配套程序, A2标准版
主程序main.C代码如下:


#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"

sbit Motor=P1^0;

unsigned char Counter,Compare;        //计数值和比较值,用于输出PWM
unsigned char KeyNum,Speed;

void main()
{
        Timer0_Init();
        while(1)
        {
                KeyNum=Key();
                if(KeyNum==1)
                {
                        Speed++;
                        Speed%=4;
                        if(Speed==0){Compare=0;}        //设置比较值,改变PWM占空比
                        if(Speed==1){Compare=50;}
                        if(Speed==2){Compare=75;}
                        if(Speed==3){Compare=100;}
                }
                Nixie(1,Speed);
        }
}

void Timer0_Routine() interrupt 1
{
        TL0 = 0x9C;                //设置定时初值
        TH0 = 0xFF;                //设置定时初值
        Counter++;
        Counter%=100;        //计数值变化范围限制在0~99
        if(Counter<Compare)        //计数值小于比较值
        {
                Motor=1;                //输出1
        }
        else                                //计数值大于比较值
        {
                Motor=0;                //输出0
        }
}


15-2 直流电机调速.zip

36.69 KB, 下载次数: 5

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2026-07-23 09:36:34
已绑定手机

231

主题

172

回帖

1081

积分

版主

积分
1081
发表于 2026-7-13 13:38:00 | 显示全部楼层
15-2 直流电机调速,江协科技讲普中51单片机开发板STC89C52学习板 配套程序, A2标准版
Nixie.C代码如下:

#include <REGX52.H>
#include "Delay.h"

//数码管段码表
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

/**
  * @brief  数码管显示
  * @param  Location 要显示的位置,范围:1~8
  * @param  Number 要显示的数字,范围:段码表索引范围
  * @retval 无
  */
void Nixie(unsigned char Location,Number)
{
        switch(Location)                //位码输出
        {
                case 1:P2_4=1;P2_3=1;P2_2=1;break;
                case 2:P2_4=1;P2_3=1;P2_2=0;break;
                case 3:P2_4=1;P2_3=0;P2_2=1;break;
                case 4:P2_4=1;P2_3=0;P2_2=0;break;
                case 5:P2_4=0;P2_3=1;P2_2=1;break;
                case 6:P2_4=0;P2_3=1;P2_2=0;break;
                case 7:P2_4=0;P2_3=0;P2_2=1;break;
                case 8:P2_4=0;P2_3=0;P2_2=0;break;
        }
        P0=NixieTable[Number];        //段码输出
        Delay(1);                                //显示一段时间
        P0=0x00;                                //段码清0,消影
}


回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2026-07-23 09:36:34
已绑定手机

231

主题

172

回帖

1081

积分

版主

积分
1081
发表于 2026-7-13 13:38:32 | 显示全部楼层
15-2 直流电机调速,江协科技讲普中51单片机开发板STC89C52学习板 配套程序, A2标准版
Key.C代码如下:

#include <REGX52.H>
#include "Delay.h"

/**
  * @brief  获取独立按键键码
  * @param  无
  * @retval 按下按键的键码,范围:0~4,无按键按下时返回值为0
  */
unsigned char Key()
{
        unsigned char KeyNumber=0;
       
        if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;}
        if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;}
        if(P3_2==0){Delay(20);while(P3_2==0);Delay(20);KeyNumber=3;}
        if(P3_3==0){Delay(20);while(P3_3==0);Delay(20);KeyNumber=4;}
       
        return KeyNumber;
}


回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-24 05:53 , Processed in 0.067330 second(s), 50 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表