AT89S51学习开发板软件设计毕业设计论文.doc

上传人:仙人指路1688 文档编号:3931339 上传时间:2023-03-28 格式:DOC 页数:96 大小:1.94MB
返回 下载 相关 举报
AT89S51学习开发板软件设计毕业设计论文.doc_第1页
第1页 / 共96页
AT89S51学习开发板软件设计毕业设计论文.doc_第2页
第2页 / 共96页
AT89S51学习开发板软件设计毕业设计论文.doc_第3页
第3页 / 共96页
AT89S51学习开发板软件设计毕业设计论文.doc_第4页
第4页 / 共96页
AT89S51学习开发板软件设计毕业设计论文.doc_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《AT89S51学习开发板软件设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《AT89S51学习开发板软件设计毕业设计论文.doc(96页珍藏版)》请在三一办公上搜索。

1、本科毕业设计(论文)题目:AT89S51学习开发板软件设计院 (系): 电子信息工程学院专 业: 自动化 班 级: 060403 学 生: 学 号: 060403123 指导教师: 2010年 6月本科毕业设计(论文)题目:AT89S51学习开发板软件设计院 (系): 电子信息工程学院专 业: 自动化 班 级: 060403 学 生: 学 号: 060403123 指导教师: 2010年 6月AT89S51学习开发板软件设计摘 要由于单片机技术正得到越来越广泛的应用,许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术及高可靠

2、性和高性价比,迅速占领了市场,成为国内单片机应用领域中的主流。目前,可用MCS-51系列单片机开发的产品越来越多,与其配套的各类开发系统、各种软件也日趋完善,因此,可以极方便地利用现有资源,开发出用于不同目的的各类应用系统。本课题是针对AT89S51实验开发板外围接口电路进行软件设计,以实现各种开发功能。本文介绍了各种开发功能例程,实现对实验开发板各部分硬件的控制。系统采用C语言编写,大大提高开发调试工作的效率;同时,所产生的文档资料也容易理解,便于移植。最后,对系统进行了软件调试,能够很好地完成功能要求。关键词: AT89S51;RS232通信;DS1302时钟;I2C存储器读写;DS18B

3、20温度传感器;1602液晶接口;The Software Design Of AT89S51 Learning Development BoardAbstractAs the single chip microcomputer technic is used wider and wider in all areas, many manufacturers of integrated circuit have developed all kinds of single chip microcomputer family, the MCS-51 series of single chip mic

4、rocomputer has quickly gained the market share and become the main stream in the national application area of single chip microcomputer with their excellent performance ,mature technic, high reliability and high cost performance. At present, there are more and more products that can be used to devel

5、op MCS-51 series single chip microcomputer, and the development systems and softwares matched to them are improved day by day. Therefore, we can conveniently use available resources to develop all kinds of application system used for different aims.This project is the software design for peripheral

6、interface circuit of AT89S51 experimental board, in order to achieve a variety of development functions. This article describes a variety of routine of development functions, to achieve the control for the various parts of the experimental development board. The system uses the C language, greatly i

7、mprove the efficiency of developmental debugging; the same time, the resulting documentation is also easy to understand, easy to transplant. Finally, it is necessary to do the software debugging for the system, able to complete functional requirements.Keywords:AT89S51;RS232 communication;DS1302 cloc

8、k;12C memory read and write;DS18B20 temperature sensor;1602 LCD interface目 录 摘 要(I)Abstract(II)1 绪 论(1)1.1题目背景(1)1.2研究意义(1)1.3国内外研究状况(1)1.4本文主要研究内容(1)2 理论基础(4)2.1 C语言简介(4)2.2模块化编程思想(5)2.3 Keil C编程环境介绍(5)2.4 AT89S51简介(6)3 系统的硬件描述(7)3.1系统组成(7)3.2各模块软件功能介绍(7)4 系统的软件设计(9)4.1流水灯的例程设计(9)4.1.1硬件电路原理(9)4.1.

9、2流水灯流程图(9)4.2数码管显示的软件设计(10)4.2.1数码管硬件特性(10)4.2.2数码管软件流程图(11)4.3 4X4矩阵键盘扫描软件设计(11)4.3.1硬件原理图(11)4.3.2矩阵键盘软件流程图(12)4.4 DS1302时钟显示的软件设计(13)4.4.1器件特性(13)4.4.2工作原理(14)4.2.3 DS1302的寄存器介绍(14)4.2.4硬件原理图(15)4.2.5软件流程图(15)4.5 ADC0832模数转换器的软件设计(16)4.5.1 ADC0832介绍(16)4.5.2单片机对ADC0832 的控制原理(17)4.5.3硬件原理图(18)4.5.

10、4 ADC0832软件流程图(18)4.6 1602液晶接口显示的软件设计(18)4.6.1 1602液晶显示模块介绍(18)4.6.2基本操作时序(18)4.6.3 RAM地址映射图(19)4.6.4 1602控制指令(19)4.6.5 1602初始化过程(20)4.6.6 1602硬件原理图(20)4.6.7 1602软件流程图(20)4.7 DS18B20温度传感器的软件设计(21)4.7.1单总线温度传感器DS18B20简介(21)4.7.2 DS18B20的工作时序(21)4.7.3 DS18B20基本指令(24)4.7.4 DS18B20硬件原理图(26)4.7.5 DS18B20

11、软件流程图(26)4.8 I2C存储器读写的软件设计(27)4.8.1 I2C总线简介(27)4.8.2 I2C总线器件工作原理及时序(27)4.8.3 AT24C02简介(29)4.8.4硬件原理图(29)4.8.5 24C02读写程序流程图(29)4.9 SPI存储器读写的软件设计(30)4.9.1 SPI简介(30)4.9.2 93C46串行存储器简介(30)4.9.3 93C46硬件原理图(31)4.10 RS232通信的软件设计(31)4.10.1 RS232串行接口标准(31)4.10.2 RS232通讯原理(32)4.10.3 RS232硬件电路原理图(32)4.11 12864

12、液晶接口显示的软件设计(32)4.11.1 12864点阵型LCD简介(32)4.11.2 12864接口读写时序:(33)4.11.3 12864硬件原理图(34)5 软件调试(35)5.1系统的软件调试(35)5.2 调试中遇到的问题及解决(35)参考文献(36)致 谢(37)毕业设计(论文)知识产权声明(38)毕业设计(论文)独创性声明(39)附录A:程序(40)1.流水灯例程(40)2.数码管显示例程(40)3.4X4键盘扫描例程(41)4.实时时钟芯片DS1302例程(42)5.ADC0832模数转换例程(46)6.LCD1602显示例程(48)7.温度传感器DS18B20例程(51

13、)8.EEPROM24C02存储器读写例程(54)9.EEPROM93C46存储器的读写例程(57)10.RS232通信例程(61)11.12864液晶显示例程(63)附录B:外文及翻译(70)1 绪 论1.1题目背景随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。尤其是单片机技术的应用产品已经走进了千家万户。单片机课程是一门实践性很强的课程,要学好单片机,必须通过实践学习,不论是硬件扩展、接口应用还是编程方法、程序调试,都离不开实验。单片机开发板的出现满足了这样的需求。不用购买价格昂贵的仿真器,仅通过程序下载,就可验证,这样的学习不仅降低了成本,而且方便了对

14、程序指令,硬件接口,串行总线的学习。通常,51系列单片机的各类开发系统,主要是采用汇编语言编程和硬件仿真技术来进行开发工作的。这种开发方法存在着繁琐、不易理解、仿真不灵活、成本过高等问题和缺陷。本系统以单片机的C语言进行软件设计,附有详细的注释,增加了程序的可读性和可移植性,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。1.2研究意义单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,

15、串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。为了方便使用者对51单片机及相关接口电路的软、硬件学习,本题目的AT89S51学习开发板具备常用的接口电路,同时配备了各接口

16、电路的编程指导。同时,使用者可以利用各接口电路配合控制对象构成闭环系统,具备一定的开发能力。1.3国内外研究状况1976年INTEL公司推出了MCS-48单片机,这个时期的单片机才是真正的8位单片微型计算机,并推向市场。它以体积小,功能全,价格低赢得了广泛的应用,为单片机的发展奠定了基础,成为单片机发展史上重要的里程碑。在MCS-48的带领下,其后,各大半导体公司相继研制和发展了自己的单片机,像 Zilog公司的Z8系列。到了80年代初,单片机已发展到了高性能阶段,像INTEL公司的MCS-51系列,Motorola公司的6801和6802系列,Rokwell公司的6501及6502系列等等,

17、此外,著名电气公司NEC和HITACHI都相继开发了具有自己特色的专用单片机。80年代,世界各大公司均竞相研制出品种多功能强的单片机,约有几十个系列,300多个品种,此时的单片机均属于真正的单片化,大多集成了CPU、RAM、ROM、数目繁多的I/O接口、多种中断系统,甚至还有一些带A/D转换器的单片机,功能越来越强大,RAM和ROM的容量也越来越大,寻址空间甚至可达64kB,可以说,单片机发展到了一个全新阶段,应用领域更广泛,许多家用电器均走向利用单片机控制的智能化发展道路。1982年以后,16位单片机问世,代表产品是INTEL公司的MCS-96系列,16位单片机比起8位机,数据宽度增加了一倍

18、,实时处理能力更强,主频更高,集成度达到了12万只晶体管,RAM增加到了232字节,ROM则达到了8kB,并且有8个中断源,同时配置了多路的A/D转换通道,高速的I/O处理单元,适用于更复杂的控制系统。单片机自20世纪70年代末诞生至今,经历了单片微型计算机SCM、微控制器MCU及片上系统SoC三大阶段,前两个阶段分别以MCS-51和80C51为代表。随着在嵌入式领域中对单片机的性能和功能要求越来越高,以往的单片机无论是运行速度还是系统集成度等多方面都不能满足新的设计需要,这时Silicon Labs 公司推出了C8051F系列单片机,成为SoC的典型代表。ATMEL公司的AT89S51是一个

19、低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。单片机是目前国内外集成电路中量大面广、附加值高的产品。由于MCS-51单片机影响极深远,许多公司都推出单片机开发板及学习环境,如国内新华龙公司代理C8051系列单片机开发板等。目前主流M

20、CU虽仍为8位,但是16位、32位高档MCU增长很快。随着单片机在汽车电子、工业控制等应用领域的高速成长,32位及其以上MCU将随着电子产品升级得到广泛应用。1.4本文主要研究内容对AT89S51开发板各部分硬件接口电路进行软件编写,包括了软件指令、硬件接口和串行总线的应用,具体有LED灯控制程序,8位数码管显示程序,1602液晶接口显示程序,DS1302接口程序,12864液晶接口显示程序,串行AD接口程序,4*4键盘扫描程序,I2C存储器读写程序,SPI存储器读写程序,ds18b20温度传感器程序,RS232通信例程。2 理论基础2.1 C语言简介C语言是一种通用的编译型结构化计算机程序设

21、计语言,在国际上十分流行,它兼顾了多种高级语言的特点,并具备汇编语言的功能。它支持当前程序设计中广泛采用的自顶向下的结构化设计技术。一般的高级语言难以实现汇编语言对于计算机硬件直接进行操作(如对内存地址的操作、移位操作等)的功能,而C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作。C语言具有功能丰富的库函数,运算速度快,编译效率高,并且采用C语言编写的程序能够很容易地在不同类型的计算机之间进行移植。因此,C语言的应用范围越来越广泛。用C语言来编写目标系统软件,会大大缩短开发周期,增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。因此,用C语言进行单片机程序设

22、计是单片机开发与应用的必然趋势。对汇编语言掌握只要可以读懂程序,在时间要求比较严格的模块中进行程序的优化即可。采用C语言进行设计也不必对单片机和硬件接口的结构有很深入的了解,编译器可以自动完成变量存储单元的分配,编程者就可以专注于应用软件部分的设计,大大加快了软件的开发速度。采用C语言可以很容易地进行单片机的程序移植工作,有利于产品中的单片机重新选型。C语言的模块化结构特点,可以使程序模块共享,不断丰富。C语言可读性的特点,使大家可以更容易地借鉴前人的开发经验,提高自己的软件设计水平。采用C语言,可针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块、算法等编制相应的函数。这些函数

23、经过归纳整理可形成专家库函数,供广大的工程技术人员和单片机爱好者使用和完善,这样可大大提高国内单片机软件设计水平。过去长时间困扰人们的“高级语言产生代码太长,运行速度太慢,不适合单片机使用”的致命缺点已被大幅度地克服。目前,51系列单片机的C语言代码长度,在未加入人工优化的条件下,已经做到了最优汇编程序水平的1.2-1.5倍。可以说,已超过中等程序员的水平。51系列单片机中,片上ROM空间做到32/64KB的比比皆是,代码效率所差的10%-20%已经不是重要问题。关于执行速度的问题,只要有好仿真器的帮助,用人工优化关键代码就是很简单的事了。至于谈到开发速度、软件质量、结构严谨、程序坚固等方面,

24、则C语言的完美绝非是汇编语言编程所能比拟的。C语言具有以下优点:(1)语言简洁,使用方便灵活;(2)可移植性好;(3)表达能力强;(4)表达方式灵活;(5)可进行结构化程序设计;(6)可以直接操作计算机硬件;(7)生成的目标代码质量高;2.2模块化编程思想模块化程序设计是一种经典的程序设计技术,它的出发点是把一个复杂的系统软件,分解为若干个功能模块,每个模块执行单一的功能,并且具有单入口和单出口结构。模块化程序设计的传统方法是建立在把系统功能分解为程序过程和宏指令的基础上。这种分解会在程序中产生许多容易理解的过程。模块化程序设计主要有两种方法:一种是自底向上的模块化设计,一种是自顶向下的模块化

25、设计。第一种方法,首先对最低层模块进行编码、测试和调试。这些模块正常工作后,就可以用它们来开发较高层模块。即在编写主程序前,先开发各个子程序,然后,用一个测试用的主程序来测试每一个子程序。这种方法是汇编语言设计的常用方法。第二种方法,首先对最高层进行编码、测试和调试。为了测试这些最高层模块,可以用“结点”来代替还未编码的较低层模块,这些结点的输入和输出满足程序的说明部分要求,但功能少的多。该方法一般适合用高级语言来设计程序。上述两种方法各有优缺点,在自底向上开发中,高层模块设计中的根本错误也许要很晚才能发现。在自顶向下开发中,程序的大小和性能往往要开发关键性的低层模块时才会表现出来。实际工作中

26、,最好使用两种方法结合起来。先开发高层模块和关键性低层模块,并用“结点”来代替以后开发的不太重要的模块。2.3 Keil C编程环境介绍Keil Vision系列是德国Keil Software公司推出的51系列兼容单片机软件开发系统。Vison3是集成的可视化Windows操作界面,其提供了丰富的库函数和各种编译工具,能够对51系列单片机以及和51系列兼容的绝大部分类型的单片机进行设计。Keil Vision系列可以支持单片机C51程序设计语言,也可以直接进行汇编语言的设计与编译。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级

27、语言的优势。Keil Vision系列是一个非常优秀的编译器,受到广大单片机设计者的广泛使用。其主要特点如下:支持汇编语言、C51语言等多种单片机设计语言;可视化的文件管理,界面友好;支持丰富的产品线,除了51及其兼容内核的单片机外,还新增加了对ARM内核产品的支持;具有完善的编译连接工具;具备丰富的仿真调试功能,可以仿真串口、并口、A/D、D/A、定时器/计数器以及中断等资源,同时也可以和外部仿真器联合进行在线调试;内嵌RTX-51实时多任务操作系统;支持在一个工作空间中进行多项目的程序设计。支持多级代码优化。2.4 AT89S51简介AT89S51是一个低功耗,高性能CMOS 8位单片机,

28、片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定

29、时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。AT89S51主要功能特性:与MCS-51产品指令系统完全兼容 4k字节在系统编程(ISP)Flash闪速存储器 1000次擦写周期 4.05.5V的工作电压范围 全静态工作模式:0Hz33MHz 三级程序加密锁

30、1288字节内部RAM 32个可编程I/O口线 2个16位定时/计数器 6个中断源 全双工串行UART通道 低功耗空闲和掉电模式 中断可从空闲模唤醒系统 看门狗(WDT)及双数据指针 掉电标识和快速编程特性 灵活的在系统编程(ISP字节或页写模式)3 系统的硬件描述 系统的软件设计与硬件电路紧密相连,这里对开发板的硬件接口电路做简要说明,以便进行软件设计。3.1系统组成硬件设计包括以下几部分,电源接口电路、串行存储及实时时钟接口电路、RS232通信接口电路、A/D转化接口电路、数码管显示、流水灯显示及液晶显示电路、4*4键盘扫描及温度传感器等部分的设计。硬件结构图如下图:图3.1 系统硬件结构

31、图3.2各模块软件功能介绍LED灯控制程序:编程实现流水灯功能; 8位LED数码管显示程序:实现8位动态和静态扫描,同时编写数码管显示程序;1602液晶接口显示程序:以实现正确的显示输出;DS1302接口程序:编程实现日历时钟功能;12864液晶接口显示程序:实现正确的显示输出; 串行AD接口程序:编写程序实现AD转换;4*4键盘扫描程序:通过键盘扫描正确识别输入,读写数据;I2C存储器读写程序:实现正确的数据存储; SPI存储器读写程序:实现正确的数据存储;DS18B20温度传感器程序:编写程序实现温度采集;RS232通信例程:双向连接,实现其通讯;4 系统的软件设计4.1流水灯的例程设计4

32、.1.1硬件电路原理图4.1 流水灯硬件电路原理图从硬件原理图中可以看出,如果要让接在P3.0口的LED1亮起来,那么只要把P3.0口的电平变为低电平就可以了;相反,如果要接在P3.0口的LED1熄灭,就要把P3.0口的电平变为高电平;同理,接在P3.1P3.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。同理可以控制P0,P1

33、,P2口。4.1.2流水灯流程图图4.2 流水灯软件流程图 LED灯以共阳极的方式接到P1口,要使第一个亮,给第一位赋0,使用字节赋值方法,即给P1口赋0xfe,点亮后延时再左移继续赋值给P1口,通过死循环while(1)使led灯循环发光,达到流水灯的作用。4.2数码管显示的软件设计4.2.1数码管硬件特性单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(58、88点阵等)。数码管硬件原理图:

34、图4.3 数码管硬件原理图使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。本设计采用共阳极接法,当位选端为低电平,某位段选端为低电平时,相应的段选端即点亮。根据电路连接图显示16进制数的编码已列在下表。表4.1 数码管共阳极编码表 0xc00xf90xa40xb00x990x920x820xf80x800123456780x900x880x830xc60xa10x860x8e0xff9ABCDEF不显示LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特

35、点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 4.2.2数码管软件流程图图4.4 数码管软件流程图P0口为段选,

36、P2口为位选,将i(015)的显示编码dispi依次送入P0口,将初值为0xfe的变量temp送入P2口,并通过temp的移位来控制数码管显示的移动,最终达到8位数码管依次动态显示0F的效果。4.3 4X4矩阵键盘扫描软件设计4.3.1硬件原理图图4.5 4X4矩阵键盘硬件原理图4.3.2矩阵键盘软件流程图矩阵键盘软件流程图如图4.6所示。主程序一直在监视是否有键按下,当有键按下时通过数码管将其显示,无键按下则一直循环。子程序则扫描是哪个按键按下,由于按键在闭合和断开时,触点会存在抖动现象,所以使用延时程序消除抖动。本程序采用行扫描,并通过查表来判断按键的编号。按键特征编码和顺序编号通过以下方

37、法得到:先从P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取盘状态。再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。将16个键的特征编码按顺序排成一张表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它的位置就是对应的顺序编码。图4.6键盘扫描流程图扫描程序查询的内容为:(1)查询是否有键按下。首先单片机向行扫描P1.0P1.3输出全为0扫描码F0H,然后从列检查口P1.4 P1.7输入列扫描信号,只要有一列信号不为1,即P1口不为F0H,则表示有键

38、按下。接着要查出按下键所在的行、列位置。(2) 查询按下键所在的行列位置。要确定键所在的行,需要进行逐行扫描。单片机首先使P1.0为0,P1.1P1.7为1,即向P1口发送扫描码FEH,接着输入列检查信号,若全为1,表示不在第一行。接着使P1.1为0,其余为1,再读入列信号这样逐行发0扫描码,直到找到按下键所在的行。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的误动作。(3) 对得到的行号和列号译码,得到键值。(4) 键的抖动处理。当用手按下一个键时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键抖动,抖动的持续时间不一,

39、通常不会大于10 ms,若抖动问题不解决,就会引起对闭合键的多次读入,对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行逐行扫描,而是延时10 ms后再进行。由于键按下的时间持续上百毫秒,延时后再也不迟。扫描函数的返回值为键特征码,若无键按下,返回值为0。4.4 DS1302时钟显示的软件设计4.4.1器件特性 DS1302是Dallas公司生产的一种实时时钟芯片。它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。它还拥有用于主电源和备份电源

40、的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。鉴于上述特点,DS1302已在许多单片机系统中得到应用,为系统提供所需的实时时钟信息。DS1302主要性能如下:l 实时时钟具有能计算2100年之前的秒、分、时、日、星期、月、年的能力及闰年调整的能力。l 31*8位暂存数据存储RAM。l 串行I/O口方式,管脚数量少。l 宽电压工作范围:2.0V5.5V。l 工作电流:2.0V时小于300nA。l 读/写时钟或RAM数据时,有两种传送方式:单字节传送和多字节传送。l 8

41、脚DIP封装或SOIC封装DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的。4.4.2工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移

42、位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输入数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。4.2.3 DS1302的寄存器介绍对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及

43、控制字如表4.2所示:表4.2 日历、时钟寄存器与控制字对照表寄存器名称 765432101RAM/CKA4A3A2A1A0RD/W秒寄存器 1000000 分寄存器 1000001 小时寄存器 1000010 日寄存器 1000011 月寄存器 1000100 星期寄存器 1000101 年寄存器 1000110 写保护寄存器 1000111 慢充电寄存器 1001000 时钟突发寄存器 1011111 最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HF

44、DH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表4.2所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作或是写操作。单字节读、写时序: 图4.7 DS1302读写时序4.2.4硬件原理图 图4.8 DS1302

45、硬件原理图4.2.5软件流程图图4.9 日历读取流程图 图4.10日历设定流程图 图4.11 向DS1302写入一个字节4.5 ADC0832模数转换器的软件设计4.5.1 ADC0832介绍ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。ADC0832 具有以下特点: 8位分辨率; 双通道A/D转换; 输入输出电平与TTL/CMOS相兼容; 5V电源供电时输入电压在05V之间; 工作频率为250KHZ,转换时间为32S; 一般功耗仅为15mW; 8P、14PDIP(双列直插)、PICC 多种封装;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号