基于PIC16F887的智能电话控制系统设计

基于PIC16F887的智能电话控制系统设计

系统设计

此次设计的电话系统以PIC16F887单片机为核心,用C语言编写。利用单片机外接的矩阵键盘与单片机通信,实现模拟电话的拨出,挂断,重拨功能。单片机启动蜂鸣器发出音乐,提示拨出或按键音。利用单片机与外接的矩阵键盘,实现数字密码锁功能,可以实现载入密码,错误告警,重设密码,并于LCD上同步显示。另可实现简易计算器功能。通过键盘扫描实现音乐的开关。并利用串口通信控制智能电话。
使用MPLAB X IDE 5和Proteus 8.3仿真成功

实现功能

  1. 模拟电话拨号功能
    模拟电话拨号时键盘拨出的电话号码(数字0~9),显示在LCD上;除0-9数字外,“*”用来删除最后的一个数字,“#”用来删除LCD上所有的数字,按下每个键都要有声响;设置一个重拨键,按下该键,自动重拨最后一个电话号码;号码拨通之后播放音乐提示;
  2. 计算器功能
    能够实现简单的加,减,乘,除功能。除法要求至少保留两位小数。
  3. 密码锁功能
    实现密码锁功能,系统预设初始密码“0”,输入正确后要求设置新密码,并要求重复输入以复查。新密码设置成功后,以新密码解锁电话。若密码输错,则不予解锁,并输错三次有自锁十秒。若密码输入正确自动LCD上显示“OK”并解锁电话。电话可重新回归锁定。
  4. 音乐盒功能
    使用按键切换乐曲,按键开始播放,终止播放。
  5. 电子琴功能
    使用矩阵键盘实现电子琴演奏。实现上位机输入既有乐谱,单片机自动演奏功能。能在上位机上编曲,单片机实现演奏
  6. 多平台控制功能(虚拟串口)
    于任意时间利用虚拟串口输入数据实现对单片机的控制,并且上位机的控制优先权高于矩阵键盘,唯有上位机给出指令方能退出控制。上位机实时显示数据和模式状态。实现键盘演奏电子琴
  7. LCD显示
    所有模块和功能均有LCD进行提示显示
  8. LED灯提示
    串口输入的数据将在LED灯上亮起以展示接收数值,上位机取得控制权时特定LED亮起,密码锁状态及密码错误状态有特定LED提示
  9. 计算器改进
    计算器可以在除法显示四位小数,并且计算器显示减法的负数结果。

    proteus仿真图

    proteus仿真图

软件设计

在系统上电之后,程序进入初始化设定。将开启串口——命令RC6作为输出,RC7作为输入,使能全局中断及外围中断,使能接收中断,设定8位波特率发生器,波特率9600,高速,8位数据发送。使能串口通信,8位接收,连续接收使能,下一步,程序将进入主循环,判断当前模式状态并进入运行。程序中实际设计了五个模式,一开始,将自动进入密码锁模式,只有设置正确密码后才可以自由切换其他模式
在系统设计中有三个程序,分别在其他模式的多种功能下反复使用
三个基本程序分别为按键检测模块,音符发声模块和LCD显示模块。
主系统程序图

具体应用说明

  • proteus内的说明指的是实物键盘的标号,电路按钮键盘与矩阵键盘一一对应
  • 程序启动后先输入初始密码 012之后需要设置两次相同密码为使用密码
  • 显示“setok”后按下最右下角键,可以看英文,意思是switch mode切换模式
  • 切换至“password”模式,输入您刚才设置的密码,若提示ok,请继续按switch mode则可以使用其他功能
  • 串口控制时键盘无用,以串口输入0xff终止控制,这时才能重新用键盘。
  • 串口以16进制输入,譬如输入00就是按下按键00,譬如0C,就是控制按键“confrim0c”按下
  • 音乐盒 模式下按“confirm”键可以切换模式,再按一次停止播放
  • 计算器模式下按confirm切换符号,按“result”为求和
  • 计算器功能不完善,只有简陋的低位运算功能,除法做了四位小数

在程序设计中 参考了CSDN网友的程序设计和一些意见,在此一并致谢。
具体的程序,所用串口软件和设计报告,请查看我上传的文件。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值