本文内容列表:

找四路答录机电路原理图

结构图:

它是如何工作的

答录机由74LS148、74LS279、74LS48组成,LED显示启动。当支架按钮尚未按下时,CLR为0,因此输出Q1~Q4为0;

所有发光二极管均熄灭。当主机按钮按下时,CLR为1。可以输入。谁先回答,相应的灯就会亮。 74LS279和74LS148的输出cp等于0,其他被锁存。 ,无法启用其他输出。

扩展信息:

使用51单片机搭建四路答录机

MCU当然不仅仅是51。51 MCU是一款稍微通用的MCU,可以通过I/O口的定义实现多种控制功能。

答录机原理:如果有四个通道,当其中任何一个通道被控制时,其他通道都无效。结果是第一次按下,可以用数码管或LED灯显示。当然,这只是讲原理和编程。具体可以根据答录机的通道数和显示模式来更改程序。

源程序如下:

div class="blockcode"blockquote/*使用的是AT89S52开发板。独立按钮界面如下,使用这四个通道。显示最先按下的LED灯,对应第一至第四个LED灯。按下其他按钮将无效。如果想再次实现,可以手动复位单片机*/

#include reg52.h

sbit key1=P3^0; //根据需要定义按键并连接线路,如独立按键(4路)

sbit key2=P3^1;

sbit key3=P3^2;

sbit key4=P3^3;

/*void delay(unsigned int cnt) //如果有抖动或者干扰,可以用小的delay来去抖

{

同时(--cnt);

}*/

void main()

{

位标志;

同时(!标志)

{

if(!key1)

{

P1=0xFE;

标志=1;

}      

/*LED 灯显示按下的按键。这里的第一个灯是一个8位的LED灯,即:0111 1111。逆读为:1111 1110。即:0xFE *。 P1口对应LED灯。给P1赋值*/

else if(!key2)

{

P1=0xFD;

标志=1;

}

//第二个灯亮

else if(!key3)

{P1=0xFB;标志=1;}

//第三个灯亮

else if(!key4)

{

P1=0xF7;

标志=1;

}

//第四个灯亮,表示先按第四路

}

同时(标志); //可以再添加一个I/O来控制Flag,这样初始化,继续接听,还可以设计按下时的声音

}

请高手做一个51单片机的四路应答器。它需要汇编程序、电路图和分析过程。还有4天的答辩时间,

我发个八路版本给你参考

ORG 0000H

JMP 开始

ORG 0030H

表:;共阴数码管显示代码表

DB 6DH,7DH,07H,7FH;6789

延迟:MOV R5,#20

LOOP4:MOV R6,#50H;延迟20X20ms

LOOP5:MOV R7,#100

DJNZ R7,$

DJNZ R6,LOOP5

DJNZ R5,LOOP4

RET

;--------------------------------------------------------

BEGIN: MOV P2,#0FFH ;P2口设置为高电平,准备接收信号

MOV R4,#0

再次:MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P1,A

LOOP1:MOV A,P3;接收来自p3端口的响应信号

CPL A

JZ LOOP1

LOOP2:RRC A;如果有人应答信号,请一一移动以确定哪一个应答

INC R4

JNC LOOP2

;************************

MOV A,R4

MOVC A,@A+DPTR ;找到对应位显示代码

MOV P1,A

LEDDIS:

MOV A,#0FFH

CLR C

LEDDIS1:

RLC A

DJNZ R4,LEDDIS1

MOV P0,A

LOOP3:JNB P2.2,开始;如果主机按下复位信号键,则转至主程序

LCALL DELAY ;调用延迟子程序

SJMP LOOP3; p2.2端口以0.4s的间隔重复变化,驱动蜂鸣器

结束

寻找MCS-51单片机四路答录机的C语言编程

#includereg51.h

#defineuint 无符号整数

#defineuchar 无符号字符

sbitspeaker = P2^7;

sbit key0 =P1^0;

sbit key1 =P1^1;

sbit key2 =P1^2;

sbit key3 =P1^3;

sbit key4 =P1^4;

sbit key5 =P1^5;

sbit key6 =P1^6;

sbit key7 =P1^7;

ucharled[8]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};

voiddelay_1ms(uint t)

{

uchar m,n;

对于(m=t;m0;m--)

对于(n=330;n0;n--);

}

bitiskeyinput() //判断某个按键是否关闭

{

if((P1 0xff) ==0xff ) //屏蔽高4位(列线),只检测低4位(行线)

返回0; //没有按键关闭,返回0

其他

返回1; //如果钥匙关闭,返回1

}

ucharkey_identify() //识别按键编号

{

uchar键;

if( key0==0 )key=0;

if(key1==0)key=1;

if( key2==0 )key=2;

if( key3==0 )key=3;

if( key4==0 )key=4;

if( key5==0 )key=5;

if( key6==0 )key=6;

if( key7==0 )key=7;

返回键; //输出按键号

}

voidkeyprocess(uchar keynum)

{

uint i;

P0 = led[keynum];

i=500;

同时(i--)

{

扬声器 = 0;

delay_1ms(10);

扬声器 = 1;

}

}

void main()

{

uchar keynum;

P0 = 0xFF;

同时(1)

{

while (!iskeyinput() ); //如果没有钥匙,则等待

delay_1ms(10); //去除按键抖动

if(iskeyinput() ) //当前有按键按下,需要识别按键并等待键盘松开

{

keynum= key_identify(); //识别钥匙号码

keyprocess(keynum);

同时(1); //等待重置

}

}

}