自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 51单片机:电脑向串口发送数据并控制LED灯

电脑向串口发送数据后,控制LED灯,并返回发送的数据程序如下#include"regx52.h"#include"intrins.h"unsigned int num; //建立全局变量void Delay1000ms() //@11.0592MHz{ unsigned char i, j, k; _nop_(); i = 8; j = 1; k = 243; do { do ...

2022-05-31 14:56:41 1219

原创 51单片机:串口向电脑发送数据

单片机的串口配置可以使用SCT-ISP软件,方法如下,我的单片机晶振频率是11.0592Hz试验程序如下:#include"regx52.h"#include"intrins.h"unsigned int num; //建立全局变量void Delay1000ms() //@11.0592MHz{ unsigned char i, j, k; _nop_(); i = 8; j = 1; k = 243;...

2022-05-31 11:09:47 1030

原创 ProEasy机器人:三点成圆的指令教导做法

代码内容:MovP(2.. P.Z(-2000))MovP(2)MovCIRC(4,3, CM_BORDER_CIRC,300,10000,10000)2号点为圆的起点教导点3号点是过渡点4号点是圆的终点三点教导好之后,需要注意,4号点的C轴角度必须是2号点角度加上360°C的值,因为三点成圆只是获取三个点的X和Y坐标数据成一个平面圆,但是如果现在画圆的同时让C轴同时转360°C,4号终点C轴角度就必须是起点角度加...

2022-05-28 16:55:56 121

原创 ProEasy机器人:程序编写中出现多处function循环嵌套,导致内存溢出报警

这次在处理售后一个项目的时候,发现一个程序BUG,因为这个是客户自己写的,在运行过程中,机械手能够正常运行,但是在每隔三四十分钟后都会报028错误代码,输出框也会提示not enough memory 内存不足的提示,如图一开始以为是电脑运行内存的问题,排查后又没有问题,机械手控制器也换过,还是无法解决,这个时候就决定再好好去推敲一下代码,最后发现是一个最基础的问题,就是function循环嵌套,如图本来主程序就是一个死循环的一个动作,进入子...

2022-05-22 17:29:23 146

原创 51单片机:定时器与LCD1602的运用,做一个简易时钟

#include "regx52.h"#include "LCD1602.h"void Delay(int time){ while(time--) //while循环一次需要10us { }}void Timer0Init(void) //1毫秒@11.0592MHz{ TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x66;...

2022-05-18 15:49:35 315

原创 51单片机:定时器与中断系统的运用

#include "regx52.h"void Delay(int time){ while(time--) //while循环一次需要10us { }}void Timer0Init(void) //1毫秒@11.0592MHz{ TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x66; //设置定时初值 ...

2022-05-18 15:42:27 90

原创 Proeasy机器人:控制器报警的处理方法

1.当机器人发生空间超出范围报警信号解决方法:首先手动移动到目标点,是否能够顺利一到?如果不行,检查目标点的x轴,y轴,z轴,c轴,是否有超范围的情况?这周不能为正数c轴,不能超过,正负360度,还有a轴和b轴,必须为您,因为他是六轴的机器人坐标轴,最后检查坐标系是否为MC S2.低电压、主回路电源异常解决办法:查看控制器磁环,是否有问题,进行更换或新增磁环,220V是否低电压3.顺向运动学转换错误解决方法:当这个报警出现时,应检...

2022-05-16 15:31:51 725

原创 Proeasy机器人:三轴机械手螺丝机的与视觉搭配应用

此次项目是用三轴螺丝机和视觉搭配使用,视觉提供螺丝孔位置偏差,在机械手的模板点位上面进行偏移项目问题点:1.在不知道要搭配视觉使用的情况下,机械手出厂时没有做马达偏差角2.视觉固定在机械手二轴时,机械手无法做延伸臂,导致视觉标定出现问题3.三轴机械手无法生成工具坐标,导致螺丝机与视觉一直存在偏差角项目解决方案:第一步:建立机械手螺丝机上的马达偏差角,水平面固定两个中心点,用左手系和右手系记录当前点位的...

2022-05-08 14:36:02 437

原创 51单片机:数码管显示

1. 静态数码管显示 点亮数码管需要用到P0端口和P2部分端口,P0端口负责显示要输出的数字,P2部分端口负责让哪个数码管点亮,具体的去看电路图,这次还包含了74HC245和74HC138芯片 现在让单片机数码管区域第三位的数码管显示数字5,程序如下#include"reg52.h"//定义P2端口sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;//用数组来表示数码管上每个数字输出对应的相关电平输入int st...

2022-04-21 15:18:28 3708

原创 51单片机:独立按键控制LED灯

1. 独立按键控制LED灯状态 亮灭实验完成后,就可以控制LED状态,首先我们知道由于机械结构的弹性作用,按键开关在闭合时不会一瞬间稳定的接通,在断开时,也不会一下子断开。所以就得需要程序消抖,也就是适当延时,程序如下#include"reg52.h"//定义LED灯sbit LED1 = P2^0;sbit LED2 = P2^1;sbit LED3 = P2^2;sbit LED4 = P2^3;sbit LED5 = P2^4;sbit LED6 = P2^5;...

2022-04-21 11:38:10 7202 5

原创 51单片机:LED灯流水灯

知道闪烁原理后,我们就可以将所有引脚依次输出0V、延时、输出5V,就能达到流水灯效果,但这样写太呆板,咱们利用C语言for循环,再进行位运算就可以简单达到效果,程序如下#include"reg52.h" //引用头文件void Delay(int time){ while(time--) //while循环一次需要10us { }}int main(){ int i = 0; while(1) { for(i=0;i<8...

2022-04-21 11:36:26 696

原创 51单片机,点亮LED灯和闪烁

1.关键字sfr与sbit的区别sfr是定义寄存器的字节地址,sbit是定义可位寻址的位地址例如:sfr P1 =0x90;sbit A = P1^0 sbit B = P1^1;2. 单片机引脚有:电源引脚、晶振引脚、复位引脚、下载引脚、GPIO引脚其中晶振引脚主要是用来提供外部时钟,驱动指令执行,GPIO引脚包含P0、P1、P2、P3 四个端口3.点亮一个LED灯从电路图可以得知,L...

2022-04-21 11:34:35 1746

原创 Proeasy机器人:建立动态用户坐标系取料

首先视觉固定在机器人的Z轴丝杆中心搭配取料,在这过程中我们遇到了以下几个问题:1.视觉与机械手标定后,发现视觉Y轴方向与机器人Y轴方向相反2.建立用户坐标系后,物料进行旋转10度左右,进行拍照抓取发现角度没有问题,X和Y的方向不对3.建立用户坐标系后,用相机中心和丝杆中心在用户坐标系的1号用户坐标,进行(0,0)原点移动,发现都不在视觉的mark中心,以镜像对称的方式移到了另外一边4.在机械手标定,物料模板标定,机械手取料点标定的正确下,发现Y轴偏移值不对针对上面的问题情况,提出的解

2022-04-21 11:23:21 274

原创 利用51单片机做一个简易的计算器

#include"reg52.h"#include "LCD1602.h"//按键定义sbit KEY0=P1^0;sbit KEY1=P1^1;sbit KEY2=P1^2;sbit KEY3=P1^3;sbit KEY4=P1^4;sbit KEY5=P1^5;sbit KEY6=P1^6;sbit KEY7=P1^7; //函数定义:/** * @brief LCD1602延时函数,12MHz调用可延时1ms * @param 无 * @re...

2022-04-19 11:27:45 3215 1

原创 关于keil uvision4 注释中文出现乱码情况解决办法

在B站学习江科大自化协单片机课程的时候,有一节课需要导入老师LC1602的源代码,但发现导入的代码中文全部都是乱码,老师有节课程教过怎么设置解决问题,但老师是keil uvision5软件,我keil uvision4软件设置里面就没有这个选项,就在网上找寻答案,结果搜的都是一些根本我用不了的方法,都是千篇一律的答案,都是混经验的,常见比如这种:我这个软件压根就没有Encoding这个选项,这方法真就扯犊子,后面我就发现了一个非常好...

2022-04-04 11:15:56 2484 10

原创 Proeasy机器人:二轴增加延伸臂案例

机器人二轴需要增加延伸臂,首先就得需要建立工具坐标系,来绑定与机器人本体配合-- SCARA延伸臂:2點教導whe法-- 透過左右手同一卡氏座標點達成,僅教導w與thetaE,h為0,ABC角亦皆為0-- 如為CCD,則教導點為左右手姿態下,CCD內同一pixel點-- 僅能於SCARA類型且至少三軸之機種使用,且延伸座標系鎖定於第二桿件上(i.e. 如CCD等工具只能裝設於第二桿件上)-- 透過工具座標達成延伸臂應用-- 此腳本需自訂資訊:Line 21~24 之ACS教導點資訊、Line30

2022-03-29 17:06:56 80

原创 C语言:编写一个通讯录

#define _CRT_SECURE_NO_WARNINGS#define MAX 100#include<stdio.h>#include<string.h>#include<stdlib.h>enum MyEnum{ OUT, Incre, Delete, Lookup, Modify, Print, Sort,};void meun(){ printf("\n"); ...

2022-03-20 10:22:15 1455

原创 C语言:程序在内存分配区域

内存总共分为三大区域:1.栈区主要存储的是 局部变量 和 函数的形式参数2.堆区主要存储的是 动态内存分配(malloc、free、calloc、realloc)3.静态区主要存储的是 全局变量 和 静态变量(static)...

2022-03-17 17:05:41 958

原创 C语言:用联合体数据结构来判断计算机内存存储的大小端方式

int Judge(){ //创建联合体数据结构 union s { char i; int a; }; //定义并赋值 union s u; u.a = 1; //利用char类型的一个字节,来访问判断首字节是否为1 return u.i;}int main(){ int ret = Judge(); if(ret==1) { printf...

2022-03-10 15:46:36 1102

原创 C语言:杨氏矩阵

有一个数字矩阵,矩阵的每行从左到右是递增的矩阵从上到下是递增的请编写程序在这样的矩阵中查找某个数字是否存在。要求:时间复杂度小于O(N)int Find_Number(int arr[4][4], int k,int* x, int* y){ int a = 0; int b = *y-1; while (a<*x && b>=0) //a的坐标值不能最大行数,b的坐标值不能小于0 { //先找右上角进行判断 ...

2022-03-08 17:07:21 684

原创 C语言:实现一个函数,可以左旋字符串中的k个字符,例如:a[]=“abcde“,k=2 ----->a[]=“cdeab“

void Flip(char a[], int k){ int len = strlen(a); for (int i = 0; i < k; i++) { //第一步:将要翻转的字符保存 char tmp = a[0]; //第二步:将剩下的字符串往前移 for (int j = 0; j < len-1; j++) { a[j] = a[j + 1];...

2022-03-08 15:13:24 875

原创 C语言:打印一个菱形图案

解题思路:分为上下两部分打印菱形 * *** ***** ******* ********************************* *********** ********* ******* ***** *** * int main(){ int line = 0; //接受外部打印的行数 scanf("%d", &...

2022-03-08 09:01:39 271

原创 C语言:喝汽水问题,一块钱能买一瓶汽水,两个空瓶能换一瓶汽水,问40元能喝多少瓶汽水

int main(){ int money = 0; int count = 0;//喝汽水计数 int empty = 0;//空瓶计数 scanf("%d", &money); count = money; empty = count; while (empty>=2) { count = count + empty / 2; empty = empty / 2 + empty % 2;...

2022-03-08 09:01:22 205

原创 C语言:将一个int数组的奇数偶数进行排序,奇数在前,偶数在后

int main(){ int arr[] = { 1,3,2,5,7,9,11 }; int sz = sizeof(arr) / sizeof(arr[0]); int left = 0; int right = sz - 1; while (left<right) {//从左往右找偶数 while (arr[left] % 2 == 1) { left++; }...

2022-03-08 09:01:12 216

原创 C语言:输入a、n两个int类型,求表达式的和s=a+aa+aaa+aaaa.......

int main(){ int a = 0; int n = 0; scanf("%d,%d", &a, &n); int sum = 0; int ret = 0; for (int i = 0; i < n; i++) { ret = ret * 10 + a; sum += ret; } printf("%d", sum); return 0;}...

2022-03-08 09:00:50 285

原创 C语言:封装一个函数,把一个字符串逆序排序

void revese(char aa[],int sz){ assert(aa); int left = 0; int right = sz - 1; while (left<right) { char tmp = 0; tmp = aa[left]; aa[left] = aa[right]; aa[right] = tmp; left++; right-...

2022-03-07 15:45:47 183

原创 C语言:用指针函数的数组来做计算器

void Add(int x, int y){ printf("%d\n", x + y);}void Sub(int x, int y){ printf("%d\n", x - y);}void Mul(int x, int y){ printf("%d\n", x * y);}void Div(int x, int y){ printf("%d\n", x / y);}void meun(){ printf("*************...

2022-03-07 15:43:54 104

原创 C语言:用断言assert和const修饰语句来重新编写计算字符串求长度函数

int my_strlen(const char* str){ int count=0; assert(*str != NULL); while (*str!='\0') { count++; str++; } return count;}int main(){ char arr[] = "asdvcnxhdnchdcd"; int len = my_strlen(arr); printf(...

2022-03-07 15:38:55 10

原创 C语言:用递归函数,求一个无符号整形类型每个个数相加之和

int Digitsum(int n){ if (n>9) { return Digitsum(n / 10) + n % 10; } else { return n; } }int main(){ unsigned int n = 0; scanf("%d", &n); int num = Digitsum(n); printf("%d", num); ...

2022-03-07 15:36:32 30

原创 C语言:打印乘法口诀表,输入数字,打印相对应的行数

void print_table(n){ for (int i = 1; i <= n; i++) { for (int j = 1;j <= i;j++) { printf("%d*%d=%-3d ", j, i, i * j); } printf("\n"); }}int main(){ int n = 0; scanf("%d", &n...

2022-03-07 15:35:10 58

原创 C语言:用指针类型去打印出一个整形数组的每一个元素

int main(){ int arr[] = { 1,2,3,45,6,7,8,10,9 }; int* p = arr; int sz = sizeof(arr) / sizeof(arr[0]);//利用*p的变化解引用 for (int i = 0; i < sz; i++) { printf("%d ", *(p + i)); } return 0;}...

2022-03-07 15:32:13 264

原创 C语言:输入一个int类型,打印它二进制中奇数位和偶数位

void print(int m){ printf("打印奇数位"); for (int i = 30; i >= 0; i-=2) { printf("%d ", (m >> i) & 1); } printf("\n"); printf("打印偶数位"); for (int i = 31; i >= 1; i -= 2) { printf("%d ", (m >>...

2022-03-07 15:23:39 560

原创 C语言:求两个int类型M和N之间二进制不同bit的个数统计

//方法:首先让两个数异或,再统计其中的二进制中的1int Bin_count_number(int m, int n){ int count = 0; int a = m^n; while (n) { if (a%1==1) { count++; } a = a / 2; } return count;}int main(){ int m = 15;...

2022-03-07 15:18:43 79

原创 C语言:计算输入一个int类型的值,计算他内存二进制中的1有多少个

int main(){ int a = 0; int count = 0; scanf("%d", &a); //1.用左移>>、&按位与的方法 for (int i = 0; i < 32; i++) { if ((1 & (a >> i)) == 1) { count++; } } //2.用取余%、除 /的方...

2022-03-07 15:10:51 66

原创 C语言:将两个int类型a,b变量值交换,不能建立零时变量

int main(){//两个int变量交换,不能建立零时变量 int a = 5; int b = 6;//1.加减法 a = a + b; b = a - b; a = a - b; printf("a=%d b=%d\n", a, b);//2.异或法 a = a ^ b; b = a ^ b; a = a ^ b; printf("a=%d b=%d", a, b); return 0;}...

2022-03-07 14:46:05 14

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除