找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7111|回復: 3
打印 上一主題 下一主題
收起左側

分享一個msp430的簡單程序-電子時鐘

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:207975 發(fā)表于 2017-6-5 12:20 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
分享一個大作業(yè)的簡單程序-電子時鐘


單片機源程序如下:


  1. #include<msp430x14x.h>
  2. #include"LCD1602.h"
  3. #include"settimer.h"
  4. #include"pushkey.h"
  5.         

  6. extern int second;   //1秒計數(shù)單位
  7. extern int minute;   //1分鐘計數(shù)單位
  8. extern int hour;     //1小時計數(shù)單位
  9. extern uchar table[11];  //時間顯示列表
  10. int flag1 = 0;   //第一個按鍵標志


  11. void main( void )
  12. {
  13.     // Stop watchdog timer to prevent time out reset
  14.     WDTCTL = WDTPW + WDTHOLD;
  15.    
  16.     set_timer();
  17.     init_timer();
  18.     init_pushkey();
  19.     LcdReset();
  20.    
  21.     while(1)
  22.     {
  23.         LPM3;   //低功耗模式3  
  24.         LcdWriteCommand( 0x80 + 0x00 , 1 );  //設置字符指針,讓液晶從頭開始顯示字符
  25.         display_hour();
  26.         display_minute();
  27.         display_second();
  28.     }
  29. }

  30. /*******************************定時器中斷*****************************************/
  31. #pragma vector=TIMERA0_VECTOR   //定時器中斷函數(shù),1s進入一次
  32. __interrupt void TIMER_A( void )
  33. {
  34.     if( flag1 == 1 )  //開始計時
  35.     {
  36.         second++;
  37.         if( second >= 60 )
  38.         {
  39.             second = 0;  //second計數(shù)到60秒后清零
  40.             minute++; //minute加1
  41.             if( minute >= 60 )
  42.             {
  43.                 minute = 0;   //minute清零
  44.                 hour++;       //hour加1
  45.                 if( hour >= 24 )
  46.                     hour = 0;   //hour計數(shù)到24后清零
  47.             }
  48.         }
  49.     }
  50.     LPM3_EXIT;   //退出低功耗模式3
  51. }


  52. /******************************按鍵檢測中斷***************************************/
  53. #pragma vector = PORT1_VECTOR
  54. __interrupt void PORT1_ISR( void )
  55. {
  56.     uint i;
  57.     uchar pushkey;
  58.     pushkey = P1IFG & ( BIT0 + BIT1 );   //1、2哪個鍵按下,則觸發(fā)中斷,P1IFG相應位會置1
  59.     P2DIR |= ( BIT0 + BIT1 +BIT6 );
  60.     P2OUT |= ( BIT0 + BIT1 +BIT6 );   //讓LED先都熄滅
  61.    
  62.     for( i = 0; i < 1000; i++ );     //類似于鍵盤消抖
  63.     if( ( P1IN & pushkey ) == pushkey )     //按鍵曾經(jīng)按下去過,觸發(fā)了中斷,但是按鍵又彈起來了,P1IN處檢測是輸入了高電平
  64.     {    //按鍵變?yōu)楦唠娖搅,判斷這個是為毛刺
  65.         P1IFG=0;
  66.         return;
  67.     }
  68.    
  69.     if( pushkey & BIT0 )   //第一個按鍵按下去了
  70.     {
  71.         flag1 ^= 1;  //可以開始計時
  72.         if( flag1 == 1 )
  73.         {
  74.             P2OUT &=~ BIT0;  //讓第一個LED亮起
  75.             delay_key( 3000 );
  76.             P2OUT |= BIT0;
  77.         }
  78.         
  79.         if( flag1 == 0 )
  80.         {
  81.             P2OUT &=~ BIT6;  //讓第六個LED亮起
  82.             delay_key( 3000 );
  83.             P2OUT |= BIT6;
  84.         }
  85.     }
  86. ……………………

  87. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

代碼下載:
430大作業(yè)電子時鐘.rar (19.58 KB, 下載次數(shù): 75)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發(fā)
ID:515832 發(fā)表于 2021-5-21 00:33 | 只看該作者
樓主,為啥我燒錄后不能用呢,lcd屏顯示都是方塊
回復

使用道具 舉報

板凳
ID:634381 發(fā)表于 2021-6-16 09:34 | 只看該作者
樓主有電路圖嗎
回復

使用道具 舉報

地板
ID:1050636 發(fā)表于 2022-11-5 17:38 | 只看該作者
求電路圖
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表