电子钟四位数码管电路原理图
基于51单片机的4位数码管电子钟
![基于51单片机的4位数码管电子钟](https://img.taocdn.com/s3/m/26d0c5feaef8941ea76e05d8.png)
原理图附:源程序/***************************************************************************标题:定时器中断 24小时时钟程序效果:数码管显示24小时制时钟(具有调时功能)说明:使用12M晶振,key1=P3^7; key2=P3^6; key3=P3^5; key4=P3^4;数码管位选P1.0~P1.3 ,段选P0,共阳数码管******************************************************************************/ #include<reg52.h>#define uchar unsigned char;#define uint unsigned int;uchar position;uchar tt;uchar second;uchar minute;uchar hour;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0--9sbit smg_q = P1^0; //数码管千位引脚sbit smg_b = P1^1;sbit smg_s = P1^2;sbit smg_g = P1^3;sbit key1=P3^7; //按键定义sbit key2=P3^6;sbit key3=P3^5;sbit key4=P3^4;void keyscan(); //函数声明void display(unsigned char hour,unsigned char minute);void delay(unsigned int timer);void init();/***********************************************************主函数***********************************************************/ void main(){init();while(1){if(tt==20){tt=0;second++;if(second==60){second=0;minute++;if(minute==60){minute=0;hour++;if(hour==24)hour=0;}}}keyscan();display(hour,minute);delay(1);}}/***********************************************************调时***********************************************************/ void keyscan(){if(key1==0) //小时加1{TR0=0;hour++;if(hour==24)hour=0;delay(200) ;TR0=1;}if(key2==0) // 小时减{TR0=0;hour--;if(hour<0)hour=23;delay(200) ;TR0=1;}if(key3==0) // 分钟加{TR0=0;minute++;if(minute==60)minute=0;delay(200) ;TR0=1;}if(key4==0) // 分钟减{TR0=0;minute--;if(minute<0)minute=59;delay(200) ;TR0=1;}}/***********************************************************初始化***********************************************************/ void init(){tt=0;position=0;second=0;minute=0;hour=0;smg_q=1;smg_b=1;smg_s=1;smg_g=1;key1=1;key2=1;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}/***********************************************************定时器TO中断***********************************************************/ void t0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;}/***********************************************************显示***********************************************************/void display(unsigned char hour,unsigned char minute){P0=0XFF;switch(position){case 0:smg_g=1;smg_q=0;P0=table[hour/10];break;case 1:smg_q=1;smg_b=0;P0=table[hour%10];if(tt>=10)P0&=0x7f; //小数点以半秒的时间闪烁break;case 2:smg_b=1;smg_s=0;P0=table[minute/10];break;case 3:smg_s=1;smg_g=0;P0=table[minute%10];break;}position++;if(position>3)position=0;}/***********************************************************延时***********************************************************/ void delay(unsigned int time){unsigned int x,y;for(x=time;x>0;x--)for(y=110;y>0;y--);}。
电子钟四位数码管电路原理图
![电子钟四位数码管电路原理图](https://img.taocdn.com/s3/m/3b416eb469dc5022aaea00ba.png)
程序:#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchart,s=0,m=11,h=0,qian=0,bai=0,shi=0,ge=0,s0=0,m0=0,h0=0,qian0=0,bai0=0,shi0=0,ge0=0,n1=0; sbit key1=P1^0; //功能sbit key2=P1^1; //加一sbit key3=P1^2; //减一sbit key4=P1^3; //查看秒数bit mm=0;sbit beep=P2^3;uint a;void delay_1ms(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void delay(uint i){uint j;for(;i>0;i--)for(j>19;j>0;j--);}/*void clock(){for(a=0;a<=50;a++){beep=1;delay_1ms(200);beep=0;delay_1ms(200);}}*/void timer () interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==20){s++;t=0;if(s==60){m++;s=0;if(m==60){h++;m=0;if(h==24)h=0;}}}}void display(uchar h,uchar m,uchar s) {qian=h/10;bai=h%10;shi=m/10;ge=m%10;P0=num[qian];P2=0xef;delay_1ms(2);P0=0xff;P0=num[bai];P2=0xdf;delay_1ms(2);P0=0xff;P0=num[shi];P2=0xbf;delay_1ms(2);P0=0xff;P0=num[ge];P2=0x7f;delay_1ms(2);P0=0xff;}void display0(uchar h0,uchar m0,uchar s0) {qian0=h0/10;bai0=h0%10;shi0=m0/10;ge0=m0%10;P0=num[qian0];P2=0xef;delay_1ms(2);P0=0xff;P0=num[bai0];P2=0xdf;delay_1ms(2);P0=0xff;P0=num[shi0];P2=0xbf;delay_1ms(2);P0=0xff;P0=num[ge0];P2=0x7f;delay_1ms(2);P0=0xff;}void keyscan()//按键扫描{if(key4==0)mm=!mm;while(!key4)display(m,s,0);if(key1==0){mm=0;delay(20);//消抖if(key1==0) //功能选择{TR0=0;n1++;while(!key1)display(h,m,s);if(n1==7){TR0=1;n1=0;}}}if(n1!=0){if(n1==1){if(key2==0) //调时{ //加delay(20);if(key2==0){h++;if(h==24)h=0;}while(!key2)display(h,m,s);}else if(key3==0) //减{delay(20);if(key3==0){if(h==0)h--;}while(!key3)display(h,m,s);}}if(n1==2){if(key2==0) //调分{delay(20);if(key2==0){m++;if(m==60)m=0;}while(!key2)display(h,m,s);}else if(key3==0){delay(20);if(key3==0){if(m==0)m=60;m--;}while(!key3)display(h,m,s);}}if(n1==3){if(key2==0) //调秒{delay(20);if(key2==0){s++;if(s==60)}while(!key2)display(m,s,0);}else if(key3==0){delay(20);if(key3==0){if(s==0)s=60;s--;}while(!key3)display(m,s,0);}}if(n1==4){if(key2==0) //调闹钟时{ //加delay(20);if(key2==0){h0++;if(h0==24)h0=0;}while(!key2)display0(h0,m0,s0);}else if(key3==0) //减{delay(20);if(key3==0){if(h0==0)h0=24;h0--;}while(!key3)display0(h0,m0,s0);}display0(h0,m0,s0);}if(n1==5){if(key2==0) //调闹钟分{delay(20);if(key2==0){m0++;if(m0==60)m0=0;}while(!key2)display0(h0,m0,s0);}else if(key3==0){delay(20);if(key3==0){if(m0==0)m0=60;m0--;}while(!key3)display0(h0,m0,s0);}display0(h0,m0,s0);}if(n1==6){if(key2==0) //调闹钟秒{delay(20);if(key2==0){s0++;if(s0==60)s0=0;}while(!key2)display0(m0,s0,0);}else if(key3==0){delay(20);if(key3==0){if(s0==0)s0=60;s0--;}while(!key3)display0(m0,s0,0);}display0(m0,s0,0);}}}void main(){TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1; //打开总中断ET0=1;//打开定时器中断TR0=1;//启动定时器0while(1){keyscan();if(n1==7 || mm)display(m,s,0);elsedisplay(h,m,s);if((h==h0)&&(m==m0)&&(s==s0)){TR0=1;//clock();for(a=0;a<=145;a++){beep=1;delay_1ms(200);beep=0;delay_1ms(200);display(m,s,0);}display(h,m,s);}}}。
四位数码管工作原理
![四位数码管工作原理](https://img.taocdn.com/s3/m/1d2c0b3703020740be1e650e52ea551810a6c915.png)
四位数码管工作原理
四位数码管是一种常见的显示装置,用于显示数字和一些字母。
它由四个七段数码管组成,每个数码管有七个段和一个小数点,通过控制这些段的亮灭来显示不同的数字或字母。
工作原理如下:
1. 位选:四位数码管的显示是通过位选的方式进行的。
在每个时间段,只有一个数码管被选中,其余的数码管处于关闭状态。
通过快速轮流选择每个数码管,形成了连续的显示效果。
2. 共阳极和共阴极:四位数码管有两种类型:共阳极(共正极)和共阴极(共负极)。
在共阳极数码管中,共阳极连接到电源正极,而在共阴极数码管中,共阴极连接到电源负极。
不同类型的数码管需要采用相应的电路驱动方法。
3. 控制信号:为了控制每个数码管的亮灭,需要提供适当的控制信号。
通常,使用微控制器或专用的驱动芯片来产生这些信号。
通过设置控制信号的高低电平和时序,可以实现数码管的显示和刷新。
4. 位选扫描:在每个时间段,控制信号选择一个数码管进行显示,并通过控制对应的段点亮灭来显示相应的数字或字母。
通过快速地轮流切换位选信号,每个数码管都能够被依次选中并显示需要的内容。
通过合理的控制位选信号和段选信号,可以实现多个数码管的同时显示,以显示更复杂的数字、字母和符号。
需要注意的是,具体的四位数码管的工作原理可能会有所不同,取决于使用的具体型号和电路设计。
因此,在实际应用中,应根据具体的电路和芯片规格来了解和使用相应的工作原理。
1/ 1。
四位时钟设计方案
![四位时钟设计方案](https://img.taocdn.com/s3/m/f48e64b2c77da26925c5b053.png)
目录一.前言二.设计任务1.设计题目:4位数字时钟设计2.技术指标及设计要求3.给定条件及器件三.设计方案与实现1.硬件设计2.相关器件介绍3.数码管介绍4.数码管的驱动方式5.电路设计电路原理图如下,采用AT89C2051单片机制作,使用3~6V直流电源。
S1为复位按键,S2调时,S3调分;注意:1安装前检查元件,2元件安装极性和引脚方向。
此外J1 和J2是两根“飞线”,请先用电阻剪角焊接,然后焊接数码管。
四、总结五、附录元件清单六、参考文献一、前言当前,电子技术已经广泛应用于社会生活中,电子技术俨然成为了我们日常生活的必备技术,无论计算机、电视机、洗衣机还是手机、MP3播放器都不能缺少电子技术的支持。
电子技术综合课程设计是集电路分析、模拟电子技术、数字电子技术以及电路实验、模拟电子技术实验、数字电子技术实验等课程之后的一门理论与实践相结合的综合设计性课程。
作为电子信息领域的一员,无疑电子技术对我们的专业课学习至关重要,通过对《数字电子技术基础》、《模拟电子技术基础》等课程的学习,经过不懈的探讨努力,最终完成设计任务制作。
本次课程设计我们将设计一个四位数字时钟。
本系统采用以A T89C2051为主控芯片,实现电子时钟的设计并考虑节约系统的硬件,而且达到时钟功能为24小时的设计方式,显示时、分;具有快速校准时、分的功能,实现时间的调整,然后输出四位的显示器显示出来。
二、设计任务1、题目:4位数字时钟的设计2、技术指标及设计要求(1)显示小时、分钟时间(2)实现秒的量化显示(3)具有调整时间功能(4)手动复位显示功能3、综合条件及器件(1)单片机及相关外围器件(2)直流稳压电源4V(3)万用电路板(4)4联共阳数码管4、器件介绍1)数码管介绍数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
数字钟计时电路的电类实验原理图和电路图
![数字钟计时电路的电类实验原理图和电路图](https://img.taocdn.com/s3/m/cb3f28323c1ec5da50e2709c.png)
页眉内容
实验1 多功能计时电路的设计——数字钟
1.实验原理及框图
图1.1三位计时器示意图
计时电路示意图如图1.1所示,计时电路完成计时功能,并且将计时结果传送至显示电路,进而实现显示功能。
原理框图如图1.2所示,主要由计时电路,秒信号发生电路,清零电路和译码显示电路组成。
计时电路在秒信号的作用下,产生0:00~9:59的循环计时,清零电路控制计时电路的清零端,实现时钟的清零,最终将计时电路的输出送至译码显示电路,实现时钟的显示。
图1.2数字钟的原理框图
精心整理。
四位电子钟电路和汇编源程序
![四位电子钟电路和汇编源程序](https://img.taocdn.com/s3/m/3cf476f576a20029bd642d99.png)
RS T1P3.0(R XD)2P3.1(TXD)3XTAL24XTAL15P3.2(INT0)6P3.3(INT1)7P3.4(T0)8P3.5(T1)9GND 10P3.711P1.012P1.113P1.214P1.315P1.416P1.517P1.618P1.719VC C 20IC1AT89C 2051JTC130P C230PR110KVC CAN 2AN 1R2R3R4R5R6R7R8R9A 1B 2C 3D 4E 5F 6G 7DP8P19P210P311P4128.8.8.8.LEDDPY_7_SEGAVC CR10 4.7K R13 4.7KR11 4.7K R12 4.7K Q18550Q28550Q38550Q4855012JXZ CON2C5104C4470UF VC CC310UFA FB GC DPDE A B C D EFG DP 四位电子钟设计与制作电路原理图:此作品为四位电子钟,主要由单片机编程实现其功能,所以分有两部分一个硬件,一个是软件,硬件方面的电路图如上图,单片机采用ATMEL 公司生产的芯片AT89C2051里面有2K 字节的可反复擦写的Flash 程序存储器和128字节的随机存取数据存储器。
显示部分为0.56共阳极四位数码管,在电路中P1口输出段码数据送入四位数码管,P3口做扫描控制,控制数码管的显示。
Q1、Q2、Q3为8550三极管,信号经过放大送入P1、P2、P3、P4也就是数码管显示部分,AN1调整小时,AN2为调整分钟它们都接10脚然后接地.10脚接地,20脚接正电源,它们由3-6V 电源供电,可以用两节1.5V 的电池供电,也可以接USB 接口5V 供电.软件方面,程序里先定义两个中断定时器T0和T1,一个作为秒记数用,另一个作为调整时闪烁用,编程时先将P1和P3口数据清零,然后P1和P3作为动态扫描显示,由于人的眼睛有延迟性,当扫描频率非常高时人就感觉数码管一直亮着,而同时计数器在遵循时间的变化方式执行着分到了60分钟加1,时间为24小时制,就是到了24小时后自动为00:00. 元件清单:名称 型号 数量 单片机 AT89C2051 1 数码管 0.56四位共阳极 1三极管8550 4电阻4.7K 4 10K 1 220 8电容30PF 2 10uf 1 104 1石英晶体振荡器12M 1 电子钟源程序(汇编):MIAO BIT P2.0 ;秒点位HOU_S BIT P3.0 ;时十位HOU_G BIT P3.1 ;时个位MIN_S BIT P3.2 ;分十位MIN_G BIT P3.3 ;分个位H_KEY BIT P3.4 ;时调整键M_KEY BIT P3.5 ;分调整键SHAN BIT 0 ;秒点闪烁LEDBUS EQU P1 ;显示数据总线SECOND EQU 30H ;秒寄存器MINUTE EQU 31H ;分寄存器HOUR EQU 32H ;时寄存器TIM_1 EQU 33H ;定时器0中断次数TIM_2 EQU 34H ;定时器0中断次数;********************************ORG 0000H ;程序开始LJMP INITORG 000BH ;定时器0中断入口地址LJMP TIMER0ORG 0030H ;程序从30H开始;********************************; 单片机初始化INIT:MOV SECOND, #0 ;秒置0MOV MINUTE, #0 ;分置0MOV HOUR, #0 ;开机后显示0点MOV TIM_1, #10 ;中断10次为0.5秒MOV TIM_2, #2 ;0.5*2=1秒MOV SP, #60H ;堆栈指针指向60HMOV TMOD, #01H ;定时器0为模式1(16位)MOV TH0, #03CHMOV TL0, #0B0H ;50毫秒初值(晶振12M)SETB ET0 ;定时器0中断允许SETB TR0 ;启动定时器0SETB EA ;开总中断;********************************; 主程序MAIN:JNB H_KEY, HT ;时调整键按下转到HTJNB M_KEY, MT ;分调整键按下转到MTACALL DISP ;调用显示子程序AJMP MAIN ;转LOOP继续检测按键状态;********************************; 时间调整;----- 分调整 -----------------MT: ACALL DISP ;调用显示子程序JNB M_KEY, MT ;判断按键是否松开INC MINUTE ;分加一MOV A, MINUTECJNE A,#60, MAIN ;判断分是否加到60MOV MINUTE, #0 ;分到60变为0MOV SECOND, #0 ;秒置0AJMP MAIN;----- 时调整 -----------------HT: ACALL DISP ;调用显示子程序JNB H_KEY, HT ;判断按键是否松开INC HOUR ;时加1MOV A, HOURCJNE A,#24, MAINMOV HOUR, #0 ;判断时是否到24,时到24变0 AJMP MAIN;********************************; 显示子程序DISP:MOV DPTR, #LEDTAB ;数码管段码表首地址送DPTR MOV A, MINUTE ;分放入ACCMOV B, #10 ;B放入10DIV AB ;A/B,商在A余数在BMOVC A, @A+DPTR ;查表取分十位段码MOV LEDBUS, A ;段码送LEDBUS口显示MOV C, SHANMOV MIAO, C ;秒点闪烁CLR MIN_S ;打开分十位显示ACALL D1MS ;延时1毫秒SETB MIN_S ;关闭分十位显示MOV A, BMOVC A, @A+DPTR ;查表取分个位段码MOV LEDBUS, AMOV C, SHANMOV MIAO, C ;秒点闪烁CLR MIN_G ;打开分个位显示ACALL D1MS ;延时1毫秒SETB MIN_G ;关闭分十位显示MOV A, HOURMOV B, #10DIV AB ;拆分小时的十位和个位JZ DISP0 ;十位为0不显示十位MOVC A, @A+DPTRMOV LEDBUS, ACLR HOU_S ;打开时十位显示DISP0:ACALL D1MSSETB HOU_S ;关闭时十位显示MOV A, BMOVC A, @A+DPTRMOV LEDBUS, ACLR HOU_G ;打开时个位显示ACALL D1MSSETB HOU_G ;关闭时个位显示RET;********************************; 定时器0中断服务程序TIMER0:MOV A, #0B1H ;定时器0中断服务子程序ADD A, TL0 ;同步修正(参考本人的<如何是自制的单片机电子钟走时精准>)MOV TL0, AMOV TH0, #03CH ;重装定时器0初值PUSH ACC ;入栈保护ACC和PSWPUSH PSWDJNZ TIM_1, RETI_1MOV TIM_1, #10 ;中断10次为0.5秒CPL SHAN ;取反闪烁位DJNZ TIM_2, RETI_1MOV TIM_2, #2 ;1秒时间到INC SECOND ;秒加1MOV A, SECONDCJNE A,#60, RETI_1MOV SECOND, #0 ;秒到60变0INC MINUTE ;分加1MOV A, MINUTECJNE A,#60, RETI_1MOV MINUTE, #0 ;分到60变0INC HOUR ;时加1MOV A, HOURCJNE A,#24, RETI_1MOV HOUR, #0 ;时到24变0RETI_1: POP PSW ;出栈POP ACCRETI;********************************; 延时子程序D1MS: MOV R7, #2 ;延时1毫秒子程序D_1: MOV R6, #250 ;延时时间估算250*2*2=1000微秒=1毫秒DJNZ R6, $DJNZ R7, D_1RET;********************************; 数码管段码表LEDTAB:DB 14H,0D7H,4CH,45H,87H; 0 1 2 3 4DB 25H,024H,57H,04H,05H; 5 6 7 8 9END。
第一讲 电子钟的组成及工作原理
![第一讲 电子钟的组成及工作原理](https://img.taocdn.com/s3/m/222920e229ea81c758f5f61fb7360b4c2e3f2ab4.png)
多功能大尺寸LED 时钟显示屏的设计与制作LED 数码管时钟显示屏的组成及工作原理一、时钟显示屏的组成数码管时钟显示屏的组成电路如图所示:由电源电路,单片机最小系统,时钟电路,键盘电路,数码管驱动显示电路,温湿度检测电路,红外接收电路,光亮度检测电路,语音报时电路、电器控制电路,通讯电路等组成。
图3-1 多功能时钟显示屏的组成框图二、时钟显示屏的工作原理时钟显示屏以单片机为核心完成对时钟芯片DS1302管理和数码管的驱动显示控制。
数码管采用静态显示方式,由多片串入并出芯片74HC595(功能等同74HC164)级联的方式进行驱动。
通过温湿度传感器实现温湿度的检测,红外接收电路完成无线调表和多种定时等时钟功能的设置,用按键也可实现时钟调整等以及各种时钟功能的设定。
光亮传感器可以监测环境明暗,实时调整数码管的显示亮度。
语音报时电路实现语音报时,电器控制电路可实现家用电器的定时控制或者上课打铃的控制等,通讯电路可进行有线、无线通讯、控制等。
单片机最小系统数码管红外接收电路键盘电路温湿度传感器光亮检测电路驱动电路语音报时电路通讯电路电器控制电路扩展接口时钟电路功能与特点一、功能:1、年、月、日、时、分、秒、星期;2、温度、湿度检测与显示;3、农历日期的显示;4、手动按键调表;5、红外遥控器调表;6、预留光亮度检测及显示亮度的自动调整;7、预留继电器控制(10A,可实现定时打铃、家电定时控制等);8、预留语音报时和音乐报时功能;9、预留RS232和485串行通讯接口,实现与微机通讯或者远程通讯;10、预留蜂鸣器提示音功能;11、预留无线通讯接口,可实现无线通讯;12、预留I/O接口,方便今后功能扩展。
13、电源保护电路,防止电源反接烧坏路线板元件;二、特点:1、大尺寸,由1.5~2.3寸数码管显示;2、农历、星期能尾随日期变化自动调整;3、采用时钟芯片和备用电池,走时准确,断电不影响计时;4、静态显示工作模式,延长时钟显示屏使用寿命;5、采用新型单片机功能更强、速度更快;6、硬件设计功能丰富;7、可实现数码管显示亮度随环境明暗自动调节,人性化设计,使用舒适;8、可实现多种显示模式,以实现节能目的;9、软件开辟可实现多种扩展功能;10、插接件接口设计,便于组装、维护。
四位数码管工作原理 stm32
![四位数码管工作原理 stm32](https://img.taocdn.com/s3/m/3c1902722a160b4e767f5acfa1c7aa00b52a9dd7.png)
四位数码管工作原理 stm32STM32是一款高性能的微控制器,广泛应用于各种嵌入式系统中。
在嵌入式系统中,常常需要使用数码管来显示数字或字符信息。
本文将介绍数码管的工作原理,并结合STM32微控制器,探讨如何使用STM32驱动数码管。
数码管是一种能够显示数字或字符的电子显示器件。
它由多个发光二极管(LED)组成,每个LED可以独立控制发光与否。
根据LED 的排列方式和控制方式的不同,常见的数码管有共阳数码管和共阴数码管。
共阳数码管是指在数码管的每个LED的阳极都连接在一起,并与正极相连,而每个LED的阴极则分别独立连接到控制芯片的输出引脚。
当控制芯片将某个输出引脚的电平拉低时,对应的LED就会点亮。
通过控制不同的输出引脚,可以实现对数码管上各个LED的控制,从而显示不同的数字或字符。
共阴数码管与共阳数码管的原理基本相同,只是阳极和阴极的连接方式相反。
在共阴数码管中,每个LED的阴极都连接在一起,并与负极相连,而每个LED的阳极则分别独立连接到控制芯片的输出引脚。
当控制芯片将某个输出引脚的电平拉高时,对应的LED就会点亮。
在使用STM32驱动数码管时,需要通过控制STM32的输出引脚来控制数码管的LED。
以共阳数码管为例,假设数码管的每个LED分别连接到STM32的P0、P1、P2等输出引脚上。
当需要显示数字0时,将P0、P1、P2等输出引脚的电平拉低,对应的LED就会点亮;当需要显示数字1时,将P1、P2等输出引脚的电平拉低,P0引脚的电平拉高,对应的LED就会点亮,以此类推。
通过依次控制不同的输出引脚,可以实现对数码管的控制,从而显示不同的数字或字符。
为了方便控制数码管,我们可以编写相应的驱动程序。
首先,需要初始化STM32的输出引脚,并设置为输出模式。
然后,根据需要显示的数字或字符,通过控制相应的输出引脚的电平,点亮对应的LED。
为了实现动态显示,可以使用定时器中断来周期性地更新数码管的显示内容。
数字钟原理框图
![数字钟原理框图](https://img.taocdn.com/s3/m/964d39146edb6f1aff001f80.png)
数字钟原理框图
数字钟系统构成
1、数字钟的构成:振荡器、分频器、计数器、译码器、显示器等几部分
2、数字钟的时、分、秒实际上就是由一个24进制计数器(00-23),两个60进制计数器(00-59)级联构成。
设计数字钟实际上就是计数器的级联。
3、60进制计数器的设计
4、24进制计数器的设计
5、计数器的级联设计
(二)、数字钟设计要点:EWB软件本身提供任意频率的时钟,因此振荡器、分频器不需设计;
另外EWB软件也带有内置译码驱动的数码管,故此译码器和显示器也不需设计。
这样,数字钟的设计实际上就是设计如下图的计数器
EWB软件本身提供任意频率的时钟,因此振荡器、分频器不需设计;
另外EWB软件也带有内置译码驱动的数码管,故此译码器和显示器也不需设计。
这样,数字钟的设计实际上就是设计如下图的计数器.
(三)、芯片选型由于24进制、60进制计数器均由集成计数器级联构成,且都包含有基本的十进制计数器,从设计简便考虑,芯片选择同步十进制计数器74LS160。
(四)、计数器电路
计数器级联时的时钟构成方式可以采用同步时钟,也可以采用异步时钟,这里给出的参考图采用了异步时钟,详图见后页。
最全四位七段数码管引脚图、公共脚
![最全四位七段数码管引脚图、公共脚](https://img.taocdn.com/s3/m/1686ff6af5335a8102d220b3.png)
最全四位七段数码管引脚图、公共脚数码管在现在的自动控制中的显示应用极为广泛,由于使用时间的问题会导致缺画的现象发生,为了便于大家更好找到合适的数码管进行更换,特给大家详细介绍《七段数码管实物图》数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定c、使用电流:静态:总电流80mA(每段10mA);动态:平均电流4-5mA 峰值电流100mA 上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的,4位数码管引脚图请在本站搜索我也提供了数码管使用注意事项说明:(1)数码管表面不要用手触摸,不要用手去弄引角;(2)焊接温度:260度;焊接时间:5S(3)表面有保护膜的产品,可以在使用前撕下来。
一种四位双排引脚共阴(阳)脚位图常见的四位双排引脚共阴(阳)脚位图单排四位双排引脚共阴(阳)脚位图国内外生产LED数码管的公司很多,命名方法也各不相同。
下面主要介绍国产LED数码管和立得公司的LED数码管的命名方法,因为市面上这两中型号的数码管销售的最多。
国产LED数码管型号命名方法为:示例:BS12.7R-1表示字高为12.7mm,红色,共阳极数码管。
字串3立得公司的LED数码管的命名方法为:其中,A:极性;B:字高;C:发光颜色;D:位数;E:高效率,红;F:其它。
字串2极性:字串1LA:共阳(单);LC:共阴(单);LD:共阳(双);LE:共阴(双);LN:共阳(加大);LM:共阴(加大)。
发光颜色:1:红色(红底);2:绿色;3:黄色;4:橙色;5:红色;6:红色(高效率)。
位数:1:(单位);2:(双位);3:(三位)上图是字高为0.8英寸的四位共阳极双排12脚数码管,四个公共脚为,6、8、9、12上图是字高为0.52英寸的四位共阳极双排12脚数码管,四个公共脚为2、3、6、10数码管测试方法与数字显示译码表三、测试:同测试普通半导体二极管一样。
任务12 设计及制作4位LED数码管显示电路
![任务12 设计及制作4位LED数码管显示电路](https://img.taocdn.com/s3/m/c1a189ed6294dd88d0d26b7d.png)
4位LED 数码管轮 流显示8 的控制程 序
1 12.1.2 跟我想 4位LED数码管有静态显示和动态显示两种结构。为了减少元器件及连线, 可选用动态显示的4位一体的LED数码管。用单片机的某个I/O口送数码管的显示 段码(字符数据),用另一I/O口的其中4位经过三极管驱动后分别作为4个数码 管的显示控制信号,当三极管导通时候对应的数码管显示。 在动手设计电路之前,让我们先学习有关LED数码管的知识。
任务12 设计及制作4位 任务 设计及制作 位LED数码管显示电路 数码管显示电路
2. 软件程序设计 所设计的程序要实现 动态显示的4位数码管同时 显示“8”字符。根据四位 一体数码管的动态显示原 理,首先从P0口送出显示 字符“8”的数据7FH,然 后通过P2口控制的位选信 号让每位数码管轮流显示, 通过延时子程序控制每位 数码管的显示时间。程序 控制流程图如图12-6所示。
通过工作任务实现教学做一体化在动手实践中学习理论知识在学习理论知识中教学做体化在动手实践中学习理论知识在学习理论知识中动手实践使理论教学与动手实践有机结合
学习情境2 LED数码管显示 数码显示在该情景下,首先制作LED数码管显示电路,并通过3个任务的 学习单片机控制LED数码管显示原理及硬件设计和软件编程的方法;学 习单片机定时计数器及中断控制等相关理论知识。通过工作任务实现 教、学、做一体化,在动手实践中学习理论知识,在学习理论知识中 动手实践,使理论教学与动手实践有机结合。 LED数码管显示模块
任务12 设计及制作4位 任务 设计及制作 位LED数码管显示电路 数码管显示电路
12.1.1 明确工作任务 设计单片机控制的4位LED数码管显示电路,并根据电路图在万用板上完成电 路焊接及根据本任务提供的程序调试电路。 4位LED数码管 显示模块
数字电子钟的制作
![数字电子钟的制作](https://img.taocdn.com/s3/m/c8c970ded15abe23482f4d4a.png)
数字电子钟的制作1 电路原理图数字电子钟的电路原理图如图1.1所示。
图1.1 数字电子钟的电路原理图2 工作原理数字电子钟由多谐振荡器、计数器、显示译码器、显示器和校时电路组成。
多谐振荡器产生秒脉冲信号,秒脉冲送入计数器计数,计数结果通过“时”、“分”、“秒”显示译码器译码,由显示器显示时间。
数字时钟的组成框图如图2.1所示。
图2.1 数字电子钟的组成框图2.1 多谐振荡器与分频电路多谐振荡器与分频电路如图2.2所示。
多谐振荡器是一种能产生矩形波的自激振荡器,也称矩形波发生器。
“多谐”指矩形波中除了基波成分外,还含有丰富的高次谐波成分。
多谐振荡器没有稳态,只有两个暂稳态。
在工作时,电路的状态在这两个暂稳态之间自动地交替变换,由此产生矩形波脉冲信号,常用作脉冲信号源及时序电路中的时钟信号。
数字时钟里用的是555定时器构成的1khz多谐振荡器。
可调电阻Rw可以改变输出信号的频率。
图2.2 多谐振荡器电路与分频电路如图2.2所示图中电容C、电阻R1和R2作为振荡器的定时元件,决定着输出矩形波正、负脉冲的宽度。
定时器的触发输入端(2脚)和阀值输入端(6脚)与电容相连;集电极开路输出端(7脚)接R1、R2相连处,用以控制电容C的充、放电;外界控制输入端(5脚)通过0.01uF电容接地。
电路接通电源的瞬间,由于电容C来不及充电,Vc=0v,所以555定时器状态为1,输出Vo为高电平。
同时,集电极输出端(7脚)对地断开,电源Vcc 对电容C充电,电路进入暂稳态I,此后,电路周而复始地产生周期性的输出脉冲。
多谐振荡器两个暂稳态的维持时间取决于RC充、放电回路的参数。
多谐振荡器与分频电路为计数器提供计数脉冲和为校时电路提供校时脉冲。
多谐振荡器的振荡频率设计为2Hz,R为51KΩ,RW大约为50 KΩ,C为4.7μF。
多谐振荡器产生的2Hz脉冲信号为校时电路的校时脉冲。
2Hz脉冲信号经过CD4013组成的分频器,进行2分频,输出1 Hz的秒脉冲为计数器的计数脉冲。
任务12设计及制作4位LED数码管显示电路(精)
![任务12设计及制作4位LED数码管显示电路(精)](https://img.taocdn.com/s3/m/570d7c5c336c1eb91a375d99.png)
任务12 设计及制作4位任务设计及制作位LED数码管显示电路数码管显示电路• 12.1.4 跟我做• 1 . 硬件电路设计• 单片机控制4位LED数码管显示模块电路原理图如图12-5所示。
• 根据图12-5 LED数码管显示电路模块的原理图,在万能板上完成元器件的焊接。
任务12 设计及制作4位任务设计及制作位LED数码管显示电路数码管显示电路 2. 软件程序设计所设计的程序要实现动态显示的4位数码管同时显示“8”字符。
根据四位一体数码管的动态显示原理,首先从P0口送出显示字符“8”的数据7FH,然后通过P2口控制的位选信号让每位数码管轮流显示,通过延时子程序控制每位数码管的显示时间。
程序控制流程图如图12-6所示。
4位LED 数码管轮流显示8 的控制程序。
常见的一/二/四位数码管引脚图详解
![常见的一/二/四位数码管引脚图详解](https://img.taocdn.com/s3/m/cc1e0056b6360b4c2e3f5727a5e9856a57122664.png)
常见的一/二/四位数码管引脚图详解
数码管是一种可以显示数字和其他信息的电子设备,是显示屏其中一类,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字,然后显示出时间、日期、温度等所有可用数字表示的参数。
通常用在空调、热水器、冰箱等电器中。
那么数码管引脚图是怎样的呢?下面我们就来说说常见的一位、两位和四位的数码管引脚图。
一位数码管引脚图
数码管有两种接法,共阴或共阳,不管哪种,3.8都要短接,如果共阴就再接地,共阳就再接高。
两位数码管引脚图
四位数码管引脚图
其中,1、2、3、4分别是自左至右的4位数码管位置;a、b、c、d、r、f、g、h 分别对应数码管的8段,接单片机I/O口由高位至低位。
四位电子时钟
![四位电子时钟](https://img.taocdn.com/s3/m/85ff27f7941ea76e58fa0410.png)
一、实训任务1、通过实训增强自己找材料,自主学习的能力。
2、通过实训学会焊接,测试电路的基本能力,学会熟练的运用Protues的使用。
3、通过实训锻炼自己并成功的制作四位数字时钟。
4、通过实训学会遇到问题解决问题的方法,能够调整心态,认真找到出错原因。
二、实训条件1、需要工具:电烙铁、万用表、剪刀。
2、需要软件:protues、Viso、电脑。
3、需要材料:集电极电容10uF、陶瓷片电容两个30PF、560k电阻8个、4.7K电阻6个、数码管4个、三极管4个、AT89C2051单片机1个、开关2个、石英晶提体1个。
三、实训要求1.学习掌握各种制作软件,熟练焊接。
2.利用Protues软件画出所设计电路的原理图、PCB板图。
3.撰写实训报告,并进行答辩。
四、实训内容(一)设计的总体思路1.资料查找,根据所要设计的题目查找相关资料,了解其设计原理及个元器件功能,掌握电子产品的设计流程。
2.原理图与 PCB,通过Protues软件制作原理图,若出现无封装库的情况则自行进行封装,建立新的元器件库,进而完成电路的仿真与PCB的制作。
3.焊接,焊接过程应注意电烙铁的温度,将元器件按照大小依次焊接于电路板上,焊接时避免烙铁过长时间的接触元器件,以免烫坏元器件,焊接工艺关系到电路能否顺利调试与运行,因此需耐心对待。
4.调试,调试目的是验证电路各部分的正确性,确定产品功能以及产品应用的可行性,调试时应先静态调试,利用万用表测量电路是否接通,检查元器件是否因焊接不当造成损坏,之后再加相应电压,分级测量各部分电压与电流与理论值是否相符,最后整调检验产品功能。
(二)设计方案1.设计要求1)要求每位成员收集资料,整理资料。
2)了解电路原理图,了解每个电路器件的功能。
3)要求焊接精细,注意串线。
2.设计流程图1 四位数字时钟设计流程图图2 四位数字时钟内部功能流程图图3 加一子程序流程图3. 元器件清单3.设计原理本设计为四位数字时钟,其主控芯片为AT89C2051单片机,使用3-6V直流电源供电。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar
t,s=0,m=11,h=0,qian=0,bai=0,shi=0,ge=0,s0=0,m0=0,h0=0,qian0=0,bai0=0,shi0=0,ge0=0,n1=0; sbit key1=P1^0; //功能
sbit key2=P1^1; //加一
sbit key3=P1^2; //减一
sbit key4=P1^3; //查看秒数
bit mm=0;
sbit beep=P2^3;
uint a;
void delay_1ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay(uint i)
{
uint j;
for(;i>0;i--)
for(j>19;j>0;j--);
}
/*void clock()
{
for(a=0;a<=50;a++)
{
beep=1;
delay_1ms(200);
beep=0;
delay_1ms(200);
}
}*/
void timer () interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
s++;t=0;
if(s==60)
{
m++;s=0;
if(m==60)
{
h++;m=0;
if(h==24)
h=0;
}
}
}
}
void display(uchar h,uchar m,uchar s) {
qian=h/10;
bai=h%10;
shi=m/10;
ge=m%10;
P0=num[qian];
P2=0xef;
delay_1ms(2);
P0=0xff;
P0=num[bai];
P2=0xdf;
delay_1ms(2);
P0=0xff;
P0=num[shi];
P2=0xbf;
delay_1ms(2);
P0=0xff;
P0=num[ge];
P2=0x7f;
delay_1ms(2);
P0=0xff;
}
void display0(uchar h0,uchar m0,uchar s0) {
qian0=h0/10;
bai0=h0%10;
shi0=m0/10;
ge0=m0%10;
P0=num[qian0];
P2=0xef;
delay_1ms(2);
P0=0xff;
P0=num[bai0];
P2=0xdf;
delay_1ms(2);
P0=0xff;
P0=num[shi0];
P2=0xbf;
delay_1ms(2);
P0=0xff;
P0=num[ge0];
P2=0x7f;
delay_1ms(2);
P0=0xff;
}
void keyscan()//按键扫描
{
if(key4==0)
mm=!mm;
while(!key4)
display(m,s,0);
if(key1==0)
{
mm=0;
delay(20);//消抖
if(key1==0) //功能选择
{
TR0=0;
n1++;
while(!key1)
display(h,m,s);
if(n1==7)
{
TR0=1;
n1=0;
}
}
}
if(n1!=0)
{
if(n1==1)
{
if(key2==0) //调时
{ //加
delay(20);
if(key2==0)
{
h++;
if(h==24)
h=0;
}
while(!key2)
display(h,m,s);
}
else if(key3==0) //减
{
delay(20);
if(key3==0)
{
if(h==0)
h--;
}
while(!key3)
display(h,m,s);
}
}
if(n1==2)
{
if(key2==0) //调分
{
delay(20);
if(key2==0)
{
m++;
if(m==60)
m=0;
}
while(!key2)
display(h,m,s);
}
else if(key3==0)
{
delay(20);
if(key3==0)
{
if(m==0)
m=60;
m--;
}
while(!key3)
display(h,m,s);
}
}
if(n1==3)
{
if(key2==0) //调秒
{
delay(20);
if(key2==0)
{
s++;
if(s==60)
}
while(!key2)
display(m,s,0);
}
else if(key3==0)
{
delay(20);
if(key3==0)
{
if(s==0)
s=60;
s--;
}
while(!key3)
display(m,s,0);
}
}
if(n1==4)
{
if(key2==0) //调闹钟时
{ //加
delay(20);
if(key2==0)
{
h0++;
if(h0==24)
h0=0;
}
while(!key2)
display0(h0,m0,s0);
}
else if(key3==0) //减
{
delay(20);
if(key3==0)
{
if(h0==0)
h0=24;
h0--;
}
while(!key3)
display0(h0,m0,s0);
}
display0(h0,m0,s0);
}
if(n1==5)
{
if(key2==0) //调闹钟分
{
delay(20);
if(key2==0)
{
m0++;
if(m0==60)
m0=0;
}
while(!key2)
display0(h0,m0,s0);
}
else if(key3==0)
{
delay(20);
if(key3==0)
{
if(m0==0)
m0=60;
m0--;
}
while(!key3)
display0(h0,m0,s0);
}
display0(h0,m0,s0);
}
if(n1==6)
{
if(key2==0) //调闹钟秒
{
delay(20);
if(key2==0)
{
s0++;
if(s0==60)
s0=0;
}
while(!key2)
display0(m0,s0,0);
}
else if(key3==0)
{
delay(20);
if(key3==0)
{
if(s0==0)
s0=60;
s0--;
}
while(!key3)
display0(m0,s0,0);
}
display0(m0,s0,0);
}
}
}
void main()
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //打开总中断
ET0=1;//打开定时器中断
TR0=1;//启动定时器0
while(1)
{
keyscan();
if(n1==7 || mm)
display(m,s,0);
else
display(h,m,s);
if((h==h0)&&(m==m0)&&(s==s0))
{
TR0=1;
//clock();
for(a=0;a<=145;a++)
{
beep=1;
delay_1ms(200);
beep=0;
delay_1ms(200);
display(m,s,0);
}
display(h,m,s);
}
}
}。