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

}

}

}

}

五、实验现象

演示视频:

相关推荐
一枝小雨1 天前
【DMA】DMA入门:理解DMA与CPU的并行
单片机·系统架构·dma·嵌入式·arm
liujing102329291 天前
Day08_单片机-ADC和DMA
单片机·嵌入式硬件
华清远见IT开放实验室1 天前
华清远见携STM32全矩阵产品及创新机器狗亮相2025 STM32研讨会,共启嵌入式技术探索新程
linux·人工智能·stm32·单片机·嵌入式硬件·虚拟仿真
Roc-xb1 天前
VSCode c/c++头文件函数点击无法跳转问题
c语言·c++·vscode
YoungHong19921 天前
面试经典150题[037]:矩阵置零(LeetCode 73)
leetcode·面试·矩阵
天將明°1 天前
单例模式指南:全局资源的安全访问
c语言·单例模式·设计模式
蜀黍@猿1 天前
【GD32】中断系统
单片机·嵌入式硬件
LeenixP1 天前
STM32H750xx【QSPI】轮询方式读写GD25Q64E
c语言·stm32·嵌入式硬件·cubemx·stm32h7·keilmdk
小莞尔1 天前
【51单片机】【protues仿真】基于51单片机心形流水灯系统
c语言·stm32·单片机·嵌入式硬件·51单片机
沐欣工作室_lvyiyi1 天前
基于单片机的老年人身体健康蓝牙监测手环(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·老年人监测