【51单片机】【protues仿真】基于51单片机呼叫系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示

2、矩阵按键​

3、呼叫后数码管显示号数同时声光警报提示

4、应答按键按下后取消当前呼叫和声光警报

二、使用步骤

基于51单片机的呼叫系统设计(如病床呼叫、排队叫号等)是一种典型的嵌入式应用,采用数码管显示,矩阵按键和蜂鸣器组成。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、蜂鸣器模块,led灯模块

4、数码管显示模块

四、软件设计

#include <reg51.h>

#include"intrins.h"

#define uint unsigned int

#define uchr unsigned char

sbit led0=P2^2;

sbit buzzer=P2^3;

sbit dula=P2^6; //声明段选线选通端

sbit wela=P2^7; //声明位选线选通端

sbit clear=P3^4;

uchr key,shi,ge,count;

uchr code tab\[\]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,

0x76,0x79,0x38,0x3f};

/*延时子函数,xms为形参*/

void delay(uint xms)

{

do

{

nop();

nop();

nop();

xms--;

}

while(xms);

}

/*矩阵键盘扫描子程序*/

void matrixkeyscan()

{

uint temp;

P3=0xf7; //给P3口赋值

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0) //检测是否有键按下

{

delay(6); //延时去抖

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0) //再次检测是否有键按下

{

temp=P3;

switch(temp)

{

case 0x77:

key=1;

break;

case 0xb7:

key=2;

break;

case 0xd7:

key=3;

break;

case 0xe7:

key=4;

break; //判断按下的是哪个键

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

} //等待按键释放

}

}

P3=0xfb;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(6);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0x7b:

key=5;

break;

case 0xbb:

key=6;

break;

case 0xdb:

key=7;

break;

case 0xeb:

key=8;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfd;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(6);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0x7d:

key=9;

break;

case 0xbd:

key=10;

break;

case 0xdd:

key=11;

break;

case 0xed:

key=12;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfe;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(6);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case 0x7e:

key=13;

break;

case 0xbe:

key=14;

break;

case 0xde:

key=15;

break;

case 0xee:

key=16;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

}

五、实验现象

演示视频:

相关推荐
Zw-awa6 小时前
反馈:让系统知道自己做得对不对
stm32
女神下凡9 小时前
芯参谋(38):NAND_MCP_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
嵌入式学习菌9 小时前
FreeRTOS 中断管理实战:BASEPRI 寄存器实验
单片机·嵌入式硬件
HRTOS10 小时前
HRTOS:一个名字背后的目标——不断逼近硬实时
经验分享·单片机·系统架构·51单片机
UrSpecial12 小时前
GPIO 是什么?
单片机·嵌入式硬件
山下梅子酒22512 小时前
洛谷-入门-B2079
c语言
剑指offer.13 小时前
ARM裸机开发-SPI
arm开发·嵌入式硬件·嵌入式·arm
Mr_Macallon14 小时前
C++回顾(基础)(01)
c语言·开发语言·c++·学习
修船大队长14 小时前
配置接受报文每个报文对应一个mailbox配置流程记录
网络·单片机·mcu
wuminyu15 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++