专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
做一款无线教鞭
2020-02-05 09:11
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
3019
20
20
最近总是接触课件,
突发奇想做个无线教鞭,
通过USB控制电脑上PPT文件的全屏、翻页等功能,
有做过的兄弟吗?
给点建议呗。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
小燕子神飞
2020-02-07 13:02
PDF资料可以网上找找,但是程序是用我自己杜撰的编程语言写的,呵呵。
======================================================
这是插在电脑USB上的接收板程序:
ACI cpu = ACI cputype mcs51,
ACI 启动 -> 引擎 启动,
导入 组件库 mcs c51 chip,
导入 组件库 software time mcs_24mhz time,
指示灯 定时器 -> 定时器,
导入 组件库 hardware start mcs51 led,
无线收发器 芯片 -> chip,
无线收发器 组件
{
public link 接口 组件 {} -> nrf2401,
public link 芯片 组件 {}
nrf2401 CE_port -> 配置器 CE_port,
nrf2401 IRQ_pin -> 配置器 IRQ_pin,
nrf2401 CSN_port -> 配置器 CSN_port,
nrf2401 spi SCK_port -> 配置器 SCK_port,
nrf2401 spi MISO_pin -> 配置器 MISO_pin,
nrf2401 spi MOSI_port -> 配置器 MOSI_port,
配置器 芯片 -> 芯片,
配置器 组件
{
public link 芯片 组件 {}
link CE_port(N1) = 芯片 P1 3,
link IRQ_pin(N1) = 芯片 P1 2,
link CSN_port(N1) = 芯片 P3 0,
link SCK_port(N1) = 芯片 P1 0,
link MISO_pin(N1) = 芯片 P3 1,
link MOSI_port(N1) = 芯片 P1 1,
}
导入 组件库 hardware nrf2401 mcs nrf2401,
}
CH372 定时器 -> 定时器,
CH372 芯片 -> chip,
CH372 组件
{
public link 接口 组件 {} -> CH372,
public link 定时器 组件 {}
public link 芯片 组件 {}
CH372 DATA_port -> 配置器 DATA_port,
CH372 INT_port -> 配置器 INT_port,
CH372 WR_port -> 配置器 WR_port,
CH372 RD_port -> 配置器 RD_port,
CH372 A0_port -> 配置器 A0_port,
配置器 芯片 -> 芯片,
配置器 组件
{
public link 芯片 组件 {}
link DATA_port(N8) = 芯片 P0,
link INT_port(N1) = 芯片 P2 7,
link WR_port(N1) = 芯片 P2 6,
link RD_port(N1) = 芯片 P2 5,
link A0_port(N1) = 芯片 P2 4,
}
CH372 定时器 -> 定时器,
导入 组件库 hardware ch372 mcs ch372,
}
//*******************************************************
引擎 指示灯 -> 指示灯,
引擎 定时器 -> 定时器,
引擎 USB控制器 -> CH372 接口,
引擎 无线收发器 -> 无线收发器 接口,
引擎 组件
{
public link 指示灯 组件 {}
public link 定时器 组件 {}
public link USB控制器 组件 {}
public link 无线收发器 组件 {}
public void 启动()
{
指示灯 初始化[],
指示灯 闪烁[ 3 ],
USB控制器 初始化[],
如果 !USB控制器 设置工作模式成功[ 2 ], 指示灯 闪烁[ 100 ].
USB控制器 设置超时时间[ 200 ],
无线收发器 初始化[],
如果 !无线收发器 工作正常[], 指示灯 闪烁[ 100 ].
无线收发器 设置超时时间[ 200 ],
无线收发器 本机地址 0 = 0,
无线收发器 本机地址 1 = 0x43,
无线收发器 本机地址 2 = 0x10,
无线收发器 本机地址 3 = 0x10,
无线收发器 本机地址 4 = 0x01,
对方地址 0 = 27,
对方地址 1 = 0x43,
对方地址 2 = 0x10,
对方地址 3 = 0x10,
对方地址 4 = 0x01,
反复执行
//无线收发器 设置为发射模式[],
//无线收发器 发射数据[ 数据区, 8, 对方地址 ],
无线收发器 设置为接收模式[],
反复执行 直到 无线收发器 接收到数据[ 数据区, 1, true ], ...
USB控制器 发送数据 [ 数据区, 1 ],
指示灯 闪烁[ 1 ],
...
}
对方地址([N8*5]),
数据区([N8*8]),
}
===========================================
这个是手持端程序
ACI cpu = ACI cputype mega8,
ACI 启动 -> 引擎 启动,
导入 组件库 avr mega8 chip,
导入 组件库 software time avr_12mhz time,
无线收发器 芯片 -> chip,
无线收发器 组件
{
public link 接口 组件 {} -> nrf2401,
public link 芯片 组件 {}
nrf2401 CE_ddr -> 配置器 CE_ddr,
nrf2401 CE_port -> 配置器 CE_port,
nrf2401 IRQ_ddr -> 配置器 IRQ_ddr,
nrf2401 IRQ_pin -> 配置器 IRQ_pin,
nrf2401 CSN_ddr -> 配置器 CSN_ddr,
nrf2401 CSN_port -> 配置器 CSN_port,
nrf2401 spi SCK_ddr -> 配置器 SCK_ddr,
nrf2401 spi SCK_port -> 配置器 SCK_port,
nrf2401 spi MISO_ddr -> 配置器 MISO_ddr,
nrf2401 spi MISO_pin -> 配置器 MISO_pin,
nrf2401 spi MOSI_ddr -> 配置器 MOSI_ddr,
nrf2401 spi MOSI_port -> 配置器 MOSI_port,
配置器 芯片 -> 芯片,
配置器 组件
{
public link 芯片 组件 {}
link CE_ddr(N1) = 芯片 DDRD 5,
link CE_port(N1) = 芯片 PORTD 5,
link IRQ_ddr(N1) = 芯片 DDRB 0,
link IRQ_pin(N1) = 芯片 PINB 0,
link CSN_ddr(N1) = 芯片 DDRB 2,
link CSN_port(N1) = 芯片 PORTB 2,
link SCK_ddr(N1) = 芯片 DDRD 6,
link SCK_port(N1) = 芯片 PORTD 6,
link MISO_ddr(N1) = 芯片 DDRD 7,
link MISO_pin(N1) = 芯片 PIND 7,
link MOSI_ddr(N1) = 芯片 DDRB 1,
link MOSI_port(N1) = 芯片 PORTB 1,
}
导入 组件库 hardware nrf2401 avr nrf2401,
}
指示灯 定时器 -> 定时器,
public 指示灯 组件
{
public link 定时器 组件 {}
public void 初始化()
{
定时器 延时10毫秒[ 50 ],
OUT_DDR = 1,
OUT_PORT = 0,
}
public void 点亮()
{
OUT_PORT = 1,
}
public void 熄灭()
{
OUT_PORT = 0,
}
public void 闪烁( (N8)time )
{
反复执行 time 次,
OUT_PORT = 1,
定时器 延时10毫秒[ 5 ],
OUT_PORT = 0,
定时器 延时10毫秒[ 10 ],
...
}
link OUT_PORT(N1) = ACI Wind chip PORTD 3,
link OUT_DDR(N1) = ACI Wind chip DDRD 3,
}
//*******************************************************
键盘 芯片 -> chip,
键盘 组件
{
public link 芯片 组件 {}
void 初始化()
{
KEY1_ddr = 1,
KEY1_port = 1,
KEY2_ddr = 1,
KEY2_port = 1,
}
(T) 按键1按下()
{
返回 KEY1_pin == 0,
}
(T) 按键2按下()
{
返回 KEY2_pin == 0,
}
link KEY1_port(N1) = 芯片 PORTB 5,
link KEY1_ddr(N1) = 芯片 DDRB 5,
link KEY1_pin(N1) = 芯片 PINB 5,
link KEY2_port(N1) = 芯片 PORTB 4,
link KEY2_ddr(N1) = 芯片 DDRB 4,
link KEY2_pin(N1) = 芯片 PINB 4,
}
//*******************************************************
蜂鸣器 芯片 -> chip,
蜂鸣器 定时器 -> 定时器,
蜂鸣器 组件
{
public link 芯片 组件 {}
public link 定时器 组件 {}
void 初始化()
{
PORT_ddr = 1,
PORT = 0,
}
public void 嘀嘀响( (N8)n )
{
反复执行 n 次,
嘀响[],
定时器 延时100毫秒[ 1 ],
...
}
void 嘀响()
{
反复执行 200 次,
PORT = 1,
延时1毫秒[],
PORT = 0,
延时1毫秒[],
...
}
void 延时1毫秒()
{
反复执行 20 次,
反复执行 10 次, ...
...
}
link PORT(N1) = 芯片 PORTC 5,
link PORT_ddr(N1) = 芯片 DDRC 5,
}
//*******************************************************
引擎 指示灯 -> 指示灯,
引擎 定时器 -> 定时器,
引擎 蜂鸣器 -> 蜂鸣器,
引擎 键盘 -> 键盘,
引擎 无线收发器 -> 无线收发器 接口,
引擎 组件
{
public link 指示灯 组件 {}
public link 定时器 组件 {}
public link 蜂鸣器 组件 {}
public link 键盘 组件 {}
public link 无线收发器 组件 {}
public void 启动()
{
指示灯 初始化[],
蜂鸣器 初始化[],
键盘 初始化[],
无线收发器 初始化[],
如果 !无线收发器 工作正常[], 指示灯 闪烁[ 100 ].
无线收发器 设置超时时间[ 200 ],
无线收发器 本机地址 0 = 27,
无线收发器 本机地址 1 = 0x43,
无线收发器 本机地址 2 = 0x10,
无线收发器 本机地址 3 = 0x10,
无线收发器 本机地址 4 = 0x01,
对方地址 0 = 0,
对方地址 1 = 0x43,
对方地址 2 = 0x10,
对方地址 3 = 0x10,
对方地址 4 = 0x01,
指示灯 闪烁[ 3 ],
蜂鸣器 嘀嘀响[ 3 ],
按键1上次按下(T) = false,
按键2上次按下(T) = false,
反复执行
有键按下(T) = false,
按键1本次按下(T) = 键盘 按键1按下[],
按键2本次按下(T) = 键盘 按键2按下[],
如果 按键1本次按下 && !按键1上次按下,
数据区 0 = 1,
有键按下 = true.
如果 按键2本次按下 && !按键2上次按下,
数据区 0 = 2,
有键按下 = true.
按键1上次按下 = 按键1本次按下,
按键2上次按下 = 按键2本次按下,
如果 有键按下,
无线收发器 设置为发射模式[],
无线收发器 发射数据[ 数据区, 1, 对方地址 ],
无线收发器 设置为接收模式[],
蜂鸣器 嘀嘀响[ 1 ],
指示灯 闪烁[ 1 ].
如果 无线收发器 接收到数据[ 数据区, 8, true ],
蜂鸣器 嘀嘀响[ 数据区 0 ].
...
}
对方地址([N8*5]),
数据区([N8*8]),
}
加载中...
查看其它20个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
======================================================
这是插在电脑USB上的接收板程序:
ACI cpu = ACI cputype mcs51,
ACI 启动 -> 引擎 启动,
导入 组件库 mcs c51 chip,
导入 组件库 software time mcs_24mhz time,
指示灯 定时器 -> 定时器,
导入 组件库 hardware start mcs51 led,
无线收发器 芯片 -> chip,
无线收发器 组件
{
public link 接口 组件 {} -> nrf2401,
public link 芯片 组件 {}
nrf2401 CE_port -> 配置器 CE_port,
nrf2401 IRQ_pin -> 配置器 IRQ_pin,
nrf2401 CSN_port -> 配置器 CSN_port,
nrf2401 spi SCK_port -> 配置器 SCK_port,
nrf2401 spi MISO_pin -> 配置器 MISO_pin,
nrf2401 spi MOSI_port -> 配置器 MOSI_port,
配置器 芯片 -> 芯片,
配置器 组件
{
public link 芯片 组件 {}
link CE_port(N1) = 芯片 P1 3,
link IRQ_pin(N1) = 芯片 P1 2,
link CSN_port(N1) = 芯片 P3 0,
link SCK_port(N1) = 芯片 P1 0,
link MISO_pin(N1) = 芯片 P3 1,
link MOSI_port(N1) = 芯片 P1 1,
}
导入 组件库 hardware nrf2401 mcs nrf2401,
}
CH372 定时器 -> 定时器,
CH372 芯片 -> chip,
CH372 组件
{
public link 接口 组件 {} -> CH372,
public link 定时器 组件 {}
public link 芯片 组件 {}
CH372 DATA_port -> 配置器 DATA_port,
CH372 INT_port -> 配置器 INT_port,
CH372 WR_port -> 配置器 WR_port,
CH372 RD_port -> 配置器 RD_port,
CH372 A0_port -> 配置器 A0_port,
配置器 芯片 -> 芯片,
配置器 组件
{
public link 芯片 组件 {}
link DATA_port(N8) = 芯片 P0,
link INT_port(N1) = 芯片 P2 7,
link WR_port(N1) = 芯片 P2 6,
link RD_port(N1) = 芯片 P2 5,
link A0_port(N1) = 芯片 P2 4,
}
CH372 定时器 -> 定时器,
导入 组件库 hardware ch372 mcs ch372,
}
//*******************************************************
引擎 指示灯 -> 指示灯,
引擎 定时器 -> 定时器,
引擎 USB控制器 -> CH372 接口,
引擎 无线收发器 -> 无线收发器 接口,
引擎 组件
{
public link 指示灯 组件 {}
public link 定时器 组件 {}
public link USB控制器 组件 {}
public link 无线收发器 组件 {}
public void 启动()
{
指示灯 初始化[],
指示灯 闪烁[ 3 ],
USB控制器 初始化[],
如果 !USB控制器 设置工作模式成功[ 2 ], 指示灯 闪烁[ 100 ].
USB控制器 设置超时时间[ 200 ],
无线收发器 初始化[],
如果 !无线收发器 工作正常[], 指示灯 闪烁[ 100 ].
无线收发器 设置超时时间[ 200 ],
无线收发器 本机地址 0 = 0,
无线收发器 本机地址 1 = 0x43,
无线收发器 本机地址 2 = 0x10,
无线收发器 本机地址 3 = 0x10,
无线收发器 本机地址 4 = 0x01,
对方地址 0 = 27,
对方地址 1 = 0x43,
对方地址 2 = 0x10,
对方地址 3 = 0x10,
对方地址 4 = 0x01,
反复执行
//无线收发器 设置为发射模式[],
//无线收发器 发射数据[ 数据区, 8, 对方地址 ],
无线收发器 设置为接收模式[],
反复执行 直到 无线收发器 接收到数据[ 数据区, 1, true ], ...
USB控制器 发送数据 [ 数据区, 1 ],
指示灯 闪烁[ 1 ],
...
}
对方地址([N8*5]),
数据区([N8*8]),
}
===========================================
这个是手持端程序
ACI cpu = ACI cputype mega8,
ACI 启动 -> 引擎 启动,
导入 组件库 avr mega8 chip,
导入 组件库 software time avr_12mhz time,
无线收发器 芯片 -> chip,
无线收发器 组件
{
public link 接口 组件 {} -> nrf2401,
public link 芯片 组件 {}
nrf2401 CE_ddr -> 配置器 CE_ddr,
nrf2401 CE_port -> 配置器 CE_port,
nrf2401 IRQ_ddr -> 配置器 IRQ_ddr,
nrf2401 IRQ_pin -> 配置器 IRQ_pin,
nrf2401 CSN_ddr -> 配置器 CSN_ddr,
nrf2401 CSN_port -> 配置器 CSN_port,
nrf2401 spi SCK_ddr -> 配置器 SCK_ddr,
nrf2401 spi SCK_port -> 配置器 SCK_port,
nrf2401 spi MISO_ddr -> 配置器 MISO_ddr,
nrf2401 spi MISO_pin -> 配置器 MISO_pin,
nrf2401 spi MOSI_ddr -> 配置器 MOSI_ddr,
nrf2401 spi MOSI_port -> 配置器 MOSI_port,
配置器 芯片 -> 芯片,
配置器 组件
{
public link 芯片 组件 {}
link CE_ddr(N1) = 芯片 DDRD 5,
link CE_port(N1) = 芯片 PORTD 5,
link IRQ_ddr(N1) = 芯片 DDRB 0,
link IRQ_pin(N1) = 芯片 PINB 0,
link CSN_ddr(N1) = 芯片 DDRB 2,
link CSN_port(N1) = 芯片 PORTB 2,
link SCK_ddr(N1) = 芯片 DDRD 6,
link SCK_port(N1) = 芯片 PORTD 6,
link MISO_ddr(N1) = 芯片 DDRD 7,
link MISO_pin(N1) = 芯片 PIND 7,
link MOSI_ddr(N1) = 芯片 DDRB 1,
link MOSI_port(N1) = 芯片 PORTB 1,
}
导入 组件库 hardware nrf2401 avr nrf2401,
}
指示灯 定时器 -> 定时器,
public 指示灯 组件
{
public link 定时器 组件 {}
public void 初始化()
{
定时器 延时10毫秒[ 50 ],
OUT_DDR = 1,
OUT_PORT = 0,
}
public void 点亮()
{
OUT_PORT = 1,
}
public void 熄灭()
{
OUT_PORT = 0,
}
public void 闪烁( (N8)time )
{
反复执行 time 次,
OUT_PORT = 1,
定时器 延时10毫秒[ 5 ],
OUT_PORT = 0,
定时器 延时10毫秒[ 10 ],
...
}
link OUT_PORT(N1) = ACI Wind chip PORTD 3,
link OUT_DDR(N1) = ACI Wind chip DDRD 3,
}
//*******************************************************
键盘 芯片 -> chip,
键盘 组件
{
public link 芯片 组件 {}
void 初始化()
{
KEY1_ddr = 1,
KEY1_port = 1,
KEY2_ddr = 1,
KEY2_port = 1,
}
(T) 按键1按下()
{
返回 KEY1_pin == 0,
}
(T) 按键2按下()
{
返回 KEY2_pin == 0,
}
link KEY1_port(N1) = 芯片 PORTB 5,
link KEY1_ddr(N1) = 芯片 DDRB 5,
link KEY1_pin(N1) = 芯片 PINB 5,
link KEY2_port(N1) = 芯片 PORTB 4,
link KEY2_ddr(N1) = 芯片 DDRB 4,
link KEY2_pin(N1) = 芯片 PINB 4,
}
//*******************************************************
蜂鸣器 芯片 -> chip,
蜂鸣器 定时器 -> 定时器,
蜂鸣器 组件
{
public link 芯片 组件 {}
public link 定时器 组件 {}
void 初始化()
{
PORT_ddr = 1,
PORT = 0,
}
public void 嘀嘀响( (N8)n )
{
反复执行 n 次,
嘀响[],
定时器 延时100毫秒[ 1 ],
...
}
void 嘀响()
{
反复执行 200 次,
PORT = 1,
延时1毫秒[],
PORT = 0,
延时1毫秒[],
...
}
void 延时1毫秒()
{
反复执行 20 次,
反复执行 10 次, ...
...
}
link PORT(N1) = 芯片 PORTC 5,
link PORT_ddr(N1) = 芯片 DDRC 5,
}
//*******************************************************
引擎 指示灯 -> 指示灯,
引擎 定时器 -> 定时器,
引擎 蜂鸣器 -> 蜂鸣器,
引擎 键盘 -> 键盘,
引擎 无线收发器 -> 无线收发器 接口,
引擎 组件
{
public link 指示灯 组件 {}
public link 定时器 组件 {}
public link 蜂鸣器 组件 {}
public link 键盘 组件 {}
public link 无线收发器 组件 {}
public void 启动()
{
指示灯 初始化[],
蜂鸣器 初始化[],
键盘 初始化[],
无线收发器 初始化[],
如果 !无线收发器 工作正常[], 指示灯 闪烁[ 100 ].
无线收发器 设置超时时间[ 200 ],
无线收发器 本机地址 0 = 27,
无线收发器 本机地址 1 = 0x43,
无线收发器 本机地址 2 = 0x10,
无线收发器 本机地址 3 = 0x10,
无线收发器 本机地址 4 = 0x01,
对方地址 0 = 0,
对方地址 1 = 0x43,
对方地址 2 = 0x10,
对方地址 3 = 0x10,
对方地址 4 = 0x01,
指示灯 闪烁[ 3 ],
蜂鸣器 嘀嘀响[ 3 ],
按键1上次按下(T) = false,
按键2上次按下(T) = false,
反复执行
有键按下(T) = false,
按键1本次按下(T) = 键盘 按键1按下[],
按键2本次按下(T) = 键盘 按键2按下[],
如果 按键1本次按下 && !按键1上次按下,
数据区 0 = 1,
有键按下 = true.
如果 按键2本次按下 && !按键2上次按下,
数据区 0 = 2,
有键按下 = true.
按键1上次按下 = 按键1本次按下,
按键2上次按下 = 按键2本次按下,
如果 有键按下,
无线收发器 设置为发射模式[],
无线收发器 发射数据[ 数据区, 1, 对方地址 ],
无线收发器 设置为接收模式[],
蜂鸣器 嘀嘀响[ 1 ],
指示灯 闪烁[ 1 ].
如果 无线收发器 接收到数据[ 数据区, 8, true ],
蜂鸣器 嘀嘀响[ 数据区 0 ].
...
}
对方地址([N8*5]),
数据区([N8*8]),
}
一周热门 更多>