欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于单片机的电子电话簿的设计.doc

    • 资源ID:3926963       资源大小:694.50KB        全文页数:36页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于单片机的电子电话簿的设计.doc

    基于单片机的电子电话簿的设计The Design of Electronic Telephone Directory about one-chip computer摘 要该课题主要是以AT89S52单片机和数据存储器AT24C64为核心器件,对固定电话的电子电话簿进行改进,使之具有存储姓名和电话号码、查询电话号码的功能。实现方法是把26个英文字母设计到固定电话的按键上,当要存储姓名和电话号码时,通过按键输入拼音,每一个拼音对应一个地址,把姓名的地址以结构体的形式存入芯片AT24C64中,把电话号码以字符形式输入存储。同理,当对电话号码进行查询时,从键盘输入姓名,利用查找程序从存储器芯片中找出要查找的姓名,确定后并可把查找出的电话号码直接拨出去。关键词 单片机 解码 语音芯片 电子电话簿 AbstractSubject this regards one-chip computer AT89S52 and data memory AT24C64 as key devices mainly, making the improvement to the electronic telephone directory of fixed telephone , making it have the function of storing name and telephone number and the function of inquiring about telephone number. Implementation method to design is to get regular button of phone 26 English letter. When storing names and telephone number , through keying in the spelling, make every spelling correspond to an address, deposit the address of the name in chip AT24C64 in the form of structure body, import the telephone number to storing in the form of character. The same, when inquiring the telephone number, input names from the keyboard, make use of procedure of inquiring to find out the name needed in memory chip to utilize, after confirming , set aside out telephone number found out directly. Keywords One-chip computer Decode Pronunciation chip electronic telephone directory目 录前 言3第1章 设计思路及原理41.1 研究意义41.2 总体设计任务41.3 设计思路及原理41.3.1 ETD工作原理框图51.3.2 具体工作过程5第2章 系统电路的设计及原理62.1 系统框图62.2 各模块具体实现原理分析和说明62.2.1 单片机AT89S52的选择与简介62.2.2 I2C总线介绍:72.2.3 AT24C64芯片简单介绍10第3章 软件编程1431 编程语言简介14311 C51语言介绍14312 C51语言和汇编语言的性能比较:15313 编程语言选择1632 程序编写16321 电话本结构的定义16322 输入程序18323 查询程序19324 增加程序20325 删除程序21326 排序程序23第4章 uVision2软件应用2541 uVision2 简介2542 uVision2 IDE2643 创建一个工程(Project)2744 文件管理及编辑29441 新建文件及保存29442 添加文件30443 文件编辑3145 程序编译32结束语33谢 辞33参考文献34前 言尽管在现代社会,电子邮件、手机等的出现为人们提供了更多选择,但对于普通老百姓而言,通过固定电话进行交流仍然是其首要选择。不仅是因为它具有固定恒久、绿色环保、价廉物美、话音清晰、拨打方便等特点,更由于客户信息齐全、安装地点确定的优点,使其常常被当作维系人与人之间情感的纽带。现有固定电话没有中文电话簿,来电显示也没有中文显示,在现代信息时代,电话号码如此之多,人们只能将电话号码记录在笔记本或电子笔记本当中,使用查找起来十分不便。如果在固定电话中增加有中文字库的存储器、中央处理器、供电电路和显示器,使固定电话上增加中文系统,使之成为能储存带有中文系统电话簿,并通过电话簿中文条目拨打的固定电话,将大大方便了人们的使用。 随着人们生活水平的迅速提高,健康、绿色、环保开始成为人们追求高品质生活的目标,而固定电话是无辐射的通信方式,必然会成为人们的首选。随着电信业改革的不断深入,电信业的市场竞争已经全面展开。而电信业传统的固网业务的市场竞争更是日益激烈,移动电话凭借其个性化、移动化等特点,越来越成为主流的通信方式,对固定电话形成了持续、快速、强有力的替代性冲击。虽然固定电话在用户线上传送的是模拟信号,但局间通信却全部采用了数字方式,每对用户间的数据通信带宽为64kbit。而第二代移动通信网,如GSM网、CDMA网,每个用户的带宽仅为9.6kbit,即使是2.5代移动通信方式的GPRS,一般也只提供20kbit40kbit的带宽。而且,固定电话网对于通信的稳定性、可靠性也有着绝对的保障。因此,固定电话技术仍有着巨大的潜力可以挖掘,通过技术改造和终端升级,完全有可能实现移动通信中2.5G甚至是3G才可以实现的业务。固定电话网络正在全面实施智能化改造,即我们家里的固定电话将迎来全新变革,由语音通话工具变成一个重要的信息终端。移机不换号、发语音短信、彩话、预付费等种种满足现代人需求的精彩业务、个性化功能,都将在固定电话上实现。同时,固定电话话音质量高、线路稳定、带宽充裕等优势将进一步发挥出来。据专家预测,固定电话与移动电话、互联网的融合发展也已成为新的趋势。譬如:通过将移动可视电话与固定网络和因特网中可视电话的整合,让三者之间进行视频通话,开发视频留言等特色业务,会是融合迈出的一步。消费者对固定电话具有中文电话簿的导入和管理需求也在逐步提高。智能电话在中文输入、亲情语音拨收号、发送短信、视频业务、共享SIM信息和买卖转账等功能上为用户带来的方便度和实用性,为电信运营商的增值业务创造了平台,也为电信运营商实现ARPU值提供了技术实现手段。该研究课题研究的主要是固定电话的中文电子话簿,主要目的是使固定电话具有电话簿输入、查找电话号码的功能。输入和查询主要是通过软件实现,当按键输入时,通过输入程序把输入资料所对应的地址存入数据存储器AT24C64中,查询时,通过查询程序找出要查询的资料对应的地址,根据此地址找到语音库中对应的地址,然后读出此地址的内容.第1章 设计思路及原理1.1 研究意义提高固定电话的性能对发展固话网具有极其重要的意义。据某权威机构调查,国内目前有高达85%的消费者强烈希望将中文号码簿加入到固定电话机中,而反对者只有5%。智能电话在中文输入、亲情语音拨收号、发送短信、视频业务、共享SIM信息和买卖转账等功能上为用户带来的方便度和实用性,为电信运营商的增值业务创造了平台,也为电信运营商实现ARPU值提供了技术实现手段。本课题我们将用到KEIL uVision2软件,uVision2 IDE 基于Windows 的开发平台,包含一个高效的编辑器,一个项目管理器和一个MAKE工具。uVision2 支持所有的KeiL C51 工具,包括C编译器,宏汇编器,连接/定位器,目标代码到HEX的转换器。AT89S51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案. 就本例而言,我们的设计要求功能灵活,而且尽可能的留下扩展的空间,能使我们熟悉硬件描述编程C语言和相关的uVision2开发环境。项目管理器:工程(Project)是由源文件,开发工具选项及编程说明三部分组成的。一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。uVision2包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。1.2 总体设计任务该研究课题研究的主要是固定电话的中文电子话簿,主要目的是使固定电话具有电话簿输入,查找,添加和删除电话号码的功能。设计一个基本的电话簿管理程序,具有加入、删除、显示、修改和查询联系人电话号码的功能。程序采用链表数据结构实现,同时用类来实现数据的封装。1.3 设计思路及原理本课题主要采用AT89S52单片机作为控制系统,通过软件编程对电子话簿进行存储查询操作,并把输入的电话本存到外部数据存储器上。采取液晶显示方式,即将查询出的电话号码等显示在液晶显示屏上。一种具有中文电话薄的固定电话,包括按键电路,中文电话簿系统,其特征在于:所述的固定电话或其外线上设置有中文字库的存储器、中央处理器、供电电路和显示器;所述的中央处理器与固定电话电路连接,所述的有中文字库的存储器与中央处理器连接,所述的显示器与中央处理器连接,所述的供电电路分别与中央处理器和有中文字库的存储器连接。1.3.1 ETD工作原理框图如图1.1所示是一个ETD电路的基本工作原理框图。 中央处理器单片机AT89S52 按键电路显示器数据存储器 图1.1 ETD的工作原理框图1.3.2 具体工作过程首先应先建立电话本的存储形式、输入和查询系统当要存储电话号码时,从键盘输入汉语拼音,选择确定后,把汉字对应的码值输入到电话本的地址数组中,直到姓名输入完毕,然后输入电话号码,最后将此单元的信息写进存储器芯片AT24C64的一个地址中。进行查询时,同样从键盘输入汉语拼音,将码值与电话本中的地址数组进行比较,若要查询的姓名码值与电话本某一单元地址数组中的码值一致,则可把电话号码直接拨出去。设计一个基本的电话簿管理程序,具有加入、删除、显示、修改和查询联系人电话号码的功能。程序采用链表数据结构实现. :存储的数据包括:人名、手机电话号码。 具体功能:加入一个新电话号码 ;删除一个电话号码; 修改功能; 查询功能;排序功能,按照姓名字母序排列。 查询功能,按照人名查询。第2章 系统电路的设计及原理2.1 系统框图根据要求,经过仔细分析,充分考虑各种因素,制定了下列设计方案: 系统流程图如图2.1所示: 图2.1 系统的流程图2.2 各模块具体实现原理分析和说明2.2.1 单片机AT89S52的选择与简介本系统采用主要采用单片机应用系统作为控制单元,单片机应用系统是是单片机硬件系统和应用软件相结合的产物。采用单片机是因为其具有体积小、功耗低、运用灵活,且具有逻辑判断、定时计数、程序控制等多种功能,而且其价格便宜,选用单片机作为控制模块可大大降低产品的价格。AT89S52是一种低功耗、高性能且系统内带有8KB可编程Flash存储器的8位CMOS微处理器。此单片机采用Atmel公司的高集成、非易失性存储技术制造,并且与工业标准80C51指令设置与引脚兼容。Flash集成片允许程序存储器系统内再编程或进行电擦除。AT89S52把一个多功能的八位CPU与系统内可编程Flash结合集成到一个整体芯片上。AT89S52是一种高性能且系统内带有可编程Flash存储器的八位微处理器。它是一种高灵活性、花费有限资源就可产生许多嵌入式控制应用系统的高性能微处理器。AT89S52提供了下列标准特点:8KBFlash,256KBRAM,32条I/O端口线,定时监视器,双数据指针,3个16位定时/计数器,一个二级中断方式,全双工串行口,振荡器和时钟电路。此外,AT89S52支持两种软件选择性节省内耗模式。休闲模式允许RAM,定时/计数器,串行口和中断系统继续工作时使CPU进入休眠方式。降压模式节省RAM空间,但直到下一次中断来到或硬件复位才能使振荡器和其它集成电路正常工作。 AT89S52的主要功能如下: ·8位字长CPU; ·振荡器和时钟电路,全静态操作:033MHZ; ·8KB系统内可编程Flash存储器; ·256KB内部RAM; ·4个I/O端口共32线; ·3个16位定时/计数器; ·全双工(UART)串行口通道; ·ISP端口; ·定时监视器(看门狗); ·双数据指针(DPTRE); ·20多个特殊功能寄存器; ·电源下降标志; AT89S52管脚图如下: 2.2.2 I2C总线介绍:在本系统中采用I2C总线是为了减少数据线,因为I2C总线的信号线只有两条,可以节省单片机的接口。I2C 总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。 总线的基本知识:I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。   I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、停止信号和应答信号。  开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。  停止信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。   应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。1. 在总线上,开始和停止信号时序如下图所示:图上可以看出,在SCL位高电平时SDA的变化将产生总线开始和停止信号。SDA从高电平跳变到低电平表示开始,从低电平跳变到高电平表示停止。下面根据时序图编写开始和停止子程序开始程序:调用方式:void I2CStart(void)函数说明:私有函数,I2C专用-*/void I2CStart(void) EA=0; SDA=1; SCL=1; /*首先把SDA和SCL设置为高电平*/SomeNOP(); /*保持两个高电平一段时间*/ SDA=0; SomeNOP(); /*设置SDA为低电平后,保持SCL高电平,总线开始*/ SCL=0;停止程序:调用方式:void I2CStop(void)函数说明:私有函数,I2C专用-*/void I2CStop(void) SCL=0; SDA=0; SomeNOP(); /*两信号保持低电平*/ SCL=1; /*SCL设成高电平*/SomeNOP(); /SDA=1; /*SDL为上升沿,SCL保持高电平时,总线结束*/ EA=1;数据的建立和有效:上图表示在传输数据时,SCL高电平的时候,SDA上的数据不能变化,因为前面已经说明,这是数据的变化将会认为是开始或者结束的信号。在SCL低电平时数据可以改变。I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。2 的寻址过程在总线上的数据传输,除了开始和停止之外,由于可以多个从设备共用总线还会有一个寻址过程。寻址过程通过主设备发送一定格式的寻址命令进行。寻址命令由起个位的从设备地址、一位读写标志和一位响应信号组成。七位的从设备地址可以由设计者任意设定,不过0000000是一个通用寻址地址。当主设备需要向所有的从设备传输同样的信息的时候,可以使用通用寻址地址,这时,总线上的所有设备拉低SDA线,响应这个命令。此后,主设备往总线上写的数据会被所有的相应这个寻址命令的从设备接收到。但是,一个通用的都命令是没有意义的,因为有可能不同的从设备会向总线传送不同的数据(电平),从而引起总线冲突。从设备地址11111xxx需要留给将来的应用。有的从设备进一步规定了寻址的格式。比如ATMEL公司24CXX系列的EEPROM就规定寻址的开始四位必须是1010。这是根据相应器件的说明书设置相应的地址就行了。读写控制位是1的时候执行读操作,是0的时候执行写操作。往总线传输时最高位(MSB)最先送出,最后是读写指令,当相应器件被寻址的时候,它会拉低SDA线,作为回应。如果没有器件被正确寻址,或者要寻址的器件忙,则SDA会保持高。这是主设备就会知道寻址没有成功,可以发送一个停止命令,或者重新开始命令。3 的数据发送过程寻址以后就是数据发送过程。这时主设备负责产生时钟,发送开始和停止指令,接收设备需要接收到数据要发出回应。时钟的第九个周期如果SDA被拉低,表示接收回应,如果还是保持高,则表示没有回应。数据有八位,高位先传输。2.2.3 AT24C64芯片简单介绍 AT24C64是ATMEL公司生产的EEPROM。它共有64K位,按照字节寻址。下面是它的管脚图和管脚功能的列表。A2 A1 A0是用来设置从设备地址的,这就意味着,可以有八个这样的器件共享一条总线。外部不连接的地址位缺省为0。下面是AT24C64芯片管脚图:在本系统中,只用到一个AT24C64芯片,因此A2 A1 A0地址线直接接地,GND端接地,VCC端接高电平,SCL与SDA和单片机的P12、P13口相连。   1. 器件寻址当然器件寻址的操作一般不会单独进行,前面要有开始信号,后面将是读写操作。操作EEPROM的时候先要寻址希望访问的器件。寻址命令的结构和前面描述的是一样的不过,前四个字节必须是1010后面三个才是有效的器件地址。如果器件被正确寻址会输出0作为响应,否则进入空闲状态。下面是一个说明寻址命令结构的图:2. 读时序上面的图说明了,从EEPROM中读一个字节的时序。先是开始信号,然后是器件寻址操作,接着是两个字节要读的字节的地址。这些发送完毕以后,主设备要重新发送开始信号,再进行器件寻址操作,随后就会读出指定地址的数据。需要注意的是,在发送地址时的器件寻址操作,读写控制位置为写状态,在后一个器件寻址操作时,读写控制位置为读。读出一个字节后如果不发送停止信号,可以继续读出下一个字节,依此类推,知道读到对后一个地址,又会从零地址开始读出数据。AT24C64读程序void AT24c64_R(uchar Data,uchar Address,uchar Num)while(Num) I2CStart( ); I2CSendByte(0xa0); WaitAck( ); I2CSendByte(Address/256); WaitAck( ); I2CSendByte(Address%256); WaitAck( ); I2CStart(); I2CSendByte(0xa1); WaitAck(); while(Address%256)<32) *(uchar*)Data=I2CReceiveByte(); SendAck(); Data+; Address+; Num-; SendNoAck();I2CStop();3. 写时序下图是写操作的示意图.可以看出写操作比读简单一些。发送开始信号后,只需要一次器件寻址,读写控制置为写状态,接着发送要写入数据的地址,然后就是要写入的数据。如果只需要写入一个字节,传输完一个字节数据后发送停止信号就完成了一次写操作。不过24C64具有按页写的功能,每页64个字节,所以写完一个字节后还可以最多写入63个字节的数据。地址的高位保持不变。低五位会自动加1。如果总数超过了一页的地址,会把多写入的字节写入这一页的开头去。 下面是写程序void AT24c64_W(uchar Data,uchar Address,uchar Num)while(Num) I2CStart( ); /*开始写信号*/ I2CSendByte(0xa0); WaitAck( ); /*等待回应*/ I2CSendByte(Address/256); WaitAck( ); I2CSendByte(Address%256); WaitAck( ); while(Address%256)<32) I2CSendByte(*(uchar*)Data); WaitAck(); Data+; Address+; Num-; I2CStop(); 第3章 软件编程31 编程语言简介311 C51语言介绍由于单片机应用系统的日趋复杂,要求所写的代码规范化、模块化,便于多人以软件工程的形式进行协同开发,汇编语言作为传统的单片机应用系统的编程语言,已经不能满足这样的实际需要了。而C语言以其结构化和能产生高效代码满足了这样的需求。随着80C51单片机硬件性能的提升,尤其是片内程序存储器容量的增大和时钟工作频率的提高,已基本克服了高级语言产生代码长、运行速度慢、不适合单片机使用的致命缺点。由此C51已经得到广泛的推广和应用,成为80C51系列单片机的主流程序设计语言,甚至可以说是作为单片机开发人员必须要掌握的一门语言。采用C51程序设计语言,编程者只需了解变量和常量的存储类型于80C51单片机存储空间的对应关系,而不必深入了解单片机的硬件和接口。C51编译器会自动完成变量的存储单元的分配。C51语言基本词法介绍:C51语言与标准C语言一样,共有6种单词:·标识符(identifier)·关键字(keyword)·常量(constant)·字符串(character string)·运算符(operator)·分隔符(punctuator) 为方便程序员自由书写语句,允许单词之间间隔任意距离(也可以换行、续行),C51语言增加了空白符。为了方便程序员对程序加以注释,提高程序可读性,C语言还规定了注释符/* */和/。C51的数据和数据类型: C51的数据结构是以数据类型的形式出现的,它的数据类型包括基本类型、构造类型、指针类型和空类型。除了上述C51数据类型外,还有针对8051系列单片机内的特殊功能寄存器而设置的sfr和sfr16类型的数据和为操作特殊寄存器中的特定位而设置的sbit类型的数据。 在C51语言中,数据有常量和变量之分。常量是指在程序运行过程中其值不能改变的量,在源程序中,可以用预处理器的预定义语句定义一个标识符号来代表一个常量。变量是指在运行过程中值可以改变的量,一个变量由两部分组成:变量名和变量值。每个变量都有一个变量名,根据变量数据类型的不同在计算机内存中占据一定的存储单元(变量的地址),在该地址中存放的就是变量值。C51构造数据类型C51语言还提供了扩展的构造数据类型,又称复合变量。这些按一定规则构成的数据类型有:数组、结构、共用体、枚举等。数组是具有固定数目和相同类型成分分量的有序集合。构成一个数组的各数组元素必须是同一类的变量,而不允许在一个数组中出现不同类型的变量。数组有一维、二维、三维、多维数组之分,常用的是一维、二维数组和字符数组。数组的说明格式如下:存储类说明 类型说明符 修饰符 标识符 =初值 ,标识符=初值;其中存储类说明、类型说明符、修饰符以及多数组说明与变量的说明格式完全一致,标识符和初值部分是数组的特征所在,决定了数组的维数等特征。结构定义:把多个不同类型的变量结合在一起形成的一个组合型变量,称为结构变量,简称结构。构成一个结构的各个变量称为结构元素(或成员),定义规则与变量名一致。共用体类型数据(也称联合类型)使各种类型的数据共同使用1块内存空间。共用体类型是在内存中定义一段多种类型数据所共享的空间,空间大小以最长的类型为准。共用体类型和结构体类型类似,也可以包含多个不同数据类型的元素,但其变量所占有的内存使得共用体类型的变量至多只能存放该类型所包含的一个成员,即它所包含的成员只能共享同一个存储空间。枚举类型是一个有名字的某些整型数常量的集合。这些整型数常量是该类型变量可取的所有的合法值。枚举定义应列出该类型变量的可取值。一个完整的枚举定义说明格式如下:enum 枚举类原型标识符 枚举常量标识符列表 枚举变量标识符表;也可以分成两部分说明:enum 枚举类原型标识符 枚举常量标识符列表;enum 枚举类原型标识符 枚举变量列表;在枚举常量标识符列表中,每一个标识符代表一个整型常量,默认情况下,第一个常量标识符取值为0,第二个取值为1,依次类推。此外,也可以通过初始化来指定某常量标识符的值,初始化后,该常量标识符后续各常量标识符的值依次递增。 312 C51语言和汇编语言的性能比较:在程序的开发上,使用C51语言比汇编语言更方便。第一,51的模块化程序设计思想使得应用程序的开发过程大大简化,可以由不同的程序员分别开发不同的功能模块,最后在一起整合成完整的程序。第二,51程序的移植和修改相对容易。第三,C51语言提供了大量的函数库,可以方便的调用,使得程序开发更为简易。使用C51语言开发程序有产生的代码较长,运行速度相对慢的缺点,需要通过选择效率高的编译系统来改善。编译系统的选择对于C51语言应用程序的运行效率有很大影响,编译效率高的编译器得到的目标文件长度短,结构合理,运行效率高。 汇编语言开发的难度相对大一些。首先,在开发时,使用汇编语言需要对存储器分配进行仔细的安排,这一方面使得程序的编制更为灵活,但另一方面也使程序员需要考虑的问题更加复杂化。其次,使用汇编语言编制复杂的流程控制、复杂的数学运算等类型的程序时不很方便,但在控制硬件、位操作等方面表现优异。最后,汇编语言是和硬件紧密结合的语言,程序在不同硬件平台间的可移植性不好。尽管在开发上有一定难度,但是由于汇编语言运行速度快,效率高,能够完全控制硬件,因而用汇编编制的应用程序一般效率比较高。313 编程语言选择汇编语言与C51语言各有各的优点。如C51语言有数组形式,存储方便,汇编则无此优点,但汇编命令容易学习,C51语言不容易掌握。因此,为了发挥C51语言和汇编语言各自的优势,提高程序的开发效率,本软件采用C51语言和汇编语言的混合编程。由于C51语言是“函数的语言”,因而实现二者混合编程的关键就在于实现不同语言之间函数的交叉调用。由于C51语言对函数的参数、返回值传送规则、段的选用和命名都做了严格规定,因而在混合编程时汇编语言要按照C51语言的规定来编写。这也是一般高级语言和低级语言混合编程的通用规则,即低级语言要向高级语言看齐,按照高级语言的规定进行编写.32 程序编写321 电话本结构的定义 电话本一个单元中应包含姓名(这里存储的是姓名所对应的码值)、电话号码和存储序号。中国的姓名最多为四个汉字,每个汉字对应一个八位二进制码值,所以姓名用含四个元素的一维数组存储。电话号码为十一位,因此用含十一个元素的一维数组存储。因为一个单元里姓名和电话号码的方式不同,所以电话本采用结构体的形式存储。结构的定义:把多个不同类型的变量结合在一起形成的一个组合型变量,称为结构变量,简称结构,构成一个结构的各个变量成为结构元素(或成员),定义规则与变量名一致。因为电话本中各个单元具有相同的结构形式,即都包含姓名、号码和存储序号三个部分,因此可以定义成结构数组。C51允许将具有同样结构类型的若干个结构变量定义成结构数组。当数组中每个元素都具有相同的结构类型的结构变量时,则称该数组为结构数组。结构数组与一般变量数组的不同就在于结构数组的每一个元素都具有同一个结构类型的变量,她们具有同一个结构类型,含有相同的成员项。本课题采用指针处理链表:用数组存放数据时,必须事先定义固定的长度,这种情况有时会造成内存的浪费;而且在数组中,插入或删除一个元素都比较繁琐,如果使用链表即可弥补这种缺陷,并且使得操作则相对容易. 其简单介绍:1,链表和结点链表:链表是一种动态数据结构,可根据需要动态地分配存储单元.链表由头指针,结点,尾结点构成.结点:每个结点中,包含数据和指向下一个结点的指针.结点结构体描述:struct nodechar c;struct node *next;2,处理动态链表所需函数(1)动态分配存储区函数malloc( )函数原型:void *malloc(unsigned size);调用格式:malloc(size)功能:在动态存储区分配一个长度为size字节的连续存储区.(2)动态分配存储区函数calloc( )函数原型:void *calloc(unsigned int n,unsigned int size);调用格式:calloc(n,size)功能:在动态存储区分配n个长度为size字节的连续存储区.(3)释放动态分配存储区函数free( )函数原型:void free(void *p);调用格式:free(p)功能:释放p所指向的动态分配的存储区.3,链表操作(1)建立动态链表:在程序执行过程中,一个接一个的开辟结点和输入各结点数据,并建立起前后相链的关系.举例:建立一个电话簿的单向链表.(2)输出链表:将链表中各结点数据依次输出.举例:输出电话簿链表(3)对链表的删除操作:从已有的链表中删去一个结点.举例:删除电话簿链表中指定对象的信息. 在链表中,如果要删除第i个结点,一般是将第(i-1)个结点直接与第(i+1)个结点相连接,然后再释放第i个结点的存储单元.(a)删除第一个结点(head=p->next)(b)删除中间结点或尾结点(q->next=p->next)(c)未找到指定的结点(strcmp(x,p->name)!=0)(4)对链表的插入操作:将结点插入到已有链表中.举例:在电话簿链表中插入一个人的信息.将一个新结点插入到链表中,首先要寻找插入的位置.如果要求在第i个结点前插入,可设置三个工作指针p0,p和q,p0是指向待插入结点的指针.利用p和q指针查找第i个结点,找到后再将新结点链接到链表上.(a)在表头插入结点(head=p0; p0->next=p)(b)在表中间插入结点(q->next=p0; p0->next=p)(c)在表尾追加结点(p->next=p0; p0->next=NULL)【例】 结构数组的定义和引用 struct document int number; int age; bit sex; /*定义document结构类型*/ struct document student10; /*定义结构数组student,共10个数组元素,每个数组元素都是document结构类型*/ student2.age=17;/*引用结构数组元素的成员,对其进行赋值运算*/下面定义电话本的结构数组 struct fri_type unsigned char add4; /*存储姓名对应的码值*/ unsigned char number11; /*存储11位电话号码*/ unsigned char finger; /*存储序号

    注意事项

    本文(毕业设计(论文)基于单片机的电子电话簿的设计.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开