ZKX's LAB

自己焊接数字时钟,显示分钟两个数码管亮度正常能显示数字,显示小时 八位数码管数字时钟显示

2020-07-23知识6

求程序用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/;时为的十位。求程序用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=。如何在8位数码管上显示数字时钟? 用proteus 画仿真图时,用8位一体数码管时,可以不考虑驱动问题,可以直接与P0,P2口连接,你这用8个三极管,又用总线,又加网络标号,仿真图很复杂很麻烦,但却不能正常仿真。参照下图改一下,这样画,仿真图非常简单,清晰。8个数码管显示时钟 file name:demo003.c chip type:ATMEGA8515L clock frequenoy:11.0592MHZ creator:ccdzdpj date created:2005-12-05 include include include include 。自己焊接数字时钟,显示分钟两个数码管亮度正常能显示数字,显示小时 有3种可能,一是焊接的问题,不亮的那个数码管有虚焊的,主要查一下公共端的焊接情况。二是数码管的位驱动电路是什么?控制不亮那个数码管的一端有虚焊的。三是程序有问题,查一下程序。如何在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;开启定时器(开始定时计数)}。

#单片机#数码管#计时器

随机阅读

qrcode
访问手机版