本代码为编码开关代码,编码开关也就是数字音响中的 360度旋转的数字音量以及显示器上用的(单键飞梭开 关)等类似鼠标滚轮的手动计数输入设备。 我使用的编码开关为5个引脚的,其中2个引脚为按下 转轮开关(也就相当于鼠标中键)。另外3个引脚用来 检测旋转方向以及旋转步数的检测端。引脚分别为a,b,c b接地a,c分别接到P2.0和P2.1口并分别接两个10K上拉 电阻,并且a,c需要分别对地接一个104的电容,否则 因为编码开关的触点抖动会引起轻微误动作。本程序不 使用定时器,不占用中断,不使用延时代码,并对每个 细分步数进行判断,避免一切误动作,性能超级稳定。 我使用的编码器是APLS的EC11B可以参照附件的时序图 编码器控制流水灯最能说明问题,下面是以一段流水 灯来演示。
上传时间: 2017-07-03
上传用户:gaojiao1999
【问题描述】 在一个N*N的点阵中,如N=4,你现在站在(1,1),出口在(4,4)。你可以通过上、下、左、右四种移动方法,在迷宫内行走,但是同一个位置不可以访问两次,亦不可以越界。表格最上面的一行加黑数字A[1..4]分别表示迷宫第I列中需要访问并仅可以访问的格子数。右边一行加下划线数字B[1..4]则表示迷宫第I行需要访问并仅可以访问的格子数。如图中带括号红色数字就是一条符合条件的路线。 给定N,A[1..N] B[1..N]。输出一条符合条件的路线,若无解,输出NO ANSWER。(使用U,D,L,R分别表示上、下、左、右。) 2 2 1 2 (4,4) 1 (2,3) (3,3) (4,3) 3 (1,2) (2,2) 2 (1,1) 1 【输入格式】 第一行是数m (n < 6 )。第二行有n个数,表示a[1]..a[n]。第三行有n个数,表示b[1]..b[n]。 【输出格式】 仅有一行。若有解则输出一条可行路线,否则输出“NO ANSWER”。
标签: 点阵
上传时间: 2014-06-21
上传用户:llandlu
实验源代码 //Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("请输入矩阵第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可传递闭包关系矩阵是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元关系的可传递闭包\n"); void warshall(int,int); int k , n; printf("请输入矩阵的行数 i: "); scanf("%d",&k); 四川大学实验报告 printf("请输入矩阵的列数 j: "); scanf("%d",&n); warshall(k,n); }
上传时间: 2016-06-27
上传用户:梁雪文以
通过Wiimote对红外LED灯的识别定位,从而判断出载有对红外LED的物体实时位置。
上传时间: 2017-04-06
上传用户:15172359139
#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789
随着最近几年机器人、无人机、无人驾驶、VR/AR的火爆,SLAM技术也为大家熟知,被认为是这些领域的关键技术之一。本文对SLAM技术及其发展进行简要介绍,分析视觉SLAM系统的关键问题以及在实际应用中的难点,并对SLAM的未来进行展望。
标签: slam
上传时间: 2019-09-15
上传用户:zhudx2007
华为AI安全白皮书2018-cn近年来,随着海量数据的积累、计算能力的发展、机器学习方法与系统的持续创新与演进,诸如图像识别、语音识 别、自然语言翻译等人工智能技术得到普遍部署和广泛应用。越来越多公司都将增大在AI的投入,将其作为业务发展 的重心。华为全球产业愿景预测:到2025年,全球将实现1000亿联接,覆盖77%的人口;85%的企业应用将部署到 云上;智能家庭机器人将进入12%的家庭,形成千亿美元的市场。 人工智能技术的发展和广泛的商业应用充分预示着一个万物智能的社会正在快速到来。1956年,麦卡锡、明斯基、 香农等人提出“人工智能”概念。60年后的今天,伴随着谷歌DeepMind开发的围棋程序AlphaGo战胜人类围棋冠 军,人工智能技术开始全面爆发。如今,芯片和传感器的发展使“+智能”成为大势所趋:交通+智能,最懂你的 路;医疗+智能,最懂你的痛;制造+智能,最懂你所需。加州大学伯克利分校的学者们认为人工智能在过去二十年 快速崛起主要归结于如下三点原因[1]:1)海量数据:随着互联网的兴起,数据以语音、视频和文字等形式快速增 长;海量数据为机器学习算法提供了充足的营养,促使人工智能技术快速发展。2)高扩展计算机和软件系统:近 年来深度学习成功主要归功于新一波的CPU集群、GPU和TPU等专用硬件和相关的软件平台。3)已有资源的可获得 性:大量的开源软件协助处理数据和支持AI相关工作,节省了大量的开发时间和费用;同时许多云服务为开发者提供 了随时可获取的计算和存储资源。 在机器人、虚拟助手、自动驾驶、智能交通、智能制造、智慧城市等各个行业,人工智能正朝着历史性时刻迈进。谷 歌、微软、亚马逊等大公司纷纷将AI作为引领未来的核心发展战略。2017年谷歌DeepMind升级版的AlphaGo Zero横 空出世;它不再需要人类棋谱数据,而是进行自我博弈,经过短短3天的自我训练就强势打败了AlphaGo。AlphaGo Zero能够发现新知识并发展出打破常规的新策略,让我们看到了利用人工智能技术改变人类命运的巨大潜能。 我们现在看到的只是一个开始;未来,将会是一个全联接、超智能的世界。人工智能将为人们带来极致的体验,将 积极影响人们的工作和生活,带来经济的繁荣与发展。
上传时间: 2022-03-06
上传用户:
便携式B型超声诊断仪具有无创伤、简便易行、相对价廉等优势,在临床中越来越得到广泛的应用。它将超声波技术、微电子技术、计算机技术、机械设计与制造及生物医学工程等技术融合在一起。开展该课题的研究对提高临床诊断能力和促进我国医疗事业的发展具有重要的意义。 便携式B型超声诊断仪由人机交互系统、探头、成像系统、显示系统构成。其基本工作过程是:首先人机交互系统接收到用户通过键盘或鼠标发出的命令,然后成像系统根据命令控制探头发射超声波,并对回波信号处理、合成图像,最后通过显示系统完成图像的显示。 成像系统作为便携式B型超声诊断仪的核心对图像质量有决定性影响,但以前研制的便携式B型超声诊断仪的成像系统在三个方面存在不足:第一、采用的是单片机控制步进电机,控制精度不高,导致成像系统采样不精确;第二、采用的数字扫描变换算法太粗糙,影响超声图像的分辨率;第三、它的CPU多采用的是51系列单片机,测量速度太慢,同时也不便于系统升级和扩展。 针对以上不足,提出了基于FPGA的B型超声成像系统解决方案,采用Altera公司的EP2C5Q208C8芯片实现了步进电机步距角的细分,使电机旋转更匀速,提高了采样精度;提出并采用DSTI-ULA算法(Uniform Ladder Algorithm based on Double Sample and Trilinear Interotation)在FPGA内实现数字扫描变换,提高了图像分辨率;人机交互系统采用S3C2410-AL作为CPU,改善了测量速度和系统的扩展性。 通过对系统硬件电路的设计、制作,软件的编写、调试,结果表明,本文所设计的便携式B型超声成像系统图像分辨率高、测量速度快、体积小、操作方便。本文所设计的便携式B型超声诊断仪可在野外作业和抢险(诸如地震、抗洪)中发挥作用,同时也可在乡村诊所中完成对相关疾病的诊断工作。
上传时间: 2013-05-18
上传用户:helmos
射击训练是基本的军事训练科目,改善训练环境、改进训练质量,在现代军队建设中具有重要的意义。本文首先从国内外自动报靶技术的研究现状出发论述了自动报靶技术的发展,在此基础上提出了基于嵌入式机器视觉的智能报靶系统设计实现。 本文讨论了基于机器视觉的嵌入式报靶系统终端硬件组成、相关图像格式和Linux操作系统,分析了嵌入式Linux操作系统、Qt/E和开源计算机视觉库OpenCV关于ARM9处理器的移植,研究了图像校正、图像灰度化及二值化、图像分割与裁剪和识别判靶的相关算法,提出了颜色模板判靶的理论,并通过以ARM嵌入式图像处理识别模块为核心,采用功能模块设计理念的实现方案,从底层的操作系统及相关软件的移植入手到图像采集传输、图像处理、识别判靶等步骤,解决了依托ARM处理器结合USB摄像头完成自动图像识别报靶的问题。文中给出了报靶系统的详细硬件组成方案,并在嵌入式Linux操作系统下依托Qt库和开源计算机视觉库(OpenCV)解决了软件组成与具体实现,最终在此基础上论述了本课题设计的实验装置及详细的实验结果。
上传时间: 2013-07-18
上传用户:yuanyuan123
基于机器视觉的硬币识别系统研究
上传时间: 2013-10-11
上传用户:guanliya