基于51单片机的电子表设计_第1页
基于51单片机的电子表设计_第2页
基于51单片机的电子表设计_第3页
基于51单片机的电子表设计_第4页
基于51单片机的电子表设计_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

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

文档简介

1、目录3.13.23.33.43.5.1.11.112 .2 23334.4 4.55626.26.26.272828目录第1章概述1.1实验原理第2章设计思路及框图2.1设计思路2.2设计框图第3章系统的硬件设计主控制部件.显示模块晶振模块按键模块驱动模块第4章电路设计原理图.4.1电路原理图第5章程序设计5.1程序流程图5.2源程序第6章系统的验证及调试.6.1日期设置显示测试6.2秒表测试6.3倒计时测试第7章总结第8章参考文献第1章概述1.1实验原理单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系 列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,

2、无所不为”。单 片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、 办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的, 将程序存储器和 数据存储器合用一个存储器空间的结构, 称为普林斯顿结构。另一种是将程序存储器和数 据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用 程序存储器和数据存储器截然分开的结构为多。本课题讨论的方波发生器的核心是目前应用极为广泛的51系列单片机。利用AT89C51单片机定时器完成计时功能,定时器 0计时中断程序每隔0.01s中断一 次并当作一个

3、计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1, 当加到100时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否 1h 到了。为了将时间在6位LED数码管上显示,可采用静态显示法和动态显示法, 由于静态显示法 需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数 码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各 种显示。第2章设计思路及框图2.1设计思路针对要实现的功能,采用AT89S51单片机进行设计,AT89S51单

4、片 机是一款低功耗, 高性能CMOS位单片机,第一,熟悉AT89S51单片机,在编程之前必须了解硬件结构尤其 是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法 设计。这是前期准备工作。第二,设计硬件部分:依据想要的功能分块设计设计,比如输 入需要开关电路,输出需要显示驱动电路和数码管电路等。第三,画图部分:设计好电路 后进行画图。第四,软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进 行分块的编程调试,最终完成程序设计。第五部分是软件仿真部分:软硬件设计好后将软 件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成 功。第六部

5、分是硬件实现部分:连接电路并导入程序检查电路,实现想要的功能。2.2设计框图此次设计主要是应用单片机来设计电子时钟, 硬件部分主要分以下电路模块: 显示电 路用8个共阴极数码显示管、按键模块、晶振模块。显示管分别显示:小时、分钟和秒, 通过动态扫描进行显示。电路的总体设计框架如下:按键模块LCD显示模块单片机模块驱动模块第3章系统的硬件设计3.1主控制部件89C51是一个8位单片机,片内ROM全部采用FLASH RO技术,晶振时钟为12MHz 89C51是标准的40引脚双列直插式集成电路芯片,有 4个八位的并行双向I/O端口,分 别记作P0、P1、P2、P3。第31引脚需要接高电位使单片机选用

6、内部程序存储器;第 40 脚为电源端VCC接+5V电源,第20引脚为接地端VSS通常在VCC和VSS引脚之间接0.1 卩F高频滤波电容。硬件原理图如图2所示:U17P0.0/A£0FO.IJADIXTAL2PO一2/AD2 PO.3/AD3 P0.47AN4 PO.S/ADCpo.e/AEeRSTP 0J/AD7临吹P2.2)10PSENF-2.311ALE奋说,5问3P2.SjS(K14P乙7典5P1DP3.04WDP1.1 F12PM.i/r翅F3.2?-WI(J陀泗"PI.4P3/KT10P3.&HP1JSP3.S/WRP17pg而19Q293031.23 d

7、07$AT©aC51!图239373&药34旳32除F22 F23 F24 F25 F2627 Eze1112151415ie173.2显示模块方案一:静态显示。静态显示,即当显示器显示某一字符时,相应的发光二极管恒定 导通或截至。该方式每一位都需要一个8位输出口控制。静态显示时较小电流能获得较高 的亮度,且字符不闪烁。但因当所需显示的位数较多时,静态显示所需的I/O 口数较大,造成资源的浪费。方案二:动态显示。动态显示,即各位数码管轮流点亮,对于显示器各位数码管,每 隔一段延时时间循环点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,人的视觉暂留功能

8、才可以察觉不到字符闪烁。显示器的亮度与导通电流、 点亮时间及间隔时间的比例有关。调整参数可实现较高稳定度的显示。动态显示节省了 I/O 口,降低了能耗。从节省单片机I/O 口和降低能耗角度出发,本电子表显示选择采用方案二。3.3晶振模块单片机芯片可使用内部时钟电路和外部时钟电路两种方式产生电路所需的时钟脉冲, 内部时钟电路实现可用石英晶体和微调电容外接即可达到,外部时钟电路实现需要一个外部脉冲源引入脉冲信号以保证个单片机之间时钟信号的同步。从硬件实现难易角度考虑, 内部时钟电路的实现比外部时钟电路的实现更简易。既本数字电子钟设计所需的时钟源采用内部时钟电路实现。3.4按键模块本数字电子钟设计所

9、需按键用于进行显示时间的调整与设置扩展的小键盘。单片机芯片4个I/O 口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求,电路采用P1 口与按键相连。3.5驱动模块本数字电子钟设计采用数码管从实物制作简易程度与驱动数码管段码能力角度出发,段码与AT89C51P0口相连,单片机AT89C51的P2 口控制数码管的片选信号,通过编程,单片机芯片即可控制段码电平的高低的方式实现数码管段码控制。第4章电路设计原理图4.1电路原理图. 讪.尺1n- s»1、r:VDC1VQC2P2# 3_氏i 一工 亠

10、FgP fe二I X?SCLk roLcniu庫仅TIZ |i -sei tine: 20:44!-IE.U1 XI I 1/W* 的込L扁 Itr-r>fJLTiCil RQ jM- Ufrilu PC阳PC3M2 FC制心 rc.4'?C4 FC.DfrtW Ft DCrti射m c flh 2C3P5CJM ALE EA012FN例 P2i10 PiSAHF2M?tl3P7 7眉1百敷K如_Ran .0护L "L 咤 FtZ 吃叫 Jgpi.T卢 prePIJCP1JP11f厲Pitk I EPI?PCI空F32丽币PJJ/lHTIP3<nnP2fri P

11、J n罚7 函屎tlT7uiiafbo&i=k.=-o o秒社 尹曲计时 片铺认 -v蛾復.图3UTE*-、第5章程序设计5.1程序流程图4所示。在主程序的开始定义了一组固定单元用来存储计数的分、秒、时的存储单元。在主程 序中,对不同的按键进行扫描,实现秒表,时间调整。系统总体流程图如图开始TO中断入口通过查表方式显示数据位选数值=0秒计数加1秒计数=1000秒计数=0Seconds+1中断返回系统子程序流程图如图5所示:产J ira事ifrM t Lto,£石示十 fa1址否月J支淞血J克卞>I一-ZZZ图55.2源程序#in clude <reg52.h>

12、;#i nclude "ds1302.h"#i nclude "lcd1602.h"#i nclude "key.h"/sbit wela=卩2八7;/sbit dula=卩2八6;uchar tab_date14="2012-11-16 TUE"/uchar tab_time8="00:00:00"/uchar tab_time18="00:00:00"/uchar tiao;uchar msec ond;uchar hour,m in, sec,key,siti on;/

13、uchar kon g=""uchar flag;/时间秒表选择标志/void tran s()tab_date2=tab_13026/10+'0'tab_date3=tab_13026%10+'0'tab_date5=tab_13024/10+'0'tab_date6=tab_13024%10+'0'tab_date8=tab_13023/10+'0'tab_date9=tab_13023%10+'0'数据转换tab_time0=tab_13022/10+'0'

14、tab_time1=tab_13022%10+'0'tab_time3=tab_13021/10+'0'tab_time4=tab_13021%10+'0'tab_time6=tab_13020/10+'0'tab_time7=tab_13020%10+'0' /void week()星期显示表示年月日星期 表示时分秒表示时分秒/年十位 年个位 月十位 月个位 日十位 日个位小时十位 小时个位 分十位 分个位 秒十位 秒个位uchar i;if(tab_1302 5=1) i=7;实时时钟里的值是6,但是2008/

15、08/08是星期五,所以减elsei=tab_13025-1;/*1,Proteus的问题?*/switch(i)case 1: tab_date11='M'tab_date12='O'tab_date13='N' break; case 2: tab_date11=T;tab_date12='U'tab_date13='E' break;case 3: tab_date11=W;tab_date12='E'tab_date13='D' break;case 4: tab_date1

16、1=T;tab_date12='H'tab_date13='U' break; case 5: tab_date11='F'tab_date12='R'tab_date13=T; break;case 6: tab_date11='S'tab_date12=T;tab_date13='A' break; case 7: tab_date11='S'tab_date12='U'tab_date13='N' break; default: ; break;

17、 /其它情况void getweek(uchar week1,uchar t)uchar i;if(week1=1)i=7;else实时时钟里的值是6,但是2008/08/08是星期五,所以减1,的问题?*/i=week1-1; /*P roteusswitch(i)case 1: t0='M't1='O't2='N' break;case 2: t0=T;t1='U't2='E' break;case 3: t0=W;t1='E't2=D; break;case 4: t0=T;t1='H

18、't2='U' break;case 5: t0='F't1='R't2=T; break;case 6: t0='S't1=T;t2='A' break;case 7: t0='S't1='U't2='N' break;default: ; break; /其它情况void cls(uchar i) /表示打印出i个空格/ lcd_wcom(addr); /重新设定显示地址为0xc4,即下排第5位for(;i>0;i-) lcd_wdat('&

19、#39;); lcddelay(1);/void dis pl ay(uchar a,uchar b)uchar i,j;Icd_wcom(0x80+0x01); for(i=0;i<14;i+) lcd_wdat(ai); lcddelay(1);Icd_wcom(0x80+0x44); / for(j=0;j<8;j+) lcd_wdat(bj); lcddelay(1);/void djsds p( uchar hour,uchar min, uchar sec) led液晶屏显示/显示倒计时/显示地址设为80H (即00H,)上排第一位将日期显示在lcd1602上重新设定显

20、示地址为0xc4,即下排第5位 将tab time中的数据依次写入1602显示/ucharj,key,t;uchar t戶"00:00:00" TR1=1;while(1)t=tab_13020; ds1302(); if(t!=tab_13020) msecond=1; key=Getkey(); if(key=KEY_BK) return; sec=sec-msec ond;msec on d=0;if(sec=255)sec=59;min-;if(mi n=255)min=59;hour-;if(hour=255) while(1) key=Getkey(); if(

21、key=KEY_BK) return;tab_time0=hour/10+'0' tab_time1=hour%10+'0'tab_time3=mi n/10+'0'tab_time4=mi n%10+'0'tab_time6=sec/10+'0' tab_time7=sec%10+'0'Icd_wcom(0x80+0x44); / 重新设定显示地址为0xc4,即下排第5位 for(j=0;j<8;j+)/将tab_time中的数据依次写入1602显示lcd_wdat(tab_timej);

22、lcddelay(1);设置倒计时/void djishiOuchar ch="Co un tdow n:"uchar t戶"00:00:00"uchar str="00"uchar i;siti on=3;hour =min=sec=0;/清屏/显示地址设为80H (即00H,)上排第一位Icd_wcom(0x01);Icd_wcom(0x80+0x01);for(i=0;i<10;i+)将"Countdown:"显示在 lcd1602 上/lcd_wdat(chi); lcddelay(1);/显示地址设

23、为80H (即00H,)上排第一位Icd_wcom(0x80+0x44);for(i=0;i<8;i+)将时间显示在Icd1602上/lcd_wdat(ti); lcddelay(1);while(1)key=Getkey();switch(key)case KEY_MU:return;case KEY_U P:switch(siti on)"case 1:hour+;if(hour>=24) hour=0;break; case 2:min+;if( min>=60) min=0;break; case 3:sec+;if(sec>=60) sec=0;br

24、eak; default:break;break;case KEY_DN:switch(siti on)"case 1:hour-;if(hour=255) hour=59;break; case 2:min-;if( min=255) min=59;break; case 3:sec-;if(sec=255) sec=59;break; default:break;break;case KEY_L:lcd_wdat(str0); lcddelay(1);lcd_wdat(str1); lcddelay(1); siti on-;if(siti on=0)siti on=3;brea

25、k;case KEY_R:"lcd_wdat(strO); lcddelay(l);lcd_wdat(str1);lcddelay(1);siti on+;if(siti on=4)siti on=1;break;case KEY_OK:djsds p(hour,mi n,sec);lcd_wcom(0x01);retum;case KEY_BK:lcd_wcom(0x01);return; defaultbreak;/清屏/Icd_wcom(0x01);if(siti on=1)str0=hour/10|+'0'str1=hour%10+'0'Icd

26、_wcom(0x80+0x44);if(tiao<10)lcd_wdat(str0);lcddelay(1);lcd_wdat(str1);lcddelay(1);elsecls(2);Icd_wcom(0x80+0x44);"else if(2=siti on)str0=mi n/10+'0' str1=mi n%10+'0'Icd_wcom(0x80+0x47);if(tiao<10)lcd_wdat(str0); lcddelay(1);lcd_wdat(str1); lcddelay(1);elsecls(2);lcd_wcom(0

27、x80+0x47); elsestr0=sec/10+'0'str1=sec%10+'0'Icd_wcom(0x80+0x4a);if(tiao<10)lcd_wdat(str0);lcddelay(1);lcd_wdat(str1);lcddelay(1);elsecls(2);Icd_wcom(0x80+0x4a);设置日期/void setdateO /uchar i,j,yearh,yearl,m on th,date,week;uchar str戶"00"uchar ch="set date:"siti o

28、n=5;Icd_wcom(0x01);Icd_wcom(0x80+0x01);for(i=0;i<9;i+)lcd_wdat(chi);lcddelay(1);Icd_wcom(0x80+0x41); /for(j=0;j<14;j+)/lcd_wdat(tab_datej);lcddelay(1);yearh=(tab_date0-'0')*10+(tab_date1-'0');yearl=tab_1302 6;mon th=tab_13024;date=tab_13023;week=tab_1302 5;while(1)key=Getkey();

29、switch(key)case KEY_MU:djishi();retum;case KEY_U P:switch(siti on)case 1:yearh+;if(yearh>=100) yearh=0;break;case 2:yearl+;if(yearl>=100) yearl=0;break;case 3:m on th+;if( mon th>=13) mon th=0;break;case 4:date+;/清屏/显示地址设为80H (即00H,)上排第一位将"set date:"显示在 Icd1602 上重新设定显示地址为0xc4,即下排第

30、5位 将tab date中的数据依次写入1602显示if(yearh*100+yearl)%4=0&&(yearh*100+yearl)%100!=0)|(yearh*100+yearl)%400=0)/如果是闰年if(mon th=2&&date>29) date=1; elseif(mon th=2&&date>28) date=1;if(mon th=4|m on th=6|m on th=9|m on th=11)if(date>30) date=1; elseif(date>31)date=1;break;cas

31、e 5:week+;if(week=8)week=1;break; defaultbreak;break;case KEY_DN:switch(siti on)"case 1:yearh-;if(yearh=255) yearh=99;break;case 2:yearl-;if(yearl=255) yearl=99;break;case 3:m on th-;if(m on th=0) mon th=12;break; case 4:date-;if(mon th=1|m on th=3|m on th=5|m on th=7|m on th=8|m on th=10|m on

32、th=12) /有31天的月份if(date=0) date=31;else if(mon th!=2)if(date=0) date=30;elseif(yearh*100+yearl)%4=0&&(yearh*100+yearl)%100!=0)|(yearh*100+yearl)%400 =0)/闰年中的2月if(date=0) date=29; elseif(date=0)date=28;break;case 5:week-;if(week=0) week=7;break; defaultbreak;break;case KEY_L:if(siti on!=5)lcd_

33、wdat(str0);lcddelay(1);lcd_wdat(str1);lcddelay(1);elselcd_wdat(ch0);lcddelay(1);lcd_wdat(ch1);lcddelay(1); lcd_wdat(ch2);siti on-;if(siti on=0) siti on=5; break;case KEY_R:"if(siti on!=5)lcd_wdat(str0); lcddelay(1);lcd_wdat(str1);lcddelay(1);elselcd_wdat(ch0); lcddelay(1);lcd_wdat(ch1);lcddelay

34、(1); lcd_wdat(ch2);siti on+;if(siti on=6)siti on=1;break;case KEY_OK:tab_dateO=yearh/1O+'O' tab_date1=yearh%10+'0' tab1_13026=yearl; tab1_13024=mo nth; tab1_13023=date;tab1_13025=week; ds1302();tab1_13020=tab_13020; tab1_13021=tab_13021; tab1_13022=tab_13022; ds1302_i ni t();/清屏Icd_w

35、com(0x01); return;case KEY_BK: lcd_wcom(0x01);return; defaultbreak;/lcd_wcom(0x80+0x4a);if(siti on=1)Icd_wcom(0x80+0x41); str0=yearh/10|+'0' str1=yearh%10+'0'if(tiao<10)lcd_wdat(str0);Icddelay(l); lcd_wdat(str1); lcddelay(1); elsecls(2);Icd_wcom(0x80+0x41);"else if(2=siti on)

36、Icd_wcom(0x80+0x43); str0=yearl/10+'0' str1=yearl%10+'0'if(tiao<10) lcd_wdat(str0); lcddelay(1); lcd_wdat(str1); lcddelay(1);elsecls(2);Icd_wcom(0x80+0x43);"else if(3=siti on)Icd_wcom(0x80+0x46); str0=mo nth/10+'0' str1=mo nth%10+'0'if(tiao<10)lcd_wdat(str0

37、); lcddelay(1);lcd_wdat(str1); lcddelay(1);elsecls(2);Icd_wcom(0x80+0x46);"else if(4=siti on)Icd_wcom(0x80+0x49); str0=date/10+'0' str1=date%10+'0'if(tiao<10)lcd_wdat(str0); lcddelay(1);lcd_wdat(str1); lcddelay(1);elsecls(2);Icd_wcom(0x80+0x49);"elsegetweek(week,ch); Icd

38、_wcom(0x80+0x4c); if(tiaovlO)lcd_wdat(chO); lcddelay(l); lcd_wdat(ch1); lcddelay(1); lcd_wdat(ch2);elsecls(3);lcd_wcom(0x80+0x4c);/void settimeO 设置时间/uchar i,j;uchar sitio n; / 闪烁位置uchar ch二"set time:"uchar str戶"00"TR0=1;sitio n=3;/3Icd_wcom(0x01);/Icd 不执行中断中的在变时间 调秒,2调分,1调时/清屏重新

39、设定显示地址为0xc4,即下排第5位 将tab_time中的数据依次写入1602显示/Icd_wcom(0x80+0x44); / for(j=0;j<8;j+)/lcd_wdat(tab_timej); lcddelay(1);Icd_wcom(0x80+0x01);for(i=0;i<9;i+)lcd_wdat(chi); / lcddelay(1); hour=tab_13022;min=tab_13021; sec=tab_13020;/获取当前时间,在此基础上进行调时while(1)steval();key=Getkey();switch(key)case KEY_MU:

40、setdate();return;case KEY_U P:switch(siti on)"case 1:hour+;if(hour>=24) hour=0;break; case 2:min+;if( min>=60) min=0;break; case 3:sec+;if(sec>=60) sec=0;break; default:break;break;case KEY_DN:switch(siti on)/显示地址设为80H (即00H,)上排第一位将"set time:"显示在 lcd1602 上case 1:hour-;if(hour

41、=255) hour=23;break;case 2:min-;if( min=255) min=59;break;case 3:sec-;if(sec=255) sec=59;break; defaultbreak;break;case KEY_L:lcd_wdat(str0);lcddelay(1);lcd_wdat(str1);lcddelay(1);sitio n-;if(siti on=0)siti on=3;break;case KEY_R:lcd_wdat(str0); lcddelay(1);lcd_wdat(str1); lcddelay(1); siti on+;if(si

42、ti on=4)siti on=1;break;case KEY_OK: tab1_13020=sec;tab1_13021=mi n;tab1_13022=hour;tab1_13023=tab_13023;tab1_13024=tab_13024;tab1_13025=tab_13025;tab1_13026=tab_13026;ds1302_i ni t();Icd_wcom(0x01);retur n;case KEY_BK:lcd_wcom(0x01);return; defaultbreak;/清屏Icd_wcom(0x01);if(siti on=1) str0=hour/10|

43、+'0' str1=hour%10+'0'Icd_wcom(0x80+0x44); if(tiao<10)lcd_wdat(str0); lcddelay(1);lcd_wdat(str1); lcddelay(1); elsecls(2);Icd_wcom(0x80+0x44);"else if(2=siti on)str0=mi n/10+'0' str1=mi n%10+'0'Icd_wcom(0x80+0x47); if(tiao<10)lcd_wdat(str0); lcddelay(1);lcd_

44、wdat(str1); lcddelay(1); elsecls(2);Icd_wcom(0x80+0x47);elsestr0=sec/10+'0' str1=sec%10+'0'Icd_wcom(0x80+0x4a);if(tiaovlO)lcd_wdat(strO); lcddelay(l); lcd_wdat(str1); lcddelay(1); elsecls(2);Icd_wcom(0x80+0x4a);"void miaobiaoOuchar j;uchar i;/清屏重新设定显示地址为0xc4,即下排第5位将tab time中的数据依

45、次写入1602显示sec= min=0; lcd_in it(); Icd_wcom(0x01); Icd_wcom(0x80+0x44); / for(j=0;j<8;j+)/Icd_wdat(tab_time1j); lcddelay(1);/TR1=1;while(1)if(BK=0)TR1=0; return;if(MB=0)if(i<2) TR1=TR1;while(MB=0);i+;if(i=3)i=0;Icd_wcom(0x01);/ 清屏Icd_wcom(0x80+0x44); / 重新设定显示地址为 0xc4,即下排第5位 for(j=0;jv8;j+)/将tab

46、_time中的数据依次写入1602显示Icd_wdat(tab_time1j);lcddelay(1);/处理按键函数/void dealkey(uchar key1)uchar num;num=key1;switch( num)case KEY_MU:TR0=1;settime();TR0=0;break;case KEY_MB:miaobiao();break;case KEY_CK:TR0=1;djishi();TR0=0;break;defaultbreak;void T0_i ni t()TMOD=0x01;/50ms中断一次开总中断允许T0定时器中断 启动T0开始定时TH0=(65

47、536-50000)/256;TL0=(65536-50000)%256;EA=1;/ET0=1;/TR0=1;/PT0=0; /设置中断优先级void T1_in it()TMOD=TMOD|0x10;/T工作方式 2TH1=(65536-10000)/256;TL1=(65536-10000)%256;ET1=1;/TR1=1;P T1=1;void main()/10ms中断一次/允许T0定时器中断/uchar key; ds1302_i ni t(); lcd_ini t(); T0_ini t(); T1_ini t(); while(1)/ds1302(); tran s(); w

48、eek();key=Getkey();if(0!=key)dealkey(key);if(flag=0)dis play(tab_date,tab_time);/获取时钟芯片内的数据void T0_SEVER(void) in terru pt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;/ 重装初值,10ms后再次中断一次tiao+;if(tiao=20) / 定时一秒tiao=0;void T1_SEVER(void) in terru pt 3 "/250US中断一次uchar t=0;uchar time="00:00:

49、00"uchar j;TH1=(65536-10000)/256;TL1=(65536-10000)%256;/10ms 中断一次msec on d+;if(mseco nd>=100)msec on d=0; sec+; if(sec>=60) sec=0; mi n+; if(mi n=60) mi n=0;tab_time0=mi n/10+'0'tab_time1=mi n%10+'0'tab_time3=sec/10+'0'tab_time4=sec%10+'0'tab_time6=mseco nd

50、/10+'0'tab_time7=mseco nd%10+'0'Icd_wcom(0x80+0x44); / 重新设定显示地址为 0xc4,即下排第5位 for(j=0;j<8;j+)/将tab_time中的数据依次写入1602显示 "lcd_wdat(tab_timej);/lcddelay(1);elsetab_timeO=mi n/1O+'O' tab_time1=mi n%10+'0' tab_time3=sec/10+'0' tab_time4=sec%10+'0' tab_time6=mseco nd/10+'0' tab_time7=mseco nd%10+'0' Icd_wcom(0x80+0x4a); lcd_wdat(tab_time6); lcddelay(1);lcd_wdat(tab_time7);6.1

温馨提示

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

最新文档

评论

0/150

提交评论