基于单片机的电话拨号系统的设计

上传人:仙*** 文档编号:31404219 上传时间:2021-10-11 格式:DOC 页数:45 大小:414KB
收藏 版权申诉 举报 下载
基于单片机的电话拨号系统的设计_第1页
第1页 / 共45页
基于单片机的电话拨号系统的设计_第2页
第2页 / 共45页
基于单片机的电话拨号系统的设计_第3页
第3页 / 共45页
资源描述:

《基于单片机的电话拨号系统的设计》由会员分享,可在线阅读,更多相关《基于单片机的电话拨号系统的设计(45页珍藏版)》请在装配图网上搜索。

1、兰州工业学院 毕业设计(论文)题目 基于单片机的电话拨号系统的设计 院 系 电子信息工程学院 专 业 电子信息工程技术 班 级 嵌入式11 姓 名 靳云霞 学 号 201110103104 指导教师(职称) 贾桂霞(副教授) 日 期 2014年3月 兰州工业学院毕业设计(论文)任务书电子信息工程系14届电子信息工程技术(嵌入式方向)专业毕业设计(论文)任务书毕业设计(论文)题目基于单片机的电话拨号系统的设计课题内容性质工程设计课题来源性质教师收集的结合生产实际的课题设计/论文校内(外)指导教师职 称工作单位及部门联系方式贾桂霞副教授电子信息工程系18919080768一、题目说明(目的和意义)

2、:用单片机设计一个模拟电话拨号系统,用1602LCD液晶显示来实现显示时间并能用矩阵式按键控制电话所拨号码及显示功能的设计.通过本设计使学生在获取技术资料、专业知识综合运用、科技论文撰写、电子产品设计等方面的能力得到提高。二、设计(论文)要求(工作量、内容): 【设计内容】1、设计一个单片机监控的电话拨号键盘,将电话键盘中拨出的某一电话号码,显示在LCD显示屏上。电话键盘共有12个键,除了“0” “9”10个数字键外,还有“*”键用于实现退格功能,即清除输入的号码;“#”键用于清除显示屏上所有的数字显示。要求每按下一个键要发出声响,以表示按下该键。2、画出硬件电路图,完成硬件电路的设计;然后编

3、写控制程序并使用Proteus进行仿真。【设计要求】 1、设计环境硬件:微机、所需元器件等;软件:Protel电路设计软件、WAVE/keilC仿真软件、Proteus仿真软件。2、设计步骤1)系统总体设计;2)电子元件选型及硬件电路设计;3)控制程序编写; 4)Proteus仿真调试。【设计报告要求】1、 论文撰写应该符合兰州工业学院毕业论文撰写规范要求;论文中应该包括绪论、功能、方案确定、单元电路设计、完整的硬件电路设计及软件流程等内容。三、进度表日 期内 容第15周第16周第17周第18-20周第21周下学期 第12周1、下达设计任务、查阅资料,确定系统总体设计方案;2、 拨号电话的原理

4、电路设计;3、印制电路板设计;4、软件设计,Proteus仿真调试;6、论文撰写;7、毕业答辩。完成日期第21周(本学期)答辩日期第1-2周(下学期)四、 主要参考文献、资料、设备和实习地点及翻译工作量:(一)参考文献1 赵又新著,微机原理与接口技术. 中国电力出版社,20072 韩晓东、李勇江等著,Protel 99 SE电路设计实用教程. 中国铁道出版社,20083 胡汉才,单片机原理及其接口技术.清华大学出版社,20104 陈忠平编著,51单片机C语言程序设计经典实例. 电子工业出版社,20125 张涵等编著,基于PROTEUS的电路及单片机设计与仿真. 电子工业出版社,2012(二)实

5、习地点学校实验室、学生自己考察的外部地点。(三)翻译工作量对论文摘要进行英文翻译。要求英文摘要250单词以内,关键词58个词。指导教师签字教研室主任签字主管系领导签字年 月 日年 月 日年 月 日注:本任务书要求一式两份,一份系部留存,一份报教务处实践教学科。摘 要随着人们生活水平的不断提高,电话在人们的日常生活中是比较常见的电子产品之一,它已进入我们的每一个家庭。本文设计是基于单片机的电话拨号系统,硬件部分采用AT89C51单片机作为电话键盘拨号按键显示的核心部件,矩阵键盘作为输入电路模块,1602LCD作为显示电路模块。系统可以实现所拨号码显示、退格、清屏等功能。结果表明该设计具有电路简单

6、、读取方便、显示直观、代码简洁、容易操作、低功耗和低成本等优点,可用于一般的生活和工作,也可通过改装,提高性能,增加功能,从而给人们的生活带来更多的方便。关键词:单片机;键盘;1602LCD AbstractAs people living standard unceasing enhancement, the phone in Peoples Daily life is one of the more common electronic products, it has entered our every family. Design of this article is paper bas

7、ed on single chip microcomputer telephone dialing system,the hardware part adopts AT89C51single-chip microcomputer as input circuit, 1602 LCD display circuit. Can realize the dial number display backspace, screen clearing, and other functions. The results show that the design has simple circuit, con

8、venient read, direct display, code is simple, easy to operate, low power consumption and low cost advantages, can be used for normal life and work, also can through modification, improve its performance, add features, so as to bring to people life more convenient. Keywords: microcontroller; keyboard

9、 ; 1602LCD 目 录摘 要Abstract1 绪 论12 系统总体设计方案12.1 系统基本设计方案与论证22.1.1 控制部分的选择方案与论证22.1.2 输出显示电路模块的选择方案与论证22.1.3 键盘输入电路模块的选择方案与论证32.2 系统设计最终方案43 系统硬件设计53.1 主芯片模块53.1.1 主要特性63.1.2 管脚说明63.2 晶振和复位电路模块83.2.1 复位电路93.2.2 晶振电路93.3 显示电路模块93.3.1 1602LCD简介103.3.2 1602LCD的RAM地址映射及标准字库表133.3.3 1602LCD的一般初始化(复位)过程153.4

10、输入电路模块153.4.1 矩阵键盘的按键识别方法153.4.2 矩阵键盘的基本结构163.5 系统硬件原理图174 系统软件设计194.1 软件设计整体思路194.2 主要功能模块设计214.2.1 键盘扫描模块设计214.2.2 LCD显示模块设计23总 结25致 谢28参考文献29附件1:源程序29附件2:电话拨号系统电路原理图36兰州工业学院毕业设计说明书(论文)371 绪 论随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。各种数字显示仪器中的显示、广告牌、数码产品等,传统的数码管显示已经远远不能满足各行各业的需求。单片机的应用已经

11、越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。基于单片机的LCD显示是一种用单片机来控制的一种显示系统,它不仅能显示各种数字、字母,还能显示各种字体的汉字以及一些简单的图象,使用起来极为方便,只要通过对单片机写入一定的程序来控制LCD的显示即可完成,根据程序的不同而产生不同的效果。随着单片机产品以及LCD产品的不断涌现,这一领域已经得到了飞速的发展。电话发展的短短几十年,从无号码显示到有号码显示,再到可视电话,在每一个转变过程中都有重大的突破。可是它还在发展之中,以后必将出现功能更加强大的电话,基于这样的理念,本次设计是用单片机来控制电话拨号键盘按键的显示。本文设计的是基于单片机的

12、电话拨号系统,该系统可以实现电话号码数字显示。系统主要由电话拨号矩阵键盘、单片机最小系统、LCD1602显示屏几个单元电路组成。在本设计中,最终选用的是矩阵式键盘,把所操作的数字送至单片机,通过单片机实现号码的显示与控制。2 系统总体设计方案2.1 系统基本设计方案与论证2.1.1 控制部分的选择方案与论证方案一:用可编程逻辑器件设计用可编程逻辑器件设计可采用PLD器件,设计起来结构清晰,各个模块从硬件上设计起来相对简单,控制与显示的模块间连接也会比较方便。但是考虑到本次设计的特点,EDA在能够扩展上比较受局限,占用的资源也比较多。从成本上讲,可编程逻辑器件价格比较高。方案二:用单片机设计单片

13、机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器(Microcontroler),用单片机芯片作为控制部分,单片机有丰富的中断源,它的准确度相当高,并且C语言的灵活运用,给编程带来了方便。单片机I/O功能也比较强大,容易对其进行扩展,使设计更加完善,此外单片机的成本也比较低。综上所述,单片机资源丰富,程

14、序编写也灵活简单,可移植性强,性价比也高,所以本次设计选用单片机作为主控芯片。2.1.2 输出显示电路模块的选择方案与论证方案一:用数码管进行显示数码管由于显示速度快,使用简单,显示效果简洁明了而得到了广泛应用。但是由于我们计划显示电话号码,显示的数字内容多。用数码管无法显示如此丰富的内容,因此本次设计放弃了此方案。方案二:用LCD液晶进行显示LCD由于其位数多,可显示32位,显示清晰,显示内容丰富,显示信息量大,程序简单,显示快速而得到了广泛的应用。对于本次设计本文选用的LCD液晶能够实现电话拨号系统,能够很好的满足显示要求,因此本次设计选择了此方案。2.1.3 键盘输入电路模块的选择方案与

15、论证键盘用于实现单片机应用系统中的数据和控制命令的输入,键盘输入也是单片机应用系统中使用最广泛的一种输入方式。键盘输入的主要对象是各种按键或开关。这些按健或者开关可以独立使用,也可以组合成键阵使用。单片机中常用的按键式键盘可以分为两类:独立连接式和行列式。每类按译码方式的不同又分为编码式和非编码式两种。单片机中一般使用的都是用软件来识别和产生键代码的非编码键盘。行列式键盘的编码方式有静态和动态两种。静态接口主要由一个行编码器和一个列编码器构成;动态接口可采用计数器,译码器和数据选择器构成。这两种键盘由硬件完成键的编码任务。一般在小型仪器仪表和控制系统中,使用较多的是行列式和独立式的非编码键盘;

16、如果系统要求实现多键同时按下的处理,则用非编码独立方式较为合适。方案一:采用独立式按键电路独立式按键电路每个按键单独占有一根I/O接口线, 每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点为当按键较多时占用单片机的I/O口数目较多,优点为电路设计简单,且编程相对比较容易。 方案二:采用行列式键盘电路行列式键盘为4*3矩阵式行列扫描,虽然软件较为复杂,但是当按键较多时可降低占用单片机的I/O口数目。对于此设计,由于键盘按键数目多,故采用方案二。2.2 系统设计最终方案本系统包括主芯片模块、显示电路模块、键盘输入模块、晶振和复位电路模块。综上各方案所述,确定最终设计方案为:采用单

17、片机作为主控制系统,1602LCD液晶显示屏作为显示部分,矩阵键盘作为输入模块。整个硬件电路由单片机及单片机的复位和晶振电路、音频电路、1602LCD液晶显示器和4*3矩阵式键盘组成。系统结构框图如图2.1所示。AT89C51单片机晶振电路复位电路音频电路1602LCD液晶显示电路矩阵键盘 图2.1 系统整体硬件组成框图3 系统硬件设计3.1 主芯片模块AT89C51单片机是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051

18、是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其芯片引脚如图3.1所示。图3.1 AT89C51芯片引脚图3.1.1 主要特性(1)与MCS-51 兼容 (2)4K字节可编程闪烁存储器 (3)寿命:1000写/擦循环(4)数据保留时间:1

19、0年(5)全静态工作:0Hz-24Hz(6)三级程序存储器锁定(7)128*8位内部RAM(8)32可编程I/O线(9)两个16位定时器/计数器(10)5个中断源 (11)可编程串行通道(12)低功耗的闲置和掉电模式(13)片内振荡器和时钟电路 3.1.2 管脚说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1

20、口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉

21、优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示。P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外

22、部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行

23、MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入

24、。XTAL2:来自反向振荡器的输出。3.2 晶振和复位电路模块晶振和复位电路模块是系统中很重要的一部分,其中电路上部分为晶振电路,提供时钟信号,下部分为复位电路,使单片机处于一个基准点。其电路如图3.2所示。 图3.2 晶振和复位电路图 3.2.1 复位电路单片机需要复位以后才能正常工作,复位的目的就是使单片机处于一个基准点,在这个基准点,程序将会从C51的main()主函数的第一条语句开始执行。复位工作是一个纯硬件的工作,一般是在上电开始几毫秒内执行完毕。复位的过程很简单,在电源刚刚合上时,电流经过电阻对电解电容器充电,这样在电阻上就形成一个电压,对于单片机来说,这个电压就是复位电压。经过若

25、干毫秒以后,电解电容器被充满电,这时电阻就没有电流流过,电阻两端也就没有电压,单片机的复位脚电压恢复为0,复位工作结束,单片机开始工作。3.2.2 晶振电路在AT89C51单片机内部有一振荡电路,只要在单片机的XTAL1和XTAL2引脚外接晶振,就改成了自激振荡器并在单片机内部产生时钟脉冲信号。如图3.2所示,单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个引脚间,接一个晶振及两只电容就构成了时钟电路。电路中的器件可以通过计算和实验确定,也可以参考一些典型电路参数。电路中,电容器C1和C2对晶振器频率有微调作用,通常取值范围30+10pF;石英晶体选择6MHZ或12

26、MHZ都可以。其结果只是机器周期时间不同,影响计算器的计数初值。3.3 显示电路模块本设计中重点部分是基于单片机的1602LCD液晶显示部分。液晶显示模块是一种将液晶显示器件、连接件、集成电路、PCB线路板、背光源、结构件装配在一起的组件,英文名叫“LCD Module”, 简称“LCM”,中文一般为“液晶显示模块”。在单片机系统中使用液晶显示模块作为输出有以下优点:显示资料高、数字式接口、功率消耗小、电路中的应用。3.3.1 1602LCD简介工业字符型液晶能够同时显示16*2即32个字符(16列2行)。1602LCD字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的两条是背光电

27、源线。 一般1602字符型液晶显示器实物如图3.3所示。图3.3 1602LCD的实物图1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,应用中并无差别。1602LCD芯片引脚如图3.4所示。 图3.4 1602LCD芯片引脚图1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.1所示。表3.1 引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VEE液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0

28、数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模

29、块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。表3.2 控制命令表 序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602

30、LCD液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H, 光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S: 屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制,D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标

31、。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。3.3.2 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块

32、在哪里显示字符,图3.5是1602LCD的内部显示地址。图3.5 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B (80H) =11000000B (C0H) 。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602LCD液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字

33、符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。其中字符代码与字符图形对应关系如图3.6所示。图3.6 字符代码与字符图形对应关系3.3.3 1602LCD的一般初始化(复位)过程延时15Ms 写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显

34、示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置3.4输入电路模块3.4.1 矩阵键盘的按键识别方法常用的键盘识别方法有:行扫描法,线翻转法和利用8279键盘接口的中断法。前两种方法相当于查询法,需要反复查询按键的状态,但需要会占用大量的CPU时间。后一种方法在有键按下时向CPU申请中断,平时并不需要占用CPU时间。在本系统中,完全可以不使用中断法完成键盘接口, 这是由系统的特殊性决定的。首先,对于本系统而言,要实现便携式的设计,硬件电路使用的器件越少越好。其次,被测信号由外中断引脚输入,未占用单片机4个并行I/O口中的任何一个,系统有足够的资源利用自身I/O 口完成接口。最

35、后,只有当传感器输出信号频率为空载频率,系统处于空闲待测的状态下,才允许键盘输入,因此键盘识别占用的CPU时间不会对系统正常工作造成影响。因此直接利用单片机并行接口完成键盘的接口,采用行扫描法进行键盘识别。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,具体过程如下: (1)判断键盘上是否有键闭合在初始化阶段,将全部行线设置为低电平,在没有任何键按下时,所有的列线将读到高电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。相反,如果输入输出端口全是高电平,则键盘中无键按下。 (2)去除键的机械抖动为保

36、证键的正确识别,需要进行去抖动处理。其方法是得知键盘上有键闭合后延迟一段时间,再判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合期,否则认为是键的抖动或者是干扰。(3)确定闭合键的物理位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线设置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。(4)得到闭合键的编号在得到闭合键的物理位置的基础上,根据给定的按键编号规律,计算得出相应闭合键的编号。(5)确保CPU对键的一次闭合仅做一次处理为

37、实现这一功能,可以采用等待闭合键释放以后再处理的方法。3.4.2 矩阵键盘的基本结构矩阵键盘中的键实际上就是一个机械开关,位于行线和列线的交点处,图3.7所示为本设计中使用的4行3列的12键矩阵键盘排列图,当键被按下时,其交点的行线和列线相接通,使相应行线或列线上的电平发生变化,根据电平变化情况确定被按下的键,其键盘原理如图3.8所示。 图3.7 键盘排列图 图3.8 键盘原理图3.5 系统硬件原理图综合以上各单元电路的设计方案,电话拨号系统的硬件电路设计如图3.9所示。系统初始化后,由单片机通过扫描键盘上所按下的键,然后显示在1602LCD液晶显示屏上,键盘接在单片机的P3端口,LCD显示屏

38、接在单片机的P0端口,P0端没有上拉电阻,所以外接RP1。在这一系统中单片机为核心部件,通过对单片机编写程序,采用行扫描法对键盘进行识别。获取按键后,由单片机控制LCD显示。1602LCD液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,LCD内带字符发生器的控制器,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设置光标,在此送上该字符对应的ASCII码即可显示。 图3.9 系统硬件原理图4 系统软件设计AT89C51单片机可以使用汇编语言和C语言进行编程。汇编语言与机器指令一一对应,所以用汇编语言编写的程序在单片

39、机里运行起来效率较高,但可移植性差。C语言程序可读性高,也便于移植到其它系统中,故本次设计使用C语言编程。4.1 软件设计整体思路依据系统的软件结构,将系统的软件划分为键盘扫描、液晶显示、声音控制等功能模块,如图4.1所示。电话拨号系统声音控制液晶显示键盘扫描图4.1 系统软件功能结构图系统第一次上电后,先进行初始化,初始化LCD模块,设置LCD中各个部分的显示内容,然后进行键盘扫描,获取按键,以及根据各按键的不同执行相应的操作,最后等待释放,释放之后再进行键盘扫描,循环以上操作。系统总体控制流程如图4.2所示。开始是否是清屏退格超过11位?结束显示数字#键按下?*键按下?T0中断控制按键声音

40、是否有键按下?键盘扫描初始化模块LCD初始化设置LCD第一行显示否是否是否图4.2 系统总体控制流程图4.2 主要功能模块设计4.2.1 键盘扫描模块设计键盘上有很多键,每一个键对应一个键码,以便根据键码转到相应的按键处理子程序,进一步实现数据输入和命令处理的功能。键盘扫描模块程序流程如图4.3所示。键盘扫描确定按键的物理位置计算键码等待释放否是否有键按下是开始结束消除抖动图4.3键盘扫描模块程序流程图按照图3.1所设计的系统电路原理图,AT89C51单片机的P3口用作键盘I/O口,键盘的列线接到P3口的低4位,键盘的行线接到P3口的高4位。列线P3.0-P3.3分别接有4个上拉电阻到正电源+

41、5V,并把列线P3.0-P3.3设置为输入线,行线P3.4-P3.7设置为输出线。4根行线和4根列线形成16个相交点。 (1)检测当前是否有键被按下。检测的方法是P3.4-P3.7输出全“0”,读取P3.0-P3.3的状态,若P3.0-P3.3全为 “1”,则无键闭合,否则有键闭合。 (2)去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。 (3)若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P3.4-P3.7按下述4种组合依次输出: P3.7 1 1 1 0 P3.6 1 1 0 1 P3.5 1 0 1 1 P3.4 0 1 1 1 (4)在每组行输出时

42、读取P3.0-P3.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。键盘扫描程序核心代码如下:uchar GetKey () uchar i, j, k = 0; uchar KeyScanCode = 0xEF, 0xDF, 0xBF, 0x7F; /键盘扫描码 uchar KeyCodeTable =0xEE,0xED,0xEB,0xDE,0xDD,0xDB, 0xBE,0xBD,0xBB,0x7E,0x7D,0x7B; /键盘特征码 P3 = 0x0F;/扫描键盘获取按键序号 if

43、 (P3! = 0x0F) for (i = 0; i 4;i+) P3 = KeyScanCodei; for (j = 0;j 3;j+) k = i * 3 + j; if (P3 = KeyCodeTablek) return k; else return 0xFF;4.2.2 LCD显示模块设计1602LCD液晶显示屏的显示函数很简单,只要严格按照其时序图操作,并结合其相关指令集,写好LCD的初始化程序,清屏程序,写指令程序,写数据程序,读数据程序等一系列驱动程序,即可完成LCD的所有显示需要。在本设计中,由于需要显示的内容比较多,且有些需要重复显示,有些只要显示一次,故只画出液晶显

44、示的基本流程。LCD显示模块流程如图4.4所示。LCD初始化显示发出数据延时写LCD命令延时开始结束图4.4 LCD显示子程序流程图LCD显示子程序核心代码如下:/LCD初始化void LCD_Init() LCD_Wcmd(0x38);DelayMS(1);/设定LCD为16*2显示,5*7点阵,8位数据接口 LCD_Wcmd(0x0c);DelayMS(1);/开显示,不显示光标 LCD_Wcmd(0x06);DelayMS(1);/显示光标,自动右移,整屏不要动 LCD_Wcmd(0x01);DelayMS(1);/显示清屏/写LCD命令void LCD_Wcmd (uchar cmd)

45、 while (LCD_Busy (); /判断LCD是否忙碌 RS=0;RW=0;E=0; _nop_();_nop_(); P0=cmd;DelayNOPx();E=1; DelayNOPx();E=0;/写LCD数据 void LCD_Wdat (uchar str) while (LCD_Busy (); /判断LCD是否忙碌 RS =1;RW =0;E=0; P0=str; DelayNOPx (); E=1;DelayNOPx();E=0;/在LCD显示字符串void Display_String(uchar * str,uchar LineNo) uchar k; LCD_Pos

46、(LineNo); for (k = 0; k 16; k+) LCD_Wdat (strk);总 结随着IT行业的不断发展,普通的电话已渐渐不能满足人们日常的通信需求,而更智能、更人性化、微小型、多元化的电子产品成为了现代化电子产业的主要发展方向。本系统就是基于这样一个背景下开始设计的。系统以AT89C51芯片作为主控模块,键盘作为输入电路模块,1602LCD作为显示电路模块,实现功能如下:(1)系统运行时将所按下的数字显示在液晶屏上;(2)电话号码键盘上的“*”键能够实现退格功能;(3)电话号码键盘上的“#”键能够实现清除功能;(4)每按下一个键盘能够发出声音。此次设计不仅锻炼了我们理论和

47、实践相结合的综合能力,还使得我对专业有了更深一步的了解,巩固了我们所学的专业基础知识,提高了我们解决实际工程问题的能力,同时也提高我们查阅文献资料、设计手册、设计规范的动手能力,通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,并且意志力,抗压能力也都得到了不同程度的提升。这正是我们进行毕业设计的目的所在。由于本人能力有限,系统仍然存在着一些问题:(1)本系统只显示了所按下的键,系统可以再集成一些其它模块,将所按下的键通过声音发出来。(2)作为家用电话,本系统还不能显示时间和日期,这有待于在以后的学习中进一步探讨。“团结、合作、谦虚”这三个词我的体会

48、也比较深。做任何事包括做实验都不是孤立的,不是你“闭门造车”,而是一个需要和他人交往的过程。这就是要求我们要团结,要有合作精神,要注意和他人的沟通,要谦虚,不懂就问,所谓“知之为知之,不知为不知”。总之,在整个实验操作和论文完成的过程中,我体会到的是实验艰辛和收获的充实,感受到的是一种坚持不懈、锲而不舍的科研精神。对我以后的深造学习有重要的意义。致 谢毕业设计即将完成之际,我特别想借此机会感谢一下贾老师,因为此次设计是在老师的悉心关怀和精心指导下完成的,她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。贾老师在百忙之中抽出时间,从方案的论证、资料的查阅、电路的设计、论

49、文的撰写、修改,都进行了一丝不苟的指导和严格的要求,她的悉心指导是我设计能如期完成的重要因素,在此我衷心的感谢贾老师给我提供的大量指导与帮助。 同时我也非常感谢我的同学和朋友,在我写论文的过程中给予我关爱、理解和支持,在设计过程中,我遇到的问题有很多,在他们的帮助下我才能完成整体程序的编制。可以说,本设计的顺利完成,他们对我的帮助是不可忽视的。在此,我要向他们表示由衷的感谢。 最后,感谢学校三年来对我的培养与教育,感谢学院各级领导及相关老师对我三年来成长的关心与本设计的指导。感谢所有在我完成本设计过程中给予我帮助的同学和朋友。也祝愿大家身体健康,工作顺利,万事如意!参考文献1 李朝青, 单片机

50、原理及接口技术. 北京航空航天大学出版社, 20062 张毅刚, 单片机原理极其应用. 哈尔滨工业大学出版社, 20043 赵建领编著, 51系列单片机开发宝典. 电子工业出版社, 20074 潘永雄编著, 新编单片机原理与应用. 西安电子科技大学出版社, 20035 李国兴、李伟编著, 单片机开发应用技术. 北京大学出版社, 20076 刘瑞新编著, 单片机原理及应用教程. 机械工业出版社, 20037杨居义编著, 单片机课程设计实例教程. 清华大学出版社, 20108 赵又新著, 微机原理与接口技术. 中国电力出版社, 20079 韩晓东、李勇江等著, Protel 99 SE电路设计实用

51、教程. 中国铁道出版社, 200810 胡汉才, 单片机原理及其接口技术. 清华大学出版, 201011 陈忠平编著, 51单片机C语言程序设计经典实例. 电子工业出版社, 2012附件1:源程序源程序/-/ 名称:1602显示电话拨号键盘按键/ 说明: 本例将电话拨号键盘上所拨号码显示在1602液晶屏上。/- #include #include #define uchar unsigned char #define uint unsigned int #define DelayNOPx() _nop_();_nop_();_nop_();_nop_(); sbit BEEP =P10; sb

52、it RS = P20; sbit RW = P21; sbit E = P22; void DelayMS (uint ms); /声明延时函数 bitLCD_Busy (); voidLCD_Pos (uchar); voidLCD_Wcmd (uchar); voidLCD_Wdat (uchar);/-/ 标题字符串 char code Title_Text = - Phone Code -;/键盘序号与键盘符号映射表 uchar code Key_Table=1,2,3,4,5,6,7,8,9,*,0,#;/键盘拨号数字缓冲 uchar Dial_Code_Str = ; uchar

53、 KeyNo = 0xFF; int tCount = 0;/-/延时/- void DelayMS (uint x) uchar i; while(x-) for (i = 0;i 120; i+); /-/在LCD指定键盘上显示字符串/- void Display_String(uchar * str,uchar LineNo) uchar k; LCD_Pos(LineNo); for (k = 0; k 16; k+) LCD_Wdat (strk); /-/LCD状态检测/- bit LCD_Busy () bit result; RS =0;RW =1;E=1;DelayNOPx(

54、);result = (bit)(P0 & 0x80); E= 0; return result; /-/写LCD命令/- void LCD_Wcmd (uchar cmd) while (LCD_Busy (); /判断LCD是否忙碌 RS=0;RW=0;E=0;_nop_();_nop_(); P0=cmd;DelayNOPx();E=1;DelayNOPx();E=0; /-/写LCD数据 /- void LCD_Wdat (uchar str) while (LCD_Busy (); /判断LCD是否忙碌 RS =1;RW =0;E=0; P0=str; DelayNOPx (); E=1;DelayNOPx();E=0; /-

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!