基于某stc51单片机的LCD1602显示时间_的电子万年历显示当前温度_第1页
基于某stc51单片机的LCD1602显示时间_的电子万年历显示当前温度_第2页
基于某stc51单片机的LCD1602显示时间_的电子万年历显示当前温度_第3页
基于某stc51单片机的LCD1602显示时间_的电子万年历显示当前温度_第4页
基于某stc51单片机的LCD1602显示时间_的电子万年历显示当前温度_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、标准1课设所需软件简介1.1 Keil uVision4的简要介绍2009年2月发布KeilVision4, Keil v Vision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完 全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组 织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更 多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环境 RealView MDK开发工 具中集成了最新版本的 Keil uVision4 ,其编译器、调试工具实现与 ARM器 件的最完美匹配。Keil C5

2、1开发系统基本知识 Keil C51开发系统基本知识1 .系统概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就 能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代 码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面 详细介绍Keil C51开发系统各部分功能和使用。2 . Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是 C51 for Windows 和for Dos的集成开发环境(IDE),可以完成编辑、编

3、译、连接、调试、仿真等整 个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的 Hex文件,以供调试器 dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目 标板进行调试,也可以直接写入程序存贮器如EPROM中。文案标准使用独立的Keil仿真器时,注意事项:* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔 中换插其他频率的晶振。* 仿真器

4、上的复位按钮只复位仿真芯片,不复位目标系统。* 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM ,不能使用片外 ROM ;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM (其CPU的/EA引脚接至低电平)的目标系统中使用。 优点:1 .Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2 .与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优 势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能

5、强大的集成开发调试工具,全 Windows 界面。图1.1 KEIL操作界面文案标准1.2 STC-ISP的简要介绍STC-ISP是一款单片机下载编程烧录软件,是针对 STC系列单片机而 设计的,可下载 STC89系列、12C2052系列和12C5410等系列的STC单 片机,使用简便,现已被广泛使用。操作说明如下: 打开STC-ISP ,如下图界面,在 MCU Type栏目下选中单片机,如 STC89C52RC。5二F-2SPwxe 壬品存元将*xw.GT二MCU.8E 携行克衿U为2230519口甜除毛14.SSSUH/OL 注皿1 Wil Tm电达拄单片11变£IfTir T对

6、修好 Ntugry K如客氏南蔗正r HOK - 1TFT在匠文件| 4串口助手|工程嵬件r/必明沃1五北叶片步嘴与tkvzdoTSl失点下负卷g冉优U里里匕浮动 上, &L q *4/ T3SJteBctiiJj<in£ 垄息卜甄"|r由川下布前更斯,酎已打不在嘴牌ketn牛,方伸师匕陆用r当当阳代就生驾化旨至函岐件并上醵塔砌消冠JJno gj m Di m rw 叶uujuuj00 00 00 00 uO OQ 00 00OQWLD00 00 OO 00 OT Cd W KJmm 口00 Offl oo CO CO rc rc rcMW00 011 Q0

7、00 00 .L LL L(J0110340n ao m m m do ra面调00 00 00 m Ceil 00 M M口口国时W 皿 W CO 8 8 DQ WOflCflTDao am m cxn m m mUULU 肌ao 00 OU UU LO UI LO LUQQLCIfiDW W W CO 00 00 DQ 由UDO 仙ao ao ao co co co in wUUX5JUU 00 00 00 uO UJ UU ULOQWCDoo ao oo w co ca oa k口值时00 00 00 co co rd M mUULUAJao aa qo u co qq 国 国nnmyn

8、aa aa ao m co co no mOftDIODoo oo oo co co re rc coQ0D1LDao ao qo co co al dq mUDODDODD UDn-uoo Unn-D OOQQ口 ooouaQOQQn口 O 口 cowmajmmwm 山 m mcowo-vummw 008 mojnnm BmwoomaJwcouunnozUJ (JUROO如frlwulJnntJLIOJmOJsoownroouu L)JRDOl)J71KJU71JU8roJJRffiJJ71mE uuBDOuumMJUR山 Ron山rklpjeotlu 艮 BDabumM&ncJLw

9、T山xmEHMx诩质I自定"叫 觥下鼠I号卦牌官比整I】能 即 一用户缸体启讷向部西口狗后广F有年卷美舌i期启复叵夫也匚的以产功。就座-髭中归有理ALE pib广 用作E4.5 疗倡力臼油匚就可叮T竞,嗡再用户应用杵好住晤-gEahi+lfcfii " 口.|清镀¥皿师m,8«网志3B附嫩不觉由S武昌崔示:* TT5前三鼻一隶丽暇回吧:T;图1.2 ISP操作界面(2)根据您的9针数据线连接情况选中COM端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些。文案标准(3)先确认硬件连接正确,点击打开文件”并在对话框内找到您要下载的HEX文件。T

10、_需 ETC-fSPuewtrfwrrTCMCU.com 31922805190(5平:,¥4和案”|蟀| "“小"nr 选/甲耳叽型H闺UJJ出用Nmor尸:KugeISICaSCSEH: I- :"T, 理库史4Fr旗55Fl-"<二理#H正oi OC 03 Ji京X J?加国冲加:c.WOOEOOOO EQOODS 加卬mmE mooEDm皿 moomm一皿 mDOmmm TT XTX Mm无MR mtilumm mmlumw MrrlHMR Mm的mmKIOJ 88mm 皿 lirITLLITIJZ mtiemo:白腐亡/打开文件

11、R件划删来flWD)-1期珑址泗U枝验粕何!*打开文件前说续用 E开和师,门siwa sa cj * *叱大”鸣LM 加一三 -单片及程字 1小21"洁七日唱片最-K3轮里我巾omaon omnw 0DD02D DO 口次 ooooo迪娘岁电二关电白二.,分而同的位言小阵W PPT戒步 序制.J图NA*tSTJ>r嬴器雁atRin下镭st"”号骑q骨舌本(I币B c ir 孑?(百快 振节取大宣翎工耨式椅LEWF长才启动”,WTL 1 内却折丽1Mgigf步罂 口2aJw 3“ ad/T5£成咖前Tj? Cl nr町开:5 ,(二2<'.oir

12、«下就r. =y耳租理前日地We201.J/LO/1 17; 3&H EX S&1 即电口5 2i4iHEX 5_£ HU JINWELDSXH2/6/1S 检龄HFX 3F jiar Da*初皿81 2U22HEXSZip2011/10/27 72:3 5HEXMxiiyiwn 22 题KK,且8>12/6/15 1&J5HEXiJ 2Ciai/uyi 2ft isHEX J*zoiuiQm O:3£H EX S脖图1.3选择HEX文件(4)选择所要下载的文件,这样可以使您在每次编译KEIL时HEX代码能自动加载到 STC-ISP,

13、点击“Download/T载”。(5)手动按下电源开关便即可把可执行文件HEX写入到单片机内,如图是正在写入程序截图。(6)程序写入完毕,目标板开始运行程序结果。文案标准2方案分析与确定2.1方案思路分析由题目要求,根据设置的年份日的显示全年的年月公历、 星期等信息。由于 需要显示去年的日期以及星期等信息,普通的LED数码管显然已经不能胜任,为此,我们可以选择LCD1602液晶显示器完成课设要求。目前所具备的设备只 有一块以STC89C52为内核的单片机,PC机。课设要求显示日期等信息,我们可以充分利用单片机上面集成的 DS1302 时钟芯片。该芯片可以产生年份,月份,日期,星期,时,分,秒的

14、数据,因此, 完全可以完成实验的各项要求。基于以上分析,我们可以利用DS1302产生的各种时钟数据,由CPU完成对 数据的读取,然后通过 CPU将数据写至LCD1602,以显示数据,达到可视化的 效果。对于课程设计的拓展部分,我们可以利用单片机开发板上面集成的 DS18B20 温度传感器来测试周围环境的温度,同样通过LCD1602来显示。此外可以通过测试按键是否闭合来改变各种时间数据,已达到校准的目的。CPULCD1602DS18B20 4图2.1整体设计框架图文案标准图2.2设计流程图文案标准3单元芯片电路的设置及总体设计3.1 DS1302芯片引脚功能DS1302是美国DALLAS公司推出

15、的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年 补偿功能,工作电压为2.5V5.5V。采用三线接口与 CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31X8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与 DS1202兼容,但增加了主电源 /后备电源双电源引脚,同 时提供了对后备电源进行涓细电流充电的能力。DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关 闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大

16、者供电。当 Vcc2大于 Vcc1+0.2V 时,Vcc2给DS1302供电。当 Vcc2 小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接 32.768kHz 晶振。RST是复位/片选线,通过把 RST输入驱动置高电平来启动所有的数 据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址 /命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对 DS1302进行 操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST

17、必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出 端(双向),后面有详细说明。SCLK为时钟输入端。下图为DS1302的弓唧功能图:文案标准VCC2 匚 xiD X2 ZGND 一VcciSCLKI/ORST图3.1 DS1302引脚图DS1302比较类似,管脚描述:X1 X2 GND -RST I/O SCLK Vcc1,Vcc2 此外,拓展中用到32.768KHZ晶振管脚地复位脚数据输入/输出引脚串行时钟电源供电管脚DS18B20温度传感器,因此这里不再赘述文案标准3.2 DS1302的使用方法使用DS1302时,要对其引脚和寄存器进行特殊设置,以

18、实现所需功能。引 脚设置后面会提及,这里不做说明,主要讲一下程序的编写。DS1302的的工作过程中包过读写一个字节数据等过程,下面做相应的解释。/*功能:往DS1302写入数据*/void W1302(uchar ucAddr, uchar ucDa) (T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */RTInputByte(ucDa); /* 写 1Byte 数据*/T_CLK = 1;T_RST = 0;/*功能:读取DS1302某地址的数据*/uchar R1302(uchar ucAddr) (uchar uc

19、Data;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */ucData = RTOutputByte();/* 读 1Byte 数据 */T_CLK = 1;文案标准T_RST = 0;return(ucData);产*功能:设置初始时间*1void Set1302(uchar *pClock)uchar i;uchar ucAddr = 0x80;EA = 0;W1302(0x8e,0x00);/*控制命令,WP=0,写操作?*/for(i =7; i>0; i-)W1302(ucAddr,*pClock);/*

20、秒分时日月星期年*/pClock+;ucAddr +=2;W1302(0x8e,0x80);/*控制命令,WP=1,写保护?*/EA = 1;产*功能:读取DS1302当前时间mam*void Get1302(uchar ucCurtime口)uchar i;uchar ucAddr = 0x81;EA = 0;文案标准for (i=0; i<7; i+)(ucCurtimei = R1302(ucAddr);/*格式为:秒分时日月星期年 */ ucAddr += 2;EA = 1;3.3 LCD1602引脚功能1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点

21、阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也 有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形n1602LCD是指显示的内容为 16X2,即可以显示两行,每行16个字符液 晶模块(显示字符和数字)。图3.2 LCD1602引脚图1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极文案标准第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接 地电源时对比度最高(对比度过高时会产生鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择

22、,高电平1时选择数据寄存器、低电平 0时选择指令寄存器。第5脚:RW为读写信号线,高电平 (1)时进行读操作,低电平 (0)时进 行写操作。第6脚:E(或EN)端为使能(enable)端。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.4LCD1602 的使用LCD1602的使用与前面的DS1302的使用有类似的地方,包括引脚的设置和 对应的编程,引脚的设置后面会提及到,这里只涉及对应的编程。/*LCD1602 延时*/void Lcd_delay(uchar ms)uchar j;while(ms-)for(j=0;j<250;j

23、+);/*LCD1602 忙等待*/void Lcd_busy_wait()Lcd_rs = 0;文案标准Lcd_rw = 1;Lcd_en =1;Lcd_data = 0xff;while (Lcd_data&0x80);Lcd_en = 0;/*LCD1602 命令字写入*/void Lcd_command_write(uchar command)Lcd_busy_wait();Lcd_rs = 0;Lcd_rw = 0;Lcd_en = 0;Lcd_data = command;Lcd_en =1;Lcd_en = 0;/*LCD1602 初始化 */void Init_lcd(

24、)Lcd_delay(20);Lcd_command_write(0x38);Lcd_delay(100);Lcd_comman/*LCD1602 延时*/d_whte(0x38);Lcd_delay(50);Lcd_command_write(0x38);Lcd_delay(10);文案标准Lcd_command_write(0x08);Lcd_command_write(0x01);Lcd_command_write(0x06);Lcd_command_write(0x0c);Lcd_data = 0xff; /* 释放数据端 口 */void Lcd_char_write(uchar x

25、_pos,y_pos,lcd_dat)/*LCD1602 字符写入 */ x_pos &= 0x0f; /* X 位置范围 015 */y_pos &= 0x01; /* Y 位置范围 01 */if(y_pos=1) x_pos += 0x40;x_pos += 0x80;Lcd_command_write(x_pos);Lcd_busy_wait();Lcd_rs = 1;Lcd_rw = 0;Lcd_en = 0;Lcd_data = lcd_dat;Lcd_en =1;Lcd_en = 0;Lcd_data = 0xff; /* 释放数据端 口 */文案标准4整体电路设

26、计和程序由上面的分析可以得到实验的电路图如下:C1::' 一 :一舸: +忧口加j,日严, " VCC2 , J1二广f,xi娜二,丽三1印廨!,I丁 $CLK | '乖9,, -M- I附於3二目期 上/攻1叩帆0pj wP»W>wpjjyp邙p)rap&mpaw.-aR$rPJ7假J?冏町1WP2 2/AD雨MEpi 蜘i2尊P)I4P2?冏 5FLDJ2FU顺F1.1.12Bpj.imoF1.Ip;.回F1,JF9jwnFL4P3.WHFl!PUjTIF1.B府.6源Fl?PJ.rL ->r工 5 4 Jy d 7 ,11:1-2-

27、3 4 f 6 7 Ef 0胪曲用/片M等习龈F怔_泡1时F寻仃冏出题前帼言悔同懈窗且C0I.6蝴由磁I五掰.图4.1仿真电路图设计源代码如下:产*程序名称:LCD1602显示时间 显示当前温度*/文案标准/*头文件*/#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define nop() _nop_()sbit s1=P1A0;sbit s2=P1Al;sbit s3=P1A2;sbit s4=P1A3;sbit DQ =P1A3;

28、/定义 DS18B20 通信端口sbit lcd_rs_port = P2A4; /* 定义 LCD 控制端口 */sbit lcd_rw_port = P2A5;sbit lcd_en_port = P2A6;#define lcd_data_port P0sbit led_latch_port = P2A5; /*发光二极管寄存器 LE 引脚*/sbit sled_latch_port = P3A6; /啾码管寄存器 LE 引脚*/sbit T_CLK = P3A6;/*实时时钟时钟线引脚 */sbit T_IO = P3A4;/*实时时钟数据线引脚*/sbit T_RST = P3A5;

29、/*实时时钟复位线引脚 */sbit ACC0 = ACCA0;sbit ACC7 = ACCA7;uchar code mun_to_char = "0123456789ABCDEF"); /* 定义数字跟 ASCII 码 的关系*/uchar data time_data_buff7=0x50,0x59,0x23,0x31,0x12,0x04,0x12;/* 格式 为:秒分时日月星期年*/uchar data lcd1602_line1=" 2000/00/00 000 "uchar data lcd1602_line2=" 00:00:0

30、0 00.0"文案标准codeucharWeeks3="SUN","MON","TUE"WED"THU","FRI","SAT', "SUN"产*函数名:RTInputByte()能:实时时钟写入一字节明:往DS1302写入1Byte数据(内部函数)入口参数:d写入的数据返回值:无*/void RTInputByte(uchar d)uchar i;ACC = d;for(i=8; i>0; i-)T_IO = ACC0;/*相当于汇编中的

31、RRC */T_CLK = 1;T_CLK = 0;ACC = ACC >> 1;产*函数名:RTOutputByte()能:实时时钟读取一字节明:从DS1302读取IByte数据(内部函数)入口参数:无返回化ACC*文案标准uchar RTOutputByte(void) ( uchar i;for(i=8; i>0; i-) (ACC = ACC >>1;/*相当于汇编中的 RRC */ACC7 = T_IO;T_CLK = 1;T_CLK = 0;) return(ACC);)产*函数名:W1302()功能:往DS1302写入数据说明:先写地址,后写命令/数

32、据(内部函数)调用:RTInputByte() , RTOutputByte()入口参数:ucAddr: DS1302地址,ucData:要写的数据 返回值:无*/void W1302(uchar ucAddr, uchar ucDa) (T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */ RTInputByte(ucDa); /* 写 IByte 数据*/ T_CLK = 1;T_RST = 0;文案标准)产*函数名:R1302()功能:读取DS1302某地址的数据说明:先写地址,后读命令/数据(内部函数)调用:RTI

33、nputByte() , RTOutputByte()入口参数:ucAddr: DS1302地址返回值:ucData读取的数据*/uchar R1302(uchar ucAddr)uchar ucData;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */ucData = RTOutputByte();/* 读 1Byte 数据 */T_CLK = 1;T_RST = 0;return(ucData);)产*函数名:Set1302()功能:设置初始时间说明:先写地址,后读命令/数据(寄存器多字节方式)调用:W1302()入

34、口参数:pClock:设置时钟数据地址 格式为:秒分 时日月 星期年7Byte (BCD 码)1B 1B 1B 1B 1B 1B 1B返回值:无文案标准*/void Set1302(uchar *pClock)(uchar i;uchar ucAddr = 0x80;EA = 0;W1302(0x8e,0x00);/* 控制命令,WP=0,写操作?*/for(i =7; i>0; i-)(W1302(ucAddr,*pClock); /* 秒分时日月星期年 */ pClock+;ucAddr +=2;W1302(0x8e,0x80);/* 控制命令,WP=1,写保护?*/EA = 1;产

35、*函数名:Get1302()功能:读取DS1302当前时间说明:调用:R1302()入口参数:ucCurtime:保存当前时间地址。当前时间格式为:秒分时日 月星期年7Byte (BCD 码) 1B 1B 1B 1B 1B 1B 1B返回值:无*/void Get1302(uchar ucCurtime口)(uchar i;文案标准uchar ucAddr = 0x81;EA = 0;for (i=0; i<7; i+)(ucCurtimei = R1302(ucAddr);/*格式为:秒分 时日月 星期 年*/ ucAddr += 2;EA = 1;/DS18B20延时函数void d

36、elay(unsigned int i)(while(i-);/DS18B20初始化函数void Init_DS18B20(void)(unsigned char x=0;DQ = 1; /DQ 复位delay(8); /稍做延时DQ = 0;/单片机将DQ拉低delay(80); /端确延时大于480usDQ = 1; /拉高总线delay(14);x=DQ; /稍做延时后 如果x=0则初始化成功x=1则初始化失败delay(20);/DS18B20读一个字节文案标准uchar ReadOneChar(void)(unsigned char i=0;unsigned char dat = 0

37、;for (i=8;i>0;i-)DQ = 0; /给脉冲信号dat>>=1;DQ = 1; /给脉冲信号if(DQ) dat|=0x80;delay(4);return(dat);/DS18B20写一个字节void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;/DS18B20读取温度uint ReadTemperature(void) 文案标准unsigned char

38、a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC);/跳过读序号列号的操作WriteOneChar(0xBE);/读取温度寄存器等(共可读9个寄存器)前两个就 是温度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*0.0625; /将温度的高位与低位合并t= tt*

39、10+0.5; /对结果进行4舍5入return(t);/void lcd_delay(uchar ms) /*LCD1602 延时*/uchar j;while(ms-)for(j=0;j<250;j+);文案标准void lcd_busy_wait() /*LCD1602 忙等待 */(lcd_rs_port = 0;lcd_rw_port = 1;lcd_en_port = 1;lcd_data_port = 0xff;while (lcd_data_port&0x80);lcd_en_port = 0;void lcd_command_write(uchar comman

40、d) /*LCD1602 命令字写入 */ (lcd_busy_wait();lcd_rs_port = 0;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = command;lcd_en_port = 1;lcd_en_port = 0;void lcd_system_reset() /*LCD1602 初始化 */(lcd_delay(20);lcd_command_write(0x38);lcd_delay(100);lcd_command_write(0x38);lcd_delay(50);lcd_command_write(0x38);l

41、cd_delay(10);文案标准lcd_command_write(0x08);lcd_command_write(0x01);lcd_command_write(0x06);lcd_command_write(0x0c);lcd_data_port = 0xff; /* 释放数据端口 */void lcd_char_write(uchar x_pos,y_pos,lcd_dat)/*LCD1602 字符写入 */ x_pos &= 0x0f; /* X 位置范围 015 */y_pos &= 0x01; /* Y 位置范围 0 1 */if(y_pos=1) x_pos +

42、= 0x40;x_pos += 0x80;lcd_command_write(x_pos);lcd_busy_wait();lcd_rs_port = 1;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = lcd_dat;lcd_en_port = 1;lcd_en_port = 0;lcd_data_port = 0xff; /* 释放数据端口 */void keyscan()if(s1=0)lcd_delay(10);if(s1=0)文案标准time_data_buff1+;if(time_data_buff 1=0x5a)(time_data

43、_buff1=0x00;)while(!s1);if(time_data_buff1=0x0a)(time_data_buff 1=0x10;)if(time_data_buff1=0x1a)(time_data_buff1=0x20;)if(time_data_buff1=0x2a)(time_data_buff1=0x30;)if(time_data_buff1=0x3a)(time_data_buff1=0x40;)if(time_data_buff1=0x4a)(time_data_buff1=0x50;)Set1302(time_data_buff);)文案标准)if(s2=0)(l

44、cd_delay(10);if(s2=0)(time_data_buff2+;if(time_data_buff2=0x24)(time_data_buff2=0x00;)if(time_data_buff2=0x0a)(time_data_buff2=0x10;)if(time_data_buff2=0x1a)(time_data_buff2=0x20;)while(!s2);Set1302(time_data_buff);)if(s3=0)(lcd_delay(10);if(s3=0)(time_data_buff5+;文案标准if(time_data_buff5=0x07)(time_d

45、ata_buff5=0x00;)while(!s3);Set1302(time_data_buff);)if(s4=0)(lcd_delay(10);if(s4=0)(time_data_buff3+;if(time_data_buff3=0x32)(time_data_buff3=0x01;)if(time_data_buff3=0x0a)(time_data_buff3=0x10;)if(time_data_buff3=0x1a)(time_data_buff3=0x20;)if(time_data_buff3=0x2a)(time_data_buff3=0x30;文案标准while(!s

46、4);Set1302(time_data_buff);void main()uchar i;uint temp; /温度值lcd_system_reset(); /*LCD1602 初始化 */lcd_data_port = 0xff; /*释放 P0端口*/led_latch_port = 0;sled_latch_port = 0;Set1302(time_data_buff); /* 设置时间 */while(1)Get1302(time_data_buff); /*读取当前时间 */ temp = ReadTemperature(); /恢取当前温度值 */lcd1602_line13

47、/*刷新显示*/=mun_to_chartime_data_buff6/0x10;lcd1602_line14=mun_to_chartime_data_buff6%0x10;/* 年*/lcd1602_line16=mun_to_chartime_data_buff4/0x10;lcd1602_line17=mun_to_chartime_data_buff4%0x10;/* 月*/lcd1602_line19=mun_to_chartime_data_buff3/0x10;lcd1602_line110 = mun_to_chartime_data_buff3%0x10;/* 日*/for

48、(i=0;i<3;i+)lcd1602_line1i+12=Weekstime_data_buff5&0x07i;/*星期*/lcd1602_line22=mun_to_chartime_data_buff2/0x10;文案lcd1602_line23=mun_to_chartime_data_buff2%0x10; /* 时*/标准lcd1602_line25 = mun_to_chartime_data_buff1/0x10;lcd1602_line26 = mun_to_chartime_data_buff1%0x10; /* 分*/lcd1602_line28 = mun_to_chartime_data_buff0/0x10;lcd1602_line29 = mun_to_chartime_data_buff0%0x10; /* 秒*

温馨提示

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

评论

0/150

提交评论