91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

請教,求大神指點!

初學單片機 年前就整了一個學習板 附帶一個光盤的。。但由于電腦系統升級成64位了。原來的IED光驅檢測不到了。所以一直也都沒有看附帶光盤里的教程。下班回家了就沒事自己個鼓掏。網上看了很多的教程,但是閉門造車終究是不行的。。。

發此帖一是尋求良師益友,二是請壇中大神解惑!(尋求良師益友,有誠意的請加QQ1677599388、PS:不知道能不能發QQ號

 

這是一個利用定時器寫的簡易時鐘C,現在我想要做出整點蜂鳴器響5秒。響500MS閉500MS,直至5S結束!求大神結個思路或是直接給個C我慢慢分析!謝謝!

/*利用定時器的時間顯示及按鍵調整時分秒*/

#include

#define  uchar unsigned char

#define  uint  unsigned int

sbit a=P1^1;   //74HC138_a

sbit b=P1^2;   //74HC138_b

sbit c=P1^3;   //74HC138_c

//sbit le=P1^0;   //74HC573_le

sbit bz=P1^4;    //蜂鳴器輸出口

sbit H_KEY=P2^2;             //時調整鍵

sbit M_KEY=P2^1;             //分調整鍵

sbit S_KEY=P2^0;             //秒調整鍵

void seconds_adjust();           //秒調整函數

void minute_adjust();            //分調整函數

void hours_adjust();             //時調整函數

char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};           //數碼管顯示數組

uchar hours=11, minute=59, seconds=55;  //時間初始化

uchar deda=0;                  

 void delay(uchar count);         //延時模塊          

 void zhh();                      //走時模塊

void display();                  //顯示模塊

void init_timer()//采用定時器0中斷,50MS更新一次

{  

TMOD=0x01; 

TH0=(65536-50000)/256; 

TL0=(65536-50000)%256;

 IE=0x82;  

TR0=1;

}

void T0_srv(void) interrupt 1

 TH0=(65536-50000)/256;

 TL0=(65536-50000)%256;

 deda++;

}

void seconds_adjust()//秒調整模塊

while(!S_KEY) display();         //等待秒調整鍵松開

 deda=0;seconds++;                 //毫秒清零、秒加1

 if(seconds==60)seconds=0;          //如果秒等于60,秒變0

}

void minute_adjust()//分調整模塊

while(!M_KEY) display();    

 seconds=0;minute++;               

if(minute==60)minute=0;        

}

void hours_adjust()//時調整模塊

while(!H_KEY) display();         

 seconds=0;hours++;        

 if(hours==24)hours=0;          

}

void zhh()//走時模塊

{

 if(deda>=20)seconds++,deda=0;

 if(seconds==60)minute++,seconds=0;

 if(minute==60)hours++,minute=0;

 if(hours==24)hours=0;

}

void display()//顯示模塊

{

 le=1;                  //段選始終高電平

 a=0,b=0,c=0;           //位選最高位選通 

P0=table[hours/10];    //P0口送段碼   

delay(5);              //延遲5MS

 P0=0;                  //P0口段碼清口消隱

 

 a=1,b=0,c=0;

  P0=table[hours%10]; 

 delay(5);

 P0=0;

 

 a=0,b=1,c=0;

 P0=table[10]; 

delay(5);

 P0=0; 

 

 a=1,b=1,c=0;

  P0=table[minute/10];

   delay(5); 

P0=0;

 

 

 a=0,b=0,c=1;

  P0=table[minute%10]; 

  delay(5);

 P0=0;

 

 a=1,b=0,c=1; 

P0=table[10];

 delay(5);

 P0=0;

 

 a=0,b=1,c=1; 

 P0=table[seconds/10];  

 delay(5); 

P0=0;

 

 a=1,b=1,c=1; 

 P0=table[seconds%10]; 

  delay(5); 

P0=0;

}

void delay(uchar k)//延時模塊1MS

{  

uchar i,j;

 for(i=0;i

 for(j=0;j<120;j++)  ;

}

void voice()//整點蜂鳴器叫

if((minute==0)&(seconds<=0))

 {   

????

 }

}

void main()//主程序

init_timer();    //定時模塊 

 while(1)         //無限循環 

 {   

 if(!H_KEY) hours_adjust();   //時調整     

  if(!M_KEY) minute_adjust();  //分調整  

  if(!S_KEY) seconds_adjust(); //秒調整  

  zhh();          //走時模塊         

 display();      //顯示 

 voice();        //蜂鳴器整點響5S 

 }

}

 

懇請大神指導一下?????中應如何實現蜂鳴器響5秒。響500MS閉500MS,直至5S結束.

延時或是定時器中斷都成!謝謝!

 

全部回復(4)
正序查看
倒序查看
2014-10-30 11:40
檢查秒鐘  分鐘  如果不為0就不工作,如果秒為0了,再檢查分鐘,也為0了,把一個標志變化(例如:flag初始為0;把flag=1)     鬧鐘子模塊就去檢查這個標志flag=1就工作,在工作的時候要有一個數據去比對  看鬧鈴多長時間,結束后退出  把flag=0;方便下次使用標志
0
回復
z39613619
LV.4
3
2014-10-31 23:20
@yueyunno1
檢查秒鐘 分鐘 如果不為0就不工作,如果秒為0了,再檢查分鐘,也為0了,把一個標志變化(例如:flag初始為0;把flag=1)  鬧鐘子模塊就去檢查這個標志flag=1就工作,在工作的時候要有一個數據去比對 看鬧鈴多長時間,結束后退出 把flag=0;方便下次使用標志

終于有熱心人回復了。。淚奔中..........

 

整點報時置標志位我也試過...因為是無源蜂鳴器,就要另做一個蜂鳴器驅動程序,如果用簡單的延時來做整出來的聲音難聽地不行不行的還影響程序的執行.用取反也難聽.這幾天都在鼓搗用T0做計時時間,用T1做4KHZ驅動蜂鳴器.但是由于初學不平有限弄不出來.功力不夠,有待加油!

感謝你的回復!

0
回復
ytwsdz
LV.7
4
2014-11-10 19:31
@z39613619
終于有熱心人回復了。。淚奔中.......... 整點報時置標志位我也試過...因為是無源蜂鳴器,就要另做一個蜂鳴器驅動程序,如果用簡單的延時來做整出來的聲音難聽地不行不行的還影響程序的執行.用取反也難聽.這幾天都在鼓搗用T0做計時時間,用T1做4KHZ驅動蜂鳴器.但是由于初學不平有限弄不出來.功力不夠,有待加油!感謝你的回復!
哈哈 你想好聽 搞個音樂換個喇叭。電子琴程序
0
回復
z39613619
LV.4
5
2014-11-11 22:36
@ytwsdz
哈哈你想好聽搞個音樂換個喇叭。電子琴程序
不要求好聽啥的。。。初學嘛。一步一步的來。爭取每步都學懂吧。。。至于能學成什么樣,堅持總會沒錯!說實話也沒指著這個吃飯。完全興趣。
0
回復
主站蜘蛛池模板: 济源市| 古交市| 安义县| 广汉市| 汉阴县| 崇礼县| 工布江达县| 清徐县| 南昌市| 盘锦市| 黑河市| 元阳县| 沂南县| 廊坊市| 上杭县| 左云县| 湟源县| 永德县| 洞口县| 桃江县| 玉环县| 黔江区| 金川县| 新闻| 化德县| 保亭| 固阳县| 凤冈县| 米林县| 鄂伦春自治旗| 灯塔市| 郑州市| 霞浦县| 天等县| 故城县| 日喀则市| 平江县| 会昌县| 永和县| 鄂托克旗| 环江|