下載手機(jī)汽配人

求STC89c52單片機(jī)用倒計(jì)時(shí)控制繼電器開(kāi)、合的C語(yǔ)言程序,晶振12.000

1. 有4個(gè)數(shù)碼管(共陽(yáng)) 顯示千、百、十、個(gè)(秒)。 2. 開(kāi)機(jī)時(shí)顯示00:00,通過(guò)4個(gè)按鍵(微動(dòng)開(kāi)關(guān))分別控制個(gè)、十、百、千各位0~9的顯示,實(shí)現(xiàn)對(duì)預(yù)定時(shí)間設(shè)定,按一下加一,0~9循環(huán)。 3. 時(shí)間設(shè)定后倒計(jì)時(shí)開(kāi)始,待數(shù)碼管顯示0000時(shí),繼電器斷開(kāi),下游斷電。 4.單片機(jī)晶振12.000。 5.數(shù)碼管:共陽(yáng)數(shù)碼管,段位:P0.0~P0.7??刂茦O:P2.0~P2.3。 6.開(kāi)關(guān):千位~~~個(gè)位是P1.0~~~P1.3。 7.繼電器:P3.0 從沒(méi)學(xué)過(guò)C語(yǔ)言,單片機(jī)也是覺(jué)得感興趣,剛剛開(kāi)會(huì)學(xué)習(xí)的。 跪求,跪求,跪跪求哪位大神、高手、天才能幫我解決一下。感激涕零啊~~~
問(wèn) 提問(wèn)者:網(wǎng)友 2018-07-23
最佳回答
這是數(shù)字時(shí)鐘的C程序,如果要實(shí)現(xiàn)對(duì)繼電器的開(kāi)關(guān)控制,就可以在主程序中加入對(duì)時(shí)間的控制。也就是說(shuō),在你定義的某個(gè)時(shí)間上,繼電器會(huì)實(shí)現(xiàn)開(kāi)或者合的狀態(tài)!由于單片機(jī)對(duì)數(shù)碼管的控制引腳有別,程序還得自己加以修改。 #include //#include #define uchar unsigned char #define uint unsigned int uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xd8, 0x80,0x90};//數(shù)字顯示 sbit duan=P2^1;//段選定義 sbit wei=P2^2;//位選定義 sbit k1=P3^2;//選擇 秒/分/時(shí) 調(diào)試定義 sbit k2=P3^3;//增減調(diào)試定義 /*定義初始化變量*/ uchar miao=0; uchar fen=0; uchar shi=0; uchar mst=0;//標(biāo)準(zhǔn)化時(shí)間 uchar key=0; void display();//顯示子程序 void delay(uchar z); void time_pro(); void keyscan(); main() { mst=0; miao=0; TMOD=0x01;//time0為定時(shí)器,選擇方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; ET0=1; TR0=1; wei=1; P0=0x3f; wei=0; duan=1; P0=table[0]; duan=0; P1=0x55;//點(diǎn)亮流水燈 while(1) { display(); time_pro(); if(k1==0) keyscan(); //繼電器開(kāi)合控制加在此處:時(shí)間可以根據(jù)自己的需求任意定義 //例如:if(shi==17&&fen==21&&miao==52) { jidianqi=0;//0就表示繼電器關(guān)閉 } if(shi==23&&fen==57&&miao==34) { jidianqi=1;//1就表示繼電器開(kāi)啟 } } } /*顯示子程序*/ void display() { wei=1; P0=0x01; wei=0; P0=0xff;//清屏 duan=1; P0=table[miao%10];//顯示秒鐘的
回答者:網(wǎng)友
產(chǎn)品精選
搜索問(wèn)答
還沒(méi)有汽配人賬號(hào)?立即注冊(cè)

我要提問(wèn)

汽配限時(shí)折扣

本頁(yè)是網(wǎng)友提供的關(guān)于“求STC89c52單片機(jī)用倒計(jì)時(shí)控制繼電器開(kāi)、合的C語(yǔ)言程序,晶振12.000”的解答,僅供您參考,汽配人網(wǎng)不保證該解答的準(zhǔn)確性。