【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;

}

}

}

}

五、实验现象

演示视频:

相关推荐
纳米软件8 小时前
IGBT模块测试项目集合——纳米软件
单片机·嵌入式硬件·模块测试
xie_pin_an8 小时前
深入浅出 C 语言数据结构:从线性表到二叉树的实战指南
c语言·数据结构·图论
拼命鼠鼠8 小时前
【算法】矩阵链乘法的动态规划算法
算法·矩阵·动态规划
总爱写点小BUG12 小时前
打印不同的三角形(C语言)
java·c语言·算法
单片机系统设计12 小时前
基于STM32的智能台灯系统/智能书桌
stm32·单片机·嵌入式硬件·毕业设计·智能家居
F1331689295712 小时前
5030A 芯片 24V 转 5V 15A 大电流快充选型
网络·单片机·嵌入式硬件·物联网·汽车
恒锐丰小吕12 小时前
无锡黑锋 HF4004 低噪声电荷泵DC-DC转换器技术解析
嵌入式硬件·硬件工程
星一工作室13 小时前
STM32项目分享:基于单片机的智能宠物玩具的设计
stm32·单片机·嵌入式硬件
up向上up13 小时前
基于51单片机数字频率计仿真设计
单片机·嵌入式硬件·51单片机
SystickInt14 小时前
32 RTC实时时钟-独立定时器
stm32·单片机·嵌入式硬件