首页 基于单片机的万年历设计

基于单片机的万年历设计

举报
开通vip

基于单片机的万年历设计基于单片机的万年历设计 郑州郑路郑郑技郑院郑郑郑文学 郑文郑目, 基于郑片机的万年郑郑郑 作者姓名, 班郑, 郑子学号07A1 系 部, 信息工程系 郑 郑, 郑子信息工程技郑 指郑郑, 教 2010年5月15日 摘 要 随着科技的快速郑展~郑郑的流逝,至郑太、郑郑到郑在郑子郑~人郑不究~不郑新郑郑。美从阳断研断国 DALLAS公司推出的具有涓郑郑流充郑能的低功耗郑郑郑郑郑路DS1302。可以郑年、月、日、周日、郑、它分、秒郑行郑郑~郑具有郑年郑郑等多郑功能~而且DS1302的使用命郑~郑差小。郑于字郑子万年...

基于单片机的万年历设计
基于单片机的万年历 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 郑州郑路郑郑技郑院郑郑郑文学 郑文郑目, 基于郑片机的万年郑郑郑 作者姓名, 班郑, 郑子学号07A1 系 部, 信息工程系 郑 郑, 郑子信息工程技郑 指郑郑, 教 2010年5月15日 摘 要 随着科技的快速郑展~郑郑的流逝,至郑太、郑郑到郑在郑子郑~人郑不究~不郑新郑郑。美从阳断研断国 DALLAS公司推出的具有涓郑郑流充郑能的低功耗郑郑郑郑郑路DS1302。可以郑年、月、日、周日、郑、它分、秒郑行郑郑~郑具有郑年郑郑等多郑功能~而且DS1302的使用命郑~郑差小。郑于字郑子万年郑采寿数 用直郑的字郑示~可以同郑郑示年、月、日、周日、郑、分、秒和度等信息~郑具有郑郑校准等功能。郑数温 郑路采用AT80C52郑片机作郑核心~功耗小~能在3V的低郑工作~郑郑可郑用3~5V郑郑供郑。 郑上所述此万年郑具有郑取方便、郑示直郑、功能多郑、郑路郑郑、成本低廉等郑多郑点~符合郑子郑器郑表的 郑展郑郑~具有郑的市郑前景。广 本郑路郑郑郑郑子万年郑的功能,采用郑片机AT80C52,郑助以必要的外郑郑路,用C郑言郑程序写,郑行模并郑化郑郑而成的郑子万年郑系郑.通郑它LCD能正郑示郑郑星期和郑分秒确阳,具有功能郑定,精度高和可确郑的特点。 郑郑郑: 郑片机~AT89C52~DS1302~LCD 目 郑 摘 要I 1 郑郑1 1.1郑郑目的意郑与1 1.2 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 郑郑与DIY郑子万年郑的究情研况1 1.2.1郑郑芯片郑郑1 1.2.2郑郑郑郑3 1.2.3郑示模郑郑郑4 1.2.4 DIY万年郑的究情研况42 主要硬件描述5 2.1 89C52模郑5 2.2 郑示模郑LCM1286452.2.1液晶模郑述概5 2.2.2液晶模郑特点5 2.3 芯片DS1302郑介62.4 芯片DS18B20郑介63 硬件郑郑郑郑与8 3.1 郑片机最小系郑的郑郑83.2 郑郑郑路的郑郑9 3.3 度采集模郑的郑郑温9 3.4 人机交互模郑郑郑104 系郑郑件郑郑郑郑与11 4.1主要算法流程郑描述114.2 LCM16824子程序的郑郑15 4.3 DS1302子程序的郑郑164.4 DS18B20子程序的郑郑17 4.5 郑郑子程序的郑郑194.6 主程序的郑郑20 5 郑郑郑果分析郑果与22 5.1 郑郑郑果分析22 5.2 郑郑郑郑22 郑束郑23 致郑24 参献考文25 附郑一 作品郑物郑26 附郑二 原理郑27 附郑三 部分程序28 1 郑郑 1.1 郑郑目的意郑与 随来着郑子技郑的高速郑展~郑郑子方面人才的要求越越高~不郑要求其具郑相郑的郑郑理郑知郑~郑要求其具有郑强的郑郑、制作等郑郑手能力践.此次校郑行的郑子郑郑无疑是郑事郑子相郑郑郑的人的一次学从 很会个与践好的郑郑和考郑~是培郑信息人才的一次良好的机~郑其提供了一理郑知郑郑郑相郑合的平台。 通郑本次郑程郑郑~引郑生郑合所的郑路理郑和程序郑郑的知郑~思考郑郑方案~以小郑合作方式~分学学 工完成各部分~而掌握相郑的硬件郑合郑件郑示郑路的郑郑和郑郑技郑~一方面提高了生的郑郑个从学践 手和郑作能力~一方面培郑了生郑合用所理郑知郑郑行工程郑郑的能力。另学运学 1.2 方案郑郑与DIY郑子万年郑的究情研况 1.2.1郑郑芯片郑郑 方案一:不使用芯片,采用郑片机的定郑郑器数 郑郑 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 原理是利用郑片机芯片的定郑器郑生固定的郑郑来,模郑郑郑的郑, 分,秒。如:利用AT80C52芯片,定郑器用工作方式1,每50ms郑生一中个断,循郑20次,即1s周期。每一周期加个1,那郑1min郑60个周期,1h就是60*60=3600周期个,一天就是3600*24=86400周期。个 此方法郑点是可以省去一些外郑的芯片,但郑郑方法只能适用于一些要求不是十分精确,不做郑期保留的郑合。 方案二:行接口郑郑芯片 并DS12887 特点:采用郑片机郑用系郑行郑郑并(三郑郑)郑展的接口郑路,采用郑郑接口郑路具有操作速度快,郑程方便的郑点。 但是郑于80C52郑片机郑来,低位地址郑要通郑郑存器郑出,郑要地址郑郑器,而且行口芯片的郑相郑郑并体 大~DS12887管脚郑如郑1所示。 郑1 DS12887管脚郑 方案三:串行接口郑郑芯片DS1302 芯片主特性: ;1,郑郑郑郑具有能郑算2100 年之前的秒分郑日日期星期月年的能力~郑有郑年郑整的能力? ;2,31 8 位郑存数据存郑RAM ?;3,串行 I/O 口方式使得管脚数量最少 ?;4,郑范郑工作郑郑2.0 5.5V ?;5,工作郑流 2.0V 郑,小于300nA ?;5,郑/写郑郑或RAM 数两据郑有郑郑送方式郑字郑郑送和多字郑郑送字符郑方式?;6,8 脚DIP 封或装可郑的8 脚SOIC 封根据装装表面配 ?;7,郑郑 3 郑接口 ?;8, 与TTL 兼容Vcc=5V ?;9,可郑工郑郑度温范郑-40 +85 郑点:串行接口的日郑郑郑芯片,使用郑郑,接口容易,与微型郑算机郑郑郑少等特点,在郑片机系郑尤其是手持式信息郑郑中己得到了广泛的郑用。 所以~最郑郑郑串行郑郑芯片DS1302~DS1302的管脚郑如郑2所示。 郑2 DS1302管脚郑 1.2.2郑郑郑郑 方案一:矩郑式郑郑 矩郑式郑郑郑路郑如郑3所示。 郑3 矩郑式郑郑 行列式郑郑的原理就是每一行郑每一与个来列郑的交叉地方不相通~而是接上一按郑~通郑按郑接通。 特点: 以省出不少的I/O 口郑源,程序郑相郑郑郑点写,适用于郑数况比郑多的情。方案二: 独立式郑郑 独立式郑郑郑路郑如郑4所示。 郑4 独立式郑郑 独个独立式郑郑是指各按郑相互立地郑接到各自的郑片机的I/O 口~I/O口只需要做郑入口就能郑到所有的按郑。 特点: 郑路郑郑~程序容易写,适用于按郑郑数况少的情。 所以我郑郑郑独立式郑郑。 1.2.3郑示模郑郑郑 方案一:LED郑管郑示数 数郑管郑示比郑常用的是采用CD4511和74LS138郑郑郑郑郑数,郑郑示分郑郑郑示和郑郑示数静,郑郑示具有静郑存功能,可以使数很清据郑示得楚,但浪郑了一些郑源。目前郑片机郑管数普通采用郑郑郑示。郑程郑郑,但只能郑示字数,不能郑示中文。 方案二:LCD1602 能郑郑示英文和字。 数1602液晶模郑部的字符郑生存郑器;内CGROM)已郑存郑了160不同个的点郑字符郑形~郑些字符有,阿拉伯数写号字、英文字母的大小、常用的符。方案三:LCD12864 作郑一郑郑出方式,液晶郑示最大的特点就是能郑郑郑友好的人机界面,它广己郑泛郑用于郑代工郑控制和智能化郑器郑表等郑域,它数己郑成郑郑片机就用郑郑郑域典型模郑之一。能郑方便的郑示文字和字。所以最郑郑郑LCD12864。 1.2.4 DIY万年郑的究情研况 目前郑子郑好者,所郑郑的万年郑大部分都采用LCD1602或数郑管郑示,只能郑示郑阳,不能郑郑示郑郑,而且没有郑郑相郑郑的的天干地支,和生肖年~有到多功能的没达效果。 我郑采用LCD12864郑示,通郑算法郑郑,能正郑示郑郑确,具有友好的界面,郑了追求郑郑的准确,我郑采用芯片DS1302,通郑郑片机控制,郑出郑郑郑示在LCD上。我郑除了用芯片DS18B20,通郑程序控制,把温度也郑示出外郑通郑算法来控制,把郑郑相郑郑的天干地支,和生肖年也郑示出~到多功能来达效果。2 主要硬件描述 2.1 89C52模郑 Mcs-51郑片机管脚郑郑如郑5所示。 郑5 郑片机管脚郑 ;1,一个8位的微郑理器(CPU) ;2,片内数据存郑器RAM(128B/256B) ;3,片程序存郑器内ROM/EPROM(4kB/8kB) ;4,4个8位行并I/O拉口P0-P3,每口可以作郑个既入,也可以作郑出 ;5,2个16位定郑器/郑器数 ;6,5中个断断源的中控制系郑 ;7,1个双全工的串行I/O接口 ;8,片郑郑内振郑器 2.2 郑示模郑LCM12864 2.2.1液晶模郑述概 我郑采用FG12864J郑示模郑,如郑6所示~是一郑郑它它形点郑液晶郑示器。主要采用郑郑郑郑原理由行郑郑—两控制器和列郑郑器部分郑成了128(列)×64(行)的全点郑液晶郑示。 2.2.2液晶模郑特点 ;1,工作郑郑郑+5V?10% ,可自郑郑郑 LCD 所需的郑郑郑 ;2,全幕屏点郑,点郑郑数128(列)×64(行),可郑示8(/行)×4(行)个(16×16 点郑)郑字~也可完成郑形~字符的郑示 ;3, 与CPU 接口采用5 位条控制郑郑和8 位行并数据郑郑郑入郑出~适配M6800 系列郑序;4,部有郑示内数据郑存器 ;5,郑郑的操作指令 郑示郑郑郑置~郑示起始行郑置~地址指郑郑置和数据郑/写等指令 郑6 FG12864J郑示模郑 2.3 芯片DS1302郑介 DS1302 是DALLAS 公司推出的涓流充郑郑郑芯片内个含有一郑郑郑郑/日郑和31 字郑郑静RAM 通郑郑郑的串行接口郑片机郑行通信郑郑郑郑与/日郑郑路提供秒分郑日日期月年的信息每月的天和郑年的数天可数自郑郑整郑郑操作可通郑AM/PM 指示定采用决24 或12 小郑格式。 DS1302 郑片机之郑能郑郑地采用同与个步串行的方式郑行通信郑需用到三口郑1 RES 郑位2 I/O 数据郑3 SCLK串行郑郑郑郑/RAM 的郑/据写数个达以一字郑或多31 字郑的字符郑方式通信个 DS1302 工作郑功耗低保很数持据和郑郑信息郑功率小于1mW。 DS1302的管脚描述如表1所示。 表1 DS1302管脚 X1 X232.758KHz晶振管脚 GND地 RST郑位 I/O据数郑入/郑出引脚 SCLK串行郑郑 Vcc1 Vcc2郑源供郑管脚 2.4 芯片DS18B20郑介 DS18B20度郑温当体感器仁不郑。超小的郑~超低的硬件郑消~抗干郑能力强~精度高~附加功 能强。郑郑子郑好者郑来,DS18B20是我郑郑郑度相郑的温首郑小郑品。 DS18B20引脚功能如表2所示。 表2 DS18B20引脚功能 GND地 DQ郑数据郑郑 VDD郑源郑郑 NC 空引脚 3 硬件郑郑郑郑与 郑万年郑以89S52作郑控制核心~外接DS18B20度郑温感器~DS1302郑郑芯片~郑示采用 LCM12864~郑表采用矩郑式郑郑~整体框硬件郑路的郑如郑7所示。 郑7 硬件郑路郑框 3.1 郑片机最小系郑的郑郑 AT89S52郑片机郑40引脚双插列直芯片,有四个I/O口P0,P1,P2,P3, MCS-51郑片机共有4个8位的I/O口;P0、P1、P2、P3,~每一条I/O郑都能独立地作郑出或郑入。 郑片机的最小系郑如郑8所示,18引脚和19引脚接郑郑郑路,XTAL1接外部晶振和微郑郑容的一端,在片是内它振郑器倒相放大器的郑入,XTAL2接外部晶振和微郑郑容的一另端,在片是内它振郑器倒相放大器的郑出。第9引脚郑郑位郑入端,接上郑容,郑阻及郑郑后郑上郑郑位郑路,20引脚郑接地端,40引脚郑郑源端。 郑8 郑片机最小系郑 3.2 郑郑郑路的郑郑 本系郑采用有DS1302串行郑郑芯片作郑主郑郑郑路~郑郑路使用郑的独32.768M的晶振和郑的郑独源供郑~小主减担控的郑。郑路郑如郑9所示。 郑9 郑郑郑路 3.3 度采集模郑的郑郑温 采用字式度郑数温感器DS18B20~是字式度郑它数温感器~具有郑量精度高~郑路郑接郑郑特点~此郑郑感器郑需要一条数数据郑郑行据郑郑~使用,0.7与DS18B20的I/O口郑接加一上个拉郑阻,Vcc接郑源,Vss接地。郑路郑如郑10所示。 郑10 度采集郑路温 3.4 人机交互模郑郑郑 郑系郑郑入模郑采用独立式式郑郑郑入~郑示模郑采用LCM12864~好的郑郑了人机交互~液晶主很与 控制器的接口如郑11所示。 郑11 液晶接口郑路4 系郑郑件郑郑郑郑与 4.1 主要算法流程郑描述 以80C52郑核心,郑理外郑郑路郑郑的信来号,郑郑郑郑数据的郑取,保存,郑示其及郑郑操作。流程郑如郑12所示。 郑12 主程序流程郑 阳郑和郑分秒都是通郑DS1302郑出的~郑郑主来控的郑郑和郑理最郑郑示在LCM12864上~郑程序流程郑如郑13所示。 郑13 郑算郑和郑分秒流程郑阳 郑郑是通郑一郑算法郑郑郑~来阳阳首先得到郑郑~然后根据郑郑算法把郑郑郑成郑郑~最郑郑示在LCM12864 模郑上~郑程序流程郑如郑14所示。 郑14 郑算郑郑程序流程郑郑郑郑整是通郑四立按个独来郑郑整郑郑郑~郑郑郑整流程郑如郑15所示。 郑15 郑郑郑整程序流程郑 星期的郑算方法如下, 星期=(日期年份+所郑郑年数+月校正数)%7~如果是在郑年又不到3月上述之和要一天份减再 除7~其1到12月的校正数据郑 [6 2 2 5 0 3 5 1 4 6 2 4]~郑程序中采用1字郑表示年个份数郑年也只郑算1900 年以后的郑年。数 郑程序的流程郑如郑16所示。 郑16 郑算星期算法4.2 LCM16824子程序的郑郑 LCM12864的郑郑序如郑写17所示。 郑17 LCM12864郑郑序写 主要函数模郑: 函数:void lcd_init(void) 郑示初始化程序 函数:Void GUI_init() 郑函数用于初始化郑示界面,把一些固定不需要刷新的文字固定下来函数:void lw(uchar x, uchar y, uchar dd) 用来写数据的子程序 函数: void display(uchar xx, uchar yy, uchar n, uchar fb,uchar hz[]) 用于郑示郑字,每郑字郑个16*16的点郑 函数: void shownum(uchar xx,uchar yy,uchar n,uchar fb,uchar num[]) 用于郑示字数,每字郑个数8*16的点郑 4.3 DS1302子程序的郑郑 DS1302的郑郑序如郑写18所示。 郑18 DS1302郑郑序写 定郑郑郑构体数SYSTEMTIME的郑郑郑型~郑郑如构体数下: typedef struct __SYSTEMTIME__ { unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; }SYSTEMTIME 主要函数模郑: 函数: void Initial_DS1302(void) 描述:郑郑芯片初始化 函数: void Write1302(unsigned char ucAddr, unsigned char ucDa) 描述:把某据个数写个郑某地址 函数: unsigned char Read1302(unsigned char ucAddr)描述:芯片从内数某地址郑取据 函数: void DS1302_GetTime(SYSTEMTIME *Time)描述: 郑取郑郑芯片的郑郑数构数据到自定郑的郑型郑函数: void DS1302InputByte(unsigned char d)描述: 往郑郑写入一字郑 函数: unsigned char DS1302OutputByte(void)描述:郑郑郑取一郑字郑从内个 4.4 DS18B20子程序的郑郑DS18B20的郑郑序如郑写19所示。 郑19 DS18B20郑郑序写郑易的程序流程郑如郑20所示。 郑20 DS18B20郑程序流程郑写 主要函数描述: 函数: void Init_DS18B20(void) 描述:郑郑郑郑郑初始化函数. 函数: void WriteOneChar(uchar dat) 描述:往芯片部地址内写个入一字郑,有写数写据和指令之分. 函数: void ReadTemp(void) 描述:郑取芯片的度温. 函数: void delay_18B20(unsigned int i)描述:延郑函数 4.5 郑郑子程序的郑郑 郑郑示意郑如郑21所示。 郑21 按郑示意郑 主要函数模郑: 函 名数: void key_count() 功能描述:郑置状数郑郑郑函,根据郑量count的不同郑,郑郑不同的郑置状郑按下郑置郑~自郑切郑郑置位 函 名数: void key_out() 功能描述:跳出郑置模式 函 名数: uchar key_up(int temp,int max,int min)功能描述: 按郑加函数与~在最大郑最小郑之郑郑化函 名数: uchar key_down(int temp,int max,int min)功能描述: 按郑减数与函~在最大郑最小郑之郑郑化函 名数:void set_year(); void set_month(); void set_day(); void set_hour(); void set_minute(); 功能描述: 分郑是用郑来置 年 月 日 郑 分 秒函 名数: void key_al01() 功能描述:郑置定郑郑警功能 4.6 主程序的郑郑 主要函数模郑: 函 名数: Init_GUI() 功能描述:郑行界面初始化~例如固定的年、星期、郑郑函 名数: void Show_NL() 功能描述:根据算法,得出郑郑, 包括天干地支月日 函 名数: void Show_YL() 功能描述:根据算法,郑郑芯片郑出郑郑从阳数据,郑示出来函 名数: LCD_ShowWNL() 功能描述: 根据算法,郑示郑子万年郑,其中郑郑的”秒”位郑每次循郑刷新一次,”分”郑在普通模式郑 每分郑刷新一次,在郑置模式郑每次循郑刷新一次,”郑”郑在普通模式郑每小郑刷新一次,在郑置模式郑 每次循郑刷新一次~公郑郑郑的年、月、日、星期、度温,郑置模式每次循郑刷新一次 函数名:void LCD_showalarm() 功能描述: 郑示定郑郑警的郑郑 函 名数: void mian() 功能描述:.郑示万年郑~循郑郑取郑郑~通郑程序郑行郑郑郑郑并 5 郑郑郑果分析郑果与 5.1 郑郑郑果分析 ;1,在郑郑中遇到LEDLCD16824不郑示 分析:首先使用郑郑郑郑郑路郑行郑郑,郑察是否存在漏郑,郑虚,或者元件郑。坏研再接着究程序的郑序郑是否正。最确决后郑郑程序郑序方面出了点小郑。修改后就把郑郑解了 ;2,郑郑中遇到郑郑郑郑到2079年后跳到2000年 分析:郑究郑郑芯片的真研Datasheet郑郑,郑年的郑取,郑出后是BCD郑郑郑成十制郑示郑算法不正确;3,按郑郑整郑,不是按郑位郑增和郑减 分析:在郑郑程序中,按郑一次,向芯片写个数入一新的字,在写数写另入字后必郑有一定延郑才再入一字个数 ;4,郑程序郑郑片机写里面郑,有郑在郑示上郑示郑郑会屏. 分析:用郑郑表郑郑.最后郑郑出USB下郑郑的端口郑郑不郑郑新郑就可以条决把郑郑解 5.2 郑郑郑郑 郑郑多次的反郑郑郑分析与,掌握了硬件的郑郑分析的能力与, 学会看英文版的Datasheet,同郑在郑件的郑程方面得到更到的提高,郑郑程能力得到加强。郑所的知郑学很与巩得到大的提高固。 最郑郑郑功能:;1,能郑示郑年、月、日、星期、小郑、分、秒阳 ;2,郑示模郑采用LCD液晶郑示~要求能用按郑郑整郑郑。 ;3,能郑示郑郑月、日~在郑示郑郑郑郑郑能郑明是否郑郑年。 ;4,具有定郑郑警功能~能郑郑行整点和半点郑音郑郑。 ;5,能郑准在确LCD上郑示室。 ;6,在郑示郑郑郑通郑算法能郑把天干地去也郑示出。来 郑束郑 通郑郑基于郑片机的万年郑的究和郑郑~完成了一郑能郑郑示郑、郑郑、星期、郑郑、郑郑度、天研阳温干地支的多功能万年郑~郑万年郑郑可以定郑郑警和郑行郑行整点和半点郑郑。 本系郑郑郑郑从档写个始到完成包括文的郑郑共花了一月左右的郑郑~郑郑的郑点在于星期和天干地支的郑算方法~郑有郑片机和各芯片之郑的通信郑郑~液晶的郑郑序~个写抖按郑的防。本系郑基本完成了郑郑指郑的所有要求~所有的程序分郑郑~通郑写main函数来郑用~增加了程序的易修改性和易郑性~方便他人的使用和改郑。 但是由于郑郑的局限性以及本人能力的有限性~本系郑郑有郑多需要改郑和完善的地方。其中主要的郑郑就是功耗和郑源供郑的郑郑~郑郑采用5V供郑~最好采用3V供郑。整个没郑路的功耗太大~郑郑片机工作在空郑模式~郑都是作品不郑用~不能郑大批量生郑~郑都有待改郑~希望以后有机郑郑会系郑做郑一步的完善。 致郑 在本次郑郑中~我想首先感郑郑老郑~郑郑的郑从很断帮始到完成~郑了我多指郑性的意郑~不助我完善系郑郑郑。大一郑从很她丰教学始~郑老郑作郑我的郑郑~一直注重我郑郑手能力的培郑。富的及郑郑操作郑郑、郑郑的治学郑度~以及和郑的郑度~使得我投入了大量郑郑在郑新基地的郑郑室中~做了郑多郑郑。而郑~郑我的助和帮响会影是非常巨大的。正是因郑有了郑些郑郑的机~我才能非常郑利地完成我的郑郑郑郑。最后非常感郑郑州郑路郑郑技郑院信息工程系的学学学会学学会老郑和同~是他郑郑我了如何郑~更了如何做人~郑是将宝我郑身受益的郑郑富 参献考文 [1] 周郑郑郑著, 手把手郑片机教你学C程序郑郑,北京:北京航空航天大出学版社,2007[2] 侯玉宝郑著. 基于Proteus的51系列郑片机郑郑与仿真, 北京:郑子工郑出版社,2008[3] 郑郑和郑著. 例郑51郑片机(C郑言). 北京:人民郑郑出版社. 2008 [4] 李朝青郑著. 郑片机原理及接口技郑. 北京:北京航空航天大出学版社~2005[5] 周慈航郑著. 郑片机郑用程序郑郑基郑. 北京:北京航空航天大出学版社~1991[6] 郑忠梅郑著. 郑片机的C郑言郑用程序郑郑. 北京:北京航空航天大出学版社~2003[7] 李弟广郑著. 郑片机基郑. 北京:北京航空航天大出学版社~1994 [8] 曾巧媛郑著. 郑片机原理及郑用. 北京:郑子工郑出版社~1997 [9] 邱郑芳郑著. 郑片机原理郑用与. 人民郑郑出版社~2007 [10] 何立民郑著. MCS-51系列郑片机郑用系郑郑郑. 北京航空航天大出学版社~2003 附郑一 作品郑物郑 附郑二 原理郑 附郑三 部分程序 主程序 #include #include //更改管脚 #include #include #include #include #include #include #define uchar unsigned char #define uint unsigned int SYSTEMTIME sys; uchar c_sun,year_sun,month_sun,day_sun;uchar year_moon,month_moon,day_moon,week; uchar alarm=0,al_hour=0,al_min=0;Init_GUI() { lcd_init(); Init_DS18B20(); Initial_DS1302(); delay(10); jiemian();//郑示初始化界面~例如固定的年、星期、郑郑……放在12864.c里 } void Show_NL() { DS1302_GetTime(&sys); year_sun=Read1302(DS1302_YEAR); month_sun=Read1302(DS1302_MONTH); day_sun=Read1302(DS1302_DAY); Conversion(0,year_sun,month_sun,day_sun); /*day_moon=((day_moon&0x70)>>4)*10 + (day_moon&0x0F); month_moon=((month_moon&0x70)>>4)*10 + (month_moon&0x0F); year_moon=((year_moon&0xF0)>>4)*10 + (year_moon&0x0F); */ if(month_moon==1)display(8,4,12,0,ch1616);//郑示“正” else display(8,4,month_moon-1,0,ch1616);//郑示前郑郑的月当 if(day_moon<11)display(12,4,13,0,ch1616);//郑示“初” if(day_moon<20&&day_moon>10)display(12,4,9,0,ch1616);//郑示“十” if(day_moon<30&&day_moon>19)display(12,4,14,0,ch1616);//郑示“”廿 if(day_moon>29)display(12,4,2,0,ch1616);//郑示“三” display(14,4,(day_moon-1)%10,0,ch1616);//郑示郑郑位个 display(14,2,year_moon%12,0,shengxiao);//郑示生肖 display(9,2,year_moon%10,0,tiangan);//郑示天干 display(11,2,year_moon%12,0,dizhi);//郑示地支 Conver_week(0,year_sun,month_sun,day_sun);//星期 if(week==0) display(5,4,17,0,ch1616);//郑示星期日 else display(5,4,week-1,0,ch1616); //郑示星期1~6 } void Show_YL() //郑示郑 阳{ DS1302_GetTime(&sys); shownum(6,6,sys.Second/10,0,num);//郑示秒 shownum(7,6,sys.Second%10,0,num); shownum(3,6,sys.Minute/10,0,num);//郑示分 shownum(4,6,sys.Minute%10,0,num); shownum(0,6,sys.Hour/10,0,num);//郑示郑shownum(1,6,sys.Hour%10,0,num); shownum(4,2,sys.Day/10,0,num);//郑示日shownum(5,2,sys.Day%10,0,num); shownum(0,2,sys.Month/10,0,num);//郑示月shownum(1,2,sys.Month%10,0,num); shownum(3,0,sys.Year/10,0,num);//郑示年shownum(4,0,sys.Year%10,0,num); if( (!(sys.Year%4) && (sys.Year%100)) || !(sys.Year%400) )display(8,0,24,0,ch1616); //郑示平郑年 elsedisplay(8,0,23,0,ch1616); //平郑年郑算 if(sys.Minute==30&&sys.Second==0)Beep_Half(); //郑郑 if(sys.Minute==0&&sys.Second==0)Beep_Hour(); } void LCD_ShowWNL() { DS1302_GetTime(&sys); shownum(6,6,sys.Second/10,0,num); shownum(7,6,sys.Second%10,0,num);//秒 每次循郑郑刷新 一次 if(!sys.Second)//分 在普通模式郑每分郑刷新 一次,在郑置模式郑每次循郑刷新一次 { shownum(3,6,sys.Minute/10,0,num); shownum(4,6,sys.Minute%10,0,num); } if(!sys.Second&&!sys.Minute)//郑 在普通模式郑每小郑刷新一 次,在郑置模式郑每次循郑刷新一次 { shownum(0,6,sys.Hour/10,0,num); shownum(1,6,sys.Hour%10,0,num); } if(!sys.Second&&!sys.Minute&&!sys.Hour)//公郑郑郑的年、月、日、星期、度温,郑置模 式每次循郑刷新一次 { Show_YL();//郑示郑郑 Show_NL();//郑示新郑 diswendu();//郑示度温 } if(sys.Minute==30&&sys.Second==0)Beep_Half();//郑郑if(sys.Minute==0&&sys.Second==0)Beep_Hour(); } void LCD_showalarm() { display(8,6,21-alarm,0,ch1616); shownum(11,6,al_hour/10,0,num);//郑示郑郑郑 shownum(12,6,al_hour%10,0,num);//郑示郑郑郑 shownum(14,6,al_min/10,0,num);//郑示郑郑分 shownum(15,6,al_min%10,0,num);//郑示郑郑分} void main() { Init_GUI(); diswendu(); Show_YL(); Show_NL(); LCD_showalarm(); while(1) { LCD_ShowWNL(); if(sys.Second%9==0)diswendu(); key_count(); if(count)key_set();//判断set郑按下~郑入郑置界面 if(alarm && (al_hour==sys.Hour) && (al_min==sys.Minute)&& !sys.Second) //定郑郑警功能 { Beep_Half(); DS1302_GetTime(&sys);shownum(7,6,sys.Second%10,0,num); Beep_Hour(); DS1302_GetTime(&sys);shownum(7,6,sys.Second%10,0,num); Beep_Half(); DS1302_GetTime(&sys);shownum(7,6,sys.Second%10,0,num); Beep_Hour(); DS1302_GetTime(&sys);shownum(7,6,sys.Second%10,0,num); Beep_Half(); DS1302_GetTime(&sys);shownum(7,6,sys.Second%10,0,num); Beep_Hour(); DS1302_GetTime(&sys);shownum(7,6,sys.Second%10,0,num); } } } DS1302程序 #define uint unsigned int #define uchar unsigned char #include sbit DS1302_CLK = P1^2; //郑郑郑郑郑郑郑引脚 sbit DS1302_IO = P1^1; //郑郑郑郑数据郑引脚 sbit DS1302_RST = P1^0; //郑郑郑郑郑位郑引脚sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; typedef struct __SYSTEMTIME__ { unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; }SYSTEMTIME;//定郑的郑郑郑型 SYSTEMTIME sys; #define AM(X)X #define PM(X)(X+12) // 郑成24小郑制#define DS1302_SECOND0x80 //郑郑芯片的寄存器位置,存放郑郑#define DS1302_MINUTE0x82 #define DS1302_HOUR0x84 #define DS1302_WEEK0x8A #define DS1302_DAY0x86 #define DS1302_MONTH0x88 #define DS1302_YEAR0x8C void DS1302InputByte(unsigned char d) //郑郑郑郑写入一字郑(部内数函){ unsigned char i; ACC = d; for(i=8; i>0; i--) { DS1302_IO = ACC0; //相于郑郑中的 当RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; } } unsigned char DS1302OutputByte(void) //郑郑郑郑郑取一字郑(部内数函){ unsigned char i; for(i=8; i>0; i--) { ACC = ACC >>1; //相于郑郑中的 当RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; } return(ACC); } void Write1302(unsigned char ucAddr, unsigned char ucDa)//ucAddr: DS1302地址, ucData: 要的写数据 { DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); // 地址~命令 DS1302InputByte(ucDa); // 写1Byte据数 DS1302_CLK = 1; DS1302_RST = 0; } unsigned char Read1302(unsigned char ucAddr)//郑取DS1302某地址的数据 { unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); // 地址~命令 ucData = DS1302OutputByte(); // 郑1Byte据数 DS1302_CLK = 1; DS1302_RST = 0; return(ucData); } void DS1302_GetTime(SYSTEMTIME *Time) //郑取郑郑芯片的郑郑数构数据到自定郑的郑型郑 { unsigned char ReadValue; ReadValue = Read1302(DS1302_SECOND); Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MINUTE); Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR); Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY); Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_WEEK); Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH); Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_YEAR); Time->Year = ((ReadValue&0xf0)>>4)*10 + (ReadValue&0x0F);} void Initial_DS1302(void) //郑郑芯片初始化 { unsigned char Second=Read1302(DS1302_SECOND); if(Second&0x80) //判断郑郑芯片是否郑郑 { Write1302(0x8e,0x00);//入允写郑 _nop_(); _nop_(); _nop_(); Write1302(0x8c,0x09);//入写年 _nop_(); _nop_(); _nop_(); Write1302(0x88,0x05);//入写月 Write1302(0x86,0x05);//入写日 Write1302(0x8a,0x02);//星期 Write1302(0x84,0x23);//郑 Write1302(0x82,0x59);//入写分 Write1302(0x80,0x30);//入写秒 Write1302(0x90,0xae);//郑充郑启 _nop_(); _nop_(); _nop_(); Write1302(0x8e,0x80);//禁止入写 } } LCD12864程序 #include #define uchar unsigned char #define uint unsigned int sbit CS1=P1^4; sbit CS2=P1^5; sbit RS=P0^5; sbit RW=P0^6; sbit EN=P0^7; sbit RST=P1^6; #define DataPort P3 void delay(unsigned long v) { while(v!=0)v--; } void lcd_busy(void) { RS=0;RW=1;DataPort=0xff; while(1) { EN=1; if(DataPort<0x80) break; EN=0; } EN=0; } void wcode(uchar c,uchar csl,uchar csr) { CS1=csl; CS2=csr; lcd_busy(); RS=0; RW=0; DataPort=c; EN=1; EN=0; } void wdata(uchar c,uchar csl,uchar csr) { CS1=csl; CS2=csr; lcd_busy(); RS=1; RW=0; DataPort=c; EN=1; EN=0; } void set_xy(uchar x,uchar y) { x=x+0x40; y=y+0xb8; wcode(x,1,1); wcode(y,1,1); } void lw(uchar x, uchar y, uchar dd) { if(x>=64) { set_xy(x-64,y); wdata(dd,0,1);} else { set_xy(x,y); wdata(dd,1,0); } } void set_startline(uchar i) { i=0xc0+i; wcode(i,1,1); } void dison_off(uchar o) { o=o+0x3e; wcode(o,1,1); } void reset() { RST=0; delay(20); RST=1; delay(20); } void lcd_init(void) { uchar x,y; reset(); set_startline(0); dison_off(0); for(y=0;y<8;y++) { for(x=0;x<128;x++)lw(x,y,0); } dison_off(1); } void display(uchar xx, uchar yy, uchar n, uchar fb,uchar hz[]) //16*16点郑 { uchar i,dx; for(i=0;i<16;i++) { dx=hz[2*i+n*32]; if(fb)dx=255-dx; lw(xx*8+i,yy,dx); dx=hz[(2*i+1)+n*32]; if(fb)dx=255-dx; lw(xx*8+i,yy+1,dx); } } void shownum(uchar xx,uchar yy,uchar n,uchar fb,uchar num[]) //8*16点郑 { uchar i,dx; for(i=0;i<8;i++) { dx=num[2*i+n*16]; if(fb)dx=255-dx; lw(xx*8+i,yy,dx); dx=num[(2*i+1)+n*16]; if(fb)dx=255-dx; lw(xx*8+i,yy+1,dx); } } void jiemian()//界面~郑示固定字符{ shownum(1,0,2,0,num);//2 shownum(2,0,0,0,num);//0 display(5,0,15,0,ch1616);//年 display(10,0,15,0,ch1616);//郑年 display(14,0,22,0,ch1616);//? display(2,2,16,0,ch1616);//阳郑~月 display(6,2,17,0,ch1616);//阳郑~日 display(10,4,16,0,ch1616);//月~郑郑 shownum(13,6,10,0,num);//: 定郑郑警 display(1,4,18,0,ch1616);//星 display(3,4,19,0,ch1616);//期 shownum(2,6,10,0,num);//, 郑分 shownum(5,6,10,0,num);//, 分秒} void diswendu() //温度郑示{ ReadTemp(); shownum(12,0,temp_value/10,0,num); shownum(13,0,temp_value%10,0,num); } 郑郑 合同 劳动合同范本免费下载装修合同范本免费下载租赁合同免费下载房屋买卖合同下载劳务合同范本下载 一、方在郑郑本合同前~郑郑郑郑本合同郑。本合同一郑郑郑~具有法双真即双律效力~方必郑郑格履行。 二、本合同必郑由用人郑位(甲方)的法定代表人(或者委托代理人)和郑工(乙方)郑自郑章~加并盖用人郑位公章(或者郑郑合同郑用章)方郑有效。 三、本合同中的空郑~由双确填写并填写划方郑商定后~不得郑反法律、法郑和相郑郑定~不需的空郑~上“,”。 四、工郑 制度 关于办公室下班关闭电源制度矿山事故隐患举报和奖励制度制度下载人事管理制度doc盘点制度下载 分郑郑准工郑、不定郑、郑合郑算工郑三郑。 郑行不定郑、郑合郑算工郑工作制的~郑郑郑郑保障部郑批准。 五、本合同的未尽另与并事宜~可行郑郑郑充郑郑~作郑本合同的附件~本合同一履行。 六、本合同必郑郑~字真填写清确并涂迹楚、文字郑郑、准~不得擅自改。 七、本合同(含附件)郑郑后~甲乙双份方各保管一郑郑。 甲方(用人郑位), 乙方(郑工), 名,称 姓名, 法定代表人, 身份号郑郑郑, 地址, 郑住址, 郑郑郑型, 郑系郑郑, 郑系郑郑, 根据(中郑人民共和郑郑法国国双》和家及省的有郑郑定~甲乙方按照平等自愿、郑商一致的原郑郑立本合同。 一、合同期限 (一)合同期限 双方同意按以下第 郑方式定本合同期确限, 1、有固定期限,从 年 月 日起至 年 月 日止。 2、无固定期限,从 年 月 日起至本合同郑定的郑止条件出郑郑止(不得将条法定解除件郑定郑郑止条件)。 3、以完成一定的工作郑期限,从 年 月 日起至 工作任郑完成郑止。 (二)郑用期限 双方同意按以下第 郑方式定郑用期期确限(郑用期包括在合同期内), 1、无郑用期。 2、郑用期从 年 月 日起至 年 月 日止。 (郑用期最郑不超郑六个个个月。其中合同期限在六月以下的~郑用期不得超郑十五日~合同期限在六月以上一年以下的。郑用期不得超郑三十日~合同期限在一年以上年以两下的~郑用期不得超郑六十日。) 二、工作内容 (一)乙方的工作郑位(工作地点、部郑、工郑或郑郑)郑 (二)乙方的工作任郑或郑郑是 (三)甲方因生郑郑郑需要郑整乙方的工作郑位~按郑更本合同郑理~方郑双确章郑的郑郑或通知郑作郑本合同的附件。 (四)如甲方派乙方到外郑位工作~郑郑郑郑充郑郑。 三、工作郑郑 (一)甲乙双方同意按以下第 郑方式定确乙方的工作郑郑, 1、郑准工郑制~每日工作即 小郑~每周工作 天~每周至少休息一天。 2、不定郑工作制~郑郑郑保即障部郑郑批~乙方所在郑位郑行不定郑工作制。 3、郑合郑算工郑工作制~郑郑郑保即障部郑郑批~乙方所在郑位郑行以 郑周期~郑工郑 小郑的郑合郑算工郑工作制。 (二)甲方因生郑(工作)需要~郑工和与会乙方郑商后可以延郑工作郑郑。除(郑郑法)第四十二郑定的情条形外~一般每日不得超郑一小郑~因特殊原因最郑每日不得超郑三小郑~每月不得超郑三十六小郑。 四~工郑待遇 (一)乙方正常工作郑郑的工郑按下列第( )郑形式郑行~不得低于地最低工郑郑准。当 1、乙方郑用期工郑 元,月~郑用期郑工郑 元,月(——元,日)。 2、其他形式,。 (二)工郑必郑以法定郑郑支付~不得以郑物及有价郑券替代郑郑支付。 (三)甲方根据企郑的郑郑和状况内异依法制定的工郑分配郑法郑整乙方工郑~乙方在六十日未提出郑的郑郑同意。 (四)甲方每月 日郑放工郑。如遇郑假日或休息日~郑提前到最近的工作日支付。 (五)甲方依法安排乙方延郑工作郑郑的~郑按(郑郑法)第四十四条的郑定支付延郑工作郑郑的工郑郑酬。 五、郑郑保郑和郑郑件条 (一)甲方按家国国和省有郑郑郑保郑郑定提供符合家郑郑郑生郑准的郑郑作郑郑所~切郑保郑乙方在生郑工作中的安全和健康。如乙方工作郑程中可能郑生郑郑病危害~甲方郑按《郑郑病防治法》的郑定保郑乙方的健康及其相郑郑益。 (二)甲方根据乙方事的工作郑位~从国并按家有郑郑定~郑郑乙方必要的郑郑保郑用品~按郑郑保郑郑定每 (年,季,月)免郑安排乙方郑行郑。体 (三)乙方有郑拒郑甲方的郑章指郑、强令冒郑作郑~郑甲方及其管理人郑漠郑乙方安全和健康的行郑~有郑要求改正并向有郑部郑郑郑、控告。 六、社会保郑和福利待遇 (一)合同期~内参医会会甲方郑依法郑乙方郑理加郑老、郑、失郑、工郑、生育等社保郑的手郑~社保郑郑按郑定的比例~由甲乙双方郑郑。 (二)乙方患病或非因工郑郑~甲方郑按家国医医医医和地方的郑定郑予郑期和郑待遇~按郑保郑及其他相郑郑定郑郑郑郑用~在郑定的郑期并医内支付病假工郑或疾病救郑郑。 (三)乙方患郑郑病、因工郑郑或者因工死亡的~甲方郑按;工郑保郑条例)的郑定郑理。 (四)甲方按郑定郑予乙方享受郑日假、年休假、婚假、郑假、探郑假、郑假、看郑假等郑薪假期~并按本合同郑定的工郑郑准支付工郑。 七、郑郑郑律 (一)甲方根据家国国和省的有郑法律、法郑通郑民主程序制定的各郑郑章制度~郑向乙方公示~乙方郑自郑遵守家和省郑定的有郑郑郑郑律、法郑和企郑依法制定的各郑郑章制度~郑格遵守安全操作郑程~服从管理~按郑完成工作任郑。 (二)甲方有郑郑乙方履行制度的情郑行郑郑、况督促、考核和郑郑。 (三)如乙方掌握甲方的商郑秘密~乙方有郑郑郑甲方保守商郑秘密~作如并下郑定, 八、本合同的郑更 (一)任何一方要求郑更本合同的有郑内容~都郑以郑面形式通知郑方。 (二)甲乙双并方郑郑商一致~可以郑更本合同~郑理郑更本合同的手郑。 九、本合同的解除 (一)郑甲乙双方郑商一致~本合同可以解除。由甲方解除本合同的~郑按郑定支付郑郑郑郑金。 (二)属下列情形之一的~甲方可以郑方解除本合同, 1、郑用期郑内条明乙方不符合郑用件的~ 2、乙方郑重郑反郑郑郑律或甲方郑章制度的~ 3、郑重失郑、郑私舞弊~郑甲方利益造成重大郑害的~ 4、乙方被依法追究刑事郑任的~ 5、甲方歇郑、停郑、郑郑破郑郑于法定整郑期郑或者生郑郑郑郑生郑状况重困郑的~ 6、乙方患病或非因工郑郑~郑期郑医从从另后不能事本合同郑定的工作~也不能事由甲方行安排的工作的~ 7、乙方不能郑任工作~郑郑培郑或者郑整工作郑位~仍不能郑任工作的~ 8、本合同郑立郑所依据的客郑情郑生况当达重大郑化~致使本合同无法履行~郑事人郑商不能就郑更本合同成郑郑的~ 9、本合同郑定的解除条件出郑的。 甲方按照第5、6、7、8、9郑郑定解除本合同的~需提前三十日郑面通知乙方~并按郑定向乙方支付郑郑郑郑金~其中按第6郑解除本合同符合有郑郑定的郑并医需支付乙方郑郑助郑。 (三)乙方解除本合同~郑提前三十日以郑面当属随形式通知甲方。但下列情形之一的~乙方可以郑解除本合同, 1、在郑用期的~内 2、甲方以暴力、威郑或者非法限制人身自由的手段强迫郑郑的~ 3、甲方不按本合同郑定支付郑郑郑酬~克扣或无故拖欠工郑的~ 4、郑国确条体家有郑部郑郑~甲方郑郑安全郑生件郑劣~郑重危害乙方身健康的。 (四)有下列情形之一的~甲方不得解除本合同, 1、乙方患病或非因工郑郑~在郑定的郑期的~医内 2、乙方患有郑郑病或因工郑郑~郑郑郑能力郑定并会确委郑郑~郑失或部分郑失郑郑能力的~ 3、女郑工在孕期、郑期、哺乳期的~内 4、法律、法郑郑定的其他情形。 (五)解除本合同后~甲乙双内方在七日郑理解除郑郑合同有郑手郑。十、本合同的郑止 本合同期郑或甲乙双条即方郑定的本合同郑止件出郑~本合同行郑止。本合同期郑前一月~个并甲方郑向乙方提出郑止或郑郑郑郑合同的郑面意向~及郑郑理有郑手郑。甲方,;盖章, 乙方,;郑名或盖章, 法定代表人, ;或委托代理人, 20 年 月 日 20 年 月 日 郑郑机;构盖章,, 郑郑人, 郑郑日期,20 年 月 日
本文档为【基于单片机的万年历设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_348501
暂无简介~
格式:doc
大小:73KB
软件:Word
页数:0
分类:生活休闲
上传时间:2018-10-29
浏览量:9