c語言發射程序,講解c語言程序的軟件

本文目錄一覽:

如何運用鏈表實現子彈連續發射 C語言 求代碼

includestdio.h#includestdlib.h#includestring.hstruct people{    char name[10];    int age;    struct people * next;};int main(){    struct people * head=NULL;    struct people * prev , * current;    int flag=1;    while(flag!=0)    {        printf(“請輸入學生姓名,年齡:(年齡輸入0結束所有輸入工作)\n”);        current=(struct people *)malloc(sizeof(struct people));        if(head==NULL)            head=current;        else            prev-next=current;        current-next=NULL;        scanf(“%s”,¤t-name);        scanf(“%d”,¤t-age);        prev=current;        flag=current-age;    }    printf(“Output:\n”);    if(head==NULL)        printf(“無資料。\n”);    else    {        current=head;        while(current-next!=NULL)        {            printf(“姓名:%s\n年齡:%d\n\n”,current-name,current-age);            current=current-next;        }    }}

51單片機驅動NRF2401的接受和發射的C語言程序

發送#include reg52.h

#includeintrins.h

// 常量定義

#define uchar unsigned char

#define uint unsigned int

#define BYTE_BIT0 0x01

#define BYTE_BIT1 0x02

#define BYTE_BIT2 0x04

#define BYTE_BIT3 0x08

#define BYTE_BIT4 0x10

#define BYTE_BIT5 0x20

#define BYTE_BIT6 0x40

#define BYTE_BIT7 0x80

//—————————位變量定義—————————————-

bdata uchar DATA_BUF; //用於ByteRead和ByteWrite 函數

#define DATA7 ((DATA_BUFBYTE_BIT7)!=0)

#define DATA0 ((DATA_BUFBYTE_BIT0)!=0)

uchar TxBuf[28]={

0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,

0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,

0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,

0x25,0x26,0x27,0x28,};// ——————————RF2401_Pins 對應引腳 ———————–

sbit PWR_UP = P1^3;

sbit CE = P1^2;

// sbit DR2 = P1^7; //暫時沒有用到

// sbit CLK2 = P1^1;

// sbit OUT2 = P1^6;

sbit CS = P1^0;

sbit DR1 = P1^5;

sbit CLK1 = P1^4;

sbit DATA = P3^3;

//—————————————-LED顯示端口—————————————————

sbit LED=P3^5;

//——————————————————————————-

unsigned char TxAddress[4]={0xcc,0xcc,0xcc,0xcc}; //發送地址

//———————nRF-Configuration-Register 配置信息 ——————————

//芯片測試用,無需修改

#define TEST_2 0x8E // MSB D143-D136

#define TEST_1 0x08 // D135~D128

#define TEST_0 0x1c // D127~D120

// 注意 DATAx_W+ADDRx_W+CRC 的值必須小於256!單個數據包的大小必須小於32位元組(256位)

#define DATA2_W 0x10 //未用到–0x10=2位元組 //頻道2發送/接受數據長度(單位:Bit)

#define DATA1_W 0xE0 //28位元組 16 位 //頻道1發送/接受數據長度(單位:Bit)

//頻道2接收地址 -頻道2未使用

#define ADDR2_4 0x00

#define ADDR2_3 0x1c

#define ADDR2_2 0xcc

#define ADDR2_1 0xcc

#define ADDR2_0 0xcc

// 頻道1接收地址 (當前模塊地址) -只是用頻道1

#define ADDR1_4 0x00

#define ADDR1_3 0xcc

#define ADDR1_2 0xcc

#define ADDR1_1 0xcc

#define ADDR1_0 0xcc

//接收地址位置設置–CRC設置

#define ADDR_W 0x10 //0x10 =2位元組 //發送/接收地址寬度(單位:Bit)

#define CRC_L 0x1 //CRC模式 0:8位 1:16位

#define CRC_EN 0x1 //CRC校驗 0:禁止 1:啟用

//頻道設置–發送方式設置–速率設置–頻率設置

#define RX2_EN 0x0 //雙頻道功能 0:禁用 1:啟用

#define CM 0x1 //0:Direct Mode 1: Shockburst Mode

#define RFDR_SB 0x1 //傳輸速率 0:250k 1: 1M (250k比1M傳輸距離遠)

#define XO_F 0x3 //16M D12 D11 D10 確定 5種頻率

#define RF_PWR 0x3 //信號發射功率—0DB

//

#define RF_CH 0x2 //Channal 頻率設置Channel=2400MHz+RF_CH*1.0MHz

#define RXEN 0x0 //0:TX 1:RX

//將設置信息組合成每個位元組的數據信息

#define RFconfig_Bit0 TEST_2

#define RFconfig_Bit1 TEST_1

#define RFconfig_Bit2 TEST_0

#define RFconfig_Bit3 DATA2_W

#define RFconfig_Bit4 DATA1_W

#define RFconfig_Bit5 ADDR2_4

#define RFconfig_Bit6 ADDR2_3

#define RFconfig_Bit7 ADDR2_2

#define RFconfig_Bit8 ADDR2_1

#define RFconfig_Bit9 ADDR2_0

#define RFconfig_Bit10 ADDR1_4

#define RFconfig_Bit11 ADDR1_3

#define RFconfig_Bit12 ADDR1_2

#define RFconfig_Bit13 ADDR1_1

#define RFconfig_Bit14 ADDR1_0

#define RFconfig_Bit15 (ADDR_W2|CRC_L1|CRC_EN)

#define RFconfig_Bit16 (RX2_EN7|CM6|RFDR_SB5|XO_F2|RF_PWR)

#define RFconfig_Bit17 (RF_CH1|RXEN)

//通過宏定義將18位元組的寄存器參數按照各個功能分解,參照DATASHHET

uchar code nRF2401_Conf[18]=

{

RFconfig_Bit0,RFconfig_Bit1,RFconfig_Bit2,

RFconfig_Bit3,

RFconfig_Bit4,

RFconfig_Bit5,RFconfig_Bit6,RFconfig_Bit7,RFconfig_Bit8,RFconfig_Bit9,

RFconfig_Bit10,RFconfig_Bit11,RFconfig_Bit12,RFconfig_Bit13,RFconfig_Bit14,

RFconfig_Bit15,

RFconfig_Bit16,

RFconfig_Bit17

};

//——————————————函數申明——————————————

void Delay_us(uchar n);

void DoClock();

void Delay_ms(uchar n);

unsigned char Spi_ByteRead(void);

void Spi_ByteWrite(unsigned char send);

void Config2401(void);

void SetTxMode(void);

void nRF2401_TxPacket(uchar TxBuf[]);

//——————————–11.0592M晶振 n=100 868us 左右——————————-

void Delay_us(uchar n)

{

uint i;

for(i=0;in;i++);

}

//—————————————— —————————————–

void Delay_ms(uchar n)

{

unsigned int i,j,k; for(i=0;in;i++)

{

for(k=0;k5;k++)

{

for(j=0;j200;j++);

}

}

}

/*

//————————–SPI讀——————————————

unsigned char Spi_ByteRead(void)

{

unsigned char i = 0;

for (i=0; i8; i++)

{

DATA_BUF = DATA_BUF 1;

CLK1 = 1;

DATA = 1; //設置為輸入狀態

if (DATA) //讀取最高位,保存至最末尾,通過左移位完成整個位元組

{

DATA_BUF |= BYTE_BIT0;

}

else

{

DATA_BUF = ~BYTE_BIT0;

}

CLK1 = 0;

}

return DATA_BUF;

}*/

//———————————-SPI寫—————————————–

void Spi_ByteWrite(unsigned char send)

{

unsigned char i; DATA_BUF = send; CLK1 = 0; for (i=0; i8; i++)

{

if (DATA7) //總是發送最高位

{

DATA = 1;

}

else

{

DATA = 0;

}

CLK1 = 1;

DATA_BUF = DATA_BUF 1;

CLK1 = 0;

}

}

//—————————–配置2401——————————————–

void Config2401(void)

{

uint i;

uchar variable1;

PWR_UP=1; //上電

CE=0;

CS=1; //使RF2401進入配置方式

Delay_ms(3); //從上電到進入配置模式需要3ms的延時(最少)

for(i=0;i18;i++) //輸入3個測試位元組15個配置位元組共 18Byte

{

variable1=nRF2401_Conf[i];

Spi_ByteWrite(variable1);

}

CS=0; //Disable CS —–standby mode

DATA=0;

Delay_us(100);

}

//——————————–設置為發送模式 —————————-

void SetTxMode(void)

{

//——————————-設置為配置模式———————————-

PWR_UP=1; //上電

CE=0;

CS=1; //進入配置模式

Delay_us(100);

DATA=0; //配置寄存器0位元組RXEN 設置為0: 發送模式

CLK1=1;

CLK1=0;

//—————————-設置為 Activemodes(TX)——————————

CS=0;

CE=1; //set standby mode

Delay_us(100);

}

//——————————–nRF 數據發送函數——————————–

void nRF2401_TxPacket()

{

int i;

uchar variable2;

CE=1;

for(i=0;i2;i++) //寫入接受地址(按位元組對齊)

{

variable2=TxAddress[i];

Spi_ByteWrite(variable2);

}

for(i=0;i(28);i++) //寫入接受地址(按位元組對齊)

{

variable2=TxBuf[i];

Spi_ByteWrite(variable2);

}

CE=0; //CE配置低使發送有效

Delay_us(100); //時鐘信號高電平有效

}

//————————————主函數—————————————

main()

{

Config2401();

while(1)

{

nRF2401_TxPacket();

SetTxMode();

LED=0; Delay_ms(10);LED=1; Delay_ms(10);

}

}

單片機程序火箭發射,倒計時和推送都有,用C語言編寫

#include iostream

#include vector

#include algorithm

using namespace std;

int is_right(int a[],int k)

{

int jian_ge=a[1]-a[0];

int count_num=0;

for(int i=0; ia href=”;tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9nhndrAnLnAnkmHf3rH0d0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnH6vnW0vrHcLnjR1nWmYnj6vPs” target=”_blank” class=”baidu-highlight”k-1/a; i++)

{

if(a[i+1]-a[i]==jian_ge)

{

count_num++;

}

}

return count_num==a href=”;tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9nhndrAnLnAnkmHf3rH0d0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnH6vnW0vrHcLnjR1nWmYnj6vPs” target=”_blank” class=”baidu-highlight”k-1/a?true:false;

}

int main()

{

int i;

cini;

vector char result;

vector char :: iterator it;

for(int j=1; j=i; j++)

{

int k;

cink;

int a[k];

for(int m=0; mk; m++)

{

cina[m];

}

if(is_right(a,k)==1)

{

result.push_back(‘Y’);

}

else

{

result.push_back(‘N’);

}

}

// reverse(result.begin(),result.end());

for(it=result.begin(); it!=result.end(); it++)

{

cout*itendl;

}

return 0;

}

用C語言編寫的紅外發射與接收程序

給你一段430單片機遙控器解碼的程序吧,也就是接收部分

畢竟世界太現實只能這麼幫你

#ifndef _IR_

#define _IR_

char t0,t1,t2;

uchar IR;

void DelayIR()

{

uint i=130;

while(i–);

}

void init_port2(void)

{

P2DIR=~BIT0;

P2SEL=~BIT0;

P2IES|=BIT0;

P2IE|=BIT0;

}

#pragma vector=PORT2_VECTOR

__interrupt void PORT2_ISR(void)

{

char CounterIR;

P2IES=~BIT0;

if(P2IFGBIT0)

{

P2IFG=~BIT0;

}

CounterIR=0;

while(!(P2INBIT0))

{

DelayIR();

CounterIR++;

}

if(CounterIR85)

{

if(CounterIR95)

{

t1++;

for(char k=0;k17;k++)

{

CounterIR=0;

while((P2INBIT0)(CounterIR50))

{

DelayIR();

CounterIR++;

}

CounterIR=0;

while((!(P2INBIT0))(CounterIR10))

{

DelayIR();

CounterIR++;

}

}

for(char j=0;j8;j++)

{

CounterIR=0;

while((P2INBIT0)(CounterIR25))

{

DelayIR();

CounterIR++;

}

IR=1;

if(CounterIR11)

IR|=BIT0;

CounterIR=0;

while((!(P2INBIT0))(CounterIR10))

{

DelayIR();

CounterIR++;

}

}

if((IR!=0xff)(IR!=0x00))

{

if(!(flagdataflag))

{

if(IR==0x22)

{

flag|=runflag;

}

else

{

Tar[0]=Tar[1];

Tar[1]=Tar[2];

Tar[2]=Tar[3];

Tar[3]=Tar[4];

switch (IR)

{

//case 0x22 : flag|=runflag;break;

case 0x68 : Tar[4]=0;flag|=dataflag;break;

case 0x30 : Tar[4]=1;flag|=dataflag;break;

case 0x18 : Tar[4]=2;flag|=dataflag;t2++;break;

case 0x7a : Tar[4]=3;flag|=dataflag;break;

case 0x10 : Tar[4]=4;flag|=dataflag;break;

case 0x38 : Tar[4]=5;flag|=dataflag;break;

case 0x5a : Tar[4]=6;flag|=dataflag;break;

case 0x42 : Tar[4]=7;flag|=dataflag;break;

case 0x4a : Tar[4]=8;flag|=dataflag;break;

case 0x52 : Tar[4]=9;flag|=dataflag;break;

default : break;

}

}

}

}

IR=0;

}

}

for(int m=0;m250;m++)

DelayIR();

P2IES|=BIT0;

}

#endif

請採納。

求一份基於51單片機4X4矩陣鍵盤紅外發射C語言程序,最好附原理圖哦!!

#include “reg52.h”

sbit ir=P2^0;//紅外發射管控制腳,使用24M晶振

sbit led = P2^1;

sbit ka=P1^0;

sbit kb=P1^1;

sbit kc=P1^2;

sbit kd=P1^3;

unsigned int count, set_count; //中斷計數,設定中斷次數

bit irflag,keyflag; //紅外發送標誌位,按鍵標誌位

unsigned char irsys[]={0x00,0xff};//16位用戶碼

unsigned char irdata,ircode; //發送的紅外數據

//—————————————————————————

void delay(unsigned int a)//延時約1ms,晶振24M ,此處延時不需很精確

{

unsigned char i;

while(–a!=0)

for(i=300;i0;i–); //若是12M晶振i=125

}

//—————————————————————————

void keyscan() // 按鍵掃描

{

if(ka==0)

{ delay(5);

while(!ka);

keyflag=1;irdata=0x0a;

} //a鍵按下,則發射數據0x0a

if(kb==0)

{ delay(5);

while(!kb);

keyflag=1;irdata=0x0b;

} //a鍵按下,則發射數據0x0a

if(kc==0)

{ delay(5);

while(!kc);

keyflag=1;irdata=0x0c;

} //a鍵按下,則發射數據0x0a

if(kd==0)

{ delay(5);

while(!kd);

keyflag=1;irdata=0x0d;

} //a鍵按下,則發射數據0x0a

}

//—————————————————————————

void ir_sendbyte() //紅外發送一個位元組數據

{

unsigned char i;

for(i=0;i8;i++) //發送8位數據

{

set_count=43;//35; //發送編碼中的0.56ms高電平 (//後為12M晶振下的數值)

irflag=1; //啟動紅外發射二極管發射

count=0; //中斷計數先清0

TR0=1; //開啟定時器0

while(countset_count); //等待發送完

TR0=0; //關閉定時器0

if(ircode0x01) set_count=130;//130; //判斷紅外編碼最低位,若為1則1.69ms的低電平 (//後為12M晶振下的數值)

else set_count=43;//35; //為0則0.565ms的低電平 (//後為12M晶振下的數值)

irflag=0; //低電平則不發射

count=0; //中斷計數清0

TR0=1; //開啟定時器0

while(countset_count); //等待發送完

TR0=0; //關閉定時器0

ircode=ircode1; //將數據右移,即從低位到高位發送

}

}

//—————————————————————————

void ir_send() //發送紅外數據

{

set_count=692;//672; //發送編碼中的引導碼(9ms高電平+4.5ms低電平) (//後為12M晶振下的數值) tc9012

irflag=1; //啟動紅外發射二極管發射

count=0; //中斷計數清0

TR0=1;

while(countset_count);

TR0=0;

set_count=346;//336; //發送編碼中的4.5ms低電平(//後為12M晶振下的數值)

irflag=0; //低電平則不發射

count=0;

TR0=1;

while(countset_count); //等待發送完

TR0=0;

ircode=irsys[0]; //發送16位用戶碼的前1-8位

ir_sendbyte();

ircode=irsys[1]; //發送16位用戶碼的前9-16位

ir_sendbyte();

ircode=irdata; //發送8位數據碼

ir_sendbyte();

ircode=~irdata; //發送8位數據反碼

ir_sendbyte();

set_count=43;//35; //發送編碼中的0.56ms高電平 (//後為12M晶振下的數值)

irflag=1;

count=0;

TR0=1;

while(countset_count);

TR0=0;

ir=1;

delay(23); //延時23ms(編碼中的23ms低電平)

set_count=692;//670; //發送編碼中的引導碼(9ms高電平+4.5ms低電平) (//後為12M晶振下的數值)

irflag=1;

count=0;

TR0=1;

while(countset_count);

TR0=0;

set_count=346;//336; //發送編碼中的4.5ms低電平(//後為12M晶振下的數值)

irflag=0;

count=0;

TR0=1;

while(countset_count);

TR0=0;

set_count=43;//35; //發送編碼中的0.56ms高電平 (//後為12M晶振下的數值)

irflag=1;

count=0;

TR0=1;

while(countset_count);

TR0=0;

ir=1; //發射完了關閉紅外發射二極管

}

//—————————————————————————

void timer0_init() //定時器初始化

{

EA=1;

TMOD=0x02; //定時0 8位自動重裝模式

ET0=1;

TH0=0xe6;//0xf3; //定時13us,38K紅外矩形波,晶振24M (//後為12M晶振下的數值)

TL0=0xe6;

}

//—————————————————————————

void main()

{

timer0_init(); //定時0初始化

count=0; //中斷計數先清0

irflag=0; //紅外發射標誌先置0

while(1)

{

keyscan(); //鍵值掃描

if(keyflag) //若有按鍵按下

{

led = 0;

delay(10);

ir_send(); //發送紅外編碼

delay(500);

keyflag=0; //按鍵標誌清零

delay(100);

}

else

{

led = 1;

}

}

}

//—————————————————————————

void timer0() interrupt 1 //定時器0中斷

{

count++;

if(irflag==1) ir=~ir; //有發射標誌,則發射38khz的矩形波

else ir=1; //否則不發射,即相當於發射編碼中的低電平

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/186525.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 05:47
下一篇 2024-11-27 05:47

相關推薦

  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python腳本控制其他軟件

    Python作為一種簡單易學、功能強大的腳本語言,具有廣泛的應用領域,在自動化測試、Web開發、數據挖掘等領域都得到了廣泛的應用。其中,Python腳本控制其他軟件也是Python…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 量化交易軟件哪個好?

    量化交易軟件是為量化交易而設計的工具,能夠用程序化方法對市場數據進行分析和交易決策。那麼,哪個量化交易軟件最好呢?下面從幾個方面進行詳細闡述。 一、交易功能 交易功能是量化交易軟件…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29

發表回復

登錄後才能評論