电子钟四位数码管电路原理图

合集下载

基于51单片机的4位数码管电子钟

基于51单片机的4位数码管电子钟

原理图附:源程序/***************************************************************************标题:定时器中断 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--);}。

电子钟四位数码管电路原理图

电子钟四位数码管电路原理图

程序:#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);}}}。

四位数码管工作原理

四位数码管工作原理

四位数码管工作原理
四位数码管是一种常见的显示装置,用于显示数字和一些字母。

它由四个七段数码管组成,每个数码管有七个段和一个小数点,通过控制这些段的亮灭来显示不同的数字或字母。

工作原理如下:
1. 位选:四位数码管的显示是通过位选的方式进行的。

在每个时间段,只有一个数码管被选中,其余的数码管处于关闭状态。

通过快速轮流选择每个数码管,形成了连续的显示效果。

2. 共阳极和共阴极:四位数码管有两种类型:共阳极(共正极)和共阴极(共负极)。

在共阳极数码管中,共阳极连接到电源正极,而在共阴极数码管中,共阴极连接到电源负极。

不同类型的数码管需要采用相应的电路驱动方法。

3. 控制信号:为了控制每个数码管的亮灭,需要提供适当的控制信号。

通常,使用微控制器或专用的驱动芯片来产生这些信号。

通过设置控制信号的高低电平和时序,可以实现数码管的显示和刷新。

4. 位选扫描:在每个时间段,控制信号选择一个数码管进行显示,并通过控制对应的段点亮灭来显示相应的数字或字母。

通过快速地轮流切换位选信号,每个数码管都能够被依次选中并显示需要的内容。

通过合理的控制位选信号和段选信号,可以实现多个数码管的同时显示,以显示更复杂的数字、字母和符号。

需要注意的是,具体的四位数码管的工作原理可能会有所不同,取决于使用的具体型号和电路设计。

因此,在实际应用中,应根据具体的电路和芯片规格来了解和使用相应的工作原理。

1/ 1。

四位时钟设计方案

四位时钟设计方案

目录一.前言二.设计任务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位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

数字钟计时电路的电类实验原理图和电路图

数字钟计时电路的电类实验原理图和电路图

页眉内容
实验1 多功能计时电路的设计——数字钟
1.实验原理及框图
图1.1三位计时器示意图
计时电路示意图如图1.1所示,计时电路完成计时功能,并且将计时结果传送至显示电路,进而实现显示功能。

原理框图如图1.2所示,主要由计时电路,秒信号发生电路,清零电路和译码显示电路组成。

计时电路在秒信号的作用下,产生0:00~9:59的循环计时,清零电路控制计时电路的清零端,实现时钟的清零,最终将计时电路的输出送至译码显示电路,实现时钟的显示。

图1.2数字钟的原理框图
精心整理。

四位电子钟电路和汇编源程序

四位电子钟电路和汇编源程序

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。

第一讲 电子钟的组成及工作原理

第一讲 电子钟的组成及工作原理

多功能大尺寸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、插接件接口设计,便于组装、维护。

电子时钟电路_原理图_PCB图

电子时钟电路_原理图_PCB图

XXXXX学院电子线路课程设计【带LCD显示的电子时钟】班级:XX:XX学号:XX指导老师:XXXX年XX月XX 日摘要在当代繁忙的学习与生活中,数字钟已成为人们日常生活中必不可少的必需品,被广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

数字电路采用数字电路,实现对时、分、秒时钟显示的计时装置,具有走时准确、性能稳定、携带方便等优点它还用于计时、自动报时及自动控制等各个领域。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点基于单片机的定时器功能完成的数字钟电路的设计,结构简单,便于携带。

也利于我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路、写程序、调试电路的能力。

研究数字钟以及扩大其应用,具有非常现实的意义。

此设计中的数字钟不仅可以显示普通的年、月、日、时、分、秒外,还可加入蜂鸣器、按键复位等功能。

关键字:LCD1602 单片机电子时钟定时复位一.任务要求设计一个时钟电路。

以单片机为核心模块,LCD1602为显示模块,通过控制使1602显示时间、字符。

1.1基本要求1).第一行显示自己的名字2).第二行显示时间1.2发挥部分1).加入按键,实现调时功能2).加入蜂鸣器,实现闹钟功能二.系统分析2.1 系统总体方框图2.2 系统总体分析本设计由ST89C51单片机、复位电路、晶振电路、外部中断和显示电路5个模块组成。

其中以单片机模块为核心模块,主导其余四个模块工作,1602显示模块用来显示秒、分、时计数单位中的值。

利用AT89c51单片机部的定时/计数器进行中断定时,配合软件延时,实现电路的总体功能。

三、硬件设计3.1、晶振电路图3.1 晶振电路一般的晶振振荡电路都是在一个反相放大器的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。

51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。

四位数码管工作原理 stm32

四位数码管工作原理 stm32

四位数码管工作原理 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。

为了实现动态显示,可以使用定时器中断来周期性地更新数码管的显示内容。

数字电子钟设计(原理图+pcb图+程序)--课程设计.docx

数字电子钟设计(原理图+pcb图+程序)--课程设计.docx

1设计课题任务、功能要求说明及方案介绍1.1设计课题任务与要求设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示学 生班级学号,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时 0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟 进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整 键再次进入吋钟运行状态。

1.2设计课题总体方案介绍及工作原理说明本电子钟主要由单片机、4个独立键盘、显示接口电路和复位电路构成,设 计课题的系统框图如图1. 1所示:图1.1系统框图本电子钟的所有的程序、参数均存放在AT89S52的Flash ROM 和内部RAM 中。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程 形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过 端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

晶振电路复位电路数码管驱动数码管LED2设计课题硬件系统的设计2.1设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块(1 )单片机最小系统模块:AT89S52单片机芯片;复位电路;晶振电路。

本模块AT89S52系统控制核心,单片机系统复位由按键电平复位电路完成,通过按键S1来控制,单片机通过芯片引脚XTAL1、XTAL2,外并接石英晶体振荡器和两只电容。

这样就为能为单片机提供频率为12MHz的晶振。

(2)输入模块:本模块共用到了5个按键,1个电源开关,1个复位键,单片机运行期间,利用按键S1完成复位操作。

4个独立按键,S2键控制电子钟的启动/调整状态,S3键为小时调整键,S4键为分钟调整键,S5键位秒调整键,且 S2、S3、S4、S5 任一键都独自连一个I/O (Pl.O、P1. 1、P1. 2、P1. 3) 口线,说明它们可以独立实现相应的电子钟功能。

任务12 设计及制作4位LED数码管显示电路

任务12 设计及制作4位LED数码管显示电路

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数码管 显示模块

任务12设计及制作4位LED数码管显示电路(精)

任务12设计及制作4位LED数码管显示电路(精)

任务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 的控制程序。

常见的一/二/四位数码管引脚图详解

常见的一/二/四位数码管引脚图详解

常见的一/二/四位数码管引脚图详解
数码管是一种可以显示数字和其他信息的电子设备,是显示屏其中一类,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字,然后显示出时间、日期、温度等所有可用数字表示的参数。

通常用在空调、热水器、冰箱等电器中。

那么数码管引脚图是怎样的呢?下面我们就来说说常见的一位、两位和四位的数码管引脚图。

一位数码管引脚图
数码管有两种接法,共阴或共阳,不管哪种,3.8都要短接,如果共阴就再接地,共阳就再接高。

两位数码管引脚图
四位数码管引脚图
其中,1、2、3、4分别是自左至右的4位数码管位置;a、b、c、d、r、f、g、h 分别对应数码管的8段,接单片机I/O口由高位至低位。

四位电子时钟

四位电子时钟

一、实训任务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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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--)
{
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==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)
{
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);
{
if(h==0)
h=24;
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)
{
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);
}
}
}
}
}*/
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)
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);
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;
}
}
}
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)
{
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)
s=0;
}
while(!key2)
display(m,s,0);
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);
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()//按键扫描
程序:
#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;
}
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)
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);
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))
}
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;
相关文档
最新文档