求单片机数码管倒计时程序
#include #include // function_nop _(); sbitkey1 = p0^4 ; sbitsdata_5 9 5 = p0^0; ----板卡sbitsclk_5 9 5 = p0^1 ; // Connect SPI data signal input terminal on shift clock pulse (input port) --- Connect SPO on board card ------ Serial Clock Line --- SHCP Shift Shift Clock Signal Input Terminal SbitRcK_5 9 5 = P0^2 ; // Output Lach Control Pulse ---- SpkstcP launch signal input terminal uchar contact codeduan [] = {0x3 F, 0x06 ,0x5 b, 0x4 f, 0x4 f, 0x6 6 ,0x6 D6 D6 D, 0x7 d, 0x07 ,0x7 F, 0x7 F, 0x6 f, 0x6 F, 0x7 F, 0x7 0x3 9 ,0x5 e,0x7 9 ,0x7 1 },0x7 9 ,0x7 1 }; ,0xef,0xdf,0xbf,0x7 f…= 0;}} voida5 9 5 _in(ucharadata) for(i = 0; i <8 ; i ++){sclk_5 9 5 = 0; 数据<< = 1 ; sdata_5 9 5 = cy; sclk_5 9 5 = 1 ; sclk_5 9 5 = 0;}} voidaaa5 9 5 _ut(void){rck_5 9 5 = 0; , _nop _(); _ nop _(); rock_5 9 5 = 1 ; _nop _(); _ nop _(); rock_5 9 5 = 0;} voidmain(){ugrage,shi; 而(1 ){if(key1 == 0){delay(1 0); if(key1 == 0){d1 = 0; num-; if(num == 0)num = 6 0;} while(key1 ); //保存延迟以检测(1 0); //延迟1 0mswhile(!key1 ); //再次释放检测} elsed1 = 1 ; // aa5 9 5 _in(duan [num]); 数量1 0; a5 9 5 _in(duan [shi]); AA5 9 5 _IN(WEI [3 ]); AA5 9 5 _OU T(); 延迟(1 0); AA5 9 5 _IN(Duan [GE]); AA5 9 5 _IN(WEI [2 ]); AA5 9 5 _OUT(); 后期(1 0);}} vouddelay(uintz){uintx,y; x = 1 00; x> 0; x-)for(y = z; y> 0; y-);} //延迟subrutin,延迟zm
小白求救,51单片机利用两个数码管实现60秒倒计时?
我想看您写的程序! 您可以简单地将您的代码和硬件图发送给我。
然后,您可以联系下一个程序。
这对应于我的硬件图。
#include unsignedchartable [] = {0x3 f,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d,0x7 d,0x07 .0x7 f,0x6 f}; voidshow(unsignedchann); voiddelay(unsignedk); voidmain(unsignedharn); voiddelay(unsignedk); ; 而(1 ){for(i = 6 0; j = 6 0,i> 0; i-)while(j-)show(i);}} voidShow(unsignedCharn){p0 = table [n%1 0]; p1 = 0x01 ; 延迟(1 0); p1 = 0xff; p0 =表[N/1 0]; p1 = 0xff; p0 =表[N/1 0]; p1 = 0x02 ; 延迟(1 0); p1 = 0xff;} vooddelay(unsignedIntk){unsignedChari,j; for(i = 0; i
编程实现60秒的倒计时器程序,到最后10秒的时候数码管开始闪烁递减知道为0!请教这个闪烁子程序怎么编呢?
voiddisplay_shanshuo(ucharshi,ucharge)//提交clignot = 0; 温度 - ; if(temp == 0)temp = 2 0; shi = temp / 1 0; ge = temp%1 0;}如果(温度> 1 0)显示(shi,ge); //正常显示。
{//否则,它会闪烁第二个的前半部分。
}}}}
急求51单片机顺、倒计时60秒程序加注释下~好的话可再加财富!谢谢~!
#include //文件标头unsignedchodetab [1 1 ] = {0xc0.0xf9 .0xa4 .0xb0.0x9 2 ,0x9 2 ,0x8 2 .0xf8 .0x8 0.0x9 0.0xff}; 从0到9 unsignedcharint_time; //写下Unsignedcharsecond中的中断数量; //野兔秒/******************************************************************************** ***** ********************************************************************************************************************************** ****** m ********************************************************/ vooddelay(void){unsignedChari; for(i = 0; i <2 00; i ++);}/****************************** *****************************************************: ***** ******************************************************** *** ***********/voddidiplaysecond(unsi gnedchark){p2 = 0xbf; // p2 .6 输出引脚 - 低级别,LS6 灯p0 = tab [k/1 0]; //显示十位延迟(); 延迟 (); 延迟 (); 延迟 (); 延迟 ();; 延迟 (); 延迟 (); 延迟 (); 延迟 (); p2 = 0x7 f; // p2 .7 低 - 级别的结论,ls7 灯p0 = tab [k%1 0]; //显示一点点延迟(); 延迟 (); 延迟 (); 延迟 (); 延迟 (); 延迟 (); 延迟 (); 延迟 (); p2 = 0xff; //关闭所有数字管p0 = 0xff; //显示一点点延迟(); 延迟 (); 延迟 () ;; 延迟 (); 丢失的 (); loder(); 衬里(); lined();} voidmain(void)//主函数{tmod = 0x01 ; //使用t0th0 =(6 5 5 3 6 -4 6 08 3 )// 2 5 6 计时器; / /时间确认时间设置为4 6 08 3 ×1 .08 5 微秒// = 5 0,000微秒= 5 0毫秒tl0 =(6 5 5 3 6 -4 6 08 3 )%2 5 6 ; EA = 1 ; //一般接口ET0 = 1 的打开; //计时器T0。
; //运行T0计时器以启动int_time = 0的启动; //初始化第二个= 0; //第二个初始化,直到(1 ){displaySecond(second); //致电秒}}} // ************************************************************************************************************************************************ ** ******************************************************功能:T0服务程序T0 // ****************************************************** ******** m ** ****************** m {tr0 = 0; //关闭计时器T0INT_TIME ++; //每个计时器,如果(int_time == 2 0)//足够2 0个中断,即测试结果的样本之一在1 秒钟{int_time = 0; //中断数量为0秒++; //添加1 if(second == 6 0)second = 0; //第二名等于6 0,将返回0} th0 =(6 5 5 3 6 -4 6 08 3 )/2 5 6 ; //再次分配初始值计数器t0 =(6 5 5 3 6 -4 6 08 3 )%2 5 6 ; tr0 = 1 ; //计时器T0的开头}
51单片机通过使用74HC164实现60秒倒计时电路图如下:该怎么编程序(C语言)??
使用中断时间是达到6 0秒倒计时的有效方法。
该时间代理可以确保精确的时间调节,并避免由于周期延迟而导致的错误积累。
在实施过程中,可以使用5 1 微控制器的计时器中断函数来设置计时器计数方法和中断模式,以达到每秒减小1 的效果。
关于显示器,可以使用两个端口来控制茎的选择,并且数字管被一线动态扫描照亮。
数字管的段选择是通过8 个端口到达的,以确保每个数字管都可以精确显示数字。
这样,可以实现多数字数字的动态显示。
如果详细编程,则可以首先编写初始化功能,以确定计时器,中断和E/A连接的状态。
下一步编写一个中断服务程序,在中断服务程序中展示计数过程,并将每个中断的计数器减少1 同时,必须编写显示功能才能根据计数值动态显示当前时间。
最后,在主函数中调用了初始化功能和显示功能,并且启动了计时器中断,以便程序可以继续执行并更新显示。
在写作时,必须确定数字管的显示方法是动态扫描的,必须通过同时照明的几个数字管确保。
此外,有必要注意中断服务计划的实施效率,以确保不会忽略下一个中断,因为执行时间太长并且现代准确性会影响。
在程序中,您还必须考虑如何处理6 0秒倒计时的末尾。
您可以设置一个标志 - 位,如果将计数器降低到0,则可以设置,然后根据显示功能中的此标志 - 限制更新显示屏,例如 B.显示输入切换信息,例如“ timeup”。
为了确保程序的稳定性和可靠性,还需要进行足够的测试和调试。
您可以使用示波器和其他工具来监视计时器的计数,以确保可以正常触发计时器中断。
同时,必须对显示部分进行测试,以确保每个数字管都可以正确显示数字。
最后,需要对整个程序进行几项测试,以确保在所有情况下都可以正常进行。