基于ATS单片机的多功能电子万年历的设计

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

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

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

资源描述

单片机应用系统设计课题:基于AT89S51单片机的多功能电子万年历的设计姓名:班级:学号:指导老师:日期:一、绪论:现在是一个知识爆炸的新时代,新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。近些年,随着科技的发展和社会的进步,人们对电子万年历的要求也越来越高,传统的电子万年历已不能满足人们的需求。人们对多功能电子万年历的功能及工作顺序都非常熟悉,但是却很少知道它的内部结构以及工作原理。由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,还有,单片机是微型计算机的一个重要分枝,单片机是把中央处理器、随机存储器、只读存储器、定时器/计数器、并行接口接口、串行接口、A/D转换器等主要计算机部件,集中在一块集成电路芯片上。虽然只是一个芯片,但从功能上它就相当于一台完整的微机。随着科学技术的迅猛发展,单片计集成度高、体积小、运算速度快、功耗低、运行可靠、价格低廉等诸多优点,越来越显现出来。在日常生活方面,我们使用彩电、录放机、VCD、照相机、手机等等可以说举不胜举。所以多功能电子万年历一般都以单片机为核心,外加一些外围设备来实现。由单片机作为多功能电子万年历的核心控制器,通过按键可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。意义:电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。所以,电子万年历无论作为比赛题目还是练习题目都是很有价值。二、系统总体方案设计:1、共具备两个功能:(1)显示年月日及分秒信息(2)具有可调整日期和时间功能。2、硬件电路的总体框图:图1总体硬件框图按键及按钮电路CPU电路显示开关power辅助电路3、所用芯片XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52图2三、硬件系统设计:1、硬件原理图:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51RST5SCLK7I/O6X12X23VCC18VCC21U2DS1302X2327683VGND+5V+5V123X112MHzC122pFC222pFGNDC320uFR11k+5VGND234567891RP110KD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L+5VGND15.0DQ2VCC3GND1U3DS18B20RV110k+5VGND+5VGND图3硬件原理2、硬件原理:在硬件电路中采用P0口作为6位液晶显示电路的驱动接口,这是由于P0口输出驱动电路工作处于开漏状态,它的驱动能力强,故只需外接上拉电阻便可以把LED数码管点亮。因为共阴的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该电路中的8位LED数码管均用共阳阴极的数码管。8位LED数码管的位选线分别由相应的P2.0~P2.5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。P3口与八个校时按键相连,以成功实现万年历校时的功能。四、系统软件设计:1、程序流程框图:图4程序流程框图2、年调整程序流程图,月、日调整程序流程图类似。图5年调整程序流程图BEGIN初始化设置数字刷新取数据转换为字符显示RETURN开始控制键有效,进入年调整程序等待按键程序加键有效减键有效年加1年减13、源程序代码:#includeREG51.H#includeintrins.h//#includeLCD1602.h//#includeDS1302.h#defineuintunsignedint#defineucharunsignedcharcharhide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;//秒,分,时到日,月,年位闪的计数chardone,count,temp,flag,Up_Key_flag,down_flag;uchartemp_value;//温度值ucharTempBuffer[5],week_value[2];sbitDS1302_CLK=P1^7;//实时时钟时钟线引脚sbitDS1302_IO=P1^6;//实时时钟数据线引脚sbitDS1302_RST=P1^5;//实时时钟复位线引脚sbitport01=P3^0;sbitport02=P3^1;sbitport03=P3^2;sbitport04=P3^3;sbitACC0=ACC^0;sbitACC7=ACC^7;sbitSet_Key=P2^0;//模式切换键sbitUp_Key=P2^1;//加法按钮sbitDown_Key=P2^2;//减法按钮sbitout_Key_Key=P2^3;//立刻跳出调整模式按钮sbitDQ=P1^0;//温度传送数据IO口voidshow_time();//液晶显示程序/***********1602液晶显示部分子程序****************///PortDefinitions**********************************************************sbitLcdRs=P2^5;sbitLcdRw=P2^6;sbitLcdEn=P2^7;sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口内部等待函数**************************************************************************unsignedcharLCD_Wait(void){LcdRs=0;LcdRw=1;_nop_();//延时一个时钟周期LcdEn=1;_nop_();LcdEn=0;returnDBPort;}//向LCD写入命令或数据************************************************************#defineLCD_COMMAND0//Command#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01//清屏#defineLCD_HOMING0x02//光标返回原点voidLCD_Write(bitstyle,unsignedcharinput){LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();//注意顺序LcdEn=1;_nop_();//注意顺序LcdEn=0;_nop_();LCD_Wait();}//设置显示模式************************************************************#defineLCD_SHOW0x04//显示开#defineLCD_HIDE0x00//显示关#defineLCD_CURSOR0x02//显示光标#defineLCD_NO_CURSOR0x00//无光标#defineLCD_FLASH0x01//光标闪动#defineLCD_NO_FLASH0x00//光标不闪动voidLCD_Set_KeyDisplay(unsignedcharDisplayMode){LCD_Write(LCD_COMMAND,0x08|DisplayMode);}//设置输入模式************************************************************#defineLCD_AC_UP_KEY0x02#defineLCD_AC_DOWN0x00//default#defineLCD_MOVE0x01//画面可平移#defineLCD_NO_MOVE0x00//defaultvoidLCD_Set_KeyInput(unsignedcharInputMode){LCD_Write(LCD_COMMAND,0x04|InputMode);}//初始化LCD************************************************************voidLCD_Initial(){LcdEn=0;LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_Set_KeyDisplay(LCD_SHOW|LCD_NO_CURSOR);//开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏LCD_Set_KeyInput(LCD_AC_UP_KEY|LCD_NO_MOVE);//AC递增,画面不动}//液晶字符输入的位置************************voidGotoXY(unsignedcharx,unsignedchary){if(y==0)LCD_Write(LCD_COMMAND,0x80|x);if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}//将字符输出到液晶显示voidPrint(unsignedchar*str){while(*str!='\0'){LCD_Write(LCD_DATA,*str);str++;}}/***********DS1302时钟部分子程序******************/typedefstruct__SYSTEMTIME__{unsignedcharSecond;unsignedcharMinute;unsignedcharHour;unsignedcharWeek;unsignedcharDay;unsignedcharMonth;unsignedcharYear;unsignedcharDateString[11];unsignedcharTimeString[9];}SYSTEMTIME;//定义的时间类型SYSTEMTIMECurrentTime;#defineAM(X)X#definePM(X)(X+12)//转成24小时制#defineDS1302_SECOND0x80//时钟

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

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

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

×
保存成功