-
本代碼為編碼開關代碼,編碼開關也就是數字音響中的
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); }
標簽:
warshall
離散
實驗
上傳時間:
2016-06-27
上傳用戶:梁雪文以
-
#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
-
便攜式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型超聲診斷儀可在野外作業和搶險(諸如地震、抗洪)中發揮作用,同時也可在鄉村診所中完成對相關疾病的診斷工作。
標簽:
FPGA
超聲成像
上傳時間:
2013-05-18
上傳用戶:helmos
-
區域增長的算法實現: 1)根據圖像的不同應用選擇一個或一組種 子,它或者是最亮或最暗的點,或者是位 于點簇中心的點 2...通過像素集合的區域增長 算法實現: 區域A 區域B 種子像素增長.3)增長的規則 4)
結束條件.
標簽:
算法
像素
圖像
上傳時間:
2015-09-30
上傳用戶:wcl168881111111
-
Java編寫的表達式計算器, 即可以像我們書寫表達式那樣直接輸入計算表達式, 程序自動進行運算, 支持加減乘除冪運算以及判斷表達式如A?B C, 程序包含完整的Document和測試運行環境
標簽:
Document
表達式
Java
程序
上傳時間:
2013-12-21
上傳用戶:chenbhdt
-
車牌定位---VC++源代碼程序
1.24位真彩色->256色灰度圖。
2.預處理:中值濾波。
3.二值化:用一個初始閾值T對圖像A進行二值化得到二值化圖像B。
初始閾值T的確定方法是:選擇閾值T=Gmax-(Gmax-Gmin)/3,Gmax和Gmin分別是最高、最低灰度值。
該閾值對不同牌照有一定的適應性,能夠保證背景基本被置為0,以突出牌照區域。
4.削弱背景干擾。對圖像B做簡單的相鄰像素灰度值相減,得到新的圖像G,即Gi,j=|Pi,j-Pi,j-1|i=0,1,…,439 j=0,1,…,639Gi,0=Pi,0,左邊緣直接賦值,不會影響整體效果。
5.用自定義模板進行中值濾波
區域灰度基本被賦值為0。考慮到文字是由許多短豎線組成,而背景噪聲有一大部分是孤立噪聲,用模板(1,1,1,1,1)T對G進行中值濾波,能夠得到除掉了大部分干擾的圖像C。
6.牌照搜索:利用水平投影法檢測車牌水平位置,利用垂直投影法檢測車牌垂直位置。
7.區域裁剪,截取車牌圖像。
標簽:
1.24
256
圖像
閾值
上傳時間:
2013-11-26
上傳用戶:懶龍1988
-
1.24位真彩色->256色灰度圖。
2.預處理:中值濾波。
3.二值化:用一個初始閾值T對圖像A進行二值化得到二值化圖像B。
初始閾值T的確定方法是:選擇閾值T=Gmax-(Gmax-Gmin)/3,Gmax和Gmin分別是最高、最低灰度值。
該閾值對不同牌照有一定的適應性,能夠保證背景基本被置為0,以突出牌照區域。
4.削弱背景干擾。對圖像B做簡單的相鄰像素灰度值相減,得到新的圖像G,即Gi,j=|Pi,j-Pi,j-1|i=0,1,…,439 j=0,1,…,639Gi,0=Pi,0,左邊緣直接賦值,不會影響整體效果。
5.用自定義模板進行中值濾波
區域灰度基本被賦值為0。考慮到文字是由許多短豎線組成,而背景噪聲有一大部分是孤立噪聲,用模板(1,1,1,1,1)T對G進行中值濾波,能夠得到除掉了大部分干擾的圖像C。
6.牌照搜索:利用水平投影法檢測車牌水平位置,利用垂直投影法檢測車牌垂直位置。
7.區域裁剪,截取車牌圖像。
標簽:
Gmax-G
1.24
Gmax
閾值
上傳時間:
2014-01-08
上傳用戶:songrui
-
迭代法求最佳閾值
圖像為baboon.bmp
分別對R,G,B三個顏色求閾值,進行分割
標簽:
baboon
bmp
閾值
迭代法
上傳時間:
2017-09-10
上傳用戶:q123321