毕业论文 - 粮仓温度自动监测系统 - 图文(7)

2019-06-05 00:00

xxxx职业技专科毕业设计(论文)

DQ=1; jump(1); } else {

dat0=dat0&0xFE; } }

dat[i]=dat0; }

DQ=1; }

\子函数 #include

#define uchari unsigned char

extern unsigned char code asc[]={\#define LCD_Date P0 sbit RS =P2^5; sbit RW =P2^6; sbit E =P2^7;

void delay(void) //100uS,误差 0us {

unsigned char a,b; for(b=1;b>0;b--)

for(a=47;a>0;a--); }

void LCD_CMD(uchari cmd) {

E=0; RS=0; RW=0;

LCD_Date=cmd; E=1; delay(); E=0; }

void LCD_D(uchari Dat) {

E=0; RS=1; RW=0;

LCD_Date=Dat; E=1;

29

xxxx职业技专科毕业设计(论文)

delay(); E=0; }

void LCD_Init() {

LCD_CMD(0X38); delay();

LCD_CMD(0X0F); delay(); delay();

LCD_CMD(0X0c); delay();

LCD_CMD(0X06); delay(); delay(); }

void LCD_DAT(uchari add,uchari dat) {

LCD_CMD(0X80+add); LCD_D(dat); }

void LCD_String(uchari add,uchari *dat) {

uchari i=0;

LCD_CMD(add+0x80); while(dat[i]) {

LCD_D(dat[i]); i++; } }

\子函数

#define uchar unsigned char #include #include\sbit CE =P1^5; sbit CSN =P1^0; sbit SCLK =P1^4; sbit MOSI =P1^1; sbit MISO =P1^3; sbit IRQ =P1^2;

/*****************************

30

xxxx职业技专科毕业设计(论文)

*****************************/

uchar code address[]={0x01,0x00,0x03,0xaa,0x55}; #define data_width 32 #define add_width 5

void Delay(uchar time) {

while(time--); }

void Delay_ms(uchar time) //误差 0us {

unsigned char a,b,c; c=time;

for(;c>0;c--)

for(b=142;b>0;b--) for(a=2;a>0;a--); }

void Init_IO() {

Delay(255); CE =0; CSN =1; SCLK=0; }

uchar SPI_RW(uchar byte) //SPI读写 {

uchar i;

for(i=0;i<8;i++) // output 8-bit {

MOSI = (byte & 0x80); // 输出

byte = (byte << 1); // 准备保存数据 SCLK = 1; i++;

i--; // 稍做延时.

byte |= MISO; // 读出当前数据位 SCLK = 0; // 准备时钟 }

return(byte); // 返回数据 }

uchar NRF_WCMD(uchar cmd)//NRF写命令 {

uchar state;

31

xxxx职业技专科毕业设计(论文)

CSN =0;

state=SPI_RW(cmd); CSN =1;

return(state); }

uchar NRF_WriteReg(uchar reg,uchar value)//NRF写寄存器 {

uchar state;

CSN =0;

state=SPI_RW(T_REG+reg); SPI_RW(value); CSN =1;

return(state); }

uchar NRF_ReadReg(uchar reg) //NRF读寄存器 {

uchar state;

CSN =0;

SPI_RW(R_REG+reg); state=SPI_RW(0); CSN =1;

return(state); }

uchar NRF_ReadBuf(uchar reg,uchar *buf,uchar bytes)// NRF读缓冲区{

uchar state,i;

CSN =0;

state=SPI_RW(reg); for(i=0;i

return (state); }

uchar NRF_WriteBuf(uchar reg,uchar *buf,uchar bytes)//NRF写缓冲区 {

uchar state,i;

32

xxxx职业技专科毕业设计(论文)

CSN =0;

state=SPI_RW(reg); for(i=0;i

return (state); }

void NRF_Init() {

Init_IO();//IO口初始化 CE =0;

NRF_WriteReg(EN_AA, 0x03);// 允许通道0'1自动重发 NRF_WriteReg(EN_RXADDR, 0x03);//允许通道0'1接收 NRF_WriteReg(RF_SETUP, 0x07);//1Mbps--0dB NRF_WriteReg(SETUP_AW,0x03);//地址宽度

NRF_WriteReg(RX_PW_P0 ,data_width);//接收数据宽度 NRF_WriteReg(RF_CH ,0x0F);//接收频道

NRF_WriteBuf(T_REG+RX_ADDR_P0 ,address,add_width );//接收地址 NRF_WriteBuf(T_REG+TX_ADDR ,address,add_width );//发射地址

NRF_WriteReg(CONFIG,0x0f);//设置配置寄存器

CE=1;

Delay(255); }

void NRF_TxPacket(uchar *buf)//发射数据包 {

uchar status; CE=1;

NRF_WriteReg(EN_AA, 0x01);// 允许通道0自动重发 NRF_WriteReg(EN_RXADDR, 0x01);//允许通道0接收 NRF_WriteReg(RF_SETUP, 0x07);//1Mbps--0dB NRF_WriteReg(SETUP_AW,0x03);//地址宽度

NRF_WriteReg(SETUP_RETR,0X1A);//设置自动重发

NRF_WriteReg(RX_PW_P0 ,data_width);//接收数据宽度

NRF_WriteBuf(T_REG+RX_ADDR_P0,address,add_width );//接收地址 NRF_WriteBuf(T_REG+TX_ADDR ,address,add_width );//发射地址

NRF_WCMD(FLUSH_TX);//清TX_FIFO

status=NRF_ReadReg(STATUS);//读取状态

33


毕业论文 - 粮仓温度自动监测系统 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:成本会计案例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: