C#上位机源程序 下位机单片机实现控制电机

news2024/10/6 8:30:21
基于C#的上位机编程程序,通过上位机控制下位机实现电脑操作控制步进电机的转动

 

 

程序

          #include<reg52.h>
                #define uchar unsigned char
      #define uint unsigned int
      #include "2401.h"
          #include "delay.h"
          #include "ds18b20.h"
          sbit IN1=P1^0;            
      sbit IN2=P1^1;            
      sbit ENA=P1^2;            //位定义L298M芯片使能端ENA
          sbit led0=P2^0;           //正转指示灯
          sbit led1=P2^1;                    //反转指示灯
          sbit led2=P2^2;               //加速指示灯
          sbit led3=P2^3;                    //减速指示灯
          sbit led4=P2^4;                     //开始指示灯
          sbit led5=P2^5;                     //停止指示灯
          uint  v[1];
          uint        i,Time1num=0;
          uint        song[1];
          uint j;                                                                  
           
          void delay_ms(uint z)        //延时函数 
       {
                uint y;
                while(z--)
                    for(y=110;y>0;y--);

       }  

        uchar k,m;
        uint x=3,y=7;   

           void pwm(uint i,uint j)         //pwm调速

           {          
                 ENA=1;
                 delay_ms(i);
                 ENA=0; //电机停转
                 delay_ms(j);

           }


           void UART_init (void){//UART串口初始化函数
        TMOD = 0x21;        //定时器T/C1工作方式2
        SCON = 0x50;        //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
        TH1 = 0xfD;        //定时器初值高8位设置
        TL1 = 0xfD;        //定时器初值低8位设置
        TH0 = (65536-50000)/256;
        TL0 = (65536-50000)%256;
        PCON = 0;        //波特率倍频
                      //PCON = 0;
        TR1 = 1;        //定时器启动 
        TR0 = 1;        //定时器启动 
  EA=1;ES=1;ET0=1;PT0=1;//PS=1;        
}                
           
        
            
           void main()
            {
                                 
                   UART_init ();
                          
           while(1)
                    {  
                         
                
                                 if(k==0xfa)
                                 {
                                         x=10;y=0;pwm(x,y);
                                 }
                                   if(k==0xc8)
                                 {         
                                   x=8;y=2;pwm(x,y); 
                                 }
                                  if(k==0x96)
                                 {        
                                   x=6;y=4;pwm(x,y);
                                 }
                                  if(k==0x64)
                                 { 
                                  x=4;y=6;pwm(x,y);
                                 }
                                  if(k==0x32)
                                 {         
                                    x=2;y=8;pwm(x,y);
                                 }
                            if(k==0x01)                //正转
                             {  
                                 IN1=0;IN2=1;led0=0;x=2;y=8;pwm(x,y);
                                }
                           if(k==0x02)                  //反转
                                {
                                IN1=1;IN2=0;led1=0;x=2;y=8;pwm(x,y);
                                }
                                    if(k==0x03)           //停转
                                 {
                                IN1=0;IN2=0;x=0;
                                 }
                                          if(k==0x81)                //加速
                            {
                                    led2=0;pwm(x,y);
                            }

                                 
                           if(k==0x82)                  //减速
                         {          
                                led3=0;pwm(x,y);
                         }
                                if(k==0x06)                //全速
                                { 
                                 x=10;y=0;led5=0;pwm(x,y);
                                }
                        
                                
                    }
            } 
           void SIO_ISR() interrupt 4
          {
                        k=SBUF; 
                      RI=0;
                         if(k==0x81)
                          {
                                  x=x+2;y=10-x;        
                                if(x>10)
                                {x=10;y=0;}
                                if(x<0)
                                {x=0;y=10;}
                          }
                                if(k==0x82)
                                {
                                   x=x-2;
                                   y=10-x;
                                   if(x>10)
                                {x=10;y=0;}
                                if(x<0)
                                {x=0;y=10;}
                                  }
          
                }                
          
         void int_1() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        Time1num++;
        if(Time1num==5)

 

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

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

相关文章

LLM——用于微调预训练大型语言模型(LLM)的GPU内存优化与微调

前言 GPT-4、Bloom 和 LLaMA 等大型语言模型&#xff08;LLM&#xff09;通过扩展至数十亿参数&#xff0c;实现了卓越的性能。然而&#xff0c;这些模型因其庞大的内存需求&#xff0c;在部署进行推理或微调时面临挑战。这里将探讨关于内存的优化技术&#xff0c;旨在估计并优…

easy_ssti_ctfshow_2023愚人杯

https://ctf.show/challenges#easy_ssti-3969 2023愚人杯有提示app.zip&#xff0c;访问 https://1f660587-5340-4b20-b929-c4549d9a5d4b.challenge.ctf.show/app.zip得到压缩包&#xff0c;拿到一个py文件 可以看到参数名是name&#xff0c;对参数进行筛选&#xff0c;包含ge…

Hbase 常用shell操作

目录 1、创建表 1.1、启动HBase Shell 1.2、创建表 1.3、查看表 1.4、删除表 2、插入数据 2.1、put命令 3、查看数据 3.1、get命令 3.2、查询数据中文显示 4、更新数据 4.1、使用put来更新数据 5、删除数据 5.1、delete命令 5.2、删除指定列的数据 5.3、delete…

STM32——TIMER(定时器)篇

技术笔记&#xff01; 1. 定时器概述&#xff08;了解&#xff09; 1.1 软件定时器原理 使用纯软件&#xff08;CPU死等&#xff09;的方式实现定时&#xff08;延时&#xff09;功能 缺点&#xff1a;1. 延时不准确 2. CPU死等。 1.2 定时器定时原理 1.…

StarryCoding入门教育赛2 题解 C++代码(推荐学习)

比赛地址&#xff1a;https://www.starrycoding.com/contest/6 比赛介绍 系列赛名称&#xff1a;StarryCoding 入门教育赛难度&#xff1a;语法~较低时长&#xff1a; 1.5 1.5 1.5小时比赛时间&#xff1a;约每2-3天一场&#xff0c;一般为晚上18:30~20:00赛后题解&#xff1…

饥荒服务器搭建centos

服务器环境需要64位32位不可用 uname -r 查看服务器版本 更新yum sudo yum update 安装依赖环境 sudo yum -y install glibc.i686 libstdc.i686 libcurl4-gnutls-dev.i686 libcurl.i686 screen 安装steam cd /home && mkdir steamcmd && cd steamcmd 国…

人工智能的发展将如何重塑网络安全

微信搜索关注公众号网络研究观&#xff0c;获取更多信息。 人们很容易认为人工智能 (AI) 真正出现是在 2019 年&#xff0c;当时 OpenAI 推出了 ChatGPT 的前身 GPT-2。 但现实却有些不同。人工智能的基础可以追溯到 1950 年&#xff0c;当时数学家艾伦图灵发表了题为“计算机…

资源池管理

资源池相关概念 1、什么是资源池 资源池是灵活管理资源的逻辑抽象。资源池可以分组为层次结构&#xff0c;用于对可用的CPU和内存资源按层次结构进行分区。 2、为什么使用资源池 使用资源池可以委派对主机(或集群)资源的控制权&#xff0c;在使用资源池划分群集内的所有资 源时…

PopChar for Mac v10.1激活版:特殊字符输入工具

PopChar for Mac是一款专为Mac用户设计的字符输入工具&#xff0c;其简单直观的功能使得查找和插入特殊字符变得轻而易举。 PopChar for Mac v10.1激活版下载 首先&#xff0c;PopChar为Mac提供了访问所有字体字符的能力&#xff0c;包括那些难以通过键盘直接输入的字符。用户只…

延时任务通知服务的设计及实现(三)-- JDK的延迟队列DelayQueue

一、接着上文 上文我们讲述了使用redisson的RDelayedQueue实现分布式延迟队列&#xff0c;本文我们将自己JDK的延迟队列DelayQueue实现。 相比前者的实现&#xff0c;作为进程内的延迟队列&#xff0c;它会遇到许多技术难点&#xff1a; 如何支持分布式的多个节点部署场景应…

vue cli 自定义项目架子,vue自定义项目架子,超详细

脚手架Vue CLI基本介绍&#xff1a; Vue CLI 是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了webpack配置】 脚手架优点&#xff1a; 开箱即用&#xff0c;零配置内置babel等工具标准化的webpack配置 脚手架 VueCLI相关命令…

Mac跑llama.cpp过程中遇到的问题

原repo 在华为手机上安装termux、下载库&#xff1a;顺利在电脑上安装Android NDK&#xff1a;先下载Android Studio&#xff0c;再在里面下载Android SDK 安装Android Studio时&#xff0c;SDK的某些组件总是下载不成功。后来关了梯子、改了hosts&#xff0c;重新安装就成功了…

汇编语言——比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示MATCH, 不相同则显示NO MATCH

CMPS 串比较指令&#xff1a; CMPS SRC, DST CMPSB &#xff08;字节&#xff09; CMPSW &#xff08;字&#xff09; 执行操作&#xff1a; ((SI)) - ((DI)) 根据比较结果置条件标志位&#xff1a;相等 ZF1&#xff1b;不等 ZF0 字节操作&#xff1a;(SI)←(SI)1, (DI)←(DI…

【算法系列】链表

目录 常用技巧 常用操作 leetcode/牛客题目 一、移除链表元素 二、反转链表 三、链表的中间结点 四、返回倒数第k个节点 五、合并两个有序链表 六、链表分割 七、链表的回文结构 八、相交链表 九、环形链表 十、环形链表 II 十一、随机链表的复制 十二、两数相加…

英语学习笔记2——Is this your ...?

Is this your …? 这是你的 … 吗&#xff1f; 词汇 Vocabulary pen n. 笔 不仅指钢笔&#xff0c;是笔的统称 相关&#xff1a;ball pen n. 圆珠笔    pencil n. 铅笔    marker n. 记号笔 book n. 书 横着翻的本子或书 补充&#xff1a;pad n. 本子 竖着翻的本子或…

在Codelab对llama3做Lora Fine tune微调

Unsloth 高效微调大模型的工具&#xff0c;通过Unsloth微调Llama3, Mistral, Gemma 速度提升2-5倍&#xff0c;内存减少70%&#xff01; Codelab 创建一个jupyter notebook 选择 T4 GPU 安装Fine tune 相关的lib %%capture import torch major_version, minor_version torch…

软考中级-软件设计师(九)数据库技术基础 考点最精简

一、基本概念 1.1数据库与数据库系统 数据&#xff1a;是数据库中存储的基本对象&#xff0c;是描述事物的符号记录 数据库&#xff08;DataBase&#xff0c;DB&#xff09;&#xff1a;是长期存储在计算机内、有组织、可共享的大量数据集合 数据库系统&#xff08;DataBas…

Navicat for MySQL Mac:数据库管理与开发的理想工具

Navicat for MySQL Mac是一款功能强大的数据库管理与开发工具&#xff0c;专为Mac用户设计&#xff0c;旨在提供高效、便捷的数据库操作体验。 它支持创建、管理和维护MySQL和MariaDB数据库&#xff0c;通过直观的图形界面&#xff0c;用户可以轻松进行数据库连接、查询、编辑和…

力扣:221. 最大正方形

221. 最大正方形 在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大正方形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1","0"…

数字藏品平台遭受科技攻击时的防护策略与攻击类型判定

随着区块链技术和数字经济的飞速发展&#xff0c;数字藏品平台逐渐成为炙手可热的投资领域。然而&#xff0c;这也使其成为了黑客攻击的重要目标。本文将深入探讨数字藏品平台可能遭遇的几种主要科技攻击类型&#xff0c;并提出相应的防护措施和判定方法。 一、51%攻击 攻击描…