毕业论文基于单片机教室忙闲显示系统的毕业设计毕业论文

上传人:1666****666 文档编号:38907693 上传时间:2021-11-09 格式:DOC 页数:57 大小:436.03KB
收藏 版权申诉 举报 下载
毕业论文基于单片机教室忙闲显示系统的毕业设计毕业论文_第1页
第1页 / 共57页
毕业论文基于单片机教室忙闲显示系统的毕业设计毕业论文_第2页
第2页 / 共57页
毕业论文基于单片机教室忙闲显示系统的毕业设计毕业论文_第3页
第3页 / 共57页
资源描述:

《毕业论文基于单片机教室忙闲显示系统的毕业设计毕业论文》由会员分享,可在线阅读,更多相关《毕业论文基于单片机教室忙闲显示系统的毕业设计毕业论文(57页珍藏版)》请在装配图网上搜索。

1、吉 林 农 业 大 学本 科 毕 业 设 计论文题目: 综合楼教室忙闲显示系统 学生姓名: 专业年级: 电子信息科学与技术 指导教师: 职称 讲师 2008年6月3日II 目 录题目I摘要I1 前言11.1 题目的来源与开发意义11.2 系统功能概述12 方案的提出及论证13 系统硬件设计23.1 系统硬件总体设计概述23.2 系统各个模块的设计23.2.1 教室状态显示模块23.2.2 时间显示模块33.2.3 按键模块33.3 芯片介绍43.3.1 AT89C51单片机的简介43.3.2 DS1302时钟93.3.3 8位串入/并出移位寄存器74HC164124 系统软件设计134.1 系

2、统软件总体设计思想134.2 Keil开发软件的介绍144.2.1 Keil 软件开发的流程154.2.2 Keil软件的使用154.3 各功能模块程序设计174.3.1 数据模块174.3.2 时钟模块204.3.3 功能模块245 系统调试315.1 硬件电路调试315.2 各功能模块软件调试316 结论31参考文献31致谢32附录一:系统总体硬件原理图33附录二:系统程序流程图34附录三:系统程序37吉林农业大学本科毕业设计综合楼教室忙闲状态显示系统 学 生:左 晨 专 业:电子信息科学与技术 指导教师:宫鹤摘 要:本设计实现了综合楼教室忙闲状态显示的功能。综合楼教室忙闲显示系统是建立在

3、单片机的基础上的电子监控系统,它主要是用来查询和显示综合楼各个教室在某一时间段的忙闲状态,显示当前年月日等等。信息存储调用系统是综合楼教室忙闲状态显示系统中非常重要的一部分,而时钟又是时间系统必不可少的。本设计就是以信息存储调用系统和时钟系统作为研究对象,主要介绍了信息存储的基本概念,时钟设置和编程的基本步骤等等,信息存储系统是在C+环境下进行串行通信编程的。我们这次研究的信息存储系统是为了实现综合楼各个教室信息的存储,数据的调用。通过写入程序来实现存储和调出查询功能,存储系统和时间系统紧密结合,把从存储调出的数据经过对比分析,最后显示出所需要的数据,可以实现对数据库的更新。另外,数据还包括对

4、时间的查询。通过时间的查询获得相应时间教室的状态信息。存储系统和时钟系统的有效结合,使系统工作更加准确。关键词: 存储系统;单片机;C+;时钟系统Comprehensive Building Blassroom Busy Idle Condition Display SystemName:ZuoChenMajor:Electronic information science and technologyTutor:GongHeAbstract: This design has realized the synthesis building classroom busy idle conditi

5、on demonstration function. The comprehensive building classroom busy idle display systems are the establishment in SCMs foundation electron supervisory system, it is mainly uses for to inquire and demonstration synthesis building each classroom in some time section busy idle condition, demonstration

6、 current year, month and day and so on. The information storage transfer system synthesizes in the building classroom busy idle condition display system a very important part, but the clock is also the time system is essential. This design is takes the object of study by the information storage tran

7、sfer system and the clock system, mainly introduced information storages basic concept, clock establishment and programming basic step and so on, the information storage systems are carry on the serial communication programming under the C+ environment. Our researchs information storage system is to

8、 realize the synthesis building each classroom information memory, the data transfer. Through reads in the procedure to realize saves and assigns out the inquiry function, the memory system and the time system unifies closely, data which assigns out from the memory after contrastive analysis, finall

9、y demonstrated needs the data, may realize to the database renewal. Moreover, the data also includes to the time inquiry. Obtains the corresponding time classroom the pass time passage period inquiry the status messages. The memory system and clock systems effective union, causes the system work to

10、be more accurate.Keywords: memory system;SCM;C+;clock system 52 1前言1.1 题目的来源与开发意义自20世纪90年代以来,单片机已进入了一个高速发展的阶段,世界上著名的半导体厂商都注重新型单片机的研制、生产和推广。单片机的应用已经深入到国民经济的各个领域中,由单片机控制的微型电脑产品比比皆是。单片机正朝着面向多层次用户的多品种多规格方向发展。随着电子技术的发展, 现在的忙闲显示系统功能越来越强, 可靠性和准确性的要求也越来越高。以前的忙闲显示系统大部分都是基于数字电路组成的,其功能比较单一,使用起来也不够理想,制作过程复杂, 而且

11、准确性与可靠性不高, 成品面积大, 安装, 维护困难。由于近年来单片机发展迅速, 逐渐出现用单片机制作忙闲显示系统, 制作过程简单, 而且安装, 维护简单。综合楼教室空闲状态显示系统主要是由存储系统、时钟系统和显示系统三部分组成。本次毕业设计,我主要研究的是存储系统和显示系统两部分。它的主要功能是将预先输入的信息数据通过对应时间调用方式将信息通过二级管亮灭状态显示出来,并能对数据库进行及时的更新。教室忙闲显示系统的开发工具KEIL。1.2系统功能概述 本设计以单片机AT89C51为核心,通过一片AT89C51单片机控制综合楼各个教室在某一时间忙闲状态的显示及键盘和各显示终端。利用74164使本

12、系统具有了显示查询时间和北京时间以及年月日的功能,并且能够设置和查询特定的时间。在实际的学习生活中,如果应用到此系统,必然要考虑到它的实用性,所以本设计采用并排显示,它主要功能是显示和查询在某一个特定的时间里,从存储系统中调出相应时间段所对应的综合楼各个教室当前空闲或繁忙的状态,通过发光二极管的亮、灭状态来显示。可以直观的看到每一层楼各个教室在当前时间的忙闲状态,还有年月日时间的显示,大大方便了同学查询。简单、实用、廉价是本设计的创新之处,可以轻松的实现对综合楼各个教室忙闲状态的显示和查询的功能。2 方案的提出及论证方案一:系统采用点阵做显示,显示年月日时间。用LS273做锁存器,DS1302

13、时钟I2C总线模式,24CXX系列做存储,利用单片机进行连接。经过多次试验尝试,均不能成功。且系统成本较高,时间反应速度缓慢,不能实现预期的效果。因此放弃了本方案。方案二:系统软件处理部分采用AT89C51芯片,用DS1302建立时钟电路,利用主控单片机的两个I/O口作为新的串行口,利用74164做的静态显示模块,使本系统具有了显示回答时间和北京时间的功能,考虑到实际的应用,利用2个大数码管显示层数,方便同学查询。设置S1,S2,S3按键年月显示查询北京时间 P3 P18 0 5 1 P2 P0教室显示时钟数码管图2.1方案二原理框图Fig 2.1 Project two principle

14、frame diagram3 系统硬件设计3.1 系统硬件总体设计概述综合楼教室忙闲状态显示系统就是用来准确的实时的显示出当前在综合楼里面每一个教室的状态,以及查询各个时间段教室空闲状态。本着这个原则,可以利用单片机控制其工作,将楼层信息教室状态显示出来为了使系统更人性化,功能更加完善,同学可以按照自己的需求进行查询某一个教室在某一个时间里是否有课。为了使同学能够清楚的看到查询的信息,利用数码管进行动态显示。本设计的硬件系统分为七个模块:处理模块,时钟模块,晶振模块,按键模块,复位模块, 时间显示模块,教室状态显示模块。3.2 系统各个模块的设计3.2.1 教室状态显示模块教室状态显示模块中有

15、一层教学楼的40个教室所一一对应的发光二极管,其显示方式为亮、灭两种,状态亮为教室有课,状态灭为教室没有课。本功能模块的设计采用一起显示单独查询的方式,具有显示当前时刻教室状态的功能。译码器输出驱动数码管显示。电源范围为318伏,本设计采用5V电源输出驱动电流可达到10MA以上,可直接驱动LED数码管,而不需要其他的接口电路。1其电路图如3.1 所示。图3.1教室状态模块电路图Fig 3.1 Classroom condition module circuit diagram3.2.2 时间显示模块 在同学没有查询的时候,系统显示当前年月日时间和楼层数,在同学进行时间查询的时候显示查询时间。此

16、显示模块是采用动态显示。由 P2.0和P2.1口进行串行送数据,经过串并转换器74LS164并行输出数据。2采用串行输出可以大大节省单片机的内部资源,串并转换器采用74LS164,低电平时允许通过8MA的电流,无需添加其他的驱动电路,采用较小的驱动电流就可以得到较高的显示亮度,其电路图如图3.2所示。图3.2时间显示模块的电路图Fig 3.2 Time the circuit module3.2.3 按键模块 按键模块连接到P2口,通过软件来判断哪个按键执行哪个功能,是否按下。通过按键可以调整时间,达到查询时间的作用。电路如图3.3所示。 图3.3按键模块电路图Fig 3.3 Key modu

17、le circuit diagram3.3 芯片介绍3.3.1 AT89C51单片机的简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的单片机。3单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51

18、是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 ,寿命:1000写/擦循环,数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存

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

20、部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号7。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故6。 P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选

21、功能P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2 /INT0 (外部中断0)P3.3 /INT1(外部中断1)P3.4 T0 (记时器0外部输入)P3.5 T1 (记时器1外部输入)P3.6 /WR (外部数据存储器写选通)P3.7 /RD (外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号

22、,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器

23、。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。定时器0和1的操作7定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择。这两个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。两个定时/计数器的模式0、1和2都相同,模式3不同。如下所述:模式0将定时器设置成模式0时类似8048定时器,即8位计数器带32分频的预分频器。此模式下,定时器寄存器配置为13位寄存器。当计数从全为“1”

24、翻转为全为“0”时,定时器中断标志位TFn置位。当TRn=1同时GATE=0或INTn=1时定时器计数。置位GATE时允许由外部输入INTn控制定时器,这样可实现脉宽测量。TRn为TCON寄存器内的控制位。该13位寄存器包含THn全部8个位及TLn的低5位。TLn的高3位不定,可将其忽略。置位运行标志(TRn)不能清零此寄存器。模式0的操作对于定时器0及定时器1都是相同的。两个不同的GATE位(TMOD.7和TMOD.3)分别分配给定时器0及定时器1。模式1模式1除了使用了THn及TLn全部16位外,其它与模式0相同。模式2此模式下定时器寄存器作为可自动重装的8位计数器(TLn)。TLn的溢出

25、不仅置位TFn,而且将THn内容重新装入TLn,THn内容由软件预置。重装时THn内容不变。模式2的操作对于定时器0及定时器1是相同的。模式3在模式3中,定时器1停止计数,效果与将TR1设置为0相同。此模式下定时器0的TL0及TH0作为两个独立的8位计数器。TL0占用定时器0的控制位:C/T,GATE,TR0,INT0及TF0。TH0限定为定时器功能(计数器周期),占用定时器1的TR1及TF1。此时TH0控制“定时器1”中断。模式3可用于需要一个额外的8位定时器的场合。定时器0工作于模式3时,80C51看似有3个定时器/计数器,当定时器0工作于模式3时,定时器1可通过开关进入/退出模式3,它仍

26、可用作串行端口的波特率发生器,或者应用于任何不要求中断的场合。串行口851单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口串行数据通信两种形式异步通信 在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始

27、位,仅接着是若干个数据位。同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。 同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。串行数据通信的传输速率 串行数据传输速率有两个概念,即每秒转送的位数bps(Bit per second)和每秒符号数波特率(Band rate),在具有调制解调器的通信中,波特

28、率与调制速率有关。9串行口和控制寄存器单片机串行口寄存器结构如图3.5所示。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。10MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出数据即可接收数据。移位时钟TI发送中断TXD串行输出接受SBUF输入移位寄存器RXD串行输入RI接受中断发送SBUF系统总线图3.5 串行口寄存器结构图Fig 3.5 The string goes to deposit machine knot composition串行口控制寄

29、存器:SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如表3.1所示.表3.1 SCON寄存器结构Table 3.1 The SCON deposits machine structureSCON寄存器结构SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H SM0、SM1:串行口工作方式控制位。SM0,SM1工作方式00方式001方式110方式211方式3 SM2:多机通信控制位。 多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,

30、当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。11当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。 工作于方式0时,SM2必须为0。 REN:允许接收位。 REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。 TB8:发送接收数据位8。 在方式2和方式3中,TB8是要发送的即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。 RB8:接收数据位

31、8。 在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。 TI:发送中断标志位。 可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。 RI:接收中断标志位。 可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。电源管理寄存器PCON PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如表3.2所示。表3.2PCON电源管理寄存器结构Table 3.2 The PCON po

32、wer supply management deposits machine structurePCON电源管理寄存器结构PCOND7D6D5D4D3D2D1D0位符号SMOD-GF1GF0PDIDL 在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。3.3.2 DS1302时钟 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可

33、采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。12DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/

34、片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。 DS1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如

35、果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字。此外,DS1302 还有年份寄存器、控制

36、寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 时钟是单片机系统中不可或缺的。时钟可以通过软件实现,当时钟只是系统的辅助功能时,用大量的软件来实现时钟功能,会影响主要功能的实现或使软件复杂化。本文介绍串行实时时钟芯片DS1302,采用该芯

37、片,单片机只需定时读出芯片的时钟,其余时间可作别的工作。DS1302的实时时钟包括秒、分、小时、日、月、星期、年等信息,与单片机采用串行通信。时钟可选24小时制或12小时制,可自动调整闰年及月份、日期。读写命令字节的格式及读写操作方式如图1。最高位为“1”,允许写操作,为“0”,禁止写操作。RAM/CK为“0”,表示读写时钟/日历数据,为“1”,表示读写RAM数据。A4A0为数据读写的地址。R/W为“0”,表示可进行写操作,为“1”则进行读操作。单字节操作需16个时钟,前8个时钟写命令字,后8个时钟读写数据。多字节突发模式读写,其命令字的地址A4A3A2A1A0=11111即可。其命令字的格式

38、及操作方式如图2。DS1302的时钟/日历数据格式为BCD码,秒、分、小时、日、月、星期、年的地址分别为00H、01H、02H、03H、04H、05H、06H。写保护寄存器的地址A4A3A2A1A0=00111,格式如图3。WP为“0”,可对时钟或RAM进行写操作。WP为“1”,禁止写任何寄存器。LED数码显示用MC14499四位七段译码驱动器,输入为BCD码,译码输出直接驱动LED的各段。当使能信号EN为“0”时,在时钟CLK的作用下,串行数据输入端接收20位串行数据,然后使EN为“1”,将移位寄存器中的内容装入锁存器。其数据格式如图4。前4位数据为小数点,后16位是4位数码显示器显示的数据

39、。MC14499级联使用时,小数点显示无效,小数点代码锁存器需装入全“1”。单片机选用Microchip公司的PIC16C63A,电路如图5。本例中只显示年、月、日、小时、分、秒等,不显示星期,但对DS1302的读、写采用突发模式。为了保证读、写时地址的连续性,在操作中设有星期的读、写。程序中小数点位用“1111”填充,先输入的第一字节是秒的BCD码,第二字节是分的BCD码,第三字节的低四位是小数点填充位“1111”,第三字节的高四位及第四字节的低四位是小时的BCD码,依此类推,显示年、月、日、小时、分、秒需输入8字节数据,PIC16C63A发送了88=64位数据,三片MC14499实际接收6

40、0位,第八字节的高四位“1111”被移出,实现了MC14499的级联。DS1302数据的读取采用中断方式,0.1秒读取1次数据。时间/日历的显示每变化0.05秒显示1次。实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。 LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有34线串

41、行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2A (典型值),省电模式时小于1A,工作电压为2.4V3.3V,显示清晰。DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。 在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个

42、SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。 要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电

43、容器代替。100 F就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。 1.每次上电,必须把秒寄存器高位(第7位)设置为0,时钟才能走时。2.如果需要写入数据和时钟日历信息,必须把“写保护”寄存器设置成为0;内存数据定义。BitCnt data 30h ; 数据位计数器ByteCnt data 31h ; 数据字节计数器Command data 32h ; 命令字节地址RcvDat DATA 40H ; 接收数据缓冲区XmtDat DATA 50H ; 发送数据缓冲区;端口位定义IO_DATA bit P1.1 ; 数据传送总线SCL

44、K bit P1.0 ; 时钟控制总线RST bit P1.2 ; 复位总线RS EQU P1.3;确定具体硬件的连接方式 RW EQU P1.4 ;确定具体硬件的连接方式E EQU P1.5 ;确定具体硬件的连接方式ORG 0000HLJMP START ;* ;main program ORG 0030HSTART: CLR RST MOV SP,#2AH 现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行

45、数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。 图3.6 DS1302时钟流程图Fig3.6 DS1302 clock flow chart3.3.3 8位串入/并出移位寄存器74HC16474 HC164 利用先进的矽-门的互补型金属氧化半导体技术。它有标准互补型金属氧化半导体集成电路的高噪音免疫和低功耗。8位串入/并出移位寄存器的引脚如图3.9所示,它的功能表如表3.5所示。图3.7 8位串入/并出移位寄存器74HC164的引脚图Fig 3.7 74HC164 the pin map表3.3 8位串入/并出移位寄存器74HC164的功

46、能表Table 3.3 74HC164 logic Menu输入输出/MRCLOCKA BQ0 Q1 。 Q7LXX XL L 。 LHLX XQ00 Q10 。 Q70HH HH Q0 n 。Q7nHL XL Q0 n 。Q7nHX LL Q0n 。Q7n特征:典型的操作频率: 50 兆赫兹典型的增殖延迟: 19 ns(对 Q 的时钟)工作电压范围: 2-6V低电平输入电流: 最大值1uA低电平时允许通过电流:最大值80uA (74HC系列)74LS164可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,一个输入信号时可以并接。CLK(第8

47、脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到CLK端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74HC164中。/MR(第9脚)为复位端,当/MR=0时,移位寄存器各位归0,只有当/MR=1时,时钟脉冲才起作用。Q0Q7(第36和1013脚)并行输出端分别接LED显示器的ag、dp各端对应的引脚上。再来一个脉冲,第一个脉冲就会从最高位移出。4 系统软件设计4.1 系统软件总体设计思想本系统是以单片机的基本语言汇编语言来进行软件设计,指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。使硬件在

48、软件的控制下协调运作。单片机与DS1302通信,并读取当前的时间值,然后在数码管显示出来,分别显示:年月日时分秒,显示通过中断的时间来实现,通过164的移位来选通显示的位,在中断期间保持显示状态,这样才能让数码管显示稳定,另外5个164是串接在一起的,通过上升沿写入的方法,把查表查出来的课程表,移位显示出来,查表的方法是:先把DS1302的日期计算出对应的星期,显示表值=第一层第一周第一节值的地址+(星期-1)*(4(节课)*8(8*5=40个班)+(星期-1)*(4节课*5(8*5=40)+层数*224(一层一周的课程总值)公式为:Disp_kcb(kcb_10+(CurrentTime.W

49、eek-1)*32+(cs-1)*224);4.2 Keil开发软件的介绍 keil 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、

50、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 我们将通过一些实例来学习Keil软件

51、的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。 (1) 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能

52、体现高级语言的优势。 下面详细介绍Keil C51开发系统各部分功能和使用。 (2) Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,如图(1)所示,其中uVision与I shell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供

53、调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。4.2.1 Keil 软件开发的流程对于刚刚使用Keil的用户来讲,一般是按照下面的流程来完成开发任务的。1) 建立工程2) 为工程选择目标器件3) 设置工程的配置参数4) 打开/建立程序文件5) 编译和连接工程6) 纠正程序中的书写和语法错误并重新编译连接7) 对程序中某些纯软件的部分使用软件仿真验证8) 使用 TKS 硬件仿真器对应用程序进行硬件仿真9) 将生成的 Hex 文件烧写到 ROM 中运行测试 上面的流程只是一个标准的开发流程,实际中用户可能

54、反复重复一个或几个步骤。要点亮发光二极管,必须使单片机的I/O口P1.0输出低电平。于是我们的任务就是编程序使P1.0输出地电平。4.2.2 Keil软件的使用随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言到逐渐使用高级语言开发,其中主要是以C语言为主,市场上几种常见的单片机均有其C语言开发环境。 Keil软件是目最流行开发80C51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部份组合在一起。(1)按键识别通过按下一次按键,使向左移动一位,直到最后一位,在向右

55、移动。用8芯排线把JP-LSH连接到JP12上。用一根导线把JK5接到P2.1上。可以看出P2.1在按键没有按下时接的是高电平,按键按下时接的就是低电平了。所以我们只要判断P2.1的电平就可以知道按键是否被按下了。而在按键按下的过程中,由于抖动,将产生干扰,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。我们在程序设计时,从按键被

56、识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。(2)数码管动态显示 P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,动态显示“1234”字样;用排线把JP-CODE连到JP8是,注意:a接P0.0;b接P0.1;c接P0.3 把JP-CS连到JP14上,注意:4H接P2.4;3H接P2.5;2H接P2.6;1H接P2.7;七段LED显示器内部由七个条形发光二极管和一个小圆点发光二

57、极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED数码管的a-dp七个发光二极管因以不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码。“0”3FH “1”06H “2”5BH “3”4FH“4”66H “5”6DH “6”7DH “7”07H “8”7FH “9”6FH “A”77H “b”7CH “C”39H “d”5EH “E”79H “F”71H 由于显示的数字09的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字09的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLEDB3FH,06H,5

58、BH,4FH,66H,6DH,7DH,07H,7FH,6FH 动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。(3)44矩阵式键盘识别用AT89S51的并行口P3接44矩阵键盘,以P3.0P3.3作输入线,以P3.4P3.7作输出线;在每一个数码管上显示每个按键的“0F”序号。 用排线把JP-CODE连到JP8是,注意:a接P0.0;b接P0.1;c接P0.3把JP-CS连到JP14上,注意:4H接P2.4;3H接P2.5;2H接P2.6;1H接P

59、2.7;用排线把JP-KEY连到JP12上,注意1,2,3,4,5,6,7,8,分别对应P3.0,P3.1,P3.3,P3.4每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。(4)按键中断识别采用中断技术,每按一下按键,计数器加1,并用LED显示出来。用排线把JP-CODE连

60、到JP8上,注意:a接P0.0;b接P0.1;c接P0.3把JP-CS连到JP14上,注意: 2H接P2.0; 1H接P2.1; 中断按键已经接好。4.3 各功能模块程序设计4.3.1 数据模块dispcode=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/共阳sfr xsbuf = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.显示数据端口/一层/周一unsigned char code kcb_10=0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff;/周一第一节unsigned char code kcb_11=0xCa,0xF1,0x14,0xB1,0x09,0x92,0xa2,0xb8;/周一第二节unsigned char code kcb_12=0xCb,0xF2,0x24,0xB2,0x99,0x9

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