基于凌阳数字电子时钟设计_第1页
基于凌阳数字电子时钟设计_第2页
基于凌阳数字电子时钟设计_第3页
基于凌阳数字电子时钟设计_第4页
基于凌阳数字电子时钟设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南民族大学计算机科学学院2008级自动化邓中满学号080640301题目数字电子时钟(基于SPCE061A凌阳单片机)一、要求1、基于凌阳SPCE061A单片机与SPLC501点阵LCD制作一个数字电子钟2、电子钟计时准确,能准确进位,显示年月日时分秒和星期3、电子钟可以手动设置时间二、分析从题目可以分析出,题目要求电子钟的CPU为凌阳公司的SPCE061A单片机,该款单片机时凌阳科技推出的一款16位结构的微控制器,SPCE061A里内嵌32K字的FLASH,CPU时钟为032MHZ49152MHZ,拥有丰富的定时器资源和时基中断源,可以轻松胜任电子时钟的任务。SPLC501液晶显示模组采用凌阳科技的SPLC501A芯片驱动,拥有12864点阵,足够显示一个电子时钟的界面。由于要有准确的计时,因此计时部分采用SPCE061A的2HZ时基中断,每计数2次中断一次,时间加1。由于时钟的进位有不同的进制,日期上的更是各有不同,因此特别定义一个时间进位函数,当时间产生进位时,调用该函数进行进位计算,避免产生错误时间。按键控制采用1KHZ时基中断来判断按键是否按下,程序中加入了软件去抖动功能。程序开始时,会在LCD上显示出一个界面,增加系统的美观度。模组上的液晶显示器采用凌阳科技的SPLC501芯片作为LCD驱动和控制器,为12864点阵图形。用单片机的IO口可以很方便的设置某一个点为1,之后就会点亮这一点。作为一个配套的实验模组,模组里面内置有很多函数,这个电子时钟就是利用其中的LCD501_BITMAP()和LCD501_PUTSTRING()函数来显示对应的文字或者字符。还有一个很方便的工具,就是利用对应的DM字模提取工具,可以获取要显示的数字或者文字在液晶显示模中的数组。三、设计1、硬件设计11PLCD501模组的硬件平面图中南民族大学计算机科学学院2008级自动化邓中满学号08064030212这是模组的内部设置的点阵图13液晶模组相关配置信息内置8580位显示RAM。RAM中的一位数据控制液晶屏上的一个象素点的亮、暗状态。“1”亮“0”暗。具有65行驱动输出和132列驱动输出(注模组中的液晶显示面板仅为64行、128列)可以直接与80系列和68系列微处理器相连。内置晶振电路,也可以外接晶振工作温度范围为40摄氏度85摄氏度。2、软件设计21常用功能函数介绍液晶显示控制类中南民族大学计算机科学学院2008级自动化邓中满学号080640303LCD501_INIT液晶初始化LCD501_CLRSCREEN清屏LCD501_REVERSECOLOR显示翻转LCD501_SETPAINTMODE设置图形显示模式LCD501_GETPAINTMODE获取当前显示模式LCD501_FONTSET设置文本字体LCD501_FONTGET获取当前文本字体LCD501_PUTCHAR显示单个字符LCD501_PUTSTRING显示字符串LCD501_PUTPIXEL画点LCD501_LINE画直线LCD501_CIRCLE画圆LCD501_RECTANGLE画矩形LCD501_BITMAP位图显示/汉字显示SPCE061A与SPLC501的接口采用6800并行接口电路,即8位数据总线、1个读写选通端口、1个数据指令选通端口、1个信号使能端口,具体接法如下图GNDIOB456902SPCEARW7L按键采用凌阳61板上提供的三个按键,接口电路如下KYV22软件编程软件部分由三个部分组成主程序部分、2HZ时基中断部分、1KHZ时基中断部分,主程序部分主要负责初始化LCD和显示界面,2HZ时基中断部分负责时间的计数,1KHZ中南民族大学计算机科学学院2008级自动化邓中满学号080640304时基中断部分负责按键的扫描,下面看看这三个程序的流程图221主程序流程图开始结束初始化程序和LCD开2HZ时基中断,定时1秒,等到中断到来中断到来进入中断处理程序调用函数显示时间等待下一次中断到来NY中断返回中断入口中断到来,计数加1中断计数值为1计数到1秒,调用函数显示时间NY中断返回中断入口是否有按键按下是否按下KEY1执行KEY1按下程序是否按下KEY2是否按下KEY3执行KEY2按下程序执行KEY3按下程序NNNYYY222主要程序及注释2221时钟计数程序/MAINCINCLUDE“SPLC501USERH“INCLUDE“MYCHARH“INCLUDE“SPCE061AH“INTCOUNT_TIME0INTKEY_TIME02HZ时基中断1KHZ时基中断中南民族大学计算机科学学院2008级自动化邓中满学号080640305UNSIGNEDINTCONTR24INTSET_MODE0STRUCTTIME/定义时间结构体,存储现在的时间INTYEAR/年INTMONTH/月INTWEEK/周INTDAY/日INTHOUR/时INTMINUTE/分INTSECOND/秒CLOCKVOIDCLOCK_INITVOIDCLOCK_FIXVOIDDISP_TIMECONSTCHARCLR“INTMAINLONGINTM100000/ADDYOURCODEHEREINTDLYLCD501_INIT0X00P_IOA_DIRP_IOA_ATTRIBP_IOA_DATALCD501_BITMAP32,0,UNSIGNEDINTENCODING_00/课LCD501_BITMAP48,0,UNSIGNEDINTENCODING_01/程LCD501_BITMAP64,0,UNSIGNEDINTENCODING_02/设LCD501_BITMAP80,0,UNSIGNEDINTENCODING_03/计LCD501_BITMAP24,16,UNSIGNEDINTENCODING_04/计LCD501_BITMAP40,16,UNSIGNEDINTENCODING_05/算LCD501_BITMAP56,16,UNSIGNEDINTENCODING_06/机LCD501_BITMAP72,16,UNSIGNEDINTENCODING_07/接LCD501_BITMAP88,16,UNSIGNEDINTENCODING_08/口LCD501_BITMAP16,32,UNSIGNEDINTENCODING_09/数LCD501_BITMAP32,32,UNSIGNEDINTENCODING_0A/字LCD501_BITMAP48,32,UNSIGNEDINTENCODING_0B/电LCD501_BITMAP64,32,UNSIGNEDINTENCODING_0C/子LCD501_BITMAP80,32,UNSIGNEDINTENCODING_0D/时LCD501_BITMAP96,32,UNSIGNEDINTENCODING_0E/钟P_WATCHDOG_CLEAR0X0001WHILEM中南民族大学计算机科学学院2008级自动化邓中满学号080640306P_WATCHDOG_CLEAR0X0001CLOCK_INITLCD501_PUTSTRING0,0,CLRFORDLY0DLY310CONTRLCD501_SETCONTRASTCONTR中南民族大学计算机科学学院2008级自动化邓中满学号080640308/如果为设置时间模式IFSET_MODE1CLOCKYEARIFSET_MODE2CLOCKMONTHIFCLOCKMONTH13/13月进位CLOCKMONTH1IFSET_MODE3CLOCKDAYIFCLOCKMONTH2IFSIGN1IFSIGN0IFSET_MODE4CLOCKHOURIFCLOCKHOUR24CLOCKHOUR0IFSET_MODE5CLOCKMINUTEIFCLOCKMINUTE60CLOCKMINUTE0IFSET_MODE6CLOCKSECONDIFCLOCKSECOND60CLOCKSECOND0中南民族大学计算机科学学院2008级自动化邓中满学号080640309IFSET_MODE7CLOCKWEEKIFCLOCKWEEK7CLOCKWEEK1IFP_IOA_DATACONTRCONTR3131CONTRLCD501_SETCONTRASTCONTRIFSET_MODE1/如果为设置时间模式CLOCKYEARIFSET_MODE2CLOCKMONTHIFCLOCKMONTH0CLOCKMONTH12IFSET_MODE3CLOCKDAYIFCLOCKMONTH2IFSIGN1IFSIGN0IFSET_MODE4CLOCKHOURIFCLOCKHOUR0/如果是设置时间模式DISP_TIMEIFCOUNT_TIMEIFSET_MODE1LCD501_PUTSTRING0,16,“/年跳动IFSET_MODE2LCD501_PUTSTRING48,16,“/月跳动IFSET_MODE3LCD501_PUTSTRING80,16,“/日跳动IFSET_MODE4LCD501_PUTSTRING56,32,“/时跳动IFSET_MODE5LCD501_PUTSTRING80,32,“/分跳动IFSET_MODE6LCD501_PUTSTRING104,32,“/秒跳动IFSET_MODE7LCD501_PUTSTRING40,48,“/星期跳动VOIDCLOCK_INITCLOCKYEAR2010CLOCKMONTH12CLOCKDAY31CLOCKHOUR23CLOCKMINUTE59CLOCKSECOND45CLOCKWEEK3中南民族大学计算机科学学院2008级自动化邓中满学号0806403012VOIDCLOCK_FIX/定义修正时间函数,如果时间产生溢出,则按时间计算规则进行处理INTFLAGFLAG0/如果为4、6、9、11月,则31日进位,如果为1、3、5、7、8、10、12月,则32日进位,如果为2月,29日进IFCLOCKMONTH4FLAG1IFCLOCKMONTH6FLAG1IFCLOCKMONTH9FLAG1IFCLOCKMONTH11FLAG1IFCLOCKSECOND60/秒修正CLOCKMINUTECLOCKSECOND0IFCLOCKMINUTE60/分修正CLOCKHOURCLOCKMINUTE0IFCLOCKHOUR24/时修正CLOCKDAYCLOCKHOUR0CLOCKWEEK/星期加一次IFCLOCKWEEK8CLOCKWEEK1IFCLOCKMONTH2CLOCKDAY1IFFLAG1CLOCKDAY1IFFLAG0中南民族大学计算机科学学院2008级自动化邓中满学号0806403013CLOCKDAY1IFCLOCKMONTH13/13月进位CLOCKYEARCLOCKMONTH1VOIDDISP_TIMEINTTEMPP_WATCHDOG_CLEAR0X0001TEMPCLOCKYEAR/1000LCD501_PUTCHAR0,16,TEMP0X30/年千位TEMPCLOCKYEAR/100TEMP10LCD501_PUTCHAR8,16,TEMP0X30/年百位TEMPCLOCKYEAR/10TEMP10LCD501_PUTCHAR16,16,TEMP0X30/年十位TEMPCLOCKYEAR10LCD501_PUTCHAR24,16,TEMP0X30/年个位TEMPCLOCKMONTH/10LCD501_PUTCHAR48,16,TEMP0X30/月十位TEMPCLOCKMONTH10LCD501_PUTCHAR56,16,TEMP0X30/月个位TEMPCLOCKDAY/10LCD501_PUTCHAR80,16,TEMP0X30/日十位TEMPCLOCKDAY10LCD501_PUTCHAR88,16,TEMP0X30/日个位TEMPCLOCKHOUR/10LCD501_PUTCHAR56,32,TEMP0X30/时十位TEMPCLOCKHOUR10LCD501_PUTCHAR64,32,TEMP0X30/时个位TEMPCLOCKMINUTE/10LCD501_PUTCHAR80,32,TEMP0X30/分十位TEMPCLOCKMINUTE10LCD501_PUTCHAR88,32,TEMP0X30/分个位TEMPCLOCKSECOND/10中南民族大学计算机科学学院2008级自动化邓中满学号0806403014LCD501_PUTCHAR104,32,TEMP0X30/秒十位TEMPCLOCKSECOND10LCD501_PUTCHAR112,32,TEMP0X30/秒个位TEMPCLOCKWEEK7LCD501_PUTCHAR40,48,TEMP0X31/星期位/更新显示结束2222LCD驱动程序F_SPLC501_INITIAL_IO/LCD对应IO口设置程序,作用是把LCD对应的IO口设置为输出PUSHR1TOSPR1P_IO_DATA_DIR1|M_IO_DATA_MASKP_IO_DATA_DIR1/设置对应的数据口为输出R1P_IO_DATA_AR1|M_IO_DATA_MASKP_IO_DATA_AR1/设置对应的数据口为悬浮输出R1P_IO_DATA_BR1|M_IO_DATA_MASKP_IO_DATA_DR1R1P_IO_CTRL_DIR1|M_IO_EPM_IO_AOM_IO_RWM_IO_CSP_IO_CTRL_DIR1/设置对应的控制口为输出R1P_IO_CTRL_AR1|M_IO_EPM_IO_AOM_IO_RWM_IO_CSP_IO_CTRL_AR1/设置对应的控制口为悬浮输出R1P_IO_CTRL_BR1|M_IO_EPM_IO_AOM_IO_RWM_IO_CSP_IO_CTRL_DR1POPR1FROMSPRETFF_SPLC501_WRITE_COM/单片机向LCD写指令PUSHR2,R3TOSP/入栈保护PUSHR5TOSPR2P_IO_CTRL_B/得到IOB口的状态R2F_SPLC501_INITIAL_IO/INITIALLCDIOF_SPLC501_WRITE_COMM_LCD_ON/LCDONF_SPLC501_WRITE_COMM_LCD_POWER_ALL/设置上电控制模式F_SPLC501_WRITE_COMM_LCD_ELE_VOL/电量设置模式(显示亮度)F_SPLC501_WRITE_COM0X0012/指令数据0X00000X003FF_SPLC501_WRITE_COMM_LCD_VDD_SET/V5内部电压调节电阻设置F_SPLC501_WRITE_COMM_LCD_COM_NOR/COM扫描方式设置F_SPLC501_WRITE_COMM_LCD_SEG_REV/SEGMENT方向选择F_SPLC501_WRITE_COMM_LCD_ALL_LOW/全屏点亮/变暗指令F_SPLC501_WRITE_COMM_LCD_ALL_NOR/正向反向显示控制指令中南民族大学计算机科学学院2008级自动化邓中满学号0806403016F_SPLC501_WRITE_COMM_LCD_STATIC_OFF/关闭静态指示器F_SPLC501_WRITE_COM0X0000/指令数据F_SPLC501_WRITE_COMM_LCD_BEGIN_LINE0/设置显示起始行对应RAMFORI0I8JUNTYPEIFXJ128|YI64|Y64RETURNYY3M_LCD_COL_PAGEXX4Y_WHIDEI4IFI/TESTF_COVER_INITIALI,SHIFT_NUM/TESTY_NUMBERISHIFT_NUM中南民族大学计算机科学学院2008级自动化邓中满学号0806403017Y_NUMBER_8Y_NUMBERIY_NUMBERY_NUMBERY_NUMBER4IFIY_NUMBERIIY_NUMBER_8Y_NUMBER_83IFIFORN0N4/定位列地址设置的高位指令XFORM0M1IFMIFMELSEREAD_BACKSHIFT_DATA_BUF3UNTYPEWORDWORDY_WHIDEVOIDLCD501_PUTSTRINGINTX,INTY,UNSIGNEDINTSTRING/让LCD在指定位置显示字符串UNSIGNEDINTX_ERR6,Y_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论