这段时间做了一个无线浮球控制器,用了差不多一个星期的时间。
主要原理是用浮球来控制单片机的I0口.单片机的io口再输出一个触发信号
这个触发信号经光耦之后来触触发无线模块。可以实现500米到100米的无线传输。
从而控制水位的高低。
附件里面有 原理图 PCb板 和程序员代码
都是自己制作的 请大家多多指教 多提一些宝贵意见
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- /*********************************************************************/
- #include <STC8.H> //调用单片机头文件
- #include <intrins.H>
- #define uchar unsigned char//宏定义无符号字符型
- #define uint unsigned int //宏定义无符号整型
- /********************************************************************
- 初始定义
- *********************************************************************/
- uint a,b,t,n,i;
- sbit D0 = P2^4; //数据D0输出
- sbit D1 = P2^3; //数据D1输出
- //sbit LED = P2^3; //信号输出指示灯
- sbit KEY0 = P1^0; //输入触发端
- sbit KEY1 = P1^1; //输入触发端
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- /********************************************************************
- 主函数
- *********************************************************************/
- void main()
- {
- P1M0 = 0x00;//输入设定为仅为输入要外加上拉电阻
- P1M1 = 0x07;
- D1 =D0 = 0;
- while(1)
- {
- if(KEY0==0){delay(1000);if(KEY0==0){D0=1;D1=0;delay(30000);D0=0;while(!KEY0);}}
- if(KEY1==0){delay(1000);if(KEY1==0){D0=0;D1=1;delay(30000);D1=0;while(!KEY1);}}
- }
- }
复制代码
所有资料51hei提供下载:
无线浮球PCB.zip
(56.48 KB, 下载次数: 14)
|