功能简介:
1.采用4X4矩阵键盘实现号码输入,并在LCD液晶上显示
2.按下enter键,显示calling…,并且蜂鸣器模拟电话拨号发声
3.按下*键,退格,按下#键,清楚电话号码
4.拨号过程中,长按#取消拨号

仿真电路图:

部分源程序:

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar keycode, DDram_value = 0xc0;
sbit rs = P2 ^ 0;
sbit rw = P2 ^ 1;
sbit e = P2 ^ 2;
sbit speaker = P2 ^ 3;
uchar speakerCnt = 0;
uchar code table[] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x20};
uchar code table_designer[] = "Calling........";
void lcd_delay();
void delay(uint n);
void lcd_init(void);
void lcd_busy(void);
void lcd_wr_con(uchar c);
void lcd_wr_data(uchar d);
uchar checkkey(void);
uchar keyscan(void);void main()
{uchar num;lcd_init();while (1){keycode = keyscan();if ((keycode >= 0) && (keycode <= 9)){lcd_wr_con(0x06);lcd_wr_con(DDram_value);lcd_wr_data(table[keycode]);DDram_value++;}else if (keycode == 0x0a){lcd_wr_con(0x04);DDram_value--;if (DDram_value <= 0xc0){DDram_value = 0xc0;}else if (DDram_value >= 0xcf){DDram_value = 0xcf;}lcd_wr_con(DDram_value);lcd_wr_data(table[10]);}else if (keycode == 0x0b){lcd_wr_con(0x01); //清屏DDram_value = 0xc0;speakerCnt = 0;}else if (keycode == 0x0c){uchar sound;lcd_wr_con(0x06);lcd_wr_con(0x80);for (num = 0; num <= 14; num++){lcd_wr_data(table_designer[num]);}speakerCnt = 50;}if (speakerCnt >= 1){speaker = 0; //发出按键响声delay(2000);speaker = 1;delay(2000);speakerCnt--;}}
}void lcd_delay() //液晶屏显示延时函数
{uchar y;for (y = 0; y < 0xff; y++){;}
}void lcd_init(void) //液晶屏初始化函数,向液晶写入各种命令
{lcd_wr_con(0x01); //清屏lcd_wr_con(0x38); //两行显示,5×7点阵,8位数据接口lcd_wr_con(0x0c); //开整体显示,光标关,无闪烁lcd_wr_con(0x06); //
}void lcd_busy(void) //判断液晶显示器是否忙的函数
{P0 = 0xff;rs = 0;rw = 1;e = 1;e = 0;while (P0 & 0x80){e = 0;e = 1;}lcd_delay();
}void lcd_wr_con(uchar c) //向液晶显示器写命令
{lcd_busy();e = 0;rs = 0;rw = 0;e = 1;P0 = c;e = 0;lcd_delay();
}void lcd_wr_data(uchar d) //向液晶显示器写数据
{lcd_busy();e = 0;rs = 1;rw = 0;e = 1;P0 = d;e = 0;lcd_delay();
}void delay(uint n) //延时函数
{uchar i;uint j;for (i = 50; i > 0; i--)for (j = n; j > 0; j--);
}

仿真演示视频:https://www.bilibili.com/video/BV1Y841187pU/

基于51单片机手机电话拨号盘模拟proteus仿真相关推荐

  1. 基于51单片机的手机电话拨号盘模拟proteus仿真

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.采用4X4矩阵键盘实现号码输入,并在LCD液晶上显示 2.按下enter键,显示calling-,并且蜂鸣器模拟电话拨号发声 3. ...

  2. 【011】基于51单片机的低频信号发生proteus仿真与实物设计

    ​一.资料内容 (1).基于51单片机的低频信号发生proteus仿真设计一份: (2).基于51单片机的低频信号发生proteus仿真设计keli源代码一份: (3).基于51单片机的低频信号发生A ...

  3. 基于51单片机的LCD1602电子钟闹钟proteus仿真设计

    本设计是基于51单片机的LCD1602电子钟闹钟proteus仿真设计 源码+仿真+原理图+器件清单 仿真软件版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编 ...

  4. 【004】基于51单片机的音乐播放器proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的音乐播放器proteus仿真设计一份: (2).基于51单片机的音乐播放器proteus仿真设计keli源代码一份: (3).基于51单片机的音 ...

  5. 【006】基于51单片机的简易电子计算器Proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...

  6. 基于51单片机的八路电压表采集Proteus仿真(源码+仿真+原理图+全套资料)

    资料编号:110 程序语言:C语言 仿真软件:Proteus8.9版本 功能讲解如下: 利用单片机及其外围器件(A/D转换器等)实现一款简易电压表,实现以下功能: 1   电压表能够进行8路模拟电压测 ...

  7. 基于51单片机智能导盲拐杖Proteus仿真

    功能介绍: 采用51单片机作为主控CPU,采用HC-SR04超声波模块测量障碍物距离,LCD1602显示屏显示当前的障碍物距离,并且可以设置报警的阈值,通过传感器测量障碍物的距离的远近来进行相关报警, ...

  8. 基于51单片机的自动售货机Proteus仿真(源码+仿真+设计报告)

    资料编号:137 视频讲解: 137-基于51单片机的自动售货机Proteus仿真(源码+仿真+设计报告) 功能介绍: 基本原理:通过矩阵键盘来选择货物的种类与数量过后自动售货机提示投币.自动售货机的 ...

  9. 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)

     资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...

  10. 基于51单片机火灾监测自动灭火装置Proteus仿真

    资料编号:167   下面是相关功能视频演示: 167-基于51单片机火灾监测自动灭火装置Proteus仿真(源码+仿真+全套资料) 功能讲解: 采用51单片机作为控制CPU,采用ADC0832采集火 ...

最新文章

  1. 《Adobe Fireworks CS6中文版经典教程》——1.5使用多个文档
  2. OCtaveResNet 测试
  3. Leetcode 109. 有序链表转换二叉搜索树 解题思路及C++实现
  4. 【网上的都不靠谱?还是得改源码】用Javasisst的字节码插桩技术,彻底解决Gson转Map时,Int变成double问题...
  5. Java数据结构——有序链表
  6. uva 10627 - Infinite Race(数论)
  7. MySQL | 数据库的六种约束、表的关系、三大范式
  8. Kettle环境搭建及使用(数据迁移)
  9. Mac电脑查看JDK文档,CHM格式文档阅读
  10. 电子技术_常见贴片电阻封装功率和标称值
  11. 他说,我可能以后不干安全了
  12. 德保罗大学计算机科学专业,德保罗大学专业
  13. JAVA中将标准的IEEE754 4字节16进制数据转换为float类型数据
  14. 【历史杂谈】之《古代最美的谎言》
  15. ubuntu16.04 caffe /usr/bin/ld : cannot find -lxxx (xxx代表不同的库名称)
  16. 第16届重型车辆运输技术国际大会(HVTT16) 2021中国国际道路运输装备科技博览会(RTET)
  17. 打卡小程序上线啦!新玩法来了!
  18. arcgis 线转面如何保留线的属性?
  19. Java——ArrayList(动态数组)介绍
  20. st编程语言和c语言一样不,STL,ST,SCL等PLC高级编程语言介绍

热门文章

  1. JetBrains 全家桶的全流程详解
  2. python:烤地瓜程序
  3. vue + element 与 vue element admin 中 tab标签视图 页拖拽(拖动) sortablejs 插件案例
  4. QT自定义Widget实现鼠标拖动窗口移动位置及鼠标拖拽窗口边缘窗口大小改变
  5. 根据计算机配置设置bios,电脑如何进入bios设置
  6. MacBook连接显示器发热的解决方法
  7. 一个MOS 电平转换电路引发的思考可避免更多的坑
  8. 【LTspice】【LTspice添加第三方***.lib文件】
  9. 关于淘客软件的那些事儿
  10. 三菱plc传送文件到服务器,三菱Q系列PLC通过FTP文件传输案例介绍