资讯详情

51单片机可调时钟

1.元件清单 1.STC89C52单片机一块,直插DIP-40插座 2.三七段共阳数码管LG3631BH型号两块 3.12M晶振一枚 一个蜂鸣器 5.S85501PNP三极管一个 6.9脚排阻10K一个 7.1k电阻两个 8.6脚自开关3,4脚按钮开关3 9.2个3V纽扣电池及其电池座两个 10.发光二极管1支 11.瓷片电容30pf两片 12.芯片74HC245两片 2.电路图 file:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-3244.png Proteus仿真图 3.实物图 file:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-29706.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-32753.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-5034.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-31203.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-19450.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-19622.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-5693.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-1365.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-2150.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-12882.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-28323.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-20768.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-21068.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-18446.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-24933.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-12860.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-783.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-14528.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-2202.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-18933.png file:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-10267.pngfile:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-18488.png file:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-5291.png 手工焊接实物图 4.操作说明 如上图所示,按下电源开关后,电源指示灯亮起,数字管从00.00.00开始行走秒显示;按下单片机右侧上方的自锁开关,时钟进入时间校准状态。通过设置第一个按钮开关,中间按钮开关调整相应部分,右按钮开关调整相应部分,设置后按下自锁开关,回到正常工作状态;同样,按下自锁开关,时钟进入时间校准状态。 5.基本原理 电子时钟项目设计对单片机定时器0的初始值,使其初始值对应50ms,定时器0的中断次数达到20次,酒钢为1s,当第二部分计数为60时零,并进入第一部分;当分数计数为60时零,并进入第一部分,当部分计数为24时零,以满足时钟的正常工作。 本次设计设置5个键依次对其进行时间校准设置、定时设置、秒分时切换、加1调整、减1调整。按下时间校准设置键并关闭T0定时器和时钟停止工作。此时,数字管显示当前时间校准设置的界面。设置后,打开T0定时器,时钟继续在设定的时刻工作;当按下定时设置键时,将当前时刻赋予定时前的时分秒变量,并将数字管显示切换到定时设置界面进行设置(时钟仍在正常工作,只是在定期设置时显示),当设置时,记住定期时间,数字管显示恢复到正常工作界面;当正常工作时钟到达预定时间时,蜂鸣器发出警报。 6.组件介绍 我相信你知道上面所有的组件,所以我不会重复。主要是74HC245芯片, 总线收发器(bus transceiver),典型的CMOS三态缓冲门电路。 因为单片机或CPU数据/地址/控制总线端口具有一定的负载能力。如果负载超过其负载能力,通常应添加驱动器。此外,74HC744等其他电路HC244比74HC245多了锁存器。 file:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-21407.png 74HC245实物图: file:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-27079.png 引脚定义: 第1脚DIR,转换输入输出端口,DIR=1高电平时信号A”端输入“B”端输出,DIR=0低电平时信号B”端输入“A”端输出。 第2~9脚“A信号输入输出端,A0=B0、、、A7=B7,A0与B如果DIR=“1”OE=“0”则A1输入B1输出,其他类似。DIR=“0”OE=“0”则B1输入A输出,其他类似。 第11~18脚“B信号输入输出端,功能与A端子一样,不再描述。 第19脚OE,使能端,若该脚为“1”A/B端信号不会导通,只有在0时A/B端才被启用,脚也起到了开关的作用。 第10脚GND,电源地。 第20脚VCC,电源正极。 TRUTH TABLE真值表 file:///C:\Users\TSUI\AppData\Local\Temp\ksohtml\wps_clip_image-11896.png H=高电平 L=低电平 ×=不定 Absolute Maximum Ratings绝对最大额定值 Supply Voltage电源电压(VCC) -0.5 to -7.0V DC Input Voltage DIR and G pins (VIN) 直流输入电压方向和G引脚(输入电压) -1.5 to VCC -1.5V DC Input/Output Voltage (VIN, VOUT)直流输入/输出电压 -0.5 to VCC -0.5V Clamp Diode Current 钳位二极管电流(ICD) ±20 mA DC Output Current每个引脚(输出)直流输出电流 ±35 mA DC VCC or GND Current, per pin (ICC) ±70 mA Storage Temperature Range 储存温度范围(TSTG) -65℃ to -150℃ Power Dissipation (PD)功耗 (Note 3) 600 mW S.O. Package only 500 mW Lead Temperature (TL) (Soldering 10 seconds) 260℃ 74HC245功能:放大信号功率。 第1脚DIR,转换输入输出端口, DIR=1高电平时信号A”端输入“B”端输出, DIR=0低电平时信号B”端输入“A”端输出。第2~9脚“A信号输入输出端,A1=B1﹑﹑﹑﹑﹑﹑A8=B8,A1与B如果是一组 DIR=“1”G=“0”则A1输入B输出,其他类似。如果DIR=“0”G=“0”则B1输入A输出,其他类似。 第11~18脚“B信号输入输出端,功能与A端一样,不描述。第19脚G,使能端,如果脚是1A/B端信号不会导通,只有在0时A/B 端才启用,脚也起到了开关的作用 第10脚GND,电源地。第20脚VCC,电源正极。 7.程序代码 / 东方智达技术www.east027.com 淘宝店铺http://east027.taobao.com 具有闹钟功能的电子时钟程序设计,晶振为11.0592M /

include

define uchar unsigned char

define uint unsigned int

sbit s1=P2^0; //数码管位选控制端 sbit s2=P2^1; sbit s3=P2^2; sbit s4=P2^3; sbit s5=P2^4; sbit s6=P2^5; sbit s7=P2^6; /*k1设置时间,k2定时。k1,k2使用不自动弹起按键。 k3时分秒选择,k4加数字,k5减数字。*/ sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; sbit k5=P1^4; uchar count=0,sec,min,hour,ss=0;s=60,m=60,h=24; uchar code mum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管0-9编码 void delayms(uint k) //延时函数 { uint i,j; for(i=k;i>0;i–) for(j=110;j>0;j–); } /通过count获得hour,min,sec变量值 / void timecontrol() { sec++; if(sec==60) { sec=0; min++; if(min==60) { min=0; hour++; if(hour==24) hour=0; } } } void display(uchar zs,uchar zm, uchar zh) //数码管显示函数 { s1=1; P0=mum[zh/10]; delayms(5); s1=0;

s2=1; P0=mum[zh%10]&0x7f; // 时的个位加上小数点 delayms(5); s2=0;

s3=1; P0=mum[zm/10]; delayms(5); s3=0;

s4=1; P0=mum[zm%10]&0x7f; //分的个位加上小数点 delayms(5); s4=0;

s5=1; P0=mum[zs/10]; delayms(5); s5=0;

s6=1; P0=mum[zs%10]; delayms(5); s6=0; } void keyscan_settime() //时间设置模块 { uchar st,mt,ht; if(k1==0) { delayms(10); if(k1==0) { st=sec,mt=min,ht=hour; TR0=0; //关闭定时器 while(k1==0) //等待用户按键 { display(st,mt,ht); if(k3==0) { delayms(10); if(k3==0) { while(!k3); ss++; if(ss==3) ss=0; } } /通过ss选择时分秒设置/ if(k4==0) //加数 { delayms(10); if(k4==0) { while(!k4); switch(ss) { case 0:st++;if(st==60)st=0;break; case 1:mt++;if(mt==60)mt=0;break; case 2:ht++;if(ht==24)ht=0;break; default :; } } } if(k5==0) //减数 { delayms(10); if(k5==0) { while(!k5); switch(ss) { case 0:if(st>0)st–; else st=0;break; case 1:if(mt>0)mt–; else mt=0;break; case 2:if(ht>0)ht–; else ht=0;break; default : ; } } } } TR0=1; sec=st,min=mt,hour=ht; } } display(sec,min,hour); } void keyscan_time() //用户定时模块 { if(k2==0) { delayms(10); if(k2==0) { s=sec;m=min;h=hour; while(k2==0) //开始定时设置 { display(s,m,h); if(k3==0) { delayms(10); if(k3==0) { while(!k3); ss++; if(ss==3) ss=0; } } /通过ss选择时分秒设置/ if(k4==0) //加数 { delayms(10); if(k4==0) { while(!k4); switch(ss) { case 0:s++;if(s==60)s=0;break; case 1:m++;if(m==60)m=0;break; case 2:h++;if(h==24)h=0;break; default :; } } } if(k5==0) //减数 { delayms(10); if(k5==0) { while(!k5); switch(ss) { case 0:if(s>0)s–; else s=0;break; case 1:if(m>0)m–; else m=0;break; case 2:if(h>0)h–; else h=0;break; default : ; } } } } } } } void buz() { if((hour==h)&&(min==m)&&(sec==s)) { s7=0; delayms(20); s7=1; } } void main() { TMOD=0x01; //定时器0工作在方式1 TH0=(65536-45872)/256; //装初值,50ms TL0=(65536-45872)%256; EA=1; //总中断允许 ET0=1; //T0中断允许 TR0=1; //开定时器0 while(1) { keyscan_settime(); keyscan_time(); buz(); } } void T0_ms() interrupt 1 //中断入口程序 { TH0=(65536-45872)/256; //重新装初值 TL0=(65536-45872)%256; count++; if(count==20) //判定1s时间是否已到 { count=0; timecontrol(); } }

标签: 直插三极管h669hc直插三极管ht7133a

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台