1. proteus仿真电路图,51单片机按键计数
按照你题目,用了2个2位显示,实际有4位合一起的。
k3:切换计数模式/预置模式。
计数模式:LED显示计时数字,从0开始计时,直到预置最大值。
预置模式:LED显示当前预置最大值,按k1,k2可对预置值+-操作,长按k1,k2大约2秒,会进入自动加减预置值。直到再次点击k1,k2,k3任意一键停止自动。
k4:在计数模式下使用,每按下一次显示的数字加一(会在正常计时同时额外+1)。
当计数达到预置最大值,会停止计数,LEN闪烁(实际就是交替显示间隔边长),蜂鸣器响。
按键时长、LED动态显示间隔、闪烁间隔、计数速度,均可直接修改常量,需要自己改,我备注写的很详细。
电路基本按照你上图,略有修改。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define an P0
#define on 0
#define off 1
#define SSSPEED 35 //LED交替闪烁间隔时间
#define JSPEED 5000//计数模式,速度默认数值(5000*200us=1S) 值越小计数越快
#define PREESTIME 500//按钮长按时间判定,预设500(大约2秒),需要自改,值越大,长按时间越长
sbit fm=P3^3;
sbit wei1=P3^4;
sbit wei2=P3^5;
sbit wei3=P3^6;
sbit wei4=P3^7;
sbit k1=P1^4;
sbit k2=P1^5;
sbit k3=P1^6;
sbit k4=P1^7;
uint jsSpd=JSPEED;//计时速度,默认1s一次(5000*200us)
uint ssSpd=SSSPEED;//LED交替闪烁速度
//共阳极
int delay(uint xms);
void init();
void jspause();//计数器开启/停止
void setnumYS();//设置预设数值
void numJsChange();//计数模式数字改变
void showLED();
int pressWait(uint btn);
uint g=0;
uint s=0;
uint b=0;
uint q=0;
uint count=0;
uint ispause=1;
uint numYS=0;//预设数值
uint numJS=0;//实际计时的数字
uint isMaxJs=0;//标识:计时达最大。 达最大1,否0
uint isk3press=0;//标识:k3按钮是否被点击。 点击1,否0
uint ispress1=0;//标识:k1被长按
uint ispress2=0;//标识:k2被长按
uint isbtn4=0;//标识:k4被按下
uint btnName=0;//按钮长按计时
void main()
{
init();
while(1)
{
if(ispause==1 && ispress1==1 && numYS<9999) //预置模式下,k1已长按,自动增
{
numYS++;
setnumYS();
}
if(ispause==1 && ispress2==1 && numYS>0) //预置模式下,k2已长按,自动减
{
numYS--;
setnumYS();
}
if(isMaxJs==0 && numJS>=numYS && ispause==0) //计时模式下达最大值
{
fm=on;
ssSpd=1000;//增加LED交替间隔,实现数字闪烁
isMaxJs=1;
EA=0;
setnumYS();
numJS=0;
}
if(k1==0 ||k2==0|| k3==0) //k1k2k3任意一个按钮被按下,停止预置数自动增长
{
ispress1=0;
ispress2=0;
}
if(k1==0 && ispause==1)//预置模式下+
{
delay(10);
if(k1==0)
{
btnName=1;
if(pressWait(btnName))//判断连按
{
while(k1==0);
ispress1=1;
}
else if(numYS<9999)
{
numYS++;
setnumYS();
}
}
}
if(k2==0 && ispause==1)//预置模式下-
{
delay(10);
if(k2==0)
{
btnName=2;
if(pressWait(btnName))//判断连按
{
while(k2==0);
ispress2=1;
}
else if(numYS>0)
{
numYS--;
setnumYS();
}
}
}
if(k3==0)
{
delay(10);
if(k3==0)
{
while(k3==0);
fm=off;
jspause();
}
}
if(k4==0 && ispause==0)//计数模式下按下k4,k4的防抖写在中断中
{
delay(10);
if(k4==0)
{
while(k4==0);
isbtn4=1;
}
}
showLED();
}
}
void showLED()
{
uchar nums[10]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x98};
if(g>=0)
{
an=nums[g];
wei4=on;
delay(ssSpd);
wei4=off;
}
if(s>0 || (s==0 && b>0))
{
an=nums[s];
wei3=on;
delay(ssSpd);
wei3=off;
}
if(b>0 || (b==0 && q>0))
{
an=nums[b];
wei2=on;
delay(ssSpd);
wei2=off;
}
if(q>0)
{
an=nums[q];
wei1=on;
delay(ssSpd);
wei1=off;
}
}
void setnumYS()//设置预设数值
{
q=numYS/1000;
b=(numYS%1000)/100;
s=(numYS%100)/10;
g=numYS%10;
}
void jspause()
{
if(ispause==0 || isMaxJs==1)//关闭计时模式 / 启动预置模式
{
EA=0;
isMaxJs=0;
ispause=1;
ssSpd=SSSPEED;
ispress1=0;
ispress2=0;
setnumYS();
}
else if(ispause==1) //启动计时模式 / 关闭预置模式
{
ispause=0;
q=b=s=g=0;
numJS=0;
ssSpd=SSSPEED;
EA=1;
}
}
void init()
{
TMOD=0x02; //T0 工作模式2 自动装填8位 200us
TH0=0x38;
TL0=0x38;
EA=0;
ET0=1;
TR0=1;
wei1=off;
wei2=off;
wei3=off;
wei4=off;
}
void numJsChange()//计数模式数字改变
{
if(g==9)
{
g=0;
if(s==9)
{
s=0;
if(b==9)
{
b=0;
if(q==9)
{
q=0;
}
else
q++;
}
else
b++;
}
else
s++;
}
else
g++;
}
void ct() interrupt 1 //一次中断200us
{
if(count<jsSpd)
count++;
else
{
count=0;
numJsChange();
numJS++;
}
if(isbtn4==1)
{
isbtn4=0;
numJsChange();
numJS++;
}
}
int pressWait(uint btn)
{
uint i,j;
for(i=PREESTIME;i>0;i--)
for(j=110;j>0;j--)
{
if((k1==1 && btn==1)||(k2==1 && btn==2))
return 0;
}
return 1;
}
int delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--)
{
if(k1==0 || k2==0 ||k3==0)
return 1;
}
return 0;
}
2. 如何使用语音模块完成一个简单按键发声电路
WTN5系列产品为多功能单芯片CMOS语音合成4位元为控制器。现有、WTN5055、WTN5085三种语音芯片,(语音长度分别为25s、55s、85s),是市面上唯一8脚可以加载255段声音的语音芯片。
音频采样率最高可达44.1kHz,16级音量控制, 两种音频输出方式.PWM输出和DAC输出。 精准的+/-1%内部震荡,不需要加外部震荡,还提供外部震荡便于调速有低压复位(LVR=1.8V)看门狗计时、I/O复位功能,具备超低功耗待机。
芯片生产周期块,可当天安排出货,无最小起订量。
PWM纯音频输出,可直接驱动喇叭和蜂鸣器,DAC音频输出,可外接功放
内置看门狗;
简单方便的一线MCU串口控制方式,用户主控MCU可控制任意段语音的触发播放及停止; 语音时长25秒、55秒、85秒; 内置一组PWM输出器可直推0.5W喇叭,支持13bit的DAC输出,可外接模拟功放; 灵活的放音操作,通过组合可节省语音空间,最多可播放225个语音组合; 音质优美,性能稳定,物美价廉;
支持BUSY状态输出功能;
支持和弦MIDI播放,音质非常优美;
外围电路简单,仅需一耦合电容; 工作电压范围:2V~5.5V; 静态电流:小于2uA;
市场最常用的语音芯片方案介绍
2
WT588D语音芯片是一款功能强大的可重复擦除烧写的语音单片机芯片。WT588D让语音芯片不再为控制方式而寻找合适的外围单片机电路,高度集成的单片机技术足于取代复杂的外围控制电路。配套WT588D VoiceChip上位机操作软件可随意更换WT588D语音单片机芯片的任何一种控制模式,把信息下载到SPI-Flash上即可。软件操作方式简洁易懂,撮合了语音组合技术,大大减少了语音编辑的时间。完全支持在线下载,即便是WT588D通电的情况下,一样可以通过下载器给关联的SPI-Flash下载信息,给WT588D单片机语音芯片电路复位一下,就能更新到刚下载进来的控制模式。为市场上最多可加载500段用于编辑声音的语音芯片。
支持插入静音模式,插入静音不占用SPI-Flash内存的容量,一个地址位可插入10ms~25min的静音;
MP3控制模式下,完全迎合市场上MP3的播放/暂停、停止、上一曲、下一曲、音量+、音量-等功能;
按键控制模式下触发方式灵活,可随意设置任意按键为脉冲可重复触发、脉冲不可重复触发、无效按键、电平保持不可循环、电平保持可循环、电平非保持可循环、上一曲不循环、下一曲不循环、上一曲可循环、下一曲可循环、音量+、音量-、播放/暂停、停止、播放/停止等15种触发方式,最多可用10个按键触发控制输出;
3×8按键组合控制模式下能以脉冲可重复触发的方式触发24个地址位语音,所触发地址位语音可在0~219之间设置;
并口控制模式可用8个I/O口进行控制,仅限于WT588D-32L、WTW-28P;
一线串口控制模式可通过发码端控制语音播放、停止、循环播放和音量大小,或者直接触发0~219地址位的任意语音,发码速度600us~2000us;
三线串口控制模式和三线串口控制I/O口扩展输出模式之间可通过发码切换,三线串口控制模式下,能控制语音播放、停止、循环播放和音量大小,或者直接触发0~219地址位的任意语音,三线串口控制I/O口扩展输出可以扩展输出8位,在两种模式下切换,能让上一个模式的最后一种状态保持着进入下一个模式。
PWM和DAC输出方式,PWM输出可直接推动0.5W/8Ω的扬声器,DAC输出外接功放,音质好。
应用范围广,几乎可以涉及到所有的语音场所,如报站器、报警器、提醒器、闹钟、学习机、智能家电、治疗仪、电子玩具、电讯、倒车雷达以及各种自动控制装置等场所,工艺上达到工业应用的要求。
市场最常用的语音芯片方案介绍
3. 用5V电源怎样做一个触摸开关,需要详细图和电子元件
此电路中把喇叭换成led就行,建议在电源输入那边加个恒流二极管,控制电流,不然三极管会烧的~(电流超过200ma)
他是一个利用人体感应的杂波信号工作的触摸报警开关,该电路设计比较独特,它具有自锁功能,一旦人手触碰M后,扬声器B就会持续不断地发出报警声响,直至有关人员切断电源为止。电路也十分简单,但触发灵敏度极高。VT1、VT2构成触摸式模拟晶闸管电路,VT3、VT4为互补型低频振荡器。平时,模拟晶闸管关断,VT3、VT4停振,B无声。当人手触碰电极片M时,人体感应的杂波信号经R1注入VT2的基极,经放大后由集电极输出,反馈到VT1的基极,再经VT1放大,放大后信号由集电极输出又输入到VT2的基极,再进行放大……,周而复始,如此强烈正反馈使VT1、VT2迅速导通饱和,一旦进入导通态,电极片M就失去了控制作用,就好像单向晶闸管一旦导通,其门极就失去了控制作用,除非切断阳极电源。本电路也如此,只要人手一碰M,VT1、VT2就迅速导通,VT3、VT4起振报警,如要电路停止工作,只有切断电路工作电源。
本电路具有很高的触发灵敏度,可用作触摸报警器,实际使用时可在VT2的基极与发射极间并接一按键开关,作为解警开关,按下此开关因短接VT2的发射结,模拟晶闸管VT1、VT2可立即关断。VT1、VT2要求漏电流尽可能小些,否则电路关不死。此电路刚接通电源时,因冲击电流的影响会发声不止,此时只要按一下解警按钮,即可解除警报。
4. 如何用模拟电路或数字电路实现输出一个可调占空比的单脉冲,比如按键一次,输出一个脉冲。
调节RT或CT可改变输出脉宽
此图是闭合开关K就输出一个特定宽度(可调)脉冲,与K闭合时间长短无关
5. 有什么元件可以模拟一个轻触开关按下又弹起的效果,用这个模拟信号取代这个开关,220v或12v下使用
如果说的自锁开关的状态证记忆功能。这有很多电路可以实。
最简单的就是稳态触发电路。
6. 如何用单片机加上两个按键模拟脉冲编码旋钮,代替脉冲编码旋钮输出脉冲波形信号
通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
脉冲宽度调制
详细释义:是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。
优点:从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。
7. 电磁炉按键电路板换成触摸的电路板怎样接线
电磁炉按键电路板换成触摸的,需要将触摸板的输出,对应按键板的输入。通过高低电平变化,模拟按键按下和松开。