51單片機(jī)C語(yǔ)言教程錯(cuò)誤(51單片機(jī)c語(yǔ)言教程)
2022-09-12 06:20:31
來(lái)源:
導(dǎo)讀 關(guān)于51單片機(jī)C語(yǔ)言教程錯(cuò)誤,51單片機(jī)c語(yǔ)言教程這個(gè)問(wèn)題很多朋友還不知道,今天小六來(lái)為大家解答以上的問(wèn)題,現(xiàn)在讓我們一起來(lái)看看吧!1、=
關(guān)于51單片機(jī)C語(yǔ)言教程錯(cuò)誤,51單片機(jī)c語(yǔ)言教程這個(gè)問(wèn)題很多朋友還不知道,今天小六來(lái)為大家解答以上的問(wèn)題,現(xiàn)在讓我們一起來(lái)看看吧!
1、======================================/*按鍵可以調(diào)整當(dāng)時(shí)時(shí)間2、按鍵可以調(diào)節(jié)定時(shí)時(shí)間3、定時(shí)時(shí)間到繼電器吸合*8位數(shù)碼管顯示 時(shí)間格式格式 12-08-00 標(biāo)示12點(diǎn)08分00秒S1 用于小時(shí) 加1操作 S2 用于小時(shí)減1操作S3 用于分鐘 加1操作S4 用于分鐘減1操作*//*----------------------------------------------- 名稱(chēng):普通時(shí)鐘 日期:2009.5 修改:無(wú) 內(nèi)容:------------------------------------------------*/#include //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義sbit KEY1=P3^0; //定義端口參數(shù)sbit KEY2=P3^1;sbit KEY3=P3^2;sbit KEY4=P3^3;sbit LED=P1^2; //定義指示燈參數(shù)code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰數(shù)碼管 0-9unsigned char StrTab[8]; //定義緩沖區(qū)unsigned char minute=30,hour=12,second; //定義并且初始化值 12:30:00/******************************************************************//* 延時(shí)函數(shù) *//******************************************************************/void delay(unsigned int cnt){ while(--cnt);}/******************************************************************//* 顯示處理函數(shù) *//******************************************************************/void Displaypro(void){ StrTab[0]=tab[hour/10]; //顯示小時(shí) StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //顯示"-" StrTab[3]=tab[minute/10]; //顯示分鐘 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //顯示"-" StrTab[6]=tab[second/10]; //顯示秒 StrTab[7]=tab[second%10]; }/******************************************************************//* 主函數(shù) *//******************************************************************/main()//主函數(shù){ TMOD |=0x01;//定時(shí)器0 10ms in 12M crystal 用于計(jì)時(shí) TH0=0xd8; //初值 TL0=0xf0; ET0=1; TR0=1; TMOD |=0x10; //定時(shí)器1用于動(dòng)態(tài)掃描 TH1=0xF8; //初值 TL1=0xf0; ET1=1; TR1=1; EA =1; Displaypro(); //調(diào)用顯示處理while(1)//主循環(huán) { if(!KEY1) //按鍵1去抖以及動(dòng)作 { delay(10000); if(!KEY1) { hour++;if(hour==24)hour=0; //正常時(shí)間 小時(shí) 加1 Displaypro(); } } if(!KEY2) //按鍵2去抖以及動(dòng)作 { delay(10000); if(!KEY2) { hour--;if(hour==255)hour=23; //正常時(shí)間 小時(shí)減1 Displaypro(); } } if(!KEY3) //按鍵去抖以及動(dòng)作 { delay(10000); if(!KEY3) { minute++;if(minute==60)minute=0;//分加1 Displaypro(); } } if(!KEY4) //按鍵去抖以及動(dòng)作 { delay(10000); if(!KEY4) { minute--;if(minute==255)minute=59; //分減1 Displaypro(); } } }}/******************************************************************//* 定時(shí)器1中斷 *//******************************************************************/void time1_isr(void) interrupt 3 using 0//定時(shí)器1用來(lái)動(dòng)態(tài)掃描{ static unsigned char num; TH1=0xF8;//重入初值 TL1=0xf0; switch (num){ case 0:P2=0;P0=StrTab[num];break; //分別調(diào)用緩沖區(qū)的值進(jìn)行掃描 case 1:P2=1;P0=StrTab[num];break; case 2:P2=2;P0=StrTab[num];break; case 3:P2=3;P0=StrTab[num];break; case 4:P2=4;P0=StrTab[num];break; case 5:P2=5;P0=StrTab[num];break; case 6:P2=6;P0=StrTab[num];break; case 7:P2=7;P0=StrTab[num];break; default:break;}num++; //掃描8次。
2、使用8個(gè)數(shù)碼管if(num==8) num=0;}/******************************************************************//* 定時(shí)器0中斷 *//******************************************************************/void tim(void) interrupt 1 using 1{static unsigned char count;//定義內(nèi)部靜態(tài)變量TH0=0xd8; //重新賦值TL0=0xf0;count++; switch (count) { case 0: case 20: case 40: case 60: case 80:Displaypro(); //隔一定時(shí)間調(diào)用顯示處理 break; case 50:P1=~P1; //半秒 LED閃爍 break; default:break; }if (count==100) { count=0; second++; //秒加1 if(second==60) { second=0; minute++; //分加1 if(minute==60) { minute=0; hour++; //時(shí)加1 if(hour==24) hour=0; } } } }==============================================。
本文分享完畢,希望對(duì)大家有所幫助。
標(biāo)簽:
免責(zé)聲明:本文由用戶(hù)上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!