1、数字选频电路模块原理图例程及PCB设计资料数字选频电路模块利用手册【简要说明】一、尺寸:长114mmX宽72mmX高18mm二、要紧芯片:单片机,数码管、稳压器 、继电器三、工作电压:6V至40V,功耗小于1W四、特点:一、具有稳压电路,输入电压广,具有电源指示灯。二、具有6位数码管显示。 3、具有按键调剂功能,设置参数带经历功能。4、最大检测频率100KHZ。五、双路继电器输出。 六、继电器最大操纵负载300W。 7、单片机编程,客户能够自己更改,提供源代码八、有无信号输出,具有LED灯指示。九、端子采纳螺旋压接端子 10、工作温度-40度至 +70度 1一、工作湿度 40% 80%RH 1
2、二、具有电源防接反爱惜 13、具有续流爱惜 14、具有电磁抗干扰能力 1五、板子稳固工作靠得住 1六、板子可安装在DIN导轨上面利用说明:【标注说明】【功能描述】【原理图】【PCB图】【元件清单】【应用举例】【测试参考程序】#include #include #define uchar unsigned char/宏概念无符号字符型#define uint unsigned int /宏概念无符号整型uint tcnt1=0;/用于刷新数码管uint qiannum1,bainum1,shinum1,genum1;uchar qiannum2,bainum2,shinum2,genum2;uc
3、har qiannum3,bainum3,shinum3,genum3;code uchar seg7code10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /显示段码 数码管字跟uchar wei13=0XDf,0XBf,0X7f;/数码管1的位的操纵端uchar wei23=0XFb,0XF7,0Xef;/数码管2的位的操纵端uchar abcf4=0x88,0x83,0xc6,0xbf;/abc-uchar abcf1,abcf2;/用于显示特殊字符abc-uint dispcount=0;/获取霍尔传感器的数据用 获取数据ui
4、nt lck=0;/获取霍尔传感器的数据用 计时一秒用uint disp=0; /获取霍尔传感器的数据用 显示到数码管用void timer0_1init();/按时配置void displaynum();/将数字传到数码管上显示static uchar presstime=0;/时刻值按键用到的uint kf0=1;/按键用的标志位uint kt0=0;/按键用的标志位void keycan();/按键void keyflag();/按键终止挪用,按键的建议利用,如此能够减小code,可是触发的不建议uint abc=0,abc1=0;/abc三种状态uint keynum=0;/数码管的位
5、uint highnum=0,downnum=0;/最大数和最小数uchar highnum1=0,highnum2=0,downnum1=0,downnum2=0;/最大数和最小数bit flag_eeprom1=1;/掉电存储的标志位void saveeepro();/掉电存储void main() timer0_1init(); highnum1=Byte_Read(0x01);/掉电存储用到 highnum2=Byte_Read(0x02);/掉电存储用到 downnum1=Byte_Read(0x03);/掉电存储用到 downnum2=Byte_Read(0x04);/掉电存储用到
6、 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+shin
7、um3*10+genum3; while(1) keycan(); displaynum(); void saveeepro()/掉电存储 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)
8、; /擦除完成就可以写入了 Byte_Program(0x03,downnum1); /擦除完成就可以写入了 Byte_Program(0x04,downnum2); /擦除完成就可以写入了void keycan()/按键 if(key1=0)/当按键1按下 if(kf0)/当标志位kf0=1的时候进行 if(presstime100)/那时刻值大于一百的时候 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
9、/当按键松开 keyflag(); /按键1终止 if(abc0) if(key2=0)if(kf0)if(presstime100)kf0=0;kt0=1;presstime=0;flag_eeprom1=1; keynum+;if(keynum=5)keynum=0; elsekeyflag(); if(flag_eeprom1=1)/加掉电存储 flag_eeprom1=0; saveeepro();/掉电存储 if(key3=0)if(kf0)if(presstime100)kf0=0;kt0=1;presstime=0;flag_eeprom1=1; switch(keynum) c
10、ase 1: if(abc=1) genum2+;/数码管一加加 if(genum29)/当数码管一加加到9时置为1 genum2=0; else if(abc=2) genum3+;/数码管一加加 if(genum39)/当数码管一加加到9时置为1 genum3=0; break; case 2:if(abc=1)shinum2+;if(shinum29)shinum2=0; else if(abc=2)shinum3+;if(shinum39)shinum3=0; break; case 3:if(abc=1)bainum2+;if(bainum29)bainum2=0; else if(
11、abc=2)bainum3+;if(bainum39)bainum3=0; break; case 4:if(abc=1)qiannum2+;if(qiannum29)qiannum2=0; else if(abc=2)qiannum3+;if(qiannum39)qiannum3=0; break; default:break; elsekeyflag(); if(flag_eeprom1=1)/加掉电存储 flag_eeprom1=0; saveeepro();/掉电存储 void displaynum()/将数字传到数码管上显示 if(abc=0) abcf1=0;/a abcf2=3;
12、/- genum1=disp%10;/个位 shinum1=disp%100/10;/十位 bainum1=disp%1000/100;/百位 qiannum1=disp/1000;/千位 if(abc12000) if(disphighnum) out1=1; out2=0; else out1=1; out2=1; else out1=1; out2=1; else if(abc=1) abcf1=1;/b abcf2=3;/- highnum=qiannum2*1000+bainum2*100+shinum2*10+genum2; genum1=genum2;/个位 shinum1=sh
13、inum2;/十位 bainum1=bainum2;/百位 qiannum1=qiannum2;/千位 else if(abc=2) abcf1=2;/c abcf2=3;/- downnum=qiannum3*1000+bainum3*100+shinum3*10+genum3; genum1=genum3;/个位 shinum1=shinum3;/十位 bainum1=bainum3;/百位 qiannum1=qiannum3;/千位 void timer0(void)interrupt 1 TH0=0xe3; TL0=0xc; tcnt1+; presstime+; if(abc=0)
14、abc1+; lck+; if(lck=1000) if(abc12000) disp=dispcount; lck=0; dispcount=0; switch(tcnt1) case 1: P2=0XFF; P0=abcfabcf1;P2=wei12;break; case 2: P2=0XFF; P0=abcfabcf2;P2=wei11;break; case 3: P2=0XFF; P0=seg7codeqiannum1;if(keynum=4 | keynum=0)P2=wei10;break; case 4: P2=0XFF; P0=seg7codebainum1; if(key
15、num=3 | keynum=0)P2=wei22;break; case 5: P2=0XFF; P0=seg7codeshinum1; if(keynum=2 | keynum=0)P2=wei21;break; case 6: P2=0XFF; P0=seg7codegenum1; if(keynum=1 | keynum=0)P2=wei20;break; default: tcnt1=0; P2=0XFF; break; void timer0_1init()/按时配置 TMOD=0x0; TH0=0xe3; TL0=0xc;/ IT0=1; /INT0下降沿中断/ EX0=1; /
16、允许INT1中断 IT1=1; /INT1下降沿中断 EX1=1; /许诺INT1中断 TR0=1; ET0=1; EA=1;/void int0(void) interrupt 0/P32/此处用于获取霍尔传感器的数据/ dispcount+; /每一次中断,计数加一/void int1(void) interrupt 2/P33/此处用于获取霍尔传感器的数据 dispcount+; /每一次中断,计数加一void keyflag()/按键终止挪用,按键的建议利用,如此能够减小code,可是触发的不建议 if(kt0)/当标志位kt0=1的时候进行 if(presstime100)/当时间值大于一百的时候 kf0=1;/标志位kf0=1 kt0=0;/标志位kt0=0 presstime=0;/时间清零,重新进行 【图片展现】
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1