• 676.50 KB
  • 2022-04-22 11:52:25 发布

基于单片机的计算器结构设计

  • 36页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'襄阳汽车职业技术学院论文基于单片机的计算器结构设计1系统设计1.1功能介绍1.1.1基本功能根据所学知识,自行设计一个计算器,要求自行设计供电电源,该计算器能够实现加减乘除四则混合运算,能够实现连续计算。1.1.2扩展功能(1)该计算器能够实现浮点数的运算。(2)该计算器在不进行计算时能够当时钟用,并且该时钟可显示星期和日历,同时能够修改其值。(3)该计算器能够实现加减乘除以外的其他运算。1.2总体设计方案1.2.1总体设计思路本设计主要采用以下基本模块来实现,控制器模块,输入模块,输出模块和电源模块。通过对控制器进行编程。使其对输入模块的信号进行处理计算,然后通过输出模块反馈给使用者以计算结果。1.2.2方案论证与比较(1)控制部分的设计方案论证与选择根据设计要求,控制器主要用于红外信号的接收和辨认、控制步进电机的动作,控制显示步进电机的转速等。对于控制器的选择有以下二种方案。方案一:采用计算器专用芯片实现。用计算器专用芯片进行设计并编程实现。这种设计方案计算效率高、速度快、而且成本也相对较低,是厂家做计算器的最佳方案。但是本人对计算器专用芯片掌握的不够,还不足以实现设计计算器,所以这个方案不可去。方案二、用单片机实现。由于单片机集成了运算器电路、控制电路、存储器、中断系统、定时器/计数器以及输入/输出口电路等,所以用单片机设计控制电路省去了很多分立元器件。由于单片机是可编程芯片,并且它可以运用C语言编写,对于一些复杂的计算功能,可以调用C语言库函数。使编写程序变得非常简单。所以该课题用单片机实现,不仅功能易于实现,而且精确度高,稳定性好,抗干扰能力强。并且由于其成本低、体积小、技术成熟和功耗小等优点,且技术比较成熟。性价比也相当高。更重要的是本人经过几年的学习,对单片机已有深刻的理解,并且可以灵活运用。综上所述,并通过各个方面综合比较为达到最佳效果。我们采用方案二利用单片机控制器。(2)显示电路的设计方案论证与选择方案一:数码管显示方案。数码管显示使用两个四位一体动态数码管显示方案,此设计电路如图1-1所示。采用动态数码管显示,具有程序简单,对外界环境要求低,易于维护,同时其精度比较高,精确可靠,操作简单。显示直观的特点。但只能显示数字和一些代码,不能显示汉字及一些常用的符号,且硬件设计比较复杂。35 襄阳汽车职业技术学院论文图1-1两个四位一体数码电路图方案二:采用汉字图形点阵液晶显示器RT12864M显示方案。RT12864M汉字图形点阵液晶显示模块,可显示汉字及图形。供电电源为3.3V~+5V(内置升压电路,无需负压),能采用并行和串行两种通信方式。并有光标显示、画面移位、自定义字符、睡眠模式等功能。综上所叙,12864的显示效果好、功能齐全,所以我们选用12864液晶显示。其与单片机的接口电路如图1-2所示。图1-212864与单片机的接口电路(3)单片机电源部分的设计方案论证与选择由于本次设计中单片机工作电源为5V,所以需要稳压,对于5V电源这里有以下两种方案。方案一:用固定式三端稳压器7805。如图1-5,7805系列稳压器输出固定的正电压5V,输入端接电容C1可以进一步滤除纹波,输出端接电容C2能改变负载的瞬态影响,使电路稳定工作C1、C2最好采用漏电流小的钽电容。如果采用电解电容,则电容要比图中数值增加10倍。35 襄阳汽车职业技术学院论文图1-3固定式三端稳压器方案二:用7805加一些外围器件。虽然7805三端集成稳压管内部有过流、过热和安全区的保护电路,但其输出仍有可能发生过压的危险。因此本电路加了过压保护电路,电路如图1-4所示,该电路由稳压管VD3、电阻R3和晶闸管VS组成。另外由于7805的最大输出电流为1.5A,可以通过在7805的1脚与VT1的基极相连,7805的2脚与VT1的集电极相连,这样就可输出1.6A~2A的电流。如需更大的电流,可再并联几个大功率三极管。图1-4可扩流过压保护5V稳压电源综上所述,方案一电路简单,而且已符合本次设计的要求,再加上第二种方案所用元件较多,性能价格比不高,所以我们选择方案一。(4)键盘设计方案与选择方案一:独立键盘。独立键盘为一端接地,另一端接I/O口,并且要接上拉电阻。这种键盘的硬件都很容易实现,但每一个按键就要用一个I/O口,非常的浪费单片机的I/O口资源,不适合本次设计。方案二:4*4矩阵式键盘。其电路图如图图1-5所示,这种键盘的硬件简单,使用的I/O口也不多,而且这种键盘的编程方法已很成熟。所以本次设计采用这种矩阵式键盘。其电路图如图35 襄阳汽车职业技术学院论文图1-54*4矩阵式键盘电路图1.2.3系统组成经过方案比较与论证,最终确定的系统组成框图如图1-6所示。其中单片机作为主控设备对采集输入信号后并进行处理,最后通过输出设备输出给使用者,该系统的结构框图如图。图1-6系统组成方框图2重要器件的知识介绍2.1单片机的知识介绍由于ATMEL公司生产的AT89S52型单片机是即便于下载又好用,而且能够满足本设计的要求。所以我选择AT89S52型单片机。2.1.1单片机的主要性能(1)与MCS-51单片机产品兼容35 襄阳汽车职业技术学院论文(1)8K节在系统可编程Flash存储器(2)1000次擦写周期(3)全静态操作:0Hz-33Hz(4)三级加密程序存储器(5)32个可编程IO口线(6)三个16位定时器计数器(7)八个中断源(8)全双工UART串行通道(9)低功耗空闲和掉电模式(10)掉电后中断可唤醒(11)看门狗定时器(12)双数据指针2.1.2单片机的功能特性描叙AT89S52是一种低功耗,高性能CMO58位微控制器,具有8K在系统可编程Flash存储器。使用ATMEL公司高密度非易使性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,迹适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节Flash、256字节RAM、32位IO口线、看门狗定时器、2个数据指针、三个16位定时器计数器、一个6向量2级中断结构、全双工串行口、片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2钟软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM定时器计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.1.3单片机的内部结构方框图及芯片35 襄阳汽车职业技术学院论文图2-1单片机的内部结构方框图2.1.4单片机各引脚功能说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P135 襄阳汽车职业技术学院论文口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能口,如图表2.1。表2.1AT89S52的一些特殊功能口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.1.5单片机时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。35 襄阳汽车职业技术学院论文在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。时钟电路如下图2-2:图2-2时钟电路2.1.6单片机复位电路复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12MHz的晶振,则复位信号持续时间应超过4s才能完成复位操作。复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。在本设计中采用了按键电平复位方式,其复位电路如下图2-3。35 襄阳汽车职业技术学院论文图2-3复位电路2.1.7单片机下载口电路下载口电路以一块74HC373芯片为主,电路原理图如图2-4所示。由于电路中只用了一片74HC373所以完全可以把电路装在DB25插针式并口插头内部,这个可以做到很小巧,可以很方便的使用。为了稳定也可以芯片外围加一些电阻、电容等元件,具体电路网上有提供下载。光是做好下载线是不行的,S51系统的ISP下载方式还要求要下载程序单片机运行在最小化系统中。只要把的相应引脚连接起来就可以对S51进行ISP下载了。要接的引线是S51的6,7,8,9,20,40引脚。晶振可以在3M-24M间选用,当然是看你的目标板而选择。为了方便使用我们需要做一个下载头,电路简单接线正确的话一般无需要调整就可以正常使用,如有问题可以用软件中的IspTest.exe(下载线调试程序)检查你的74HC373芯片是否正常和你的电脑并口是否正常。   图2-4下载口电路原理图35 襄阳汽车职业技术学院论文3程序流程图35 襄阳汽车职业技术学院论文主程序流程图35 襄阳汽车职业技术学院论文显示程序流程图35 襄阳汽车职业技术学院论文键扫程序流程图35 襄阳汽车职业技术学院论文致谢毕业设计是我大学学习生活的最后一项学习任务,是对我大学学习的综合考核。在为期三个多月的毕业设计过程中,我不仅较为系统的复习了以前学过的知识,而且又学习了许多新知识,使我的只是结构更加系统化,也更加完善。同时,也提高了我独立分析问题、解决问题的能力。在本文的选题、构思、写作和修改直至最终定稿的过程中,更是浸透了导师大量的心血,感激之情难以言表。而且,在和老师的交流过程中,还学到了许多做人、处事的道理,使我终身受益。我要诚挚地向培养我的各位领导以及实验室的各位老师表示感谢!在此,我表示衷心感谢。三年的学习生活,他们无形中给了我很大的帮助,使我顺利完成学业。掌握了一技之长。同时,我要感谢我的母校——襄阳汽车职业技术学院,特别是我即将踏上工作岗位时,给我这样一个锻炼、学习的机会,使我加深了对以前知识的理解,拓宽了知识面,也提高了我对所学知识的综合应用能力。在此我谨向我的导师以及在毕业设计过程中给予我很大帮助的老师、同学们致以最诚挚的谢意。35 襄阳汽车职业技术学院论文参考文献(1)李广弟《单片机原理及应用》北京航天航空大学出版社2008.2(2)潘新民《微型计算机控制技术》电子工业出版社2008.5(3)梅丽凤《单片机原理及接口技术》清华大学出版社2004.6(4)李陪金《C语言程序设计案例教程》西安电子科技大学出版社2008.1(5)戴佳《51单片机C语言应用程序设计实例精讲》电子工业出版社2006.4(6)谭浩强《C程序设计》清华大学出版社2006.435 襄阳汽车职业技术学院论文附录1系统原理图35 襄阳汽车职业技术学院论文附录2程序清单#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongsbitrs=P2^0;sbitrw=P2^1;sbiten=P2^2;sbitpsb=P2^3;sbitret=P2^5;sbitrd=P3^7;sbits=P1^0;sbits1=P1^4;sbits2=P1^5;sbits3=P1^6;sbits4=P1^7;ucharcount,s1num;unsignedintnin,ss;charyue,re,qi,shi,fen,miao;uchardshi,dfen,dmiao,ling,aa,t1,p;ucharcommand,data0,data1,data2,com0,j,l;unsignedcharcommand,data1,data2,com0,bb,bb0,aa,cc,i,yun;//ucharlcdH,lcdL,key;floatds,m,k;ulongds0;bitflag,flag1,flag2,flag3,flag4;uchardisbuf[9]={0};//定义显示缓冲区//ucharcodetable[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e};ucharcodetable1[]={0xc8,0xd5,0xd2,0xbb,0xb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce,0xe5,0xc1,0xf9};//日~六//ucharcodetable2[]={0x32,0x30,0x30,0x39,0xc4,0xea,0x30,0x35,0xd4,0xc2,0x30,0x31,0xc8,0xd5};//年月日//35 襄阳汽车职业技术学院论文ucharcodetable4[]={0xd0,0xc7,0xc6,0xda,0xc1,0xf9};//星期六//ucharcodetabping[]={32,29,32,31,32,31,32,32,31,32,31,32};ucharcodetabrun[]={32,30,32,31,32,31,32,32,31,32,31,32};ucharcodexing1[]={3,6,0,3,5,1,3,6,2,4,0,2};ucharcodexing2[]={4,0,0,3,5,1,3,6,2,4,0,2};ucharxing[12]={0};uchartab[12]={0};//延时//voiddelay(uintms)//延时250us{uchari;while(ms--){for(i=0;i<125;i++);}}//LCD初始化//voidlcd_int(){ret=0;delay(3);ret=1;_nop_();psb=1;//将PSB置1,通信方式为8BIT数据并口//_nop_();}//写指令程序//voidwrite_command(ucharcommand){delay(3);rs=0;rw=0;P0=command;en=1;_nop_();_nop_();en=0;}35 襄阳汽车职业技术学院论文//写数据程序//voidwrite_data(uchardata0){delay(3);rs=1;rw=0;P0=data0;en=1;_nop_();_nop_();en=0;}//LCD功能设置//voidlcd_set(){command=0x30;//基本指令集//write_command(command);command=0x01;write_command(command);command=0x06;write_command(command);command=0x0c;write_command(command);}//清屏程序//voidclear_lcd(){command=0x01;write_command(command);command=0x34;write_command(command);command=0x30;write_command(command);}voiddisplay(){command=com0;write_command(command);data2=lcdH;write_data(data2);data1=lcdL;35 襄阳汽车职业技术学院论文write_data(data1);}voiddisplay1(uchary,ucharx,uchar*p){switch(y){case1:write_command(0x7f+x);break;//液晶第一行case2:write_command(0x8f+x);break;//0x90+(x-1)case3:write_command(0x87+x);break;case4:write_command(0x97+x);break;default:break;}while(*p)write_data(*p++);}voidxiaoshu()//先判断k是否为小数,如果k为小数,就将k转化为小数//{uchari;uintmg=1;if(flag1){for(i=0;i4294967295){clear_lcd();display1(1,3,"得数大于");display1(2,2,"二的三十二次方");display1(4,2,"请你按复位键");delay(65000);}ds0=ds;if((ds>ds0)){35 襄阳汽车职业技术学院论文if(ds<1000){ds0=ds*1000000;jishu();disbuf[9]=disbuf[8];disbuf[8]=disbuf[7];disbuf[7]=disbuf[6];disbuf[6]=disbuf[5];disbuf[5]=disbuf[4];disbuf[4]=10;}elseif(ds<10000){ds0=ds*100000;jishu();disbuf[9]=disbuf[8];disbuf[8]=disbuf[7];disbuf[7]=disbuf[6];disbuf[6]=disbuf[5];disbuf[5]=10;}elseif(ds<100000){ds0=ds*10000;jishu();disbuf[9]=disbuf[8];disbuf[8]=disbuf[7];disbuf[7]=disbuf[6];disbuf[6]=10;}elseif(ds<1000000){ds0=ds*1000;jishu();disbuf[9]=disbuf[8];disbuf[8]=disbuf[7];disbuf[7]=10;}elseif(ds<10000000){ds0=ds*100;jishu();disbuf[9]=disbuf[8];disbuf[8]=10;}}elsejishu();disds();}voidjiemian1(){display1(1,1,"请按所选类型序号");if(!yun){display1(2,2,"0加减乘除");display1(3,2,"1弦切值");display1(4,2,"2反弦切值");}elseif(yun==1){display1(2,2,"1弦切值");display1(3,2,"2反弦切值");display1(4,2,"3幂运算");}else{display1(2,2,"2反弦切值");display1(3,2,"3幂运算");display1(4,2,"4对数、开方运算");}}voidjiemian2()35 襄阳汽车职业技术学院论文{display1(2,3,"下面进行");switch(bb0){case1:display1(3,2,"加减乘除运算");break;case2:display1(3,2,"弦切值运算");break;case3:display1(3,2,"反弦切值运算");break;case4:display1(3,2,"幂运算");case5:display1(3,1,"对数、开平方运算");default:break;}}voidkeyproc0(ucharkey0){key0=keyscan();switch(key0){case0x11:bb0=1;break;case0x21:bb0=2;break;case0x41:bb0=3;break;case0x81:bb0=4;break;case0x12:bb0=5;break;case0x84:clear_lcd();yun++;if(yun>2)yun=0;jiemian1();break;default:break;}}voidset(){ds=0;m=0;k=0;bb=0;cc=0;flag1=0;}//键功能程序//voidkeyproc(ucharkey){key=keyscan();switch(key){Case0x11:lcdH=0xa3;lcdL=0xb0;if(flag1)cc++;com0++;p=0;k=k*10+p;display();aa=0;break;case0x21:lcdH=0xa3;lcdL=0xb1;if(flag1)cc++;com0++;p=1;k=k*10+p;display();aa=0;break;35 襄阳汽车职业技术学院论文case0x41:lcdH=0xa3;lcdL=0xb2;if(flag1)cc++;com0++;p=2;k=k*10+p;display();aa=0;break;case0x81:lcdH=0xa3;lcdL=0xb3;if(flag1)cc++;com0++;p=3;k=k*10+p;display();aa=0;break;case0x12:lcdH=0xa3;lcdL=0xb4;if(flag1)cc++;com0++;p=4;k=k*10+p;display();aa=0;break;case0x22:lcdH=0xa3;lcdL=0xb5;if(flag1)cc++;com0++;p=5;k=k*10+p;display();aa=0;break;case0x42:lcdH=0xa3;lcdL=0xb6;if(flag1)cc++;com0++;p=6;k=k*10+p;display();aa=0;break;case0x82:lcdH=0xa3;lcdL=0xb7;if(flag1)cc++;com0++;p=7;k=k*10+p;display();aa=0;break;case0x14:lcdH=0xa3;lcdL=0xb8;if(flag1)cc++;com0++;p=8;k=k*10+p;display();aa=0;break;case0x24:lcdH=0xa3;lcdL=0xb9;if(flag1)cc++;com0++;p=9;k=k*10+p;display();aa=0;break;case0x44:lcdH=0xa3;lcdL=0xae;com0++;flag1=1;display();aa=0;break;//清除//case0x84:aa++;if(aa==1)zhixing();if(aa==2){clear_lcd();lcd_int();lcd_set();com0=0x8f;set();}elseif(aa==3){bb0=0;jiemian1();while(bb0==0)keyproc0(key);yun=0;clear_lcd();jiemian2();}elseflag4=1;break;//计算//case0x18:if(bb==0){xiaoshu();m=k;k=0;bb=1;disjia();flag1=0;}else{zhixing();bb=1;disjia();}aa=0;break;//加法,这四句中的flag1=0可去掉,因为在xiaoshu()中已有//case0x28:if(bb==0){xiaoshu();m=k;k=0;bb=2;disjian();flag1=0;}else{zhixing();bb=2;disjian();}aa=0;break;//减法//case0x48:if(bb==0){xiaoshu();m=k;k=0;bb=3;discheng();flag1=0;}else{zhixing();bb=3;discheng();}aa=0;break;//乘法//case0x88:if(bb==0){xiaoshu();m=k;k=0;bb=4;dischu();flag1=0;}else{zhixing();bb=4;dischu();}aa=0;break;//除法//default:break;}}voidshuc1(ucharcom1,uchardate){ucharsh,ge;sh=date/10;ge=date%10;com0=com1;lcdH=table[sh];lcdL=table[ge];35 襄阳汽车职业技术学院论文display();write_command(com0--);}voidshuc2(ucharcom2,unsignedintx){ucharx0,x1,x2,x3;x0=x/1000;x1=x/100%10;x2=x/10%10;x3=x%10;com0=com2;lcdH=table[x0];lcdL=table[x1];display();com2++;com0=com2;lcdH=table[x2];lcdL=table[x3];display();write_command(com0--);}voidqix(ucharcom3,ucharqi){com0=com3;lcdH=table1[qi*2];lcdL=table1[qi*2+1];display();}voidinit(){com0=0x7f;rd=1;nin=2009;yue=5;re=1;qi=6;shi=7;fen=59;miao=55;dshi=6;dfen=30;dmiao=0;TMOD=0x01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;EA=1;ET0=1;TR0=1;lcd_int();35 襄阳汽车职业技术学院论文lcd_set();for(j=0;j<14;j++){if(j%2==0){com0++;command=com0;write_command(command);}write_data(table2[j]);}com0=0x92;lcdH=0xa1;lcdL=0xc3;display();com0=0x94;display();com0=0x99;display();com0=0x9b;display();shuc1(0x91,shi);shuc1(0x93,fen);shuc1(0x95,miao);shuc1(0x98,dshi);shuc1(0x9a,dfen);shuc1(0x9c,dmiao);com0=0x9e;lcdH=0xc4;lcdL=0xd6;display();com0=0x9f;lcdH=0xd6;lcdL=0xd3;display();com0=0x89;for(l=0;l<6;l++){if(l%2==0){com0++;command=com0;write_command(command);}write_data(table4[l]);}}voidter0()interrupt1{ucharm,n;TH0=(65536-46080)/256;TL0=(65536-46080)%256;t1++;if(nin%4==0)35 襄阳汽车职业技术学院论文{for(m=0;m<12;m++)tab[m]=tabrun[m];}else{for(n=0;n<12;n++)tab[n]=tabping[n];}if(t1==20){t1=0;miao++;if(miao>=60){miao=0;fen++;if(fen>=60){fen=0;shi++;if(shi>=24){shi=0;qi++;qix(0x8c,qi);re++;if(qi>=7)qi=0;if(re>=tab[yue-1]){re=1;yue++;if(yue>=13){yue=1;nin++;if(nin>=9999)nin=0;shuc2(0x80,nin);}shuc1(0x83,yue);}35 襄阳汽车职业技术学院论文shuc1(0x85,re);}shuc1(0x91,shi);}shuc1(0x93,fen);}shuc1(0x95,miao);if(shi==dshi&&fen==dfen&&miao==dmiao)flag3=1;if(flag3==1){ling++;rd=~rd;if(ling==60||s2==0){flag3=0;rd=1;}}}}voidgengx(){shuc2(0x80,nin);shuc1(0x83,yue);shuc1(0x85,re);qix(0x8c,qi);}voidkeyprocshi(){s=0;if(s1==0){delay(40);if(s1==0){s1num++;while(!s1);delay(20);if(s1num==1){35 襄阳汽车职业技术学院论文TR0=0;write_command(0x95);write_command(0x0f);}if(s1num==2)write_command(0x93);if(s1num==3)write_command(0x91);if(s1num==4)write_command(0x85);if(s1num==5)write_command(0x83);if(s1num==6)write_command(0x81);if(s1num==7)write_command(0x9c);if(s1num==8)write_command(0x9a);if(s1num==9)write_command(0x98);if(s1num==10){ucharm,n;s1num=0;write_command(0x0c);if(nin%4==0)tab[m]=tabrun[m];xing[m]=xing1[m];}else{for(n=0;n<12;n++){tab[n]=tabping[n];xing[n]=xing2[n];}}if(re>tab[yue-1]-1)re=tab[yue-1]-1;ss=(nin/100%4)*5;qi=(ss+nin+nin/4+xing[yue-1]+re+2)%7-1;if(qi==-1)qi=6;gengx();TR0=1;}}}if(s1num!=0)35 襄阳汽车职业技术学院论文{if(s2==0){delay(40);if(s2==0){while(!s2);delay(20);if(s1num==1){miao++;if(miao>=60)miao=0;shuc1(0x95,miao);}if(s1num==2){fen++;if(fen>=60)fen=0;shuc1(0x93,fen);}if(s1num==3){shi++;if(shi>=24)shi=0;shuc1(0x91,shi);}if(s1num==4){re++;if(re>=tab[yue-1])re=1;shuc1(0x85,re);}if(s1num==5){yue++;if(yue>=13)yue=1;shuc1(0x83,yue);}if(s1num==6)35 襄阳汽车职业技术学院论文{nin++;if(nin>=10000)nin=0;shuc2(0x80,nin);}if(s1num==7){dmiao++;if(dmiao>=60)dmiao=0;shuc1(0x9c,dmiao);}if(s1num==8){dfen++;if(dfen>=60)dfen=0;shuc1(0x9a,dfen);}if(s1num==9){dshi++;if(dshi>=24)dshi=0;shuc1(0x98,dshi);}}}if(s3==0){delay(40);if(s3==0){while(!s3);delay(20);if(s1num==1){miao--;if(miao==-1)miao=59;shuc1(0x95,miao);}if(s1num==2)35 襄阳汽车职业技术学院论文{fen--;if(fen==-1)fen=59;shuc1(0x93,fen);}if(s1num==3){shi--;if(shi==-1)shi=23;shuc1(0x91,shi);}if(s1num==4){re--;if(re==0)re=tab[yue-1]-1;shuc1(0x85,re);}if(s1num==5){yue--;if(yue==0)yue=12;shuc1(0x83,yue);}if(s1num==6){nin--;if(nin==0)nin=9999;shuc2(0x80,nin);}if(s1num==7){dmiao--;if(dmiao==-1)dmiao=59;shuc1(0x9c,dmiao);}if(s1num==8){dfen--;35 襄阳汽车职业技术学院论文if(dfen==-1)dfen=59;shuc1(0x9a,dfen);}if(s1num==9){dshi--;if(dshi==-1)dshi=23;shuc1(0x98,dshi);}}}}if(s4==0){delay(40);if(s4==0){while(!s4);delay(20);TR0=0;flag4=1;}}}//主程序//voidmain(){lcd_int();lcd_set();init();while(1){if(s2==0){flag1=0;rd=1;}keyprocshi();if(flag4)break;}flag4=0;35 襄阳汽车职业技术学院论文set();clear_lcd();com0=0x8f;cc=0;m=0;bb0=1;aa=0;while(1){keyproc(key);if(flag4)break;}flag4=0;}35'