当前位置:文档之家› 【精编完整版】单片机毕业论文:基于单片机的掉电数据保持存储器

【精编完整版】单片机毕业论文:基于单片机的掉电数据保持存储器

东北石油大学

课程设计

2013年7 月8日

东北石油大学课程设计任务书

课程单片机课程设计

题目基于单片机的掉电数据保持存储器

专业姓名学号

一、任务

设计一款以AT89C51单片机为控制核心,利用AT24C02内存芯片设计的一种掉电数据存储器,这种存储器掉电后再次开机,LED数码管能够显示上次关机时的数字。

二、设计要求

[1]掌握AT24C02内存芯片的工作原理及使用方法。

[2] 通过对AT89C51单片机的编程,实现存储器掉电后再次开机时,LED数码管能够显示上次关机时的数字。

[3] 写出详细的设计报告。

[4] 给出全部电路和源程序。

三、参考资料

[1] 焦丽鹃.李春旭.郭学良.液晶显示器在人机交互系统中的应用[J].信息技术,2006年11期.

[2] 马忠梅.单片机的C 语言应用程序设计[M].北京:北京航空航天大学出版社.2006

[3] 刘勇.数字电路[M].电子工业出版社,2004.

[4] 沈红卫.单片机应用系统设计实例与分析[M].北京:北京航空航天大学出版社.2003 .

[5] 周润景.基于Proteus的电路与单片机仿真系统设计与仿真[M]. 北京:北京航空航

天大学出版社. 2005.

完成期限2013.7.1 - 2013.7.10

指导教师

专业负责人

2013年6月29 日

目录

第1章绪论 (1)

1.1 掉电数据保持存储器的概述 (1)

1.2 单片机发展的技术状况 (1)

1.3 本设计任务 (2)

第2 章总体方案论证与设计 (3)

2.1 总体方案思路分析 (3)

2.2 总体硬件组成框图 (3)

第3章系统硬件设计 (5)

3.1 掉电数据保持存储器的硬件设计 (5)

3.2 晶振电路模块的设计 (5)

3.3 复位电路模块的设计 (5)

3.4 数码显示管模块设计 (8)

第4章系统的软件设计 (9)

4.1 主程序设计 (9)

4.2 子程序设计 (10)

第5章系统调试与测试结果分析 (11)

5.1 使用的仪器仪表 (11)

5.2 系统调试 (11)

5.3 测试结果 (11)

结论 (12)

参考文献 (13)

附录 (14)

第1章绪论

近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。而51系列单片机[1]是各单片机中最为典型和最有代表性的一种,通过本次课程设计进一步对单片机学习和应用,从而更熟悉单片机的原理和相关设计并提高了开发软、硬件的能力。本设计是通过单片机设计一个掉电数据存储器,要求开机后,LED数码管能够显示上次关机的数字。还要设计一个能够进行数据回查的仪表。

1.1 掉电数据保持存储器的概述

在位置测量系统中,基准量的建立是最基本的,也是必不可少的.而在目前所流行的位置测量系统中,大都采用相对测量或相对测量和绝对测量相结合的方法.不论是前者还是后者,要想保证测量基准在整个测量过程中不发生丢失,测量系统信息掉电保护就显得特别重要.由于有了系统信息掉电保护,可避免多次重建测量基准,而保证测量基准在整个测量过程中不发生丢失.所以在当前所用的测量系统中,信息掉电保护功能是必不可少的.所谓信息掉电保护是指系统在掉电的瞬间,能把测量头的位置坐标准确记录下来,待下次上电后,就可正确复现掉电前测量头的位置坐标,保证了在接下去的测量过程中,测量基准不发生变化,从而保证测量系统在整个测量过程中的准确性[2]。

1.2 单片机发展的技术状况

在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM来保存数据。由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用。EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读的特点。但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM[3]。

1.3 本设计任务

本研究即以AT89C51单片机为核心,利用AT24C02内存芯片设计一个掉电数据保持存储器,要求系统在断电时,能够保存数据,再次开机时,可以使LED数码管能够显示上次关机时的数字。其基本电路包括:单片机最小系统、I2C接口电路、LED显示电路等。

第2 章总体方案论证与设计

本系统采用单片机AT89C51为控制核心,利用AT24C02内存芯片[4]设计一个掉电数据保持存储器,要求系统在断电时,能够保存数据,再次开机时,可以使LED数码管能够显示上次关机时的数字。系统主要包括单片机最小系统、I2C 接口电路、LED显示电路等。

2.1 总体方案思路分析

AT89C5l 中有一个用于构成内部振荡器的高增益反相放大器,引脚

XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路。外接石英晶体及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容

C1、C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。用户也可以采用外部时钟。采用外部时钟的电路。这种情况下,外部时钟脉冲接到XTAL1 端,即内部时钟发生器的输入端,XTAL2 则悬空。在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM 和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在Vcc 恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。同时AT24C02存储芯片,既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。所以使用EEPROM AT24C02实现掉电保护,我们根据其特点进行设计[5]。

2.2 总体硬件组成框图

图2-1 总体硬件组成框图

系统框图如图2-1所示,系统主要由单片机AT89C51,数据存储芯片

AT24C02,晶振电路,复位电路,开关控制电路组成。

第3章系统硬件设计

3.1 掉电数据保持存储器的硬件设计

3.1.1 AT89C51芯片介绍

AT89C51 是美国ATMEL 公司生产的低电压,高性能CMOS8 位单片机,片内含4k bytes 的可反复擦写的只读程序存储器(PEROM)和128 bytes 的随机存取数据存储器(RAM),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片内置通用8 位中央处理器(CPU)和Flash 存储单元,功能强大AT89C51 单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128 字节内部RAM,32 个I/O 口线,两个16 位定时/计数器,一个5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51 可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位[6]。

图3-1-1 AT89C51引脚图

3.1.2 驱动电路的设计

此系统中驱动电路原理图如图3-1-2所示。

图3-1-2 驱动电路原理图

3.2 晶振电路模块的设计

图3-2 晶振电路

89C51芯片内部有一个高增益反相放大器,用于构成振荡器[7]。如图3—2,反相放大器的输入端为XTAL1,输出端为XTAL2,两个跨接石英晶体及两个

电容就可以构成稳定的自激振荡器。电容器通常取30pF左右,可以稳定频率并对振荡频率有微调作用XTAL1 是片内振荡器的反相放大器输入端,XTAL2 则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2 悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF 左右。一个晶体振荡器,接在单片机内部的振荡电路上,两个电容是起振电容,频率越高,应该越小[8]。

3.3 复位电路模块的设计

在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。复位后P0-P3 口均置1 引脚表现为高电平,程序计数器和特殊功能寄存器SFR 全部清零。当复位脚由高电平变为低电平时,芯片为ROM 的00H 处开始运行程序。如上图3-3所示复位电路,由于复位时高电平有效,当刚接上电源的瞬间,电容C1两端相当于短路,即相当于给RESET引脚一个高电平,等充电结束时(这个时间很短暂),电容相当于断开,这时已经完成了复位动作[9]。

图3-3 复位电路

3.4 数码显示管模块设计

我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮[10]。而共阳极就是将八个LED的阳极连在一起。其原理图如下[11]。

共阴极共阳极引脚图

图3-2-1 数码显示管设计原理图

第4章系统的软件设计

4.1 主程序设计

图4-1 主程序流程图

4.2 子程序设计

图4-2 写入数据子程序

第5章系统调试与测试结果分析5.1 使用的仪器仪表

按键开关,AT89C51单片机,AT24C02数据存储器,LED数码显示器,电容,电阻,电源插头。下面为各元器件的作用:

开关:一个开关起到开关机作用,一个开关用于复位电路;

电容:用于单片机的最小系统;

数码显示器:显示数字。

5.2 系统调试

根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。

5.2.1硬件调试

对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。

5.2.2软件调试

软件调试采用单片机仿真器WAVE6000L及微机,将编好的程序进行调试,主要是检查语法错误。

5.2.3硬件软件联调

将调试好的硬件和软件进行联调,主要调试系统的实现功能。

5.3 测试结果

此次系统设计结果较好,开启电源带数字到达某一值关闭电源,等待五秒,待再次开启电源,显示为关机时结果。

结论

本设计任务是以AT89C51单片机为控制核心,利用AT24C02内存芯片设计一个掉电数据保持存储器。通过这次的学习,我对我对AT89C51系列单片机有了进一步了解,对AT24C02芯片的应用更加灵活。更主要得是我知道了掉电保护的主要原理是由电源监控芯片和串行E2PROM AT24C02构成的低成本掉电检测和保护电路,在实时保存数据和掉电恢复现场继续运行的单片机系统中具有现实的工程意义。使用中比自带掉电保护的EZPROM 要更加灵活,可以自由利用AT24C02 的存储空间,例如循环使用、用个别单元存放可修改参数。但是,由于实际应用中廉价的单片机大多数都不带总线接口,这就使得在软件编程上复杂了一些,通过一定的编程技巧取得的效果是令人满意的。

通过软硬件的仿真调试,实现了本次设计的基本功能:实现存储器掉电后再次开机时,LED数码管能够显示上次关机时的数字。但在实际应用中,功能不仅仅于此,通过对程序的稍做修改,我们就可以实现更多的功能。

参考文献

[1] 焦丽鹃.李春旭.郭学良.液晶显示器在人机交互系统中的应用[J].信息技术,2006年11期.

[2] 刘勇.数字电路[M].电子工业出版社,2004.

[3] 沈红卫.单片机应用系统设计实例与分析[M].北京:北京航空航天大学出版社.2003 .

[4] 彭介华.电子技术课程设计指导[J].北京:高等教育出版社,1997.

[5] 万光毅.单片机实验与实践教程[M]. 北京:北京航空航天大学出版社.2005.1.

[7] 诸昌钤.LED 显示屏系统原理及工程技术[M]. 成都:电子科技大学出版

社.2000.

[8] 张红.基于单片机控制的LED 点阵显示屏系统[J]. 微计算机信息.2009.25期

1-2卷:92-93.

[9] 胡烨,姚鹏翼,陈明.Protel 99SE原理图与PCB设计教程[M].机械工业出版

社.2005:23-99.

[10] 马忠梅.单片机的C 语言应用程序设计[M].北京:北京航空航天大学出

版社.2006

[11] 周润景.基于Proteus的电路与单片机仿真系统设计与仿真[M]. 北京:北京

航空航天大学出版社. 2005.

附录1 程序

#include

SCK = 1;

SDA = 0;

SCK = 0;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_(); }

void stop() {SDA = 0;

SCK = 1;

_nop_();

_nop_();

SDA = 1;

_nop_();

_nop_();

SDA=0;

_nop_(); _nop_();

SCK=0;

}

bit Ask()

{

bit ack_bit;

SDA = 1;

_nop_();

_nop_();

SCK = 1;

_nop_();

_nop_();

ack_bit = SDA;

SCK = 0;

return ack_bit;

}

unsigned char ReadData() {

unsigned char i; unsigned char x;

for(i = 0; i < 8; i++)

{

SCK = 1;

x<<=1;

x|=(unsigned char)SDA;

SCK = 0; }

return(x);}

void WriteCurrent(unsigned char y)

{

unsigned char i;

for(i = 0; i < 8; i++)

{

SDA = (bit)(y&0x80);

_nop_();

SCK = 1;

_nop_();

_nop_();

SCK = 0;

y <<= 1;

}

}

unsigned char writeset(unsigned char add,unsigned int dat)

{

start();

WriteCurrent(OP_WRITE);

Ask();

WriteCurrent(add);

Ask();

WriteCurrent(dat);

Ask();

stop();

delaynms(4);

} unsigned char ReadCurrent()

{

unsigned char x;

start();

WriteCurrent(OP_READ);

Ask();

x=ReadData();

stop();

return x;

}

unsigned char ReadSet(unsigned char set_addr)

{

start();

WriteCurrent(OP_WRITE);

Ask();

WriteCurrent(set_addr);

Ask();

return(ReadCurrent()); }

void LEDshow()

{

P0=table[sec/10];

shiwei=0;

delaynms(2);

shiwei=1;

P0=table[sec%10];

gewei=0;

delaynms(2);

gewei=1;

}

void main(void) {

TMOD=0x01; ET0=1;

EA=1;

SDA = 1;

SCK = 1;

sec=ReadSet(2); TR0=1;

while(1)

{

LEDshow();

if(write==1) {

write=0; writeset(2,sec); }

if(K5==0)

{

delaynms(10);

if(K5==0)

{sec=0;}

}}}

void t0(void) interrupt 1 using 0

{

count++;

if(count==20)

{

count=0;

sec++;

write=1;}

if(sec==100)

{sec=0;} }

附录2 仿真效果图

(1)下图为开机26秒时显示数据

(2)下图为关机五秒后的显示结果,与上图相同

东北石油大学课程设计成绩评价表

指导教师:年月日

相关主题
文本预览
相关文档 最新文档