導航:首頁 > 操作系統 > 單片機rmt

單片機rmt

發布時間:2022-05-12 03:17:04

⑴ keil C51編程 幾個存數字的數組如何跟幾個字元串交叉合並成一個

如果你的數組是unsigned char類型要轉成unsigned int類型喲。要不會錯誤。
下面的是我在用的代碼里一條語句,將字元串Remoter xx寫入到一個發送緩存里,從第三個位元組開始。
tmp = sprintf((char*)&txBufUse[TX_PARA_LCTN_BASE+2],
"Remoter %d", (uint)rmtrEvtRmtr);

⑵ 請問單片機開發板是一次性使用的嗎能不能拆下來再次用的啊

你好!我的回答如下:
1)其實單片機開發板,這個詞語是分開的,單片機與開發板。單片機是單片機,開發板是開發板。
2)單片機和開發板都不是一次性使用的。所以拆下來在不損壞的情況下是可以再次使用的。

我額外的說下回答之外的話啊!
1)單片機就相當於一個精簡的電腦CPU,但是功能沒有其強大,網路裡面有其詳細的介紹
http://ke..com/link?url=_FO6x0Eayei4j47vD3l8T3MnfXla2
2)開發板是一個設計好的電路板,可以用來進行開發,上面的電路或是插槽都是已經設計好的。
網路裡面有其詳細的介紹http://ke..com/link?url=AbbezTFdLhfIsIdFGxx0PbR9ZEXd__-aK
3)單片機一般是插在開發板上的專用插槽中,才能使用的,並不是所以的開發板都能兼容所有的單片機。

⑶ 單片機的八位是什麼意思

單片機的八位是CPU能處理二進制的位數,8位單片機一次就只能處理8位二進制。

8位單片機最常用的是三個系列:

1、51系列:以intel MCS51為核心,很多公司都買了它的核心,生產自己的51單片機,主要有ATMEL公司(AT89S52等等),STC公司的(比如STC89C52RC),華邦,摩托羅拉,ST都有生產。

2、AVR系列:以ATMEL公司的ATmega16為代表。

3、PIC系列:以MICROCHIP公司的PIC16F877為代表。

另外,還有專用的工業單片機,平時看到得比較少,比如台灣的合泰、義隆,三星,這些單片機往往體積小,功能很強但比較專一,價格很便宜,比如開發設備很貴,一般人用不起。

(3)單片機rmt擴展閱讀:

單片機的應用

1、單片機在智能儀表中的應用單片機廣泛地用於各種儀器儀表,使儀器儀表智能化,並可以提高測量的自動化程度和精度,簡化儀器儀表的硬體結構,提高其性能價格比。

2、單片機在機電一體化中的應用機電一體化是械工業發展的方向。機電一體化產品是指集成機械技術、微電子技術、計算機技術於一體,具有智能化特徵的機電產品。

例如微機控制的車床、鑽床等。單片機作為產品中的控制器,能充分發揮它的體積小、可靠性高、功能強等優點,可大大提高機器的自動化、智能化程度。

3、單片機在實時控制中的應用單片機廣泛地用於各種實時控制系統中。例如,在工業測控、航空航天、尖端武器、機器人等各種實時控制系統中,都可以用單片機作為控制器。單片機的實時數據處理能力和控制功能,可使系統保持在最佳工作狀態,提高系統的工作效率和產品質量。

⑷ 求紅外接收頭的單片機程序

我給你貼個現成的,開發板上的例子,版權注釋部分本站過濾問題弄不上
慧凈電子:1天入門、8天學會、28天精通PIC單片機與C語言視頻教程配套程序源碼
#include<pic.h>
__CONFIG(0xFF32);
//晶元配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振盪

#define uchar unsigned char
#define uint unsigned int

#define bitset(var,bitno)((var)|=1<<(bitno))
#define bitclr(var,bitno)((var)&=~(1<<(bitno)))

//下面這段程序用的是結構體的位域,方便進行位操作
//看不懂的可要補一補C語言了
union {
struct
{
unsigned b0: 1;
unsigned b1: 1;
unsigned b2: 1;
unsigned b3: 1;
unsigned b4: 1;
unsigned b5: 1;
unsigned b6: 1;
unsigned b7: 1;
}
oneBit;
unsigned char allBits;
} myFlag;
#define CNT2_1 myFlag.oneBit.b1
#define CNT2_2 myFlag.oneBit.b2
#define CNT2_3 myFlag.oneBit.b3
#define CNT2 myFlag .allBits

static bit FLAGS ;
static bit Bitin;

union Csr
{ unsigned long i;
unsigned char Csra[4];
}myCsra;

#define RMT RE2 // ;遙控接收輸入腳位地址(RA。1)
#define BITIN 7 //遙控接收數據位位標志
uchar CNT0, CNT3, CNT4; //用戶臨時寄存器1--4
uint CNT1;
uchar TABADD; //數碼管顯示碼取碼用寄存器
uchar CSR0; //;遙控鍵碼反碼寄存器
uchar CSR1; //;遙控器鍵碼寄存器
uchar CSR2; //;遙控器用戶碼高8位寄存器
uchar CSR3; //;遙控器用戶碼低8位寄存器
uchar FLAGS2; //;臨時寄存器
uchar CSR2A ; //遙控接收32位數據暫存寄存器

const unsigned char table[] = {0x3f, 0x6, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x7, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};

// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f,

/****************************************************************************
* 名 稱:initial
* 功 能:系統初始化子程序
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void initial (void)
{
PORTA = 0;
ADCON1 = 7; // 設置RA口全部為普通數字IO口
TRISA = 0x00;
TRISE2 = 1; // 將RMT設置為輸入,其它所有IO口設置為輸出
TRISD = 0; // ;RC口全部為輸出
PORTD = 0xFF; //先讓數碼管全部不顯示
TRISC = 0xf0;
PORTC = 0x11;

}

/****************************************************************************
* 名 稱:RCV()
* 功 能:紅外掃描解碼
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void RCV()
{
if (!RMT)
{
CNT1 = 640; //4*256*10us 640*16=10。24ms
CNT2 = 0;
//RCV1
do
{ // ;先檢測引導碼的9MS低電平_____┏┓
// ;每一個循環16US
if (RMT)
CNT2 = CNT2++;
if (!RMT)
CNT2 = 0;
if (CNT2_2) //高電平大於8*10US=80US則為有效高電平,
break; //否則是一些干擾信號16*4=64us
}
while (CNT1--); //低電平大於4*256*10US=10.24MS則是錯誤脈沖

//RCV2
if (CNT2_2 && (0 < CNT1) && (CNT1 < 320)) //;低電平小於2*256*10US=5.12MS┏┒____
{ //320*16=5。12ms則是錯誤脈沖
CNT1 = 480; //;3*256*10us 480*16=7.68
CNT2 = 0;

//RCV3 //;每一個循環16US

do
{
if (!RMT)
CNT2 = CNT2++;
if (RMT)
CNT2 = 0;
if (CNT2_2) // 低電平大於8*10US=80US則為有效低電平,否則是一些干擾信號
break; //RCV4,否則是一些干擾信號16*4=64us
// 高電平大於3*256*10US=7.68MS則是錯誤的
}
while (CNT1--);

//RCV4

if (CNT2_2 && (0 < CNT1) && (CNT1 < 320)) //高電平小於1*256*10US=2.56MS則是錯誤的
{ //480-320=160 *16= 2.56ms
CNT3 = 32; //接收數據共32位,16位用戶碼,8位控制碼加8位控制碼的反碼
//RCV5
do
{
CNT2 = 0;
CNT0 = 86; //低電平大於256-170=86*10US=860US錯誤 86*10 __┌┐
CNT4 = 200; //高電平大於256-56=200*10US=2MS錯誤 200*10
//RCV5_HI
do
{ //;每一個循環10US
if (RMT)
CNT2 = CNT2++;
if (!RMT)
CNT2 = 0;
if (CNT2_3) //;高電平大於8*10US=80US則為有效高電平
break; //RCV6否則是一些干擾信號16*4=64us

//;低電平大於860US則是錯誤的
}
while (CNT0--);
//CV6
if ((CNT0 == 0) || (CNT2_3 == 0)) break;

CNT2 = 0;
//RCV6_LO
do
{ //┌┐__
if (!RMT)
CNT2 = CNT2++;
if (RMT)
CNT2 = 0;
if (CNT2_3) //低電平大於10*8US=80US則是有效低電平
break ; // COMPARE 否則是一些干擾信號16*4=64us
}
while (CNT4--); //高電平大於256-56=200*10US=2MS錯誤

if ((CNT4 == 0) || (CNT2_3 == 0)) break;

//OMPARE
CNT0 = (86 - CNT0) + (200 - CNT4) ;
//;減CNT0的值 等於實際低電平計數值
// ;減CNT4的值 等於實際高電平計數值
// ;將高低電平的計數加在一起並存入CNT0,通過比較高低電平總的時間來確定是1還是0
// ;總的值大於255(即時間大於255*10US=2.55MS)則錯誤 255*10=2.55
// ;總的時間小於70*10US=700US則是錯誤的 70*10=700
if (( (70 < CNT0) && (CNT0 < 130)) || ((160 < CNT0) && (CNT0 < 230) ) ) // ;130*10=1.3MS
{
if ((70 < CNT0) && (CNT0 < 130))
//COMPARE_H // ;時間大於1.3MS轉去確定是否1

Bitin = 0; //;時間在700US-1.3MS之間則是0
else // if (160<CNT0<230) //;小於160*10US=1.6MS,則錯誤
//;大於230*10US=2.3MS,則錯誤
Bitin = 1; // ;時間在1.6MS-2.3MS之間則是1
myCsra.i = myCsra.i >> 1; //;將每一位移入相應寄存器
if (Bitin)
bitset ( myCsra. Csra[3], 7);
else bitclr ( myCsra. Csra[3], 7);
}

else break;

}
while (CNT3--); //;是否接收完32位
CSR3 = myCsra. Csra[0];
CSR2 = myCsra. Csra[1];
CSR1 = myCsra. Csra[2];
CSR0 = myCsra. Csra[3];
CSR2A = ~CSR0; //;比較鍵碼的反碼取反後是否等於鍵碼
//;不等於則接收到的是錯誤的信息
// 將鍵碼送顯示
}

}

}

}

/****************************************************************************
* 名 稱:display()
* 功 能:數碼管顯示
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void display()
{

int i, j; //定義查表變數
i = CSR3 & 0x0f;
PORTD = table[i]; //送D口顯示
PORTA = 0x1;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR3 & 0xf0;
i = i >> 4; //右移4位
PORTD = table[i]; //送D口顯示
PORTA = 0x2;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR2 & 0x0f;
PORTD = table[i]; //送D口顯示,並顯示小數點
PORTA = 0x4;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR2 & 0xf0;
i = i >> 4;
PORTD = table[i]; //送D口顯示
PORTA = 0x6;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR1 & 0x0f;
PORTD = table[i]; //送D口顯示,並加上小數點
PORTA = 0x8;
NOP(); //延長一段時間,保證亮度
for (j = 0;j < 50;j++);
i = CSR1 & 0xf0;
i = i >> 4;
PORTD = table[i]; //送D口顯示
PORTA = 0x0A;
NOP(); //延長一段時間,保證亮度
for (j = 0;j < 50;j++);

}

/****************************************************************************
* 名 稱:main
* 功 能:主程序
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void main(void)
{
initial (); //系統初始化子程序
while (1)
{
RCV(); //遙控接收程序
display(); //解碼顯示程序
}
}

閱讀全文

與單片機rmt相關的資料

熱點內容
梯形圖是編譯還是解釋執行 瀏覽:471
錄屏好用的app哪個好用 瀏覽:635
一念逍遙新伺服器怎麼看 瀏覽:90
移動app的信用充話費在哪裡 瀏覽:500
單片機接感測器 瀏覽:72
免費pdf工具 瀏覽:380
pdf加密一機一碼 瀏覽:600
怎麼把百度雲資源壓縮 瀏覽:456
不會數學英語如何編程 瀏覽:88
如何能知道網站伺服器地址 瀏覽:648
程序員月薪5萬難嗎 瀏覽:138
如何評價程序員 瀏覽:803
雲虛機和伺服器的區別 瀏覽:403
廣西柳州壓縮機廠 瀏覽:639
arm開發編譯器 瀏覽:833
51單片機的核心 瀏覽:746
看電視直播是哪個app 瀏覽:958
將c源程序編譯成目標文件 瀏覽:787
再要你命3000pdf 瀏覽:558
ai軟體解壓軟體怎麼解壓 瀏覽:520