做一款无线教鞭

2020-02-05 09:11发布

最近总是接触课件,
突发奇想做个无线教鞭,
通过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]),
}











一周热门 更多>