具有记忆功能的电子时钟课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

具有记忆功能的电子时钟一、题义分析及解决方案1.题义需求分析用STARES598PCI单板开发机和接口芯片设计一电子时钟,具有以下功能:(1)电子时钟能够正常工作,显示小时、分、秒;(2)断电后再启动,要求电子钟能够按照断电前的时间继续计数;(3)预设时间为23:59:59。2.解决问题方法及思路硬件部分选用8255作为IO扩展芯片选用8279驱动8位数码管作为时间显示模块。选用24C02A存储断电前的时间。软件部分读取8563中的时间显示,将正确的时间写入EEPROM,将EEPROM中的数据读入完成系统断电后复位。二、硬件设计8255在本设计中的作用IO扩展,以完成按键输入检测功能分析8255是可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。(1)一个并行输入、输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。(2)具有24个可编程设置的I/O口,即3组8位的I/O口为PA口,PB口和PC口。它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。技术参数RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。方式0————基本输入输出方式;方式1————选通输入/出方式;方式2————双向选通输入/输出方式;PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。工作于三种方式中的任何一种;PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。不能工作于方式二;PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'不能工作于方式一或二。A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A1=0,A0=0时,PA口被选择;当A1=0,A0=1时,PB口被选择;当A1=1,A0=0时,PC口被选择;当A1=1.A0=1时,控制寄存器被选择.24C02A在本设计中的作用记录掉电前的时间。功能分析E2PROM技术参数1.宽范围的工作电压1.8v~5.5v2.低电压技术:1mA典型工作电流1uA典型待机电流3.储存器组织结构4.2线串行接口,完全兼容I2C总线5.施密特触发输入噪声抑制6.硬件数据写保护7.内部与周期(最大5ms)8.自动递增地址9.可按照字节写10.esd保护大于2.5kV11.高可靠性:--擦写寿命:100万次数据保持时间:100年12.无铅工艺,符合RoHS标准8279在本设计中的作用驱动数码管显示时间值功能分析(1)可同时进行键盘扫描及文字显示;(2)键盘扫描模式(ScannedKeyboardMode);(3)传感器扫描模式(ScannedSensorMode);(4)激发输入模式(StrobeInputEntryMode);(5)8乘8键盘FIFO(先进先出);(6)具有接点消除抖动,2键锁定及N键依此读出模式;(7)双排8位数或双排16位数的显示器;(8)右边进入或左边进入。16位字节显示存储器。技术参数RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。方式0————基本输入输出方式;方式1————选通输入/出方式;方式2————双向选通输入/输出方式;PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。工作于三种方式中的任何一种;PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。不能工作于方式二;PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'不能工作于方式一或二。A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A1=0,A0=0时,PA口被选择;当A1=0,A0=1时,PB口被选择;当A1=1,A0=0时,PC口被选择;当A1=1.A0=1时,控制寄存器被选择.4.硬件总逻辑图及其说明使用了E4区的24C02A,需要将P1.0和P1.1接到SDA和SCL使用了E5区的8279模块,需要将CLK接时钟,CS接A3区CS5片选,数码管段选和位选对应插好使用了B4区的8255,需要将CS接A3区CS1,PA口接按键三、控制程序设计1.控制程序设计思路说明初始化读取EEPROM中的数据,判断时间是否被初始化过,如果不是,那么设置初始时间,并改写初始化标志状态;如果是,那么读取时间来初始化时钟芯片。走时读取内存中的时间数值,送入数码管显示,并送入EEPROM更新数值,遇到计时中断后更新内存中的时间,当按键被按下,根据按键调整时间参数2.程序流程图3.控制程序SDABITP1.0SCLBITP1.1;24C02的片选地址:100HA24C02_WRITEEQU0A8HA24C02_READEQU0A9HTIMEEQU30H;时间数据缓冲区MS50DATA31H;存放多少个50msSECDATA32H;秒MINDATA33H;分HOURDATA34H;时HOUR_MAXDATA35H;12/24时制KSDATA36HBUFFERDATA37H;显示缓冲区COM_ADDXDATA0F003HPA_ADDXDATA0F000HEXTRNCODE(Display8)ORG0000HLJMPMAINORG000BHLJMPINT_Timer0ORG0100H;==============================================;主程序代码区;==============================================MAIN:MOVSP,#60HMOVMS50,#00HLCALLI2C_INIT;I2C总线初始化MOVDPTR,#COM_ADD;8255初始化MOVA,#90H;PA输入MOVX@DPTR,AMOVTH0,#76;定时中断计数器初值MOVTL0,#00;定时50msMOVTMOD,#01H;定时器工作方式1MOVIE,#82H;允许定时器0中断SETBTR0;开定时器T0MOVR7,#06H;读取6个数据到内存MOVR0,#TIME;设置存取地址L_R:MOVA,R0LCALLRead_ByteMOV@R0,AINCR0DJNZR7,L_RMOVA,TIMEMOVKS,#10;初始化按键消抖计数器CJNEA,#01H,INIT_M;判断是否已经进行过时间初始化JMPMainLoopINIT_M:;初始化时间MOVSEC,#59MOVMIN,#59MOVHOUR,#12MOVTIME,#01H;记录初始化信息MainLoop:MOVR0,#TIMEMOVA,#TIMELCALLWrite_Page;A24C02存时间LCALLDisplay;调用显示WAIT:JBF0,CHANGED;每50MS进行一次显示更新MOVR0,#MS50MOVA,KSCLRCSUBBA,MS50CJNEA,#00H,WAIT;判断当前时间是否等于按键消抖计数器数值MOVA,KSCJNEA,#10,KS_10;更改按键消抖计数器值,在250MS后再进行按键扫描MOVKS,#0;消抖JMPKSCANKS_10:MOVKS,#10KSCAN:MOVDPTR,#PA_ADDMOVXA,@DPTR;读入按键状态MOVR0,AANLA,#01HCJNEA,#00H,TEST_SW;初始化按键JMPINIT_MTEST_SW:;切换时制按键MOVA,R0ANLA,#02HCJNEA,#00H,TEST_HPMOVA,HOUR_MAXCJNEA,#24,SET_24MOVHOUR_MAX,#13JMPWAITSET_24:MOVHOUR_MAX,#24JMPWAITTEST_HP:;小时增加调整键MOVA,R0ANLA,#08HCJNEA,#00H,TEST_MPJMPHOUR_PTEST_MP:;分钟增加调整键MOVA,R0ANLA,#20HCJNEA,#00H,TEST_HMJMPMIN_PTEST_HM:;小时减小调整键MOVA,R0ANLA,#04HCJNEA,#00H,TEST_MMJMPHOUR_MTEST_MM:;分钟减小调整键MOVA,R0ANLA,#10HCJNEA,#00H,RETURNJMPMIN_MCHANGED:CLRF0JMPMainLoop;==========================================RETURN:;2K寻址中继,避免CJNE无法返回到WAITJMPWAIT;时间调整代码块MIN_P:MOVR1,#MININC@R1;分加一CJNE@R1,#60,RETURNMOV@R1,#00HJMPWAITHOUR_P:MOVR1,#HOURINC@R1;时加一JMPWAITMIN_M:MOVR1,#MINDEC@R1;分减一CJNE@R1,#0FFH,RETURNMOV@R1,#59JMPWAITHOUR_M:MOVR1,#HOURDEC@R1;时减一MOVA,HOUR_MAXCJNEA,#24,HM_T12;是否为24小时制CJNE@R1,#0FFH,RETURNJMPHM_MHM_T12:CJNE@R1,#00H,RETURNHM_M:MOV@R1,HOUR_MAXDEC@R1JMPWAITINT_Timer0:MOVTL0,#0MOV

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功