电机调速程序

/********************************************************************
* 名称 : 电机调速
* 功能 : 通过P1.0口来控制直流电机的旋转的快慢
/***********************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit KEY1 = P3^2;        //定义调速的按键
sbit PWM = P1^0;        //定义直流电机的控制端口
uchar CYCLE;              //定义周期 
uchar PWM_ON ;            //定义低电平时间

/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay(uint i)
{
    uchar x,j;
    for(j=0;j<i;j++)
    for(x=0;x<=148;x++);    
}

void Time0(void)
{
    TMOD |=0x01;          //定时器设置 1ms in 12M crystal
    TH0=(65536-1000)/256; 
    TL0=(65536-1000)%256; //定时1mS 
    IE= 0x82;                //打开中断
    TR0=1;                  //定时器打开
}
main()
{
    uchar PWM_Num;    //定义档位
    Time0();
    CYCLE = 10;        //时间可以调整 这个是10步调整 周期10ms 8位PWM就是256步
    PWM = 0;
    while(1)
    {
        if(!KEY1)
          {
               Delay(15);
               if(!KEY1)
             {
                  PWM_Num++;          //按一下P3.2口,就给直流电机换一个档位
                  if(PWM_Num==4)
                {
                    PWM_Num=0;
                }
                switch(PWM_Num)
                {
                    case 0:P0=0x06;        PWM_ON=0;break;            //低电平时长     //给P0口赋值,是让P0口显示:1,2,3,4 这四个档位
                       case 1:P0=0x5B;        PWM_ON=2;break;
                       case 2:P0=0x4F;        PWM_ON=4;break;
                       case 3:P0=0x66;        PWM_ON=6;break;
                     default:break;
                 }
              }
        }
    }
}
/********************************/
/*      定时中断                */
/********************************/
void tim(void) interrupt 1 using 1
{
    static unsigned char count; 
    TH0=(65536-1000)/256; 
    TL0=(65536-1000)%256;//定时1mS 
    if(count==PWM_ON)
    {
        PWM = 1;         //直流电机转 
    }
    count++;
    if(count == CYCLE)
    {
        count=0;
        if(PWM_ON!=0)   //如果左右时间是0 保持原来状态
        {
            PWM = 0;    //直流电机不转
        }
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

换服还是掀桌?哪条才是程序员的出路?

站在时代的风口浪尖&#xff0c;猪都能起飞。 大数据互联网正是时代的宠儿&#xff0c;IT行业的发展也正如火如荼。 人人都眼红程序员的高薪资&#xff0c;认为他们吃着时代的红利。 但是三百六十行&#xff0c;行行出社畜。”996“也好&#xff0c;甚至"007"也罢…

php生成个性二维码

本篇引用 QRcode PHP QR Code download | SourceForge.net 无需composer即可生成 下载后的类文件是一个压缩包&#xff0c;里边包含很多文件和演示demo&#xff0c;我们只需要里的phpqrcode.php这一个文件就可以生成二维码了。它是一个多个类的集合文件&#xff0c;我们只用…

OpenAI开发者大会掀起风暴:GPT模型价格狂降50%,应用商店即将亮相,AI技术将引爆全球!

OpenAI首届开发者大会召开了&#xff01; 关键信息&#xff1a; GPT-4升级版GPT-4 Turbo来了&#xff0c;上下文窗口达到128k&#xff0c;为GPT-4的4倍&#xff1b;OpenAI还降低了几乎所有模型的API使用价格&#xff0c;整体便宜了一半多&#xff1b;GPT-4系列的多模态能力向B…

竞赛选题 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

ZYNQ_project:key_beep

通过按键控制蜂鸣器工作。 模块框图&#xff1a; 时序图&#xff1a; 代码&#xff1a; /*1位按键消抖 */ module key_filter (input wire sys_clk ,input wire sys_rst_n ,input wire key_in ,output …

LightDB23.4 支持普通表修改为list分区表

功能介绍 为了兼容Oracle数据库的功能&#xff0c;在LightDB23.4版本上支持修改普通表为List分区表。这个功能只在LightDB的Oracle兼容模式下生效。 使用示例 进入Oracle兼容模式的数据库 lightdboracle_test# show lightdb_dblevel_syntax_compatible_type ;lightdb_dblev…

AM@向量代数@向量基本概念和向量线性运算

文章目录 abstract向量的基本概念向量向量的坐标分解式和坐标&#x1f47a;向量的模向量的长度(大小)&#x1f47a;零向量单位向量&#x1f47a;方向向量非零向量的单位向量正规化向量夹角&#x1f47a; 向量方向角和向量间夹角投影几何描述向量的线性运算向量的加减运算向量的…

Linux中固定ip端口和修改ip地址

一&#xff0c;更改虚拟网络编辑器 1&#xff0c;首先启动VMware&#xff0c;选择自己要更改ip或固定ip的虚拟机&#xff0c;并找到虚拟网络配编辑器&#xff0c;点击进入 2&#xff0c;进入之后需要点击右下角获取管理员权限后才能修改&#xff0c;有管理员权限之后图片如下 …

C++笔记

模板 &#xff08;泛型编程&#xff09; 函数模板 语法&#xff1a; template <typename 形参名&#xff0c;typename 形参名&#xff0c;......> 返回类型 函数名(参数列表) {函数体 }定义函数模板时typename关键字可以替换成class&#xff0c;效果一样。 template&l…

技术分享 | app自动化测试(Android)--元素定位方式与隐式等待

元素定位是 UI 自动化测试中最关键的一步&#xff0c;假如没有定位到元素&#xff0c;也就无法完成对页面的操作。那么在页面中如何定位到想要的元素&#xff0c;本小节讨论 Appium 元素定位方式。 Appium的元素定位方式 定位页面的元素有很多方式&#xff0c;比如可以通过 I…

python使用selenium做自动化,最新版Chrome与chromedriver不兼容

目前Chrome版本是118.0.5993.118 下方是版本对应的下载地址&#xff1a; chrome版本118&#xff1a; https://download.csdn.net/download/qq_35845339/88510476 chrome版本119&#xff1a; chromedriverlinux64https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testin…

各种NoSQL数据库

NoSQL数据库是一类非关系型数据库&#xff0c;它们在数据存储和检索方面与传统的关系型数据库不同。不同类型的NoSQL数据库适用于不同的使用场景&#xff0c;因为它们具有各自的特点。以下是一些主要类型的NoSQL数据库及其特性和使用场景&#xff1a; 键值存储数据库 代表性数据…

华为取消6000万订单影响在扩大,高通嘴硬强调不受影响

高通公布了2023年第三季度的业绩&#xff0c;业绩显示营收下滑24%&#xff0c;净利润下滑36%&#xff0c;不过高通强调预计今年四季度业绩将回升&#xff0c;意思是说华为取消订单带来的影响较小。 一、高通处境不利已延续4年时间 2019年美国对华为采取措施&#xff0c;众多中国…

SpringCloud——服务注册——Consul

Consul其实和Zookeeper的使用差不多 提供者模块代码&#xff1a; cloud2020: 尚硅谷cloud2020 学习代码 - Gitee.com 消费者模块代码&#xff1a; cloud2020: 尚硅谷cloud2020 学习代码 - Gitee.com

8个绝妙的JavaScript 字符串处理技巧

前言 当处理JavaScript字符串时,有许多有趣的技巧可以提高你的编码效率。这篇文章将介绍一些有关JavaScript字符串的技巧,让你在字符串操作方面更加娴熟。Lets go! 1、字符串填充 有时候,可能需要确保字符串达到特定的长度。这时,你可以使用padStart和padEnd方法。这两…

优雅设计之美:实现Vue应用程序的时尚布局

本文为翻译文章&#xff0c;原文链接&#xff1a; ** https://fadamakis.com/clean-layout-architecture-for-vue-applications-a738201a2a1e 前言 页面布局是减少代码重复和创建可维护且具有专业外观的应用程序的基本模式。如果使用的是Nuxt&#xff0c;则可以提供开箱即用…

【算法】第二代遗传算法NSGA-II优化SVR超参数模型

NSGA-II介绍 NSGA-II(Non-dominated Sorting Genetic Algorithm II)是一种多目标优化算法,用于解决具有多个冲突目标的优化问题。它通过模拟进化过程中的自然选择和遗传操作,逐步改进种群中的解,以找到一组尽可能好的解,这些解在多个目标下都是非支配的(Pareto优解)。 …

11.8旧有报错与修改

我将uart_done&#xff08;出问题的信号&#xff09;的变量类型设为reg了&#xff0c;也就是我是reg uart_done这个信号的&#xff0c;这样做是错误的&#xff0c;哪怕你在接收模块确实定义的是reg类型&#xff0c;但是在顶层模块的时候&#xff0c;它可以视为是一条单纯的线而…

oled显示器程序(IIC)从stm32f103移植到stm32f429出现bug不显示-解决移植失败问题

出现问题处&#xff1a; 刚开始更换了这两行代码&#xff0c;然后更换位置后&#xff0c;oled正常显示&#xff0c;如下为正确顺序 I2C_Configuration();//配置CPU的硬件I2COLED_Init();//OLED初始化 在这段代码中&#xff0c;I2C_Configuration() 函数用于配置CPU的硬件 I2C…

AJAX-解决回调函数地狱问题

一、同步代码和异步代码 1.同步代码 浏览器是按照我们书写代码的顺序一行一行地执行程序的。浏览器会等待代码的解析和工作&#xff0c;在上一行完成之后才会执行下一行。这也使得它成为一个同步程序。 总结来说&#xff1a;逐行执行&#xff0c;需原地等待结果后&#xff0…