ZKX's LAB

51单片机实现数字时钟,用四位数码管实现分计时,显示分和秒,可以任意设置时间。 数码管数字时钟

2020-07-24知识5

如何在8位数码管上显示数字时钟? 用proteus 画仿真图时,用8位一体数码管时,可以不考虑驱动问题,可以直接与P0,P2口连接,你这用8个三极管,又用总线,又加网络标号,仿真图很复杂很麻烦,但却不能正常仿真。参照下图改一下,这样画,仿真图非常简单,清晰。如何在8位数码管上显示数字时钟? 最低0.27元开通文库会员,查看完整内容>;原发布者:zhanhaichuang本人依据AT89C51和8位数码管为素材,以最少的见实现最多的功能!本程序开机流动显示学号可实现时钟,日历,定时闹钟,秒表等功能!C程序:#includeunsignedcharled[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};用一维数组定义-9、横杠、全灭unsignedcharnum[12]={2,0,0,9,3,5,0,7,0,1,2,0};unsignedchara[8];unsignedcharsecond=0,minute=0,hour=0,year=0,mon=1,day=1,day1,hsec,sec_m,min_m,N,temp1;unsignedcharminute1=0,hour1=0;unsignedcharb[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};扫描unsignedchark=0;unsignedinttemp;记录毫秒为秒的变量unsignedcharM,S_flag;M是模式,更新时间的种模式加上正常模式S_flag闪烁标志sbitK0=P3^7a686964616fe58685e5aeb9313334336237637;K0是闹钟起停标志位sbitK1=P3^0;sbitK2=P3^1;sbitK3=P3^2;sbitBEEP=P3^3;voiddelay(unsignedn)/0.2毫秒{intx,y;for(x=0;x;x+)for(y=0;y;y+);}voidinit1(){S_flag=0;闪烁标志位TMOD=0x10;定时器以方式定时TH1=0xfc;TL1=0x18;EA=1;打开总中断ET1=1;允许定时器中断TR1=1;开启定时器(开始定时计数)}。数字时钟在进行电路仿真时,数码管出现了图片上灰色小方块,是什么意思 这一仿真软件,红色表示高电平,蓝色表示低电平灰色表示高阻抗;你可以编程使得P1为低电平,看是否为蓝色。单片机直接驱动数码管,应该选用共阳极的数码管,你选对了吗?用数码管(8位)显示的数字时钟程序 最低0.27元开通文库会员,查看完整内容>;原发布者:缘分已近~用数码管(8位)显示的数字时钟程序用数码管(8位)显示的数字时钟,由于是在开发板上写的程序,所以51单片机的一些I/O口设定并不完全一样,以下程序仅供参考#includesbitdula=P2^6;段选锁存器sbitwela=P2^7;位选锁存器sbitkey1=P3^2;INT0 选择键sbitkey2=P3^4;T0 时间增加sbitkey3=P3^6;S4 时间减少chara=0,hour=0,minute=0,seconed=0;charh1,h2,m1,m2,s1,s2;charnum=0;charcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(charz){ charx,y;for(x=z;x>;0;x-)for(y=110;y>;0;y-);}voiddisplay_hour(charh)/显示小时e799bee5baa6e79fa5e98193e4b893e5b19e31333433623830{ h1=h/10;h2=h%10;wela=1;P0=0xfe;11111110wela=0;P0=0xff;dula=1;P0=table[h1];dula=0;delay(5);wela=1;P0=0xfd;11111101wela=0;P0=0xff;dula=1;P0=table[h2];dula=0;delay(5);}voiddisplay_minute(charm)/显示分钟{ m1=m/10;m2=m%10;wela=1;P0=0xf7;11110111wela=0;P0=0xff;dula=1;P0=table[m1];dula=0;delay(5);wela=1;P0=0xef;11101111wela=0;P0=0xff;dula=1;P0=table[m2];dula=0;delay(5);}voiddisplay_seconed。求程序用AT89C51单片机。。用六位数码管实现数字时钟,显示时分秒,用两个按键可分别调整时、分。 #includedefine uint unsigned intdefine uchar unsigned charuchar temp,aa,miao,fen,shi;sbit m=P3^0;sbit n=P3^1;uchar code table[]={/数码管编码表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void display(uchar miao,uchar fen,uchar shi);void delay(uint z);void init();void main(){init();初始化子程序miao=0;shi=0;fen=0;while(1){display(miao,fen,shi);}}void delay(uint z){uint x,y;for(x=z;x>;0;x-)for(y=110;y>;0;y-);}void display(uchar miao,uchar fen,uchar shi)/显示子函数{P0=0x00;P0=table[miao%10];P2=0x7f;delay(1);P0=0x00;P0=table[miao/10];P2=0xbf;delay(1);P0=0x00;P0=table[fen%10];P2=0xdf;delay(1);P0=0x00;P0=table[fen/10];P2=0xef;delay(1);P0=0x00;P0=table[shi%10];P2=0xf7;delay(1);P0=0x00;P0=table[shi/10];P2=0xfb;delay(1);}void init()/初始化子函数{temp=0;TMOD=0x01;TH0=(65536-45872)/256;TL0=(65536-45872)%256;定时器初值,定时50ms(12M晶振),由于考虑MCU指令处理时间,此处赋初值位45872EA=1;ET0=1;TR0=1;}void timer0()interrupt 1/定时计数器中断{TH0=(65536-45872)/256;TL0=。求程序用AT89C51单片机。。用八位数码管实现数字时钟用定时器做 ORG 0000HAJMP MAIN/;跳转到主程序ORG 000BH/;T0中断入口AJMP PTF0/;中断处理首地址主程序MAIN:MOV SP,#05FHMOV 30H,#0/;缓冲单元设置初值12:00:00MOV 31H,#0MOV 32H,#0MOV 36H,#0FH/;设置4000次中断计数MOV 37H,#0A0HMOV TMOD,#02H/;定时器启动MOV TL0,#6MOV TH0,#6SETB TR0/启动T0计时器MOV IE,#82HMOV IP,#20H数码管动态显示LED6:LCALL DISPLAYJNB P1.0,CLEAR/;判断键盘输入JNB P1.1,SET_MINUTEJNB P1.2,SET_HOURAJMP LED6CLEAR:LCALL DISPLAYJNB P1.0,CLEARMOV 30H,#12H/;时钟显示复位 A键MOV 31H,#0MOV 32H,#0SJMP LED6SET_MINUTE:LCALL DISPLAYJNB P1.1,SET_MINUTEMOV A,31H/;调节分加1 B键CJNE A,#59H,MINMOV 31H,#0SJMP LED6SET_HOUR:LCALL DISPLAYJNB P1.2,SET_HOURMOV R1,#30H/;调节时加1 C键MOV A,@R1CJNE A,#23H,HOUR/比较立即数和A,不相等则转移MOV 30H,#0MIN:ADD A,#1/将1加到累加器DA A/累加器十进制调整MOV 31H,ALCALL DELAY1AJMP LED6HOUR:ADD A,#1DA AMOV 30H,ALCALL DELAY1AJMP LED6DISPLAY:MOV DPTR,#TAB/;表的首地址给16位数据指针寄存器DPTRMOV A,30H/;时为的十位。protel 制作数字时钟时用到的数码管型号是多少 DPY_7-SEG_DP,不过这是7个脚的。我们老师说国产的只有10个脚的。你可以把DPY_7-SEG_DP元件给编辑一下,另外命名为DPY_10-SEG_DP。具体名称对应为:a-7,b-6,c-4,d-2,e-1,f-9,g-10,dp-5,GND-3,GND-8跪求使用C51芯片和数码管,且利用中断来写段数字时钟。 STRT EQU P3.0STP EQU P3.1CLRR EQU P3.2ORG 0000HSJMP MAINORG 000BHAJMP T0INT0ORG 0030HMAIN:MOV SP,#60H;设置堆栈指针MOV R4,#10;R4=10MOV TMOD,#01H;定期器0方式1MOV TH0,#03CH;12M晶振时定时初值取#3CB0HMOV TL0,#0B0HSETB ET0;开定时器0中断SETB EA;开定时器总中断K1:LCALL DISPJB STRT,K2LCALL DISPJNB STRT,STARTK2:LCALL DISPJB STP,K3LCALL DISPJNB STP,STOPK3:LCALL DISPJB CLRR,K1LCALL DISPJNB CLRR,CLEARAJMP K1START:SETB TR0AJMP K1STOP:CLR TR0AJMP K2CLEAR:CLR TR0MOV A,#0MOV 20H,AMOV 21H,AMOV 22H,AMOV 23H,AMOV 24H,AMOV 25H,AMOV 26H,AMOV 27H,AMOV 28H,AAJMP K1DISP:MOV A,24H;要显示的秒数MOV B,#10DIV ABMOV 20H,B;余数(秒个位数)MOV 21H,A;商(秒十位数)MOV A,25H;要显示的分数MOV B,#10DIV ABMOV 22H,B;余数(分个位数)MOV 23H,A;商(分十位数)MOV A,20H;秒个位ACALL SEG7;获得要显示的数值MOV A,26H;要显示的小时数MOV B,#10DIV ABMOV 27H,B;余数(小时个位数)MOV 28H,A;商(小时十位数)MOV A,20H;秒个位ACALL SEG7;获得要显示的数值MOV DPTR,#8004HMOVX@DPTR,AMOV 。51单片机实现数字时钟,用四位数码管实现分计时,显示分和秒,可以任意设置时间。真的不懂啊。设计要求是:用四位数码管实现分计时,显示分和秒,可以任意设置时间。。51单片机设计数码管数字时钟,怎么实现显示年月日可切换显示时分秒,?设计一个按键,或者定时自动切换。显示的话就是将数据传送给显示模块(调用显示程序)。

#中断处理#数码管#单片机

随机阅读

qrcode
访问手机版