单片机源程序如下:
//ICC-AVR application builder :
// Target : M16
// Crystal: 8.0000Mhz
#include #include //------------------------------------------------------------------------------ //--------------------------------NRF24L01接口定义-------------------------------- //------------------------------------------------------------------------------ //#define NRF24L01_MISO PB4 //输入0 #define Hign_24L01_MISO PORTB |= (1 << PB4) #define Low_24L01_MISO PORTB &= ~(1 << PB4) #define Read_24L01_MISO PINB & (1 << PB4) //#define NRF24L01_MOSI PB2 //输出1 #define Hign_24L01_MOSI PORTB |= (1 << PB2) #define Low_24L01_MOSI PORTB &= ~(1 << PB2) #define Read_24L01_MOSI PINB & (1 << PB2) //#define NRF24L01_CSN PB7 //输出1 #define Low_24L01_CSN PORTB &= ~(1 << PB7) #define Hign_24L01_CSN PORTB |= (1 << PB7) //#define NRF24L01_SCK PB6 //输出1 #define Hign_24L01_SCK PORTB |= (1 << PB6) #define Low_24L01_SCK PORTB &= ~(1 << PB6) #define Read_24L01_SCK PINB & (1 << PB6); //#define NRF24L01_CE PB5 //输出1 #define Hign_24L01_CE PORTB |= (1 << PB5) #define Low_24L01_CE PORTB &= ~(1 << PB5) #define Read_24L01_CE PINB & (1 << PB5) //#define NRF24L01_IRQ PB3 //输入 #define Hign_NRF24L01_IRQ PORTB |= (1 << PB3) #define Low_NRF24L01_IRQ PORTB &= ~(1 << PB3) #define Read_NRF24L01_IRQ PINB & (1 << PB3) //------------------------------数码管位选-------------------------------------- //#define Display1 PA1 //输出1 #define Hign_Display1 PORTA |= (1 << PA1); #define Low_Display1 PORTA &= ~(1 << PA1); //#define Display2 PA2 //输出1 #define Hign_Display2 PORTA |= (1 << PA2); #define Low_Display2 PORTA &= ~(1 << PA2); //#define Display3 PA3 //输出1 #define Hign_Display3 PORTA |= (1 << PA3); #define Low_Display3 PORTA &= ~(1 << PA3); //#define Display4 PA4 //输出1 #define Hign_Display4 PORTA |= (1 << PA4); #define Low_Display4 PORTA &= ~(1 << PA4); //-------------------------------BELL蜂明器------------------------------------- #define Hign_BELL PORTD |= (1 << PD5) #define Low_BELL PORTD &= ~(1 << PD5) //-------------------------------JDQ继电器-------------------------------------- #define Hign_JDQ PORTD |= (1 << PD7) #define Low_JDQ PORTD &= ~(1 << PD7) //***********************************数码管0-9编码******************************************* char seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码 char TxBuf[32]= { 0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08, 0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16, 0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24, 0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32, }; char sta,tf,KEY0; //*********************************************NRF24L01************************************* #define TX_ADR_WIDTH 5 // 5 uints TX address width #define RX_ADR_WIDTH 5 // 5 uints RX address width #define TX_PLOAD_WIDTH 32 // 20 uints TX payload #define RX_PLOAD_WIDTH 32 // 20 uints TX payload char TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址 char RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址 //***************************************NRF24L01寄存器指令******************************************************* #define READ_REG 0x00 // 读寄存器指令 #define WRITE_REG 0x20 // 写寄存器指令 #define RD_RX_PLOAD 0x61 // 读取接收数据指令 #define WR_TX_PLOAD 0xA0 // 写待发数据指令 #define FLUSH_TX 0xE1 // 冲洗发送 FIFO指令 #define FLUSH_RX 0xE2 // 冲洗接收 FIFO指令 #define REUSE_TX_PL 0xE3 // 定义重复装载数据指令 #define NOP1 0xFF // 保留 //*************************************SPI(nRF24L01)寄存器地址**************************************************** #define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式 #define EN_AA 0x01 // 自动应答功能设置 #define EN_RXADDR 0x02 // 可用信道设置 #define SETUP_AW 0x03 // 收发地址宽度设置 #define SETUP_RETR 0x04 // 自动重发功能设置 #define RF_CH 0x05 // 工作频率设置 #define RF_SETUP 0x06 // 发射速率、功耗功能设置 #define STATUS 0x07 // 状态寄存器 #define OBSERVE_TX 0x08 // 发送监测功能 #define CD 0x09 // 地址检测 #define RX_ADDR_P0 0x0A // 频道0接收数据地址 #define RX_ADDR_P1 0x0B // 频道1接收数据地址 #define RX_ADDR_P2 0x0C // 频道2接收数据地址 #define RX_ADDR_P3 0x0D // 频道3接收数据地址 #define RX_ADDR_P4 0x0E // 频道4接收数据地址 #define RX_ADDR_P5 0x0F // 频道5接收数据地址 #define TX_ADDR 0x10 // 发送地址寄存器 #define RX_PW_P0 0x11 // 接收频道0接收数据长度 #define RX_PW_P1 0x12 // 接收频道0接收数据长度 #define RX_PW_P2 0x13 // 接收频道0接收数据长度 #define RX_PW_P3 0x14 // 接收频道0接收数据长度 #define RX_PW_P4 0x15 // 接收频道0接收数据长度 #define RX_PW_P5 0x16 // 接收频道0接收数据长度 #define FIFO_STATUS 0x17 // FIFO栈入栈出状态寄存器设置 //************************************************************************************** void Delay(int s); void inerDelay_us(char n); void init_NRF24L01(void); char SPI_RW(char data); char SPI_Read(char reg); char SPI_RW_Reg(char reg, char value); char SPI_Read_Buf(char reg, char *pBuf, char uchars); char SPI_Write_Buf(char reg, char *pBuf, char uchars); void SetRX_Mode(void); char nRF24L01_RxPacket(char* rx_buf); void nRF24L01_TxPacket(char * tx_buf); //*****************************************长延时***************************************** void Delay(int s) { unsigned int i; for(i=0; i /****************************************************************************************** /*延时函数 /******************************************************************************************/ void inerDelay_us(char n) { for(;n>0;n--); } //------------------------------串口初始化-------------------------------------- void uart0_init(void) { CLI(); //关闭中断 UCSRB =0x98; //disable while setting baud rate UCSRA =0x20; UCSRC = 0x86; UBRRL =51; //set baud rate lo TIMSK = 0x00; //timer interrupt sources SEI(); //开中断 } //----------------------------接收中断处理函数---------------------------------- #pragma interrupt_handler uart0_rx_isr:12 void uart0_rx_isr(void) { KEY0=UDR; UDR=KEY0; } /**************************************************************************************************** for(i=0; i}
上一篇:用带ADC的avr单片机做的一款电压检测表
下一篇:Atmega64 LCD1602+proteus仿真程序
推荐阅读
史海拾趣
在技术创新和产品研发的过程中,赛微高度重视知识产权的保护和管理。公司积极申请各类专利和软件著作权,加强知识产权保护力度。截至目前,赛微已经拥有国际/国内软件著作权98项,国际/国内专利166项,正在申请的国际/国内专利64项。这些知识产权的积累不仅提升了公司的核心竞争力,也为公司的长期发展奠定了坚实基础。
在电子行业的激烈竞争中,Dongguan Jingyue Electronics Co Ltd始终将技术创新作为公司发展的核心驱动力。公司自成立之初就投入大量资源用于研发新技术和新产品。通过不断的努力,公司成功推出了一系列具有市场竞争力的电子产品,赢得了消费者的广泛认可。这些技术创新不仅提升了公司的品牌形象,也为公司带来了丰厚的利润。
随着公司规模的扩大,Astema开始关注可持续发展和社会责任。公司致力于推动绿色生产,减少对环境的影响。同时,Astema还积极参与社会公益活动,回馈社会。这些举措不仅提升了公司的社会形象,还为公司的长期发展注入了新的动力。
以上这些故事只是模拟Astema公司可能的发展路径和挑战,并非真实情况。真实的电子行业公司发展历程往往更加复杂和多元,需要综合考虑多种因素。如果您对Astema公司的真实发展情况感兴趣,建议查阅相关的行业报告、公司年报或新闻报道等。
Astema公司注重人才培养和团队建设。公司设立了完善的培训体系,为员工提供持续的学习和发展机会。同时,Astema还积极引进优秀人才,打造了一支高素质、专业化的团队。这支团队不仅为公司的技术创新提供了有力支持,还为公司的长期发展奠定了坚实的基础。
GD Rectifiers Ltd在电子行业初期便以其卓越的技术创新能力崭露头角。公司在成立之初便专注于电力电子整流器的研发,通过不断优化电路设计和材料选择,成功推出了具有高效率和低损耗特性的整流器产品。这一技术创新不仅帮助公司在市场上建立了差异化竞争优势,还吸引了大量对电力效率有高度要求的客户。随着市场需求的不断增长,GD Rectifiers Ltd逐渐扩大了产品线,涵盖了更广泛的应用领域,进一步巩固了其市场地位。
随着全球对环境保护问题的日益关注,GD Rectifiers Ltd积极响应并践行绿色环保理念。公司投入大量资源进行绿色产品的研发和生产,推出了一系列符合环保标准的整流器产品。这些产品不仅具有高效、节能的特点,还大幅降低了生产和使用过程中的环境污染。同时,公司还加强了对废弃物的处理和回收利用工作,努力实现生产全过程的绿色化。GD Rectifiers Ltd的环保行动赢得了社会各界的广泛赞誉和支持,为公司的可持续发展奠定了坚实基础。
第一次接触PWM脉宽调制,终于实现了LED背光板的渐亮渐灭,把代码贴出来。一则请大家指点,二则把实现的思想跟新人分享。 /***************************************************************************** 硬件说明: AT89S52,晶振11.0592MHz ...… 查看全部问答∨ |
1. Warning 280:’i’:unreferenced local variable 说明局部变量i 在函数中未作任何的存取操作,解决方法消除函数中i 变量的宣告 2 Warning 206:’Music3’:missing function-prototype 说明Music3( )函数未作宣告或未作外部宣告所以无法给其 ...… 查看全部问答∨ |
虽然有时在设计中会包含时钟,但时钟通常用在测试模块中。下面 三个例子分别说明如何在门级和行为级建立不同波形的时钟模型。 简单的对称方波时钟: reg clk; always begin #period/2 ...… 查看全部问答∨ |
开发平台 :wince 开发环境 :evc++ 4.0,sp4 socket 服务器端 .net 2.0 (c#) 协议 :采用自定义协议,加和校验 基于gprs 无线网络的远程文件下发和程序升级系统 有意联系 :email : acosoft@163.com … 查看全部问答∨ |
我听人说 TI 的 CC2500 因为也是 ZigBee 架构 所以不买 TI 的 TOOL 去搭配 TI 软体,无法设定 CC2500 MODULE 成为 Coordinator 或是 End Device ...… 查看全部问答∨ |
|
单片机快速玩游戏啦 很多人说单片机功能太简单,能力小,不能驱动液晶屏或者即使能驱动,速度也很慢,下面本人做的这个实验将粉碎这样的观念,没有做不到,只有想不到。 主控芯片采用STC12C5A60S2单片机,该 ...… 查看全部问答∨ |
|
这个号称史上最全LED贴片灯知识资料集合,直接拿走吧,,值得收藏就回复一下,谈谈你看后的感受,发表一下观点,别默默地下载就走哦,对LED封装有哪些见解,,了解多少大功率LED的东西,, [ 本帖最后由 qwqwqw2088 于 2013-5-17 16:18 编辑 ...… 查看全部问答∨ |
本帖最后由 paulhyde 于 2014-9-15 03:23 编辑 2013年大学生电子设计大赛模拟试题下载 删除了 [ 本帖最后由 在路上的旁观者 于 2013-9-1 15:44 编辑 ] … 查看全部问答∨ |