基于51单片机的手机电话拨号盘代码
时间: 2023-12-11 14:05:37 浏览: 46
以下是基于51单片机的手机电话拨号盘代码示例,使用键盘矩阵进行按键输入,将按键输入的数字通过串口发送出去:
```
#include <reg52.h>
#include <stdio.h>
sbit ROW0=P2^0;
sbit ROW1=P2^1;
sbit ROW2=P2^2;
sbit ROW3=P2^3;
sbit COL0=P2^4;
sbit COL1=P2^5;
sbit COL2=P2^6;
sbit COL3=P2^7;
void delay(unsigned int i) // 延时函数
{
while(i--);
}
void init_serial() // 初始化串口
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
}
void send_byte(char c) // 发送一个字节
{
SBUF = c;
while(!TI);
TI = 0;
}
void send_string(char* s) // 发送一个字符串
{
while(*s)
{
send_byte(*s++);
}
}
char get_key() // 获取按键
{
char key = 0xFF;
ROW0 = 0;
if(COL0 == 0) key = '1';
if(COL1 == 0) key = '2';
if(COL2 == 0) key = '3';
if(COL3 == 0) key = 'A';
ROW0 = 1;
ROW1 = 0;
if(COL0 == 0) key = '4';
if(COL1 == 0) key = '5';
if(COL2 == 0) key = '6';
if(COL3 == 0) key = 'B';
ROW1 = 1;
ROW2 = 0;
if(COL0 == 0) key = '7';
if(COL1 == 0) key = '8';
if(COL2 == 0) key = '9';
if(COL3 == 0) key = 'C';
ROW2 = 1;
ROW3 = 0;
if(COL0 == 0) key = '*';
if(COL1 == 0) key = '0';
if(COL2 == 0) key = '#';
if(COL3 == 0) key = 'D';
ROW3 = 1;
return key;
}
void main()
{
char key;
init_serial();
while(1)
{
key = get_key();
if(key != 0xFF)
{
send_byte(key);
}
delay(500);
}
}
```
在这个示例代码中,我们使用了一个4x4的键盘矩阵,通过P2口的IO口对其进行控制,通过get_key函数获取按键输入的数字,并通过串口发送出去。你可以根据自己的需求来修改代码,比如可以添加一个LCD显示屏,显示当前输入的数字,或者添加一个拨号功能等等。