利用单片机的定时器和数码管,设计一个电子时钟
我会给您一个电路和程序,//几天前,我会为MicroController的计时时钟调整功能的网络写作,您可以参考我的 program/***********************************************************************************************************************************************************************************************AN ************************************************************************************************************************************** 可能 ******************************************************************************************************************************************************************************************************************** ********* t任何一个 ************************************************************************************************************************************** 可能 ******************************************************************************************************************************************************************************************************************** ********* t任何一个 ************************************************************************************************************************************** 可能 ******************************************************************************************************************************************************************************************************************** ********* t任何一个 ************************************************************************************************************************************** 可能 ******************************************************************************************************************************************************************************************************************** ********* t任何一个 ************************************************************************************************************************************** 可能 ***************************************************************************************************************************************************UmANANTYANUMARAN******ANANTYUMARAN*******************ANAN******************ANHAN**********************ANANHAN********************** either awayURANHIMIONARAN*****tgmtmtmt of ************************************************************************************************************************************** 可能 ***************************************************************************************************************************************************UmANANTYANUMARAN******ANANTYUMARAN*******************ANAN******************ANHAN**********************ANANHAN********************** either awayURANHIMIONARAN*****tgmtmtmt of ************************************************************************************************************************************** 可能 ***************************************************************************************************************************************************UmANANTYANUMARAN******ANANTYUMARAN*******************ANAN******************ANHAN**********************ANANHAN********************** either awayURANHIMIONARAN*****tgmtmtmt of ************************************************************************************************************************************** 可能 *********************************************************•_04 = p2 ^3 ; //数字管4 SBITSHUG_05 = P2 ^4 ; //数字管5 SBITSHUG_06 = P2 ^5 ; //数字管6 SBITKEY0_01 = P0^0; //启动密钥或库存oldo 2 = p0^1 ; //键添加sbite0_03 = p0 2 ; //键菜单#DEPANED_DAP1 // P1 端口数据UNIGNEDEDCHARVALUE_TEMP = 0; unsignedCharvalue_utk = 0; unsignedCharvalue_shio = 8 ; UnignedCharvalue_feno = 4 0; UnignedCharvalue_miao = 0; unsignedchodevalue_tab0 [] = {0xcc.mia =0。0.0x9 9 .0x9 2 .0x8 2 .0xf8 .0x8 0.0x9 0}; //通用阳极unsignedchodevalue_tab1 [] = {0x4 0.0x7 9 ,0x2 4 .0x3 0.0x1 9 ,0x1 2 ,02 ,0x7 8 .0x00.0x1 0}; //带有点/**的通用阳极延迟1 MS延迟fofunction **/voiddelay_1 ms(unsignedIntime){unsignedIntx,y; 对于(x = time; x> 0; x-)for(y = 1 2 0; y> 0; y-); ]子函数**/voodisp_layledktcmd(void){/***小时***/shug_01 = 1 ; ded_data = value_tab0 [value_shio/1 0];/**************** ug_02 = 1 ; LED_DATA = value_tab1 [value_shio%1 0];/**********************************************************************/зumentimut shog_02 = 0;/***分钟***/shug_03 = 1 ; led_data = value_tab0 [value_feno ***/shug_03 = 1 ; /1 0];/**************); shug_04 = 0;/***秒***/shog_05 = 1 ; led_data = value_tab0 [value_miao/1 0];/************************************************************************************************************************************************************************************* ***************/delay_1 ms(5 ); shug_06 = 0;}/**计时器5 0 ms **/voidtero_init(void)的初始化时间{tmod = 0x01 ; th0 = 0x4 c; TL0 = 0x; R0 = 1 ; ea = 1 ;}/**键开关[启动和停止]子函数**/voidScan_keyoutcmd(void){if(key0_01 == 0){downer_1 ms(1 0); y_1 ms(1 0); if(key0_02 == 0){value_miao-; if(value_miao == -1 ){value_feno-; value_miao = 5 9 ; if(value_feno == -1 ){value_shio-; value_feno = 5 9 ; if(value_shio == -1 ){value_shio_fen -1 ){value_shio = 2 3 ;}}}} while(key0_02 == 0);} if(key0_03 == 0){downer_1 ms(downer_1 ms(1 0); if(key0_03 == 0){value_miao ++; if(value_miao == 6 0){value_miao = 0; _feno == 6 0){value_feno = 0; value_shio ++; if(value_shio == 2 4 ){value_shio = 0;}}}}while(key0_03 == 0); //检测LET GO}}}}/**功能主体**/intamain(void){p1 = p2 = p3 = 0x; ; while(1 ){scan_keyoutcmd(); disp_layledktcmd(); //执行应用程序}}}/**计时器*/voidtmero()中断中断程序()enterRupt1 {th0 = 0x4 c; TL0 = 0x00; value_temp ++; if(value_temp == 2 0){value_temp = value_mem。
o == 6 0){value_feno ++; value_miao = 0; if(value_feno == 6 0){value_shio ++; value_feno = 0; if (value_shio == 2 4 ) {value_shio = 0;}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} "
51单片机设计数码管显示时钟的程序怎么写
#include51单片机控制数码管显示时钟,独立按键怎么弄
处理独立按钮相对简单,通常由单独的端口调节。主要等级包括去敲击和检测按钮,并按下气泡的气泡和高程。
例如,您可以这样实现:sbitkey = p1 ^ 0; if(key == 0){delay(1 0); if(key == 0){key == 0);}}在这里,首先定义了key sbitkey = p1 ^ 0; 然后,如果检测到(键== 0)是否按下键。
为了消除钥匙抖动,增加了1 0毫秒的延迟。
检测再次陈述的钥匙。
如果您仍然是0,则认为将钥匙按下并将Keuplival设置为i终于在循环内部,然后等待键释放的键。
在实际应用中,关键处理不限于此。
还必须考虑多次键和较长的压力。
例如,可以添加以检测按下键的次数,或者可以添加恐惧以确定是否要长时间保存键。
此外,为了确保程序的强度,建议在任何步骤键处理中添加错误检查和例外。
请检查关键状态在办公室延迟之后还是在外部干扰中的错误判断后仍为0。
在数字管中LI微控制器控制的项目中,需要关键过程。
在上述措施中,可以有效地理解按钮的检测和响应,从而为政府提供了对时钟办公室的特定操作。
通过编程,您还需要注意以避免计划中的关键抖动的影响。
它可以为硬件电路设计,以引入辩论或添加延迟处理软件以准确关键状态检测。
简而言之,尽管独立按钮的过程很简单,但对于程序的稳定性和可靠性,它们仍然需要谨慎。
用s7-200和4个LED数码管设计显示小时及分钟的电路及控制程序
#ncludeLS1 3 8 C = P2 ^4 ; bitredrtc_flag; //读取DS1 3 02 的定义unsignedc harl_tmpdate [7 ]; // = {0,0,1 3 ,1 5 ,5 ,3 ,8 }; x8 8 ,0x8 a,0x8 c}; //第二天和月份读取和写作CodeUnsignedChared_RTC_ADDRESS [7 ] = {0x8 1 ,0x8 3 ,0x8 5 ,0x8 7 ,0x8 7 ,0x8 9 ,0x8 b,0x8 d}; '''桌/******************************************************************** // readrtcvoidset_rtc(void); // setrtcvopoidTtimer0(************** [1 ] = l_tmpdate [2 ]&0x0f; l_tmpdisplay [5 ] = 1 0; ; EA = 1 ; ********************************************************************************************************************************************************************* //发送rst数据= 0; // 恢复}/************************************************************************************************************************************** rst = 0; _nop _(); _ nop _(); sct = 0; _nop _(); _ nop _(); rst = 1 ; _nop _(); _ nop _(); (SDA)温度| = 0x8 0; //每个载体sac = 0; 温度>> = 1 ; //从右到移动_nop _(); _ nop _(); _ nop_(); t = 0; _nop _(); //以下是DS1 3 02 reset_nop _()的稳定时间; op _(); _ nop_(); ************************************************************************************************************************ 07 i ++)//读取秒,时间,今天,月,内存{l_tmpdate [i] = rea d_ds1 3 02 (*p)c(invalid)//设置日历{unsignedChari,*p,tmp; for(i = 0; i <7 ; i ++){// bcd tmp = l_tmpdate 0x8 e,0x00); p = write_rtc_address; // cross -address(i = 0; i <7 ; i ++),l_tmpdate [i]); p ++;} write_ds1 3 02 (0x8 e,0x8 0);}/************************************************************************************************************************************************** th0 = 0xf5 ; tl0 = 0xe0; p0 = table [l_tmpdisplay [i]] 0; LS1 3 8 C = 0; 休息; case2 :ls1 3 8 a = 0; LS1 3 8 B = 1 ; LS1 3 8 C = 0; 休息; case3 :ls1 3 8 a = 1 ; LS1 3 8 B = 1 ; LS1 3 8 C = 0; 休息; case4 :ls1 3 8 a = 0; LS1 3 8 B = 0; LS1 3 8 C = 1 ; 休息; case5 :ls1 3 8 a = 1 ; LS1 3 8 B = 0; LS1 3 8 C = 1 ; case6 :ls1 3 8 a = 0; LS1 3 8 B = 1 ; 8 b = 1 ; 休息;} i ++; if(i == 8 ){i = 0; num ++; if(1 0 == num)//在时间中断期间读取数据1 3 02 {readrtc_flag = 1 ; //使用标志位选择NUM = 0;}}}这是DS1 3 02 显示C,请好看。