我想用51单片机做一个篮球计时器24秒倒计时,用数码管显示,求各位高手帮忙画电路原理图,谢谢
#include“ reg5 1 .h” #defineucharunsignedchardchardisplay_code [] = {0xc0.0xf9 .0xa4 ,0xB0,0x9 9 .0x8 2 ,0x8 2 ,0x8 2 ,0x5 ,0xf8 ,0x8 ,0x8 0.0x9 0.0x8 8 8 8 8 8 8 8 .0x8 8 3 3 3 ,0x6 .0x8 3 3 ,0x6 .03 x6 .0x8 6 .0x8 6 .0x8 6 .0x8 6 .0 x6 .0x8 6 .0x8 6 .0 x8 6 .0x8 6 .0x8 6 .0x8 6 .0x8 3 ,6 .0x8 6 .0x8 6 .0x8 6 .0x8 3 , bes。x8 e}; uchardisplay_data [8 ] = {0.0,0,0,0,0,0,0,0}; 或(i = 0; i <8 ; i ++){p2 = 0; p0 = display_code [display_data [i]]; p2 = k; k = k >> 1 ; delay();} p2 = 0;} voidCalc(){time [0] ++; if(time [0]> 2 3 )时间[0] = 0;} voidConvert(){repuncated [)_data [1 ] = time [0]%1 0;} voidmain(void){uchari; 而(1 ){for(i = 0; i
如何用单片机做一个简单的倒计时器
5 1 MicroController实现了数字管的9 9 秒倒计时,实际上非常简单,并且使用计时器中断实现。目标是找出如何使用微控制器实现返回参考以实现一些延迟控制。
计算计时器时间的公式:初始值x = m(最大时间)是帐户的值。
初始值转换为十六进制,并给出高位置,并给出低位置TL0。
M(最大时间)如果是1 6 位,则为2 到1 6 ,最大时间为6 5 5 3 5 微秒,达到1 秒钟,您可以将1 0毫秒的时间传递,然后更改第二个1 00次的值。
1 0 ms = 1 s值:您需要时间多长时间? 当然,不可能中断1 S计时器。
下一个旨在实现9 9 秒的退房程序C/*以了解计时器。
field codeunsignedchartab [] = {0x3 f,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d,0x7 d,0x07 .0x7 f,0x6 f}; ucharshiwei; Ugragkwei; voiddelay(unsignedIntcnt){ - cnt); ;/*计时器01 6 位x = 6 5 5 3 5 -1 0000(1 0毫秒)= 5 5 5 3 5 = D8 F0(十六进制)时间1 0 ms*/th0 = 0xd8 ; TL0 = 0xF0; IE = 0x8 2 ; //这是控制的时间,在一般接口上)1 ; //打开计时器0时(1 ){p0 = s hiwei; // 9 9 -bit P2 = 0; // 9 9 ,延迟(3 00); //数字管p0 = gewei的延迟的动态扫描; p2 = 1 ; 延迟(3 00);}} voidTim(void)intrupt1 s //计时器0 {staticarsecond = 9 9 ,curttr; 在这里,我们只会学习如何实现反向参考th0 = 0xd8 ; //时间1 0ms TL0 = 0xF0; 计数++; if(count == 1 00)// 1 0毫秒的时间,1 0*1 00 = 1 000(ms)= 1 秒{count = 0; 第二-; if(第二= 0){p1 1 = 0; //进行重建。
第二= 9 9 ; //返回9 9 并处理,当然,您可以执行其他控件,} shiwei = tab [second/1 0]; //数字管1 0位GEWEI = TAB [第二%1 0]; //数字明确数字}