单片机做数字时钟,求程序 1、解决驱动码。得到显示所有字符的七段码。2、解决动态扫描问题。在定时中断中顺序扫描其中一个数码管。3、解决内容—定时的计时表述。Hour,Minute,Second,mS;4、解决时间的修改设置。1、通用码表define SEGA 1define SEGB 2define SEGC 4define SEGD 8define SEGE 0x10define SEGF 0x20define SEGG 0x40define SEGH 0x80unsigned char code SegCode[11]={~(SEGA+SEGB+SEGC+SEGD+SEGE+SEGF),/0(SEGB+SEGC),/1(SEGA+SEGB+SEGD+SEGE+SEGG),/2(SEGA+SEGB+SEGC+SEGD+SEGG),/3(SEGB+SEGC+SEGF+SEGG),/4(SEGA+SEGC+SEGD+SEGF+SEGG),/5(SEGA+SEGC+SEGD+SEGE+SEGF+SEGG),/6(SEGA+SEGB+SEGC),/7(SEGA+SEGB+SEGC+SEGD+SEGE+SEGF+SEGG),/8(SEGA+SEGB+SEGC+SEGD+SEGF+SEGG),/9(SEGG),/—};2、动态扫描,内容放在unsigned char i,Time[8]={0,0,0xa,0,0,0xa,0,0};void Disp(unsigned char x)/显示第x个数码管的内容。{P0=0xff;P1=SegCode[Time[x]];P0=~(1);}在定时中断中调用。3、定时管理并得到50mS时基。按12MHz,定时1方式,定时器0配置中断。定义unsigned char mS50,Sec,Min,Hour;void InitialT0(void)/主程序调用一次{TMOD=0x1;ET0=1;EA=1;TR0=1;}void。
求单片机数字时钟程序
基于单片机的数字时钟,基于单片机的数字时钟有什么区别啊
单片机数字时钟程序
数字钟 单片机 1.时钟包括数字和指针之分。数字钟就是直接显示数字的那种表,直接显示21:00诸如此类的。单片机做实验用数码管显示就可以了。2.汇编程序跟你用的硬件有很大关系,你不说数码管怎么接,用的什么外围RTC,怎么找汇编,或者写汇编。如果你在校还不如去知网搜索下,很多类似的论文,里面内容都很详实。
单片机数字时钟设计 ORG 0X00LJMP STARTORG 0X3030H;设置堆栈MOV P1,#0XFE;设置在数码管的第0位显示MOV A,#0X01;A置初值为0000 0001LOOP:MOV P0,A;在数码管上显示寄存器A中的二进制数MOV R3,#0X5C;延时1SACALL EXTDELAY;延时观察和记录对应的显示结果RL A;将A寄存器的值循环左移一位SJMP LOOP;循环显示DELAY:MOV R1,#0XC8;延时20MSDL2:MOV R2,#0X18DL1:NOPNOPDJNZ R2,DL1DJNZ R1,DL2RETEXTDELAY:ACALL DELAYDJNZ R3,EXTDELAYRETENDORG 0X00SJMP STARTORG 0X30START:MOV SP,#30H;设置堆栈MOV P1,#0XFE;位选信号,选中第0个数码管MOV P0,#0X6F;在数码管上显示\"9LOOP:SJMP LOOP;循环执行程序ENDORG 0X00LJMP STARTORG 0X30START:MOV SP,#30H;设置堆栈MOV P1,#0XFE;设置在数码管的第0位显示MOV DPTR,#TABLE;送TABLE地址到DPTR指针MOV R7,#0X00;标志变量,限制指针在TABLE区LOOP:CLR AMOVC A,@A+DPTR;取TABLE区的字形码MOV P0,A;在数码管上显示寄存器A中的二进制数INC R7;指针控制加一MOV R3,#0X5C;延时ACALL EXTDELAY;延时观察和记录对应的显示结果CJNE R7,#0X10,NEXT;如果TABLE中数未取到最后一个,继续取下一个MOV R7,#0X00;如果已经取过所有。
单片机数字时钟比实际时间的慢啊怎么办? 单片机是利用定时器实现计时的,根据定时器的定时计算出的时间常数,是理想状态下的数值。如晶振频率是12M,用定时器T0,按定时20ms 计算的时间常数TH0=(65536-20000)/256=0XB1TL0=(65536-20000)%256=0XE0如果按这个数写程序,电子钟计时的时间肯定就比实际的时间慢。当然了,这需要时间长了,才能体现出来,如果只是计时几个小时是比较不出来的。必须是长时间的计时,比如计时一周以上就体现出来计时的误差了。这是因为,单片机计时的误差还是比较小的,假如一天慢1秒,那计时一周了,就慢7秒,才会发现的。为什么会慢呢,是因为定时到,要中断,单片机从响应中断,到在中断程序中重写时间常数,才能重新计时的,这是需要时间,只是这时间只有几个微秒。就产生了计时误差了。可是这向微秒的误差,累计一周后就累计成几秒了。要计时比较准确的还是有办法的,就是给时间常数的TL0加几个数,来补偿误差。通常加8就行,不过,还需要长时间的计时来校正。在中断程序中的时间常数改为TH0=0XB1;TL0=0XE8;这低8位加8,补偿误差这样补偿后,还有误差,再改这低8位,慢了就加,快了就减