第一次弄单片机,想实现一个数字时钟 做电子时钟,首先要设计电路啊,是用数码管显示,还是用LCD屏显示。要做实物还要焊接板子。这些电路做完了,才开始写程序的。没有电路是不好写程序的。
求助,数字时钟的仿真总出错 原理图如下:局部图(1):局部图(2):局部图(3):代码如下:includeincludedefine uchar unsigned chardefine uint unsigned intsbit ST=P2^0;启动转换位sbit OE=P2^2;输出允许位sbit ALE=P2^3;地址允许锁存位sbit EOC=P2^1;转换结束位sbit CLK=P2^4;时钟long int datas,bai,she,ge;uchar duan;uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};不带点的数字uchar code num_dot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed};带点的数字uchar code wei[]={0x0d,0x0b,0x07};位码void delay(uint z){uchar i;while(z-)for(i=0;i;i+);}void display(){uchar i=0;bai=(datas*500/255)/100;计算并得到最高位she=(datas*500/255)/10%10;计算并得到中间位ge=(datas*500/255)%10;计算并得到最低位for(i=0;i;i+){P3=wei[i];if(i=0){duan=num_dot[bai];}else if(i=1){duan=num[she];}else if(i=2){duan=num[ge];}P0=duan;delay(2);}}void main(){TMOD=0x02;定义T0,工作方式2TH0=0x216;TH0初值TL0=0x216;TH1初值EA=1;打开总中断ET0=1;打开TO中断允许位TR0=1;打开T0while(1){ST=OE=0;将START和EO先置0ALE=1;将ALE和ST。
求程序用AT89C51单片机。。用八位数码管实现数字时钟用定时器做
简易数字时钟计时器如何实现 你是说单片机做的数字时钟吗?如果是51单片机,可以在计数中断来的时候对时钟执行减一操作而非加1,如果是其他更高级的控制器比如stm32,msp430之类,可将定时器由增计数up。
如何在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;开启定时器(开始定时计数)}。
跪求使用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 。
单片机在中断里扫描键盘,实现数字时钟,加一按键不起作用是怎么回事?