数字选频电路模块原理图例程及PCB设计资料.docx
- 文档编号:7722826
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:20
- 大小:2.52MB
数字选频电路模块原理图例程及PCB设计资料.docx
《数字选频电路模块原理图例程及PCB设计资料.docx》由会员分享,可在线阅读,更多相关《数字选频电路模块原理图例程及PCB设计资料.docx(20页珍藏版)》请在冰豆网上搜索。
数字选频电路模块原理图例程及PCB设计资料
数字选频电路模块使用手册
【简要说明】
1、 尺寸:
长114mmX宽72mmX高18mm
二、 主要芯片:
单片机,数码管、稳压器、继电器
三、 工作电压:
6V至40V,功耗小于1W
四、 特点:
1、具有稳压电路,输入电压广,具有电源指示灯。
2、具有6位数码管显示。
3、具有按键调节功能,设置参数带记忆功能。
4、最大检测频率100KHZ。
5、双路继电器输出。
6、继电器最大控制负载300W。
7、单片机编程,客户可以自己更改,提供源代码
8、有无信号输出,具有LED灯指示。
9、端子采用螺旋压接端子
10、工作温度-40度至+70度
11、工作湿度40%~80%RH
12、具有电源防接反保护
13、具有续流保护
14、具有电磁抗干扰能力
15、板子稳定工作可靠
16、板子可安装在DIN导轨上面
使用说明:
【标注说明】
【功能描述】
【原理图】
【PCB图】
【元件清单】
【应用举例】
【测试参考程序】
#include"demo.h"
#include"eeprom.h"
#defineucharunsignedchar//宏定义无符号字符型
#defineuintunsignedint//宏定义无符号整型
uinttcnt1=0;//用于刷新数码管
uintqiannum1,bainum1,shinum1,genum1;
ucharqiannum2,bainum2,shinum2,genum2;
ucharqiannum3,bainum3,shinum3,genum3;
codeucharseg7code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码数码管字跟
ucharwei1[3]={0XDf,0XBf,0X7f};//数码管1的位的控制端
ucharwei2[3]={0XFb,0XF7,0Xef};//数码管2的位的控制端
ucharabcf[4]={0x88,0x83,0xc6,0xbf};//abc-
ucharabcf1,abcf2;//用于显示特殊字符abc-
uintdispcount=0;//获取霍尔传感器的数据用获取数据
uintlck=0;//获取霍尔传感器的数据用计时一秒用
uintdisp=0;//获取霍尔传感器的数据用显示到数码管用
voidtimer0_1init();//定时配置
voiddisplaynum();//将数字传到数码管上显示
staticucharpresstime=0;//时间值按键用到的
uintkf0=1;//按键用的标志位
uintkt0=0;//按键用的标志位
voidkeycan();//按键
voidkeyflag();//按键结束调用,按键的建议使用,这样可以减小code,但是触发的不建议
uintabc=0,abc1=0;//abc三种状态
uintkeynum=0;//数码管的位
uinthighnum=0,downnum=0;//最大数和最小数
ucharhighnum1=0,highnum2=0,downnum1=0,downnum2=0;//最大数和最小数
bitflag_eeprom1=1;//掉电存储的标志位
voidsaveeepro();//掉电存储
voidmain(){
timer0_1init();
highnum1=Byte_Read(0x01);//掉电存储用到
highnum2=Byte_Read(0x02);//掉电存储用到
downnum1=Byte_Read(0x03);//掉电存储用到
downnum2=Byte_Read(0x04);//掉电存储用到
genum2=highnum1%10;//个位
shinum2=highnum1%100/10;//十位
bainum2=highnum2%10;//个位
qiannum2=highnum2%100/10;//十位
genum3=downnum1%10;//个位
shinum3=downnum1%100/10;//十位
bainum3=downnum2%10;//个位
qiannum3=downnum2%100/10;//十位
highnum=qiannum2*1000+bainum2*100+shinum2*10+genum2;
downnum=qiannum3*1000+bainum3*100+shinum3*10+genum3;
while
(1){
keycan();
displaynum();
}
}
voidsaveeepro(){//掉电存储
highnum1=shinum2*10+genum2;
highnum2=qiannum2*10+bainum2;
downnum1=shinum3*10+genum3;
downnum2=qiannum3*10+bainum3;
Sector_Erase(0);//擦除0x01地址中的数据一定要先擦除再写进同一地址
Byte_Program(0x01,highnum1);//擦除完成就可以写入了
Byte_Program(0x02,highnum2);//擦除完成就可以写入了
Byte_Program(0x03,downnum1);//擦除完成就可以写入了
Byte_Program(0x04,downnum2);//擦除完成就可以写入了
}
voidkeycan(){//按键
if(key1==0){//当按键1按下
if(kf0){//当标志位kf0=1的时候进行
if(presstime>100){//当时间值大于一百的时候
kf0=0;//标志位kf0=0
kt0=1;//标志位kt0=0
presstime=0;//时间清零,重新进行
keynum=0;
abc1=0;
disp=0;
abc++;
if(abc==3){//当位到3则置位0
abc=0;
}
}
}
}else{//当按键松开
keyflag();
}//按键1结束
if(abc>0){
if(key2==0){if(kf0){if(presstime>100){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;
keynum++;if(keynum==5){keynum=0;
}}}}else{keyflag();
if((flag_eeprom1==1)){//加掉电存储
flag_eeprom1=0;
saveeepro();//掉电存储
}
}
if(key3==0){if(kf0){if(presstime>100){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;
switch(keynum){
case1:
if(abc==1){
genum2++;//数码管一加加
if(genum2>9){//当数码管一加加到9时置为1
genum2=0;
}
}elseif(abc==2){
genum3++;//数码管一加加
if(genum3>9){//当数码管一加加到9时置为1
genum3=0;
}
}
break;
case2:
if(abc==1){shinum2++;if(shinum2>9){shinum2=0;}
}elseif(abc==2){shinum3++;if(shinum3>9){shinum3=0;}}
break;
case3:
if(abc==1){bainum2++;if(bainum2>9){bainum2=0;}
}elseif(abc==2){bainum3++;if(bainum3>9){bainum3=0;}}
break;
case4:
if(abc==1){qiannum2++;if(qiannum2>9){qiannum2=0;}
}elseif(abc==2){qiannum3++;if(qiannum3>9){qiannum3=0;}}
break;
default:
break;
}
}}}else{keyflag();
if((flag_eeprom1==1)){//加掉电存储
flag_eeprom1=0;
saveeepro();//掉电存储
}
}
}
}
voiddisplaynum(){//将数字传到数码管上显示
if(abc==0){
abcf1=0;//a
abcf2=3;//-
genum1=disp%10;//个位
shinum1=disp%100/10;//十位
bainum1=disp%1000/100;//百位
qiannum1=disp/1000;//千位
if(abc1>2000){
if(disp out1=0; out2=1; }elseif(disp>highnum){ out1=1; out2=0; }else{ out1=1; out2=1; } }else{ out1=1; out2=1; } }elseif(abc==1){ abcf1=1;//b abcf2=3;//- highnum=qiannum2*1000+bainum2*100+shinum2*10+genum2; genum1=genum2;//个位 shinum1=shinum2;//十位 bainum1=bainum2;//百位 qiannum1=qiannum2;//千位 }elseif(abc==2){ abcf1=2;//c abcf2=3;//- downnum=qiannum3*1000+bainum3*100+shinum3*10+genum3; genum1=genum3;//个位 shinum1=shinum3;//十位 bainum1=bainum3;//百位 qiannum1=qiannum3;//千位 } } voidtimer0(void)interrupt1{ TH0=0xe3; TL0=0xc; tcnt1++; presstime++; if(abc==0){ abc1++; lck++; if(lck==1000){ if(abc1>2000){ disp=dispcount; } lck=0; dispcount=0; } } switch(tcnt1){ case1: P2=0XFF;P0=abcf[abcf1];P2=wei1[2];break; case2: P2=0XFF;P0=abcf[abcf2];P2=wei1[1];break; case3: P2=0XFF;P0=seg7code[qiannum1];if(keynum==4||keynum==0){P2=wei1[0];}break; case4: P2=0XFF;P0=seg7code[bainum1];if(keynum==3||keynum==0){P2=wei2[2];}break; case5: P2=0XFF;P0=seg7code[shinum1];if(keynum==2||keynum==0){P2=wei2[1];}break; case6: P2=0XFF;P0=seg7code[genum1];if(keynum==1||keynum==0){P2=wei2[0];}break; default: tcnt1=0;P2=0XFF;break; } } voidtimer0_1init(){//定时配置 TMOD=0x0; TH0=0xe3; TL0=0xc; //IT0=1;//INT0下降沿中断 //EX0=1;//允许INT1中断 IT1=1;//INT1下降沿中断 EX1=1;//允许INT1中断 TR0=1; ET0=1; EA=1; } //voidint0(void)interrupt0{//P3^2//此处用于获取霍尔传感器的数据 //dispcount++;//每一次中断,计数加一 //} voidint1(void)interrupt2{//P3^3//此处用于获取霍尔传感器的数据 dispcount++;//每一次中断,计数加一 } voidkeyflag(){//按键结束调用,按键的建议使用,这样可以减小code,但是触发的不建议 if(kt0){//当标志位kt0=1的时候进行 if(presstime>100){//当时间值大于一百的时候 kf0=1;//标志位kf0=1 kt0=0;//标志位kt0=0 presstime=0;//时间清零,重新进行 } } } 【图片展示】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电路 模块 原理图 例程 PCB 设计 资料