GYJ0024频率及占空比均可调带数码管模块.docx
- 文档编号:28172468
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:28
- 大小:2.16MB
GYJ0024频率及占空比均可调带数码管模块.docx
《GYJ0024频率及占空比均可调带数码管模块.docx》由会员分享,可在线阅读,更多相关《GYJ0024频率及占空比均可调带数码管模块.docx(28页珍藏版)》请在冰豆网上搜索。
GYJ0024频率及占空比均可调带数码管模块
频率及占空比均可调带数码管模块使用手册
【简要说明】
1、 尺寸:
长74mmX宽72mmX高18mm
二、 主要芯片:
单片机,数码管、稳压器
三、 工作电压:
6V至40V,功耗小于1W
四、 特点:
1、具有稳压电路,输入电压广,具有电源指示灯。
2、具有6位数码管显示,前两位显示占空比,后四位显示频率。
3、具有按键调节功能,设置参数带记忆功能。
4、输出占空比:
0~100%可调。
5、输出频率:
小于10KHZ可调。
6、输出PWM信号,电压3.3V~30V,电压值有输入VSS电压决定。
输出电流最大1.5A,输出最大信号功率1.5W.
7、单片机编程,客户可以自己更改,提供源代码
8、有无信号输出,具有LED灯指示。
9、端子采用螺旋压接端子
10、工作温度-40度至+70度
11、工作湿度40%~80%RH
12、具有电源防接反保护
13、具有续流保护
14、具有电磁抗干扰能力
15、板子稳定工作可靠
16、板子可安装在DIN导轨上面
使用说明:
【标注说明】
【功能描述】
【原理图】
【PCB图】
【元件清单】
【应用举例】
【应用举例2】
【功能调节设置】
【测试参考程序】
/********************************************************************
实现功能:
频率及占空比均可调带数码管模块
使用芯片:
STC12C5A60S2
晶振:
11.0592MHZ
编译环境:
Keil
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************/
/*
注意单片机必须是52rc不能用60s2
*/
#include"main.h"
#include"peizhi.h"
#include"smg.h"
unsignedcharHighRH=0;//高电平重载值的高字节
unsignedcharHighRL=0;//高电平重载值的低字节
unsignedcharLowRH=0;//低电平重载值的高字节
unsignedcharLowRL=0;//低电平重载值的低字节
/***********************按键定义**********************************/
bitd1=1;
bitd2=1;
bitd3=1;
uint8ci;
uint8ca=0;
uint8ca1=0;
uint16cb=0;
voidkey();//按键函数声明
voidConfigPWM(unsignedintfr,unsignedchardc);//频率和占空比调节函数
voidmain()
{
bitq1=1;
bitq2=1;
bitq3=1;
EA=1;//开总中断
peizhit1
(1);//配置T0定时2ms
while
(1)
{
ConfigPWM(cb,ca);//频率100Hz,占空比10%
if(d1!
=q1)
{
q1=d1;
if(d1==0)
{
ca1++;
if(ca1>=2)
{
ca1=0;
}
}
}
if(ca1==1)
{
if(d2!
=q2)
{
q2=d2;
if(d2==0)
{
ca++;
if(ca>=99)
{
ca=99;
}
}
}
if(d3!
=q3)
{
q3=d3;
if(d3==0)
{
if(ca>0)
{
ca--;
}
}
}
}
if(ca1==0)
{
if(d2==0)
{
cb++;
if(cb>=9999)
{
cb=9999;
}
}
if(d3==0)
{
if(cb>0)
{
cb--;
}
}
}
xianshi1(cb);
xianshi2(ca);
}
}
voidkey()
{
staticuint8saomiaozhi[]={1,1,1,1};
saomiaozhi[0]=(saomiaozhi[0]<<1)|in1;
saomiaozhi[1]=(saomiaozhi[1]<<1)|in2;
saomiaozhi[2]=(saomiaozhi[2]<<1)|in3;
if(saomiaozhi[0]==0x00)
{
d1=0;
}
if(saomiaozhi[0]==0xff)
{
d1=1;
}
if(saomiaozhi[1]==0x00)
{
d2=0;
}
if(saomiaozhi[1]==0xff)
{
d2=1;
}
if(saomiaozhi[2]==0x00)
{
d3=0;
}
if(saomiaozhi[2]==0xff)
{
d3=1;
}
}
/*配置并启动PWM,fr-频率,dc-占空比*/
voidConfigPWM(unsignedintfr,unsignedchardc)
{
unsignedinthigh,low;
unsignedlongtmp;
tmp=(11059200/12)/fr;//计算一个周期所需的计数值
high=(tmp*dc)/100;//计算高电平所需的计数值
low=tmp-high;//计算低电平所需的计数值
high=65536-high+12;//计算高电平的重载值并补偿中断延时
low=65536-low+12;//计算低电平的重载值并补偿中断延时
HighRH=(unsignedchar)(high>>8);//高电平重载值拆分为高低字节
HighRL=(unsignedchar)high;
LowRH=(unsignedchar)(low>>8);//低电平重载值拆分为高低字节
LowRL=(unsignedchar)low;
TMOD&=0xF0;//清零T0的控制位
TMOD|=0x01;//配置T0为模式1
TH0=HighRH;//加载T0重载值
TL0=HighRL;
ET0=1;//使能T0中断
TR0=1;//启动T0
PWMOUT=1;//输出高电平
}
/*T0中断服务函数,产生PWM输出*/
voidInterruptTimer0()interrupt1
{
if(PWMOUT==1)//当前输出为高电平时,装载低电平值并输出低电平
{
TH0=LowRH;
TL0=LowRL;
PWMOUT=0;
}
else//当前输出为低电平时,装载高电平值并输出高电平
{
TH0=HighRH;
TL0=HighRL;
PWMOUT=1;
}
}
/*T0中断服务函数,完成数码管、按键扫描与秒表计数*/
voidt1()interrupt3
{
TH1=T1RH;//重新加载重载值
TL1=T1RL;
ci++;
ssmg();//数码管扫描
if(ci>=2)
{
ci=0;
key();
}
}
【图片展示】
#include
#include
#include
#defineucharunsignedchar//宏定义字符型变量
#defineuintunsignedint//宏定义整型变量
codeuchardong[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码数码管字跟
ucharw1,w2,w3,w4,w5,w6;
/********************************************************************
初始定义
*********************************************************************/
uintsec;//定义计数值,每过1/10秒,sec加一
ucharkeycnt=0;//按下次数值
uinttcnt;//键值判断
ucharPWM=0;
ucharHZ=0;
bitwrite=0;
bitbz=0;
/********************************************************************
I/O定义
*********************************************************************/
sbitOUT1=P3^7;//定义单片机P3口的第3位(即P3.3)
sbitIN0=P1^0;
sbitIN1=P1^1;
sbitIN2=P1^2;
/********************************************************************
延时函数
*********************************************************************/
voiddelay(uchart)
{
uchari,j;
for(i=0;i { for(j=13;j>0;j--); {; } } } voidssmg() { uchari; P0=0xff; switch(i) { case0: P2=0x7F;i++;P0=dong[PWM/100];break; case1: P2=0xDF;i++;P0=0x7f;break; case2: P2=0xBF;i++;P0=dong[PWM%100/10];break; case3: P2=0xDF;i++;P0=dong[PWM%10];break; case4: P2=0xEF;i++;P0=dong[HZ/100];break; case5: P2=0xF7;i++;P0=dong[HZ%100/10];break; case6: P2=0xFB;i=0;P0=dong[HZ%10];break; default: break; }} /******************************************************************** 按键扫描函数 *********************************************************************/ voidKEY()//按键扫描程序 { if(IN0==0){delay(10);if(IN0==0){delay(10);bz=! bz;while(! IN0);}} if(bz==0){ if(IN1==0){delay(10);if(IN1==0){delay(10);write=1;TR0=1;tcnt=0;while(! IN1);if(PWM! =100){PWM++;}}} if(IN2==0){delay(10);if(IN2==0){delay(10);write=1;TR0=1;tcnt=0;while(! IN2);if(PWM! =0){PWM--;}}} } if(bz==1){ if(IN1==0){delay(10);if(IN1==0){delay(10);write=1;if(HZ! =250){HZ++;}TH0=HZ;while(! IN1);}} if(IN2==0){delay(10);if(IN2==0){delay(10);write=1;if(HZ! =0){HZ--;}TH0=HZ;while(! IN2);}} } } /******************************************************************** 定时中断服务函数 *********************************************************************/ voidt0(void)interrupt1using0//定时中断服务函数 { tcnt++;//每过200usttcnt加一 if(tcnt==PWM){OUT1=1;} if(tcnt==100){tcnt=0;OUT1=0;} } /******************************************************************** 主函数 *********************************************************************/ voidmain() { PWM=EEPROMReadByte(0); HZ=EEPROMReadByte (1); //KK3=EEPROMReadByte (2); TMOD=0x02;//定时器工作在方式2 TH0=HZ;//对TH0TL0赋值 TL0=0xFE; ET0=1; EA=1; sec=0; TR0=1; OUT1=0; while (1) { KEY(); ssmg(); if(write==1) { write=0; //KK1=P0; //KK2=P1; //KK3=P2; EEPROMSectorErase(0); EEPROMWriteByte(0,PWM); EEPROMWriteByte(1,HZ); //EEPROMWriteByte(2,KK3); } } } /******************************************************************** 结束 *********************************************************************/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GYJ0024 频率 均可 数码管 模块