单片机课程设计stc89c52+nrf24l01

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
lcd1602_disp_char('I');
lcd1602_disp_char('N');
}
if(b==0)
{
lcd1602_disp_char('O');
lcd1602_disp_char('U');
lcd1602_disp_char('T');
}
}
}
}
NRF24L01_MISO= P1^0;
NRF24L01_MOSI= P1^1;
物联网的未来是无线美好的,它将深刻改变着我们的生活。
NRF24L01_SCK= P1^2;
NRF24L01_CSN= P1^3;
NRF24L01_CE= P1^4;
NRF24L01_IRQ= P3^2;
发送端:
数码管对应P1口。
按键对应P2口。
接收端:
LCD
LCD1602_RS = P1^7;
LCD1602_RW = P1^6;
LCD1602_EN = P1^5;
lcd1602_disp_char('I');
lcd1602_disp_char('B');
lcd1602_disp_char(' ');
status = nrf24l01_recv(rx_buf);
if(status & 0x40)
{
lcd1602_set_point(0, 1);
lcd1602_disp_char('T');
LCD1602_DATA P2
三、选题方案
智能图书馆:
8个按键分别对应八本书。按下键就会发送对应的书目号到图书馆中心处理器,处理器中存有书目在或借出的数据。并返还到大屏幕上,可以直观的了解到书是否在图书馆。
四、系统原理图
五、程序精选
参见软件设计方案。
六、总结
通电按下开关以后,发射端按下书目代号,接收端能够很快反映出书本在库情况。
七、展望:
物联网系统在不断向前发展,应用也会越来越广泛。我们这个系统,随着学习知识的累积将会加以完善和升级,例如结合手机和pad代替发射端,用更高级的中央处理系统作为接收端,通过wifi将手中的终端或者app与中心处理器连接,实现智能化图书馆功能,再也不用一个app就能知道书本的借阅情况。也不用再去排队借书了,在书本上添加二维码标志,手机扫一扫就可以借书,还书时只需将书本放入借出时的位置就可以实现还书。在管理方面将会大幅减少图书管理员的人数。软件方面,可以实现服务器的互动,在线阅览,足不出户可以享受图书馆的服务。
{
keyValue = GPIO_KEY;
i = 0;
while ((i<50) && (GPIO_KEY != 0xFF))//检测按键是否松开
{
Delay10ms(1);
i++;
}
}
}
//GPIO_KEY在引脚定义中为#define GPIO_KEY P2对应P2口。
(3)主程序跳转到子函数部分:
在焊接过程中,学会了很多经验,以后焊板子之前现在纸上或者用AD软件画好图,这样走线的时候就能避免飞线和走线干扰复杂的情况。对焊接的板子美观度也有所提升。编程方面,要认真细心,可能语法上没有问题,但是在调试中会出现各种奇怪的突发情况就需要去查,很费时间,所以编写的时候一定要认真细心。另外就是不要轻易放弃,有时候成功就在下一秒钟,我的的程序改了3天,都是因为一个问题,发送完会自动卡死不能继续进行,程序改了很多遍,也请教了很多人也没有得到解决,正当我要放弃的时候,无意间修改了一个引脚的定义,就成功了,成功的喜悦让我觉得特别有成就感。所以不管经历多少失败一定要坚持要相信自己可以成功。
系统的应用范围不仅仅局限于智能图书馆,应用到家居。智能家居系统也呼之既出。将各种各样的传感器通过物联网连接起来,用高级的中央处理系统,实现运算和控制。例如,智能的根据房内亮度自动调节的灯和窗帘,根据个人的洗澡规律情况,自动加热的热水器,有时候即使忘记设置也可以有热水洗澡。根据一些健康和卫生情况的传感器可以帮助人类联系医院或制定健康的菜谱。也可以联系只能的清理机器人来打扫室内卫生。
lcd1602_disp_char('m');
lcd1602_disp_char('e');
lcd1602_disp_char(' ');
lcd1602_disp_char('t');
lcd1602_disp_char('o');
lcd1602_disp_char(' ');
lcd1602_disp_char('L');
lcd1602_disp_char('h');
lcd1602_disp_char('e');
lcd1602_disp_char(' ');
lcd1602_disp_char('B');
lcd1602_disp_char('O');
lcd1602_disp_char('O');
lcd1602_disp_char('K');
nrf24l01_set_tx_addr(tx_addr);//设置发送端地址
n=1000;
while(n--)//写延时为了确保接受成功率
{
status = nrf24l01_send(tx_buf, 16);//发送数据
}
ledValue = 0xEE;点亮数码管
}
3
接受发送来的数据。Cpu处理。写入液晶屏。
LCD1602显示单片机处理后的要显示内容
1.
nRF24l01的驱动头文件(引脚定义和功能函数定义),LCD1602驱动头文件(引脚定义和功能函数定义),52单片机驱动头文件。
2.
程序存储器中存储8组发送数组,扫描按键后对应子函数发送。发送成功后数码管点亮。
(1)8组16字节数组。unsigned char code tx_buf【16】
(2)键盘扫描程序
unsigned char Key_Scan()
{
unsigned char keyValue = 0 , i; //保存键值
//--检测按键1--//
if (GPIO_KEY != 0xFF)//检测按键K1是否按下
{
Delay10ms(1);//消除抖动
if (GPIO_KEY != 0xFF)//再次检测按键是否按下
二、设计方案:
一个完整的传输系统至少应该有两个部分组成。一个发射端,一个接收端。
发送端:
硬件:
nRF24l01模块发送部分
STC89C52RC单片机小系统控制发送部分
数码管显示发送值代号
8键独立键盘触发发送
接收端:
硬件:
nRF24l01模块接收部分
STC89C52RC单片机小系统控制接收处理显示部分
武汉纺织大学
单片机原理与应用




设计题目:nrf24l01数据传送
学 院:电子与电气工程学院
班 级:电子11201
姓 名:张啸宇 胡安凯
QQ号:1272779714

物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。随着我国互联网的发展,物联网相关概念也随之进入了人们的视线,物联网是继计算机、互联网与移动通信网之后的又一次信息产业化浪潮。而基于物联网的智能家居系统也渐渐浮出水面,科学技术在发展,也在慢慢的改变我们的生活。因此,为了适应潮流,我们选择了nrf24l01模块,和单片机,组成一个简单的wifi传输系统,实现简单的物联网功能。
while(1)
{
lcd1602_set_point(0, 0);
lcd1602_disp_char(' ');
lcd1602_disp_char('W');
lcd1602_disp_char('e');
lcd1602_disp_char('l');
lcd1602_disp_char('c');
lcd1602_disp_char('o');
case(0xBF) : fun6();gotostart;break;//返回按键K7的数据
case(0x7F) : fun7();gotostart;break;//返回按键K8的数据
default: break;
}
(4)子函数:
void fun0()
{
nrf24l01_init(NRF24L01_TX_MODE);//设置为发送端
start:
while (1)
{
keyNum = Key_Scan(); //扫描键盘
switch (keyNum)
{case(0xFE) : fun0();gotostart;break;//返回按键K1的数据
case(0xFD) : fun1();gotostart;bபைடு நூலகம்eak;//返回按键K2的数据
功能方面仍有很多不足,有的是所学知识不够,有点是应用经验不够。整个系统并没有达到预期所想的完美功能。在功能完善方面主要有:
开始预计将接收端P0口作为书本在库情况输入口,通过另外一个单片机的P口向接收端的P0口写入一个8位二进制数,1代表在库,2代表出库。发送端发送过来书目号后,对应P0口对应引脚的电平来判断并写入显示屏。由于在焊板子过程中不熟悉导致走线干扰,P0口很难在焊上排阻。查阅相关资料,得知P0口不接上拉电阻,对引脚写入高电平后可外部写入数据。给P0口写P0=0xff。在实际硬件调试过程中发现输出结果都为IN。可能是程序算法部分出现问题,这个问题还在完善中。
case(0xFB) : fun2();gotostart;break//返回按键K3的数据
case(0xF7) : fun3();gotostart;break;//返回按键K4的数据
case(0xEF) : fun4();gotostart;break;//返回按键K5的数据
case(0xDF) : fun5();gotostart;break;//返回按键K6的数据
lcd1602_disp_char(rx_buf[8]);
lcd1602_disp_char(' ');
lcd1602_disp_char('i');
lcd1602_disp_char('s');
lcd1602_disp_char(' ');
a=rx_buf[8];
b=a%2;
if(b==1)
{
lcd1602_disp_char(' ');
相关文档
最新文档