时钟单片机数字时钟设计一寸共阳可以换成3寸共阳吗

单片机、电路板
连接器、接插件
其他元器件
单片机在电脑温度计,电子时钟与LED中的应用
单片机在电脑温度计,电子时钟与LED中的应用
&&&& 例1:一个液晶显示的数字式电脑温度计   液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息, 如汉字、图形、图表等。这里我们介绍一种八段式四位LCD显示器,该显示器内置驱动器,串行数据传送,使用非常方便。原理图如下图:
&&&& 例1:一个液晶显示的数字式电脑温度计   液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息, 如汉字、图形、图表等。这里我们介绍一种八段式四位LCD显示器,该显示器内置驱动器,串行数据传送,使用非常方便。原理图如下图:
&&&&&下图是长沙太阳人科技开发有限公司生产的4位带串行接口的液晶显示模块SMS0403的外部引线简图:
&&& 有关该模块的具体参数,请查看该公司网站。此例中使用的温度传感器 为美国DALLAS公司生产的单总线式数字温度传感器。该传感器本站有其 详细的资料可供下载。此例稍加改动,即可做成温控器。&
&&& 例2: &LED显示电脑电子钟   本例介绍一种用LED制作的电脑电子钟(电脑万年历)。其制作完成装潢后的照片如下图:
&&&& 上图中,年、月、日及时间选用的是1.2寸共阳数码管,星期选用的是2.3寸数码管,温度选用的是0.5寸数码管,也可根据个人的爱好选用不同规格的数码管。原理图如下图所示:
&&& 图中,CPU选用的是AT89C2051,时钟芯片选用的是Dallas公司的DS1302, 温度传感器选用的是Dallas公司的数字温度传感器DS1820,显示驱动芯片选用的是德州仪器公司的TPIC6B595,也可选用与其兼容的芯片NC595或 国产的AMT9595。整个电子钟用两个键来调节时间和日期。一个是位选 键,一个是数字调节键。按一下位选键,头两位数字开始闪动,进入设 定调节状态,此时按数字调节键,当前闪动位的数字就可改变。全部参 数调节完后,五秒钟内没有任何键按下,则数字停止闪动,退出设定调节状态。源程序清单如下(无温度显示程序):
start:$include(reg51.dcl)declare (sclk,io,rst) bit at (0b3h) /* p33,p34,p35 */declare (command,data,n,temp1,num)declare a(9)declare ab(6)declare aco(11) byte constant (0fdh,60h,0dah,0f2h,66h,0b6h,0beh,
0e0h,0feh,0f6h,00h); declare week(11) byte constant (0edh,028h,0dch,7ch,39h,75h,0f5h,2ch,0fdh,7dh,00h);declare da literally 'p15',clk literally 'p16',ale literally 'p17',mk literally 'p11',sk literally 'p12';
clear:sclk=0;io=0;rst=0;
send1302:procedure(comm);declare (i,comm)do i=0 to 7;comm=scr(comm,1);io=call time(1);sclk=0;call time(1);sclk=1;end send1302;wbyt1:procedure(com,dat);/*字节写过程*/declare (com,dat)rst=1;call send1302(com);call send1302(dat);end wbyt1;wbyt8:/*时钟多字节突发模式写过程*/a(7)=A(6);a(6)=a(0);rst=1;call send1302(command);do j=1 to 8;call send1302(a(j));end wbyt8;
RBYT1:PROCEDURE;DECLARE I BYTE;CALL CLEAR;RST=1;call sendh);IO=1;DO I=0 TO 7;SCLK=1;SCLK=0;CY=IO;N=SCR(N,1);END;A(8)=N;CALL CLEAR;END RBYT1;send595:do k=0 to 7;data=scr(data,1);da=clk=1;clk=0;end send595;
send595_1:do k=0 to 7;data=scr(data,1);da1=clk1=1;clk1=0;end send595_1;
rb1:procedure(abc,j);DECLARE (I,j,abc) BYTE;CALL CLEAR;RST=1;call send1302(abc);IO=1;DO I=0 TO 7;SCLK=1;SCLK=0;CY=IO;N=SCR(N,1);END;ab(j)=N;ab(j)=dec(ab(j));CALL CLEAR;end rb1;
rbyt6:call rb1(0f1h,0);call rb1(0f3h,1);call rb1(0f5h,2);call rb1(0f7h,3);call rb1(0f9h,4);call rb1(0fbh,5);call rb1(0fdh,6);end rbyt6;
wbyt6:call wbyt1(8eh,0); /* write enable */call wbyt1(0f0h,ab(0));call wbyt1(0f2h,ab(1));call wbyt1(0f4h,ab(2));call wbyt1(0f6h,ab(3));call wbyt1(0f8h,ab(4));call wbyt1(0fah,ab(5));call wbyt1(0fch,ab(6));call wbyt1(8eh,80h); /* write dISAble */end wbyt6;rbyt8:/*时钟多字节突发模式读过程*/declare (i,j)rst=1;call send1302(command);io=1;do j=1 to 8;do i=0 to 7;sclk=1;call time(1);sclk=0;cy=n=scr(n,1);a(j)=n;a(0)=a(6);a(6)=A(7);a(0)=a(0) and 0if a(0)&6 then a(0)=0;CALL RBYT1;if (a(1)=0 and a(2)=0 and a(3)=0) then do num=0 to 35;call time(250);temp1=1;if temp1=1 thentemp1=0;ab(4)=ab(4)+1;if ab(4)&99h then ab(4)=0;ab(5)=ab(5)+1;if ab(5)&99h then ab(5)=0;call wbyt6;end rbyt8;
display: /*jieya,yima,fasong*/declare (i,n,m)n=a(0) and 0 /* send week */data=week(n);call send595;
n=a(4); /* send date */n=n and 0data=aco(n);call send595;n=a(4);n=shr(n,4);data=aco(n);call send595;
do i=1 to 3; /* send second,minute,hour */n=a(i);n=n and 0data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595;do i=5 to 6; /* send month,year */n=a(i);n=n and 0data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595;
n=a(8); /* send 19 or 20 */n=n and 0data=aco(n);call send595;n=a(8);n=shr(n,4);data=aco(n);call send595;do m=0 to 5;n=ab(m);n=n and 0data=aco(n);call send595_1;n=ab(m);n=shr(n,4);data=aco(n);call send595_1; ale=0;ale=1;
beginset:a(0)=06h;a(1)=58h;a(2)=59h;a(3)=23h;a(4)=30h;a(5)=06h;a(6)=97h;a(7)=00;a(8)=19h; /* set date/time (,8:00:00,week 3) */call wbyt1(8eh,0); /* write enable*/call wbyt1(80h,00h);/* start coLOCk */call wbyt1(0beh,0abh);/*两个二极管与8K电阻串联充电*/command=0 /* write colock/date */call wbyt8;call wbyt1(0c0h,a(8));call wbyt1(8eh,80h); /* set write protect bit */
key:declare (i,time1,k1,tem)call time(100);k1=7;time1=30;if mk=0 thendo while time1&0;week: if k1=0 then do i=0 to 5;/* call Hz(a(0)); */do i=0 to 3;/* call hz0; */tem=a(k1);if k1=7 then tem=a(8);a(k1)=0if k1=7 then a(8)=0call time(254);call time (254);a(k1)=if k1=7 then a(8)=call time(254);call time(254);call time(254);time1=time1-1;if mk=0 thencall time(100); /*MOD KEY PROCESS*/TIME1=30;IF MK=0 THENDO;k1=k1-1;DO WHILE K1=0FFH;K1=7;END;END;IF SK=0 THENDO;CALL TIME(100); /*SET KEY PROCESS*/TIME1=30;IF SK=0 THENDO;tem=tem+1;tem=dec(tem);DO CASE K1;DO WHILE tem=7;/*week*/tem=0;END;DO WHILE tem=60H;/*scond*/tem=0;END;DO WHILE tem=60H;/*minute*/tem=0;END;DO WHILE tem=24H;/*hour*/tem=0;END;DO WHILE tem=32H;/*date*/tem=1;END;DO WHILE tem=13H;/*month*/tem=1;END;DO while tem=100h; /* YEAR */tem=00;END;DO WHILE TEM&=21H;tem=19H;END;END;A(K1)=if k1=7 then a(8)=END;END;END;END;
main$program:mk=1;sk=1;temp1=0;num=0;p32=1;if sk=0clk=0;da=0;ale=1;loop:do while mk=1 ;if a(0)&6 then a(0)=0; command=0 call rbyt8;do while mk=0;call wbyt1(8eh,0);command=0call wbyt8;call wbyt1(0C0H,A(8));call wbyt1(8eh,80h);end start
&& 例3:一个6位LED、4个按键的显示板  按键和显示是单片机系统的基本输入输出部件,下面介绍一个由74LS164驱动的6位数码管和4个按键组成的通用仪表面板。 原理图如下图所示
&&&&&&&&&&& 其线路板图如下图所示:
&& 注:此板中多了三个LED发光管,这三个发光管是分别接在IC4,IC5,IC6 的13脚(Q7,数据串出脚)上的。
&&&& 例1:一个液晶显示的数字式电脑温度计   液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息, 如汉字、图形、图表等。这里我们介绍一种八段式四位LCD显示器,该显示器内置驱动器,串行数据传送,使用非常方便。原理图如下图:
&&&&&下图是长沙太阳人科技开发有限公司生产的4位带串行接口的液晶显示模块SMS0403的外部引线简图:
&&& 有关该模块的具体参数,请查看该公司网站。此例中使用的温度传感器 为美国DALLAS公司生产的单总线式数字温度传感器。该传感器本站有其 详细的资料可供下载。此例稍加改动,即可做成温控器。&
&&& 例2: &LED显示电脑电子钟   本例介绍一种用LED制作的电脑电子钟(电脑万年历)。其制作完成装潢后的照片如下图:
&&&& 上图中,年、月、日及时间选用的是1.2寸共阳数码管,星期选用的是2.3寸数码管,温度选用的是0.5寸数码管,也可根据个人的爱好选用不同规格的数码管。原理图如下图所示:
&&& 图中,CPU选用的是AT89C2051,时钟芯片选用的是Dallas公司的DS1302, 温度传感器选用的是Dallas公司的数字温度传感器DS1820,显示驱动芯片选用的是德州仪器公司的TPIC6B595,也可选用与其兼容的芯片NC595或 国产的AMT9595。整个电子钟用两个键来调节时间和日期。一个是位选 键,一个是数字调节键。按一下位选键,头两位数字开始闪动,进入设 定调节状态,此时按数字调节键,当前闪动位的数字就可改变。全部参 数调节完后,五秒钟内没有任何键按下,则数字停止闪动,退出设定调节状态。源程序清单如下(无温度显示程序):
start:$include(reg51.dcl)declare (sclk,io,rst) bit at (0b3h) /* p33,p34,p35 */declare (command,data,n,temp1,num)declare a(9)declare ab(6)declare aco(11) byte constant (0fdh,60h,0dah,0f2h,66h,0b6h,0beh,
0e0h,0feh,0f6h,00h); declare week(11) byte constant (0edh,028h,0dch,7ch,39h,75h,0f5h,2ch,0fdh,7dh,00h);declare da literally 'p15',clk literally 'p16',ale literally 'p17',mk literally 'p11',sk literally 'p12';
clear:sclk=0;io=0;rst=0;
send1302:procedure(comm);declare (i,comm)do i=0 to 7;comm=scr(comm,1);io=call time(1);sclk=0;call time(1);sclk=1;end send1302;wbyt1:procedure(com,dat);/*字节写过程*/declare (com,dat)rst=1;call send1302(com);call send1302(dat);end wbyt1;wbyt8:/*时钟多字节突发模式写过程*/a(7)=A(6);a(6)=a(0);rst=1;call send1302(command);do j=1 to 8;call send1302(a(j));end wbyt8;
RBYT1:PROCEDURE;DECLARE I BYTE;CALL CLEAR;RST=1;call sendh);IO=1;DO I=0 TO 7;SCLK=1;SCLK=0;CY=IO;N=SCR(N,1);END;A(8)=N;CALL CLEAR;END RBYT1;send595:do k=0 to 7;data=scr(data,1);da=clk=1;clk=0;end send595;
send595_1:do k=0 to 7;data=scr(data,1);da1=clk1=1;clk1=0;end send595_1;
rb1:procedure(abc,j);DECLARE (I,j,abc) BYTE;CALL CLEAR;RST=1;call send1302(abc);IO=1;DO I=0 TO 7;SCLK=1;SCLK=0;CY=IO;N=SCR(N,1);END;ab(j)=N;ab(j)=dec(ab(j));CALL CLEAR;end rb1;
rbyt6:call rb1(0f1h,0);call rb1(0f3h,1);call rb1(0f5h,2);call rb1(0f7h,3);call rb1(0f9h,4);call rb1(0fbh,5);call rb1(0fdh,6);end rbyt6;
wbyt6:call wbyt1(8eh,0); /* write enable */call wbyt1(0f0h,ab(0));call wbyt1(0f2h,ab(1));call wbyt1(0f4h,ab(2));call wbyt1(0f6h,ab(3));call wbyt1(0f8h,ab(4));call wbyt1(0fah,ab(5));call wbyt1(0fch,ab(6));call wbyt1(8eh,80h); /* write dISAble */end wbyt6;rbyt8:/*时钟多字节突发模式读过程*/declare (i,j)rst=1;call send1302(command);io=1;do j=1 to 8;do i=0 to 7;sclk=1;call time(1);sclk=0;cy=n=scr(n,1);a(j)=n;a(0)=a(6);a(6)=A(7);a(0)=a(0) and 0if a(0)&6 then a(0)=0;CALL RBYT1;if (a(1)=0 and a(2)=0 and a(3)=0) then do num=0 to 35;call time(250);temp1=1;if temp1=1 thentemp1=0;ab(4)=ab(4)+1;if ab(4)&99h then ab(4)=0;ab(5)=ab(5)+1;if ab(5)&99h then ab(5)=0;call wbyt6;end rbyt8;
display: /*jieya,yima,fasong*/declare (i,n,m)n=a(0) and 0 /* send week */data=week(n);call send595;
n=a(4); /* send date */n=n and 0data=aco(n);call send595;n=a(4);n=shr(n,4);data=aco(n);call send595;
do i=1 to 3; /* send second,minute,hour */n=a(i);n=n and 0data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595;do i=5 to 6; /* send month,year */n=a(i);n=n and 0data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595;
n=a(8); /* send 19 or 20 */n=n and 0data=aco(n);call send595;n=a(8);n=shr(n,4);data=aco(n);call send595;do m=0 to 5;n=ab(m);n=n and 0data=aco(n);call send595_1;n=ab(m);n=shr(n,4);data=aco(n);call send595_1; ale=0;ale=1;
beginset:a(0)=06h;a(1)=58h;a(2)=59h;a(3)=23h;a(4)=30h;a(5)=06h;a(6)=97h;a(7)=00;a(8)=19h; /* set date/time (,8:00:00,week 3) */call wbyt1(8eh,0); /* write enable*/call wbyt1(80h,00h);/* start coLOCk */call wbyt1(0beh,0abh);/*两个二极管与8K电阻串联充电*/command=0 /* write colock/date */call wbyt8;call wbyt1(0c0h,a(8));call wbyt1(8eh,80h); /* set write protect bit */
key:declare (i,time1,k1,tem)call time(100);k1=7;time1=30;if mk=0 thendo while time1&0;week: if k1=0 then do i=0 to 5;/* call Hz(a(0)); */do i=0 to 3;/* call hz0; */tem=a(k1);if k1=7 then tem=a(8);a(k1)=0if k1=7 then a(8)=0call time(254);call time (254);a(k1)=if k1=7 then a(8)=call time(254);call time(254);call time(254);time1=time1-1;if mk=0 thencall time(100); /*MOD KEY PROCESS*/TIME1=30;IF MK=0 THENDO;k1=k1-1;DO WHILE K1=0FFH;K1=7;END;END;IF SK=0 THENDO;CALL TIME(100); /*SET KEY PROCESS*/TIME1=30;IF SK=0 THENDO;tem=tem+1;tem=dec(tem);DO CASE K1;DO WHILE tem=7;/*week*/tem=0;END;DO WHILE tem=60H;/*scond*/tem=0;END;DO WHILE tem=60H;/*minute*/tem=0;END;DO WHILE tem=24H;/*hour*/tem=0;END;DO WHILE tem=32H;/*date*/tem=1;END;DO WHILE tem=13H;/*month*/tem=1;END;DO while tem=100h; /* YEAR */tem=00;END;DO WHILE TEM&=21H;tem=19H;END;END;A(K1)=if k1=7 then a(8)=END;END;END;END;
main$program:mk=1;sk=1;temp1=0;num=0;p32=1;if sk=0clk=0;da=0;ale=1;loop:do while mk=1 ;if a(0)&6 then a(0)=0; command=0 call rbyt8;do while mk=0;call wbyt1(8eh,0);command=0call wbyt8;call wbyt1(0C0H,A(8));call wbyt1(8eh,80h);end start
&& 例3:一个6位LED、4个按键的显示板  按键和显示是单片机系统的基本输入输出部件,下面介绍一个由74LS164驱动的6位数码管和4个按键组成的通用仪表面板。 原理图如下图所示
&&&&&&&&&&& 其线路板图如下图所示:
&& 注:此板中多了三个LED发光管,这三个发光管是分别接在IC4,IC5,IC6 的13脚(Q7,数据串出脚)上的。
资料下载排行榜
型号/产品名
摄像头芯片全球服务商
摄像头芯片全球服务商
深圳市诺德华宜电子有限公司
深圳市振中科技电子商行
深圳瑞琦电子经营部列表网公众号列表活动随时有扫我活动不错过
下次自动登录(公共场合慎用)
使用合作网站账号登录:
收藏成功!
您可在个人中心,查看
类&&&&别:
起订数量:
商家地址:
海淀区知春路118号中发电
查看联系方式
查看联系方式
联系我时说明在列表网看到,说不定有意外惊喜哟!
微信扫一扫,快速拨打电话
加工定制:是
种类:指示器
光源形状:面状
光源种类:LED发光二极管
光源分布位置:直下式
显示模式:透射式
连接方式:金属插脚
生产厂家直销led数码管全系列产品: 一位,二位,二位半,三位,三位半,四位,四位半,五位,六位,时钟数码管,平面管发光块,彩屏管等近千规格,大量现货批发
led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。
数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管.应用领域:
本产品适用于仪器仪表面板数值显示,通用多媒体产品,银行汇率显示板,家用电器,led时钟,移动电源消防设备,门禁系统,汽车仪表盘,机械设备面板,交通系统等终端设备的数值显示,寿命长,节能环保.使用注意事项
1、焊接条件:
1.焊点需离环氧树脂根部2mm以上。
2.浸焊:在260℃、5秒以内焊接一次完成,同时避免树脂浸入锡槽。
3.烙铁焊:用30W的烙铁,其尖端温度不高于350℃,在5秒以内焊接一次完成。
2、使用注意:
1.引脚如需成形,必须在焊接前完成,电路版上的安装孔之间的距离请与电极引脚保持一致。
2. 产品在高温状态下进行引脚裁切会产生不良,请在常温下进行引脚裁切。
3.在焊接温度回到正常以前,必须避免使LED受到任何的震动或外力。
3、静电防护:
1.蓝色、纯绿色、白色产品对静电非常敏感,静电防护不当,电涌会损坏产品,造成漏电、缺亮
2.等故障,所以与产品接触的设备需良好接地,工作台请用导电的台垫良好接地;烙铁的尖端一
定要良好接地;推荐使用负离子发生器。
化学品在清洗包括LED在内的整体产品时,必须注意,因为有些化学品对其表面有腐蚀损伤并引
起褪色,如三氯乙烯、丙酮等。可用乙醇擦拭、浸渍,时间在常温下不超过3分钟。
1.产品在温度5~30℃、相对湿度&60%的环境中储存。
2. 并应在自包装之日起一年内使用。
3.产品超出上述储存要求或受潮,则其必须在60±5℃条件下烘烤12小时。
4.储存时间越长,产品电极表面越容易遭受腐蚀氧化或变色造成焊接困难,建议尽早使用.
1. 一般规格都有大量现货,可及时出货
2. 特殊规格及发光颜色,亮度要求等的交期是10-15天(下单请先确认)
3. 常规型号出货量比较大,库存数量变动比较快,如果数量不够的情况交期7-12天的样子. LED数码管说明: 产品名称:
SMA3041APG/SMA3041BPG 尺寸规格:
0.3英寸4位数码管 发光颜色:
红色/黄色/黄绿色/橙色/蓝色/翠绿色/白色工作电流:
1-15mA工作电压:
红:1.8-2.0v 黄绿/黄/橙:2.0-2.2v 蓝/翠绿3.0-3.2v发光波长:
红620nm-630nm 黄绿570-574nm 黄585-595nm 橙600-610nm 兰460-470nm 翠绿515-525nm发光亮度:
20mcd-350mcd焊接温度:
230℃/5秒环境温度:
-20℃-80℃电话:
Q Q: 网址: www.ledyue.com
联系我时,请说是在列表网栏目上看到的,谢谢!
小贴士:北京0.3寸时钟led数码管 共阴共阳黄信息由列表网网友发布,其真实性及合法性由发布人负责。列表网仅引用以供用户参考。详情请阅读列表网免责条款。
请在查看您收到的留言
手机号码:
获取确认码
已发送(120)
所在城市:
留言内容:
快捷留言:
想了解一下详情,请尽快联系我。
我对您的商品感兴趣,请尽快和我联系。
使用溫度範圍Operating temperature-10 ℃ ℃ ~ +70 ℃手工焊接Manual soldering30
使用溫度範圍Operating temperature-10 ℃ ℃ ~ +70 ℃手工焊接Manual soldering30
北京0.3寸时钟led数码管 共阴共阳黄 相关广告
金牌会员推荐
&2017 列表网&琼ICP备号-12&增值电信业务经营许可证B2-&还没有帐号? 赶紧
用户版块帖子
求助简单时钟共阳数码管程序改成共阴数码管程序
UID:1499815
在线时间1653小时
M币1472专家7
请,指导下或改一下简单时钟共阳改共阴程序? &&&&&&程序来源于网络,简单4位共阳时钟程序,本人不会编程。下面贴上程序: #include &at89x51.h&&& /*包含器件配置文件*/#define uchar unsigned char#define uint unsigned intchar DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};/*0~9的数码管段码*/uchar hour=0,min=0,sec=0; /*时、分、秒单元清零*/uchar deda=0; /*5mS计数单元清零*/uchar t_hour=0,t_min=0; /*闹时、分单元清零*/bit d_05s=0; /*0.5秒标志*/bit o_f=0; /*闹时启/停标志*/uchar set=0; /*模式设定标志*/uchar m=0;uchar flag=0; /*RAM掉电标志*/void delay(uint k); /*延时子函数*/void conv(); /*走时单元转换*/void p_out(); /*判别闹时到否子函数*/void dirve(); /*走时间输出驱动子函数*/void t_dirve(); /*闹时间输出驱动子函数*//*闹时启/停子函数*/void time1_of(){if(P3_7==0)delay(1);if(P3_7==0)o_f=1;for(m=0;m&30;m++){t_dirve();P1=DATA_7SEG[t_min/10];P3=0delay(1);if(P3_1==0){if(o_f==1)P1_7=0;}else P1_7=1;delay(1);}if(P3_5==0)delay(1);if(P3_5==0) o_f=0;for(m=0;m&30;m++){t_dirve();P1=DATA_7SEG[t_min/10];P3=0delay(1);if(P3_1==0){if(o_f==1)P1_7=0;else P1_7=1;}delay(1);}}/*走时函数*/void time(){conv(); /*走时单元转换*/dirve(); /*走时间输出驱动子函数*/p_out(); /*判别闹时到否子函数*/}/*定时器T0 5mS初始化*/void init_timer(){TMOD=0x01;TH0=-();TL0=-();IE=0x82;TR0=1;}/*扫描按键子函数*/void scan_key(){delay(1);if(P3_4==0)set++;if(set&=4)set=0;if(set==1)flag=0x55;F0:if(P3_4==0)goto F0; /*按键未释放,在此等候*/}/*延时子函数*/void delay(uint k){uint i,j;for (i=0;i&k;i++)for(j=0;j&121;j++){;}} /*5mS定时中断服务子函数*/void zd(void) interrupt 1{TH0=-();TL0=-();deda++;}/*调整走时间*/void time_adj(){if(P3_5==0)delay(1);if(P3_5==0)hour++;if(hour==24)hour=0;for(m=0;m&30;m++){dirve();if(P3_2==0)P1_7=0;else P1_7=1;delay(1);}if(P3_7==0)delay(1);if(P3_7==0)min++;if(min==60)min=0;for(m=0;m&30;m++){dirve();if(P3_2==0)P1_7=0;else P1_7=1;delay(1);}}/*调整闹时间*/void time1_adj(){if(P3_5==0)delay(1);if(P3_5==0)t_hour++;if(t_hour==24)t_hour=0;for(m=0;m&30;m++){t_dirve();}if(P3_7==0)delay(1);if(P3_7==0)t_min++;if(t_min==60)t_min=0;for(m=0;m&30;m++){t_dirve();}}/*时、分、秒单元及走时单元转换*/void conv(){if(deda&=100)d_05s=0;else d_05s=1;if(deda&=200){sec++;deda=0;}if(sec==60){min++;sec=0;}if(min==60){hour++;min=0;}if(hour==24){hour=0;}}/*走时间输出驱动子函数*/void dirve(){P1=DATA_7SEG[hour/10];P3=0xf7;delay(1);P1=DATA_7SEG[hour%10];P3=0delay(1);if(d_05s==1){if(P3_2==0)P1_7=0;else P1_7=1;}delay(1);P1=DATA_7SEG[min/10];P3=0delay(1);if(o_f==1){if(P3_1==0)P1_7=0;else P1_7=1;delay(1);}P1=DATA_7SEG[min%10];P3=0delay(1);}/*闹时间输出驱动子函数*/void t_dirve(){P1=DATA_7SEG[t_hour/10];P3=0xf7;delay(1);if(P3_3==0)P1_7=0;else P1_7=1;delay(1);P1=DATA_7SEG[t_hour%10];P3=0delay(1);P1=DATA_7SEG[t_min/10];P3=0delay(1);P1=DATA_7SEG[t_min%10];P3=0delay(1);}/*判别闹时到否子函数*/void p_out(){if(o_f==1){if(t_hour==hour){if(t_min==min)if(P3_0==0){P1_7=0;delay(1);}else P1_7=1;}}}/*主函数*/void main(){init_timer(); /*定时器T0初始化*/while(1) /*无限循环*/{if(P3_4==0)scan_key(); /*有按键,调用按键扫描子函数*/switch(set) /*根据set键值散转*/{case 0:time(); /*走时间程序*/case 1:time1_adj(); /*闹时间调整*/case 2:time_adj(); /*走时间调整*/case 3:time1_of(); /*启/停闹时*/default: /*其它退出*/}if(flag!=0x55) /*判断掉电标志*/{for(m=0;m&100;m++) /*点亮四个8字400mS*/{P1=0x80;P3=0xf7;delay(1);P1=0x80;P3=0delay(1);P1=0x80;P3=0delay(1);P1=0x80;P3=0delay(1);}P1=0P3=0delay(400); /*熄灭四个8字400mS*/}}}&&&&在此表示感谢了。原作者程序上电是 888闪烁,我把这两行P1=0x80;P3=0xf7;delay(1);P1=0x80;P3=0delay(1);&&改为:P1=0x7f;P3=0delay(1);P1=0x7f;P3=0delay(1);上电是下图状态: 设置后,时间还是不走,[ 此帖被yhj-01-16 14:18重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:847219
在线时间907小时
M币1542专家5
硬件电路上加个反相IC即可!要看你是多少路的了。
UID:1025991
在线时间253小时
M币3743专家0
既然人家都是设计成共阳,为何不直接换成共阳呢?
UID:1164225
在线时间8611小时
M币156259专家350
char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};/*0~9的数码管段码*/把这个改成共阳就行了。在程序里没有看到段位驱动。
UID:1499815
在线时间1653小时
M币1472专家7
回楼上,手里只有共阴的数码管 加反像IC,手里也没有 就是下图,改上拉电阻驱动共阴的
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:1499815
在线时间1653小时
M币1472专家7
回 温力口 的帖子
:char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};/*0~9的数码管段码*/把这个改成共阳就行了。在程序里没有看到段位驱动。 也是改了这里,时间秒闪动,但时间不走 ;另请问&&哪个是设置秒闪的? 想在加一个秒闪点
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:238997
在线时间146小时
M币348专家10
只需将代码做点修改
UID:1499815
在线时间1653小时
M币1472专家7
回 温力口 的帖子
:char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};/*0~9的数码管段码*/把这个改成共阳就行了。在程序里没有看到段位驱动。 像红色的都不用改吗?
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:1164225
在线时间8611小时
M币156259专家350
回 yhj9282 的帖子
:也是改了这里,时间秒闪动,但时间不走 ;另请问哪个是设置秒闪的? 想在加一个秒闪点[图片]( 13:54)嬀/color]P3_4按够4下没有?
UID:1499815
在线时间1653小时
M币1472专家7
回 温力口 的帖子
:P3_4按够4下没有? ( 14:14) 按够了,切换到小数点显示,感觉小点显示比较快,改动上电显示2处,是正常的88显示,可能涉及到的地址都要改吧?
访问内容超出本站范围,不能确定是否安全
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
您目前还是游客,请
&回复后跳转到最后一页
Code by , Time now is:05-13 06:00, Total 0.143669(s) query 9,
Gzip enabled&

我要回帖

更多关于 单片机电子时钟设计 的文章

 

随机推荐