wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6855|回復(fù): 0
收起左側(cè)

msp430g2553鬧鐘源程序

[復(fù)制鏈接]
ID:90014 發(fā)表于 2015-9-14 12:10 | 顯示全部樓層 |閱讀模式
  1.   #include <msp430.h>
  2. #include"config.h"
  3. #include"1838.h"
  4. #include"1602.h"
  5. #include"dh11.h"
  6. #include"ds3231.h"
  7. #include"ta.h"
  8. //#include"adc.h"
  9. int main(void)
  10. {
  11.   extern_12m();
  12.   hc164_init();
  13.   LCD_init();
  14.   h1838_init();
  15.   init_TA();
  16. //  I2cByteWrite(0xD0,0x0e,0);
  17. //  I2cByteWrite(0xD0,0x0f,0);
  18. //  ModifyTime(15,7,19,12,07,00);//初始化時(shí)鐘,2007/11/20,12/59/00
  19.                                //小時(shí)采用24小時(shí)制
  20.   get_show_time();
  21.   get_show_Temperature();
  22.   dh11_read();

  23. // adc_init();
  24.   _EINT();
  25.   while (1)
  26.   {
  27. //  LCD_disp_string(0,0,"I AM A BOY?");
  28. //  LCD_disp_string(0,1,"YOU ARE A GIRL!");
  29.   Red_Code();
  30.   Key_Icode(key_code[2]);

  31. }
  32. }



  33. #include"config.h"
  34. uchar change;

  35. void extern_12m()
  36. {
  37.    WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  38.   if (CALBC1_12MHZ==0xFF)                                        // If calibration constant erased
  39.   {                                                                                       
  40.     while(1);                               // do not load, trap CPU!!       
  41.   }
  42.   DCOCTL = 0;                               // Select lowest DCOx and MODx settings
  43.   BCSCTL1 = CALBC1_12MHZ;
  44.   DCOCTL = CALDCO_12MHZ;                     // Load 8MHz constants
  45. }

  46. void hc164_init()
  47. {
  48.   P1OUT &= ~(BIT6+BIT7+BIT3);                           // Clear P1.0
  49.   P1DIR |=BIT6+BIT7+BIT3;                            // P1.0 output
  50.   
  51.   P2OUT &= ~(BIT0+BIT1+BIT2);                           // Clear P1.0
  52.   P2DIR |=BIT0+BIT1+BIT2;                            // P1.0 output
  53. }

  54. void LCD_delay_10us(uint n) // - - 10微秒的延時(shí)子程序
  55. {
  56.   uint i,j;
  57.   for(i=n;i>0;i--)
  58.     for(j=4;j>0;j--);  
  59. }

  60. void sendbyte(uchar byte)
  61. {            
  62. uchar c,num;   
  63. num=byte;
  64. for(c=0;c<8;c++)        
  65. {     
  66. P1OUT&=~0x80;
  67. CLK0;   
  68. P1OUT|=num&0x80; //(0x80即十進(jìn)制的128, 二進(jìn)制的10000000 按位發(fā)送
  69. CLK1;         
  70. num<<=1;   
  71. }
  72. }  


  73. // - - 向LCD1602寫指令
  74. void LCD_write_command(uchar dat)
  75. {
  76. LCD_delay_10us(2);
  77. LCD_RS_LOW; // - - 指令
  78. //LCD_RW_LOW; // - - 寫入
  79. sendbyte(dat);
  80. LCD_delay_10us(2);
  81. LCD_EN_HIGH; // - - 允許
  82. LCD_delay_10us(2);
  83. LCD_EN_LOW;
  84. }

  85. // - - 向LCD1602寫數(shù)據(jù)
  86. void LCD_write_data(uchar dat)
  87. {
  88. LCD_delay_10us(2);
  89. LCD_RS_HIGH;// - - 數(shù)據(jù)
  90. //LCD_RW_LOW;// - - 寫入
  91. sendbyte(dat);
  92. LCD_delay_10us(2);
  93. LCD_EN_HIGH;// - - 允許
  94. LCD_delay_10us(2);
  95. LCD_EN_LOW;
  96. }

  97. // - - 設(shè)置顯示位置
  98. void LCD_set_xy(uchar x,uchar y)
  99. {
  100.   uchar address;
  101.   if(y==1)
  102.   {
  103.     address=0x80+x; // - - 第一行位置
  104.   } else {
  105.     address=0xc0+x; // - - 第二行位置
  106.   }
  107. //    LCD_delay_10us(1);
  108.     LCD_write_command(address);
  109. }

  110. // - - 顯示一個(gè)字符函數(shù)
  111. void LCD_disp_char(uchar x,uchar y,uchar dat) // - - LCD_disp_char(0,1,0x38); // - - 顯示8
  112. {
  113.     LCD_set_xy(x,y);
  114. //    LCD_delay_10us(1);
  115.     LCD_write_data(dat);
  116. }



  117. // - - 顯示一個(gè)字符串函數(shù)
  118. void LCD_disp_string(uchar x,uchar y,char *s)
  119. {
  120.   LCD_set_xy(x,y);
  121. // LCD_delay_10us(1);
  122.   while(*s!='\0')
  123.   {
  124.     LCD_write_data(*s);
  125.     s++;
  126.   }
  127. }

  128. void LCD_init(void)
  129. {
  130. LCD_delay_10us(20);
  131. LCD_write_command(0x38); // - - 設(shè)置8位格式,2行,5x7
  132. LCD_delay_10us(5);
  133. LCD_write_command(0x0c); // - - 整體顯示,關(guān)光標(biāo),不閃爍
  134. LCD_delay_10us(5);
  135. LCD_write_command(0x06); // - - 設(shè)定輸入方式,增量不移位
  136. LCD_delay_10us(5);
  137. LCD_write_command(0x01); // - - 清除屏幕顯示
  138. LCD_delay_10us(200);
  139. }





  140. #include"config.h"
  141. #define IR_DIR_IN P2DIR&=~BIT3//紅外接收頭P1.0設(shè)置為輸入,
  142. #define RED_R (P2IN&BIT3)//紅外接收頭輸入值
  143. void h1838_init()
  144. {
  145.   IR_DIR_IN;
  146. }


  147. uchar KEY_VAL;
  148. uchar key_code[4],code_value;
  149. void Red_Code()
  150. {
  151. uchar i,j,k = 0;

  152. for(i = 0;i < 19;i++)
  153. {
  154.   delay_us(400);           //延時(shí)400us
  155.   if(RED_R)                //9ms內(nèi)有高電平,則判斷為干擾,退出處理程序
  156.   {
  157.       return;
  158.   }
  159. }

  160. while(!RED_R);            //等待9ms低電平過去
  161. for(i=0;i<5;i++)          //是否連發(fā)碼
  162. {
  163.   delay_us(500);
  164.   if(!RED_R)
  165.    {
  166.      return;
  167.    }
  168. }


  169. while(RED_R);               //等待4.5ms高電平過去

  170. for(i = 0;i < 4;i++)        //接收4個(gè)字節(jié)的數(shù)據(jù)
  171. {
  172.   for(j = 0;j < 8;j++)      //每個(gè)字節(jié)的數(shù)據(jù)8位
  173.   {
  174.    

  175.    while(!RED_R);           //等待變高電平
  176.    while(RED_R)             //計(jì)算高電平時(shí)間
  177.    {
  178.     delay_us(100);
  179.     k++;
  180.     if(k >22)               //高電平時(shí)間過長(zhǎng),則退出處理程序
  181.     {
  182.      return;         
  183.     }
  184.    
  185.    }

  186.    code_value>>=1;          //接受一位數(shù)據(jù)
  187.    if(k >= 7)
  188.    {
  189.     code_value|=0x80;       //高電平時(shí)間大于0.56,則為數(shù)據(jù)1
  190.    }
  191.    k = 0;                  //計(jì)時(shí)清零
  192.   }
  193.   key_code[i]=code_value;  //四個(gè)字節(jié)的數(shù)據(jù)
  194. }
  195. //  Key_Icode();             //調(diào)用賦值函數(shù)

  196. // Display_Key(KEY_VAL);     //顯示按鍵值
  197.   
  198. //  delay_ms(50);

  199. }
復(fù)制代碼



  1. #include <msp430.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define ulong unsigned long
  5. #define CLK0  P1OUT&=~BIT6
  6. #define CLK1   P1OUT|=BIT6


  7. #define LCD_EN_HIGH         P2OUT|=BIT2   //拉高
  8. #define LCD_EN_LOW          P2OUT&=~BIT2  //拉低

  9. #define LCD_RW_HIGH         P2OUT|=BIT1   //拉高
  10. #define LCD_RW_LOW          P2OUT&=~BIT1   //拉低

  11. #define LCD_RS_HIGH         P2OUT|=BIT0   //拉高
  12. #define LCD_RS_LOW          P2OUT&=~BIT0   //拉低

  13. #define CPU_F ((double)12000000)   //外部高頻晶振8MHZ
  14. //#define CPU_F ((double)32768)   //外部低頻晶振32.768KHZ
  15. #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  16. #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

  17. #define KEY_0     0x16                 //鍵0
  18. #define KEY_1     0x0C                 //鍵1
  19. #define KEY_2     0x18                 //鍵2
  20. #define KEY_3     0x5E                 //鍵3
  21. #define KEY_4     0x08                 //鍵4
  22. #define KEY_5     0x1C                 //鍵5
  23. #define KEY_6     0x5A                 //鍵6
  24. #define KEY_7     0x42                 //鍵7
  25. #define KEY_8     0x52                 //鍵8
  26. #define KEY_9     0x4A                 //鍵9
  27. #define prex      0x44                 //電源
  28. #define nex       0x40                 //模式
  29. #define play_pause 0x43                 //靜音
  30. #define ch_       0x45                //模式
  31. #define ch        0x46  
  32. #define cha       0x47                 //模式
  33. #define __         0x07
  34. #define _a        0x15
  35. #define eq        0x09
  36. #define _100a      0x19
  37. #define _200a      0x0d
  38. #define power      0x12            //power
  39. #define up      0x1b            //up
  40. #define down      0x1a            //down
  41. #define left      0x04            //left
  42. #define right      0x06            //right
  43. #define ok      0x05            //0k
復(fù)制代碼


  1. #include"config.h"

  2. //連接端口
  3. #define DHT11_Dir      P1DIR
  4. #define DHT11_In       P1IN
  5. #define DHT11_Out      P1OUT
  6. #define DHT11_Bit      BIT0

  7. char dh11_str[8];

  8. //8bit濕度+8bit濕度小數(shù)點(diǎn)
  9. //8bit溫度+8bit溫度小數(shù)點(diǎn)
  10. //數(shù)據(jù)位為0是高電平26~28us | 1高電平70us

  11. uchar DHT11_Data[5] = {0}; //從DHT11中讀到的數(shù)據(jù)
  12. void read_DHT11(uchar *Data)
  13. {
  14.     uchar re,m,n,Time_out;
  15.     DHT11_Dir &= (~DHT11_Bit);        //引腳為輸入
  16.     for(n = 0; n < 5; n++)
  17.     {
  18.         for(m = 0; m < 8; m++)
  19.         {
  20.             while( !(DHT11_In & DHT11_Bit) );     //每1bit以50us低電平時(shí)限開始,直到高電平到來
  21.             delay_us(30);                     
  22.             re = 0;            
  23.             if((DHT11_In & DHT11_Bit))          //30us后還是高電平說明是1
  24.             {
  25.                 re = 1;
  26.             }
  27.             Time_out = 2;
  28.             while((DHT11_In & DHT11_Bit) && (Time_out++ ));
  29.             if(Time_out == 1)                   //超時(shí)處理
  30.             {
  31.                 break;
  32.             }
  33.             *Data <<= 1;
  34.             if(re)
  35.             {
  36.                 *Data |= 0x01;
  37.             }
  38.         }
  39.         Data++;
  40.     }
  41. }

  42. //DHT11的握手協(xié)議模擬和數(shù)據(jù)的讀取
  43. uchar DHT11_GetData(void)
  44. {
  45.     uchar o,sum;
  46.     DHT11_Dir |= DHT11_Bit;
  47.     DHT11_Out &= ~DHT11_Bit;    //拉低,發(fā)出開始信號(hào)
  48.    
  49.     delay_ms(18);               //拉低18ms
  50.     DHT11_Out |= DHT11_Bit;     //拉高20us等待
  51.     delay_us(20);
  52.     DHT11_Dir &= (~DHT11_Bit);
  53.     if( !(DHT11_In & DHT11_Bit) )       //DHT11響應(yīng)
  54.     {
  55.         while( !(DHT11_In & DHT11_Bit) );       //80us低電平,等待DHT11的響應(yīng)信號(hào)
  56.         while( (DHT11_In & DHT11_Bit) );        //DHT11準(zhǔn)備發(fā)送數(shù)據(jù)
  57.         read_DHT11(DHT11_Data);                 //主機(jī)接收數(shù)據(jù)
  58.         sum = 0;
  59.         for(o = 0; o < 4; o++)                  //數(shù)據(jù)校驗(yàn)
  60.         {
  61.           sum += DHT11_Data[o];
  62.         }
  63.         if(sum != DHT11_Data[4])
  64.         {
  65.           return 0;
  66.         }
  67.         else
  68.         {
  69.           return 1;
  70.         }
  71.     }
  72.     return 0;
  73. }

  74. //對(duì)溫度濕度進(jìn)行格式化(如果獲取溫度成功)
  75. void DHT11_format(char *Des_str)
  76. {
  77.     Des_str[0] = DHT11_Data[0]/10 + 0x30;
  78.     Des_str[1] = DHT11_Data[0]%10 + 0x30;
  79.     Des_str[2] = '%';
  80.     Des_str[3] = ' ';
  81.     Des_str[4] = DHT11_Data[2]/10 + 0x30;
  82.     Des_str[5] = DHT11_Data[2]%10 + 0x30;
  83.     Des_str[6] = 'C';
  84.     Des_str[7] = ' ';
  85. }

  86. void dh11_read()
  87. {
  88.   if(DHT11_GetData())
  89.    DHT11_format(dh11_str);
  90.   LCD_disp_string(0,0,dh11_str);
  91. }

復(fù)制代碼



  1. #include"config.h"

  2. #define SDA_DIR_OUT P1DIR|=BIT4
  3. #define SDA_DIR_IN P1DIR&=~BIT4
  4. #define SCL_DIR_OUT P1DIR|=BIT5

  5. #define SDA_IN P1IN&BIT4

  6. #define SDA1 P1OUT|=BIT4
  7. #define SDA0 P1OUT&=~BIT4
  8. #define SCL1 P1OUT|=BIT5
  9. #define SCL0 P1OUT&=~BIT5
  10. uchar year,month,date,hour,minute,second;
  11. uchar const table[]={'0','1','2','3','4','5','6','7','8','9'};
  12. uchar const month_12[]={31,29,31,30,31,30,31,31,30,31,30,31};

  13. uchar clockset,clockon,clockoff[5],clock_on;
  14. uchar oclock[5][2];
  15. uchar BCD2HEX(uchar val)    //BCD轉(zhuǎn)換為Byte
  16. {
  17.     uchar temp;
  18.     temp=val&0x0f;
  19.     val>>=4;
  20.     val&=0x0f;
  21.     val*=10;
  22.     temp+=val;
  23.    
  24.     return temp;
  25. }


  26. uchar HEX2BCD(uchar val)    //B碼轉(zhuǎn)換為BCD碼
  27. {
  28.     uchar i,j,k;
  29.     i=val/10;
  30.     j=val%10;
  31.     k=j+(i<<4);
  32.     return k;
  33. }



  34. void Start_I2C()
  35. {
  36.     SDA_DIR_OUT;
  37.     SCL_DIR_OUT;
  38.     SDA1;                  //發(fā)送起始條件的數(shù)據(jù)信號(hào)
  39.     delay_us(5);
  40.     SCL1;
  41.     delay_us(5);             //起始條件建立時(shí)間大于4.7us,延時(shí)
  42.    
  43.     SDA0;                  //發(fā)送起始信號(hào)
  44.     delay_us(5);             // 起始條件鎖定時(shí)間大于4μs
  45.       
  46. //    SCL0;                  //鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)
  47. //    delay_us(2);
  48. }


  49. void Stop_I2C()
  50. {
  51.     SDA_DIR_OUT;
  52.     SCL_DIR_OUT;
  53.     SDA0;                  //發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)
  54.     delay_us(5);             //發(fā)送結(jié)束條件的時(shí)鐘信號(hào)
  55.     SCL1;                  //結(jié)束條件建立時(shí)間大于4us
  56.     delay_us(5);
  57.    
  58.     SDA1;                  //發(fā)送I2C總線結(jié)束信號(hào)
  59.     delay_us(1);
  60. }


  61. void SendByte(uchar c)
  62. {
  63.     uchar BitCnt;
  64.     SDA_DIR_OUT;
  65.     SCL_DIR_OUT;
  66.     SCL0;
  67.     delay_us(10);
  68.     for(BitCnt=0;BitCnt<8;BitCnt++)         //要傳送的數(shù)據(jù)長(zhǎng)度為8位
  69.     {
  70.         if(c&0x80)
  71.             SDA1;                          //判斷發(fā)送位
  72.         else
  73.             SDA0;               
  74.           delay_us(1);
  75.           SCL0;                            //置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位
  76.           delay_us(1);                       //保證時(shí)鐘高電平周期大于4μs   
  77.           SCL1;
  78.           delay_us(5);
  79.           c=c<<1;
  80.           SCL0;                            //置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位
  81.           delay_us(5);   
  82.     }
  83.     SDA1;                                  //8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位
  84.     delay_us(1);  
  85.     SCL0;
  86.     delay_us(1);
  87.                      
  88.     SCL1;
  89.     delay_us(1);
  90.      SCL0;
  91.      
  92. }


  93. uchar ReceiveByte(uchar b)
  94. {
  95.   uchar i;
  96.   uchar temp;
  97.   uchar Dat=0;
  98. /*
  99.   SDA_H;
  100.   delay(5);
  101.   SCL_L;
  102.   delay(5);
  103. */
  104. SDA_DIR_IN;
  105.   for(i=0;i<8;i++)
  106.     {
  107.           SCL1;
  108.       delay_us(5);
  109.           Dat=Dat<<1;
  110.           delay_us(1);
  111.           temp=SDA_IN;
  112.           if(temp&0x10)
  113.             Dat|=0x01;
  114.           else
  115.             Dat|=0x00;
  116.          delay_us(1);
  117.          SCL0;
  118.           delay_us(5);
  119.     }
  120.    SDA_DIR_OUT;
  121.   
  122.   if(b)//每收一個(gè)數(shù)后發(fā)送ACK或nACK
  123.     SDA1;
  124.   else
  125.     SDA0;
  126.         
  127.   delay_us(1);
  128.   SCL1;
  129.   delay_us(1);
  130.   SCL0;
  131.   delay_us(1);
  132.   SDA1;        //釋放總線
  133.   delay_us(1);
  134.   return Dat;
  135. }
  136. /****************************************************/
  137. /***********將一個(gè)字節(jié)寫入DS3231指定的地址***********/
  138. void I2cByteWrite(uchar device,uint addr,uchar bytedata)
  139. {
  140.   Start_I2C();
  141. // delay_us(1);
  142.   SendByte(device);
  143. // delay_us(1);
  144.   SendByte(addr);
  145. // delay_us(1);
  146.   SendByte(bytedata);
  147. // delay_us(1);
  148.   Stop_I2C();
  149. }
  150. /****************************************************/
  151. /************從DS3231指定的地址讀一個(gè)字節(jié)************/
  152. uchar I2cByteRead(uchar device,uint addr)
  153. {
  154.   uchar Dat=0;
  155.   
  156.   Start_I2C();
  157.   SendByte(device);
  158. //  delay_us(1);
  159.   SendByte(addr);
  160. //  delay_us(1);
  161.   Start_I2C();
  162.   SendByte(0xd1);//讀數(shù)
  163. // delay_us(1);
  164.   Dat=ReceiveByte(1);//只接收一個(gè)字節(jié),所以發(fā)nACK
  165.   Stop_I2C();
  166.   return Dat;
  167. }
  168. /***************************************************/
  169. /*********************讀取時(shí)間**********************/
  170. void Readtime(void)
  171. {
  172.   year=I2cByteRead(0xd0,0x06);  //年
  173.   month=I2cByteRead(0xd0,0x05); //月
  174.   date=I2cByteRead(0xd0,0x04);  //日
  175.   hour=I2cByteRead(0xd0,0x02);  //時(shí)
  176.   minute=I2cByteRead(0xd0,0x01);//分
  177.   second=I2cByteRead(0xd0,0x00);//秒
  178. }
  179. /***************************************************/
  180. /****************修改時(shí)間,BCD碼輸入*****************/
  181. void ModifyTime(uchar yea,uchar mon,uchar da,uchar hou,uchar min,uchar sec)
  182. {
  183.   uchar temp=0;
  184.   
  185.   temp=HEX2BCD(yea);
  186.   I2cByteWrite(0xD0,0x06,temp);//修改年
  187.   
  188.   temp=HEX2BCD(mon);
  189.   I2cByteWrite(0xD0,0x05,temp);//修改月
  190.    
  191.   temp=HEX2BCD(da);
  192.   I2cByteWrite(0xD0,0x04,temp);//修改日
  193.   
  194.   temp=HEX2BCD(hou);
  195.   I2cByteWrite(0xD0,0x02,temp);//修改時(shí)
  196.   
  197.   temp=HEX2BCD(min);
  198.   I2cByteWrite(0xD0,0x01,temp);//修改分
  199.   
  200.   temp=HEX2BCD(sec);
  201.   I2cByteWrite(0xD0,0x00,temp);//修改秒
  202. }
  203. /****************************************************/
  204. /****************讀取時(shí)間 計(jì)算 并顯示****************/
  205. void get_show_time(void)
  206. {
  207. uchar temp1,temp2;
  208. char a[2];
  209. temp1=I2cByteRead(0xd0,0x06);  //年
  210. temp2=BCD2HEX(temp1);
  211. a[0]=table[temp2/10];
  212. a[1]=table[temp2%10];
  213. LCD_disp_string(0,1,a);
  214. LCD_disp_char(2,1,'-');

  215. temp1=I2cByteRead(0xd0,0x05);  //月
  216. temp2=BCD2HEX(temp1);
  217. a[0]=table[temp2/10];
  218. a[1]=table[temp2%10];
  219. LCD_disp_string(3,1,a);
  220. LCD_disp_char(5,1,'-');

  221. temp1=I2cByteRead(0xd0,0x04);  //日
  222. temp2=BCD2HEX(temp1);
  223. a[0]=table[temp2/10];
  224. a[1]=table[temp2%10];
  225. LCD_disp_string(6,1,a);
  226. LCD_disp_char(8,1,'-');

  227. temp1=I2cByteRead(0xd0,0x03);  //星期
  228. temp2=BCD2HEX(temp1);
  229. temp2=table[temp2];
  230. LCD_disp_char(9,1,temp2);
  231. LCD_disp_char(10,1,' ');

  232. LCD_disp_char(8,0,' ');
  233. if(clockset==0)
  234. {
  235. temp1=I2cByteRead(0xd0,0x02);  //時(shí) 24小時(shí)制
  236. temp1&=0x3f;     
  237. temp2=BCD2HEX(temp1);

  238. a[0]=table[temp2/10];
  239. a[1]=table[temp2%10];
  240. LCD_disp_string(8,0,a);
  241. LCD_disp_char(10,0,':');

  242. temp1=I2cByteRead(0xd0,0x01);  //分
  243. temp2=BCD2HEX(temp1);
  244. a[0]=table[temp2/10];
  245. a[1]=table[temp2%10];
  246. LCD_disp_string(11,0,a);
  247. LCD_disp_char(13,0,':');
  248.   
  249. temp1=I2cByteRead(0xd0,0x00);  //秒
  250. temp2=BCD2HEX(temp1);
  251. a[0]=table[temp2/10];
  252. a[1]=table[temp2%10];
  253. LCD_disp_string(14,0,a);

  254. }

  255. if(clockset!=0)
  256. {
  257. LCD_disp_string(8,0,"        ");
  258. a[0]=table[oclock[clockset-1][0]/10];
  259. a[1]=table[oclock[clockset-1][0]%10];
  260. LCD_disp_string(8,0,a);
  261. LCD_disp_char(10,0,'-');
  262. a[0]=table[oclock[clockset-1][1]/10];
  263. a[1]=table[oclock[clockset-1][1]%10];
  264. LCD_disp_string(11,0,a);
  265. LCD_disp_string(13,0,"CK");
  266. LCD_disp_char(15,0,table[clockoff[clockset-1]]);
  267. }

  268. }

  269. //顯示溫度

  270. void get_show_Temperature(void)
  271. {
  272.   if(change==0)
  273.   {
  274.     uchar Ttemp1,Ttemp2;
  275.    char a[2];
  276.     Ttemp1=I2cByteRead(0xd0,0x11);     //溫度 高字節(jié)
  277.     Ttemp2=BCD2HEX(Ttemp1);
  278. //     LCD_disp_string(9,1,"     ");
  279. //    Ttemp3=I2cByteRead(0xd0,0x12);    //溫度低字節(jié)
  280. //    Ttemp4=BCD2HEX(Ttemp3);
  281.     a[0]=table[Ttemp2/10];
  282.     a[1]=table[Ttemp2%10];
  283.     LCD_disp_string(13,1,a);
  284.     LCD_disp_char(15,1,'c');
  285.   }
  286.    
  287.   if(change!=0)
  288.   {
  289.    LCD_disp_string(13,1,"   ");
  290.   LCD_disp_char(15,1,table[change-1]);
  291.   }
  292.   
  293.   if((clockset!=0)&&(change==0))
  294. {
  295.    LCD_disp_string(13,1,"   ");
  296.    LCD_disp_char(13,1,table[clockset]);
  297.    LCD_disp_char(15,1,table[clockon]);
  298. }
  299.   
  300. }


  301. void change_del()
  302. {
  303.   uchar temp1,temp2,temp3,temp4;
  304.   if(change>0)
  305.   {
  306.    temp1=I2cByteRead(0xd0,change-1);  
  307.    temp2=BCD2HEX(temp1);
  308.    temp2-=1;
  309.    if(change<3)
  310.    {
  311.    if(temp2>59)
  312.      temp2=59;
  313.    }
  314.     if(change==3)
  315.     {
  316.       if(temp2>23)
  317.        temp2=23;
  318.     }
  319.    
  320.    if(change==4)
  321.    {
  322.      if(temp2==0)
  323.        temp2=7;
  324.    }
  325.     if(change==5)
  326.     {
  327.       if(temp2==0)
  328.       {
  329.         temp3=I2cByteRead(0xd0,0x05);  
  330.         temp4=BCD2HEX(temp3);
  331.         temp2=month_12[temp4-1];
  332.       }
  333.     }
  334.    if(change==6)
  335.    {
  336.       if(temp2==0)
  337.       temp2=12;  
  338.    }
  339.    
  340.     temp2=HEX2BCD(temp2);
  341.   I2cByteWrite(0xD0,change-1,temp2);//修改年
  342.   }
  343. }

  344. void change_add()
  345. {
  346.   uchar temp1,temp2,temp3,temp4;
  347.   if(change>0)
  348.   {
  349.    temp1=I2cByteRead(0xd0,change-1);  
  350.    temp2=BCD2HEX(temp1);
  351.    temp2+=1;
  352.    if(change<3)
  353.    {
  354.    if(temp2>59)
  355.      temp2=0;
  356.    }
  357.     if(change==3)
  358.     {
  359.       if(temp2>23)
  360.        temp2=0;
  361.     }
  362.    
  363.    if(change==4)
  364.    {
  365.      if(temp2==8)
  366.        temp2=1;
  367.    }
  368.     if(change==5)
  369.     {  
  370.         temp3=I2cByteRead(0xd0,0x05);  
  371.         temp4=BCD2HEX(temp3);
  372.         if(temp2>month_12[temp4-1])
  373.         temp2=1;   
  374.     }
  375.    if(change==6)
  376.    {
  377.       if(temp2==13)
  378.       temp2=1;  
  379.    }
  380.    
  381.     temp2=HEX2BCD(temp2);
  382.   I2cByteWrite(0xD0,change-1,temp2);//修改年
  383.   }
  384. }

  385. void change_set()
  386. {
  387.   ++change;
  388.   if(change>=8)
  389.     change=0;
  390. }


  391. void clock_set()
  392. {
  393. ++clockset;
  394. if(clockset>=6)
  395.    clockset=0;
  396. }

  397. void clock_add()
  398. {
  399.   change=0;
  400.   ++clockon;
  401.   if( clockon==3)
  402.     clockon=0;
  403. }

  404. void clock_change()
  405. {
  406.   if(clockon==1)
  407.   {
  408.     ++oclock[clockset-1][1];
  409.     if(oclock[clockset-1][1]>59)
  410.       oclock[clockset-1][1]=0;
  411.   }
  412.   
  413.   if(clockon==2)
  414.   {
  415.      ++oclock[clockset-1][0];
  416.     if(oclock[clockset-1][0]>23)
  417.       oclock[clockset-1][0]=0;
  418.   }
  419. }



  420. void Key_Icode(uchar dat)
  421. {
  422.    LCD_disp_char(10,1,' ');
  423. //  LCD_disp_string(10,1,"   ");
  424.    switch(dat)                    //第3個(gè)字節(jié)是數(shù)據(jù),第4個(gè)字節(jié)是反碼
  425.    {                                      //為了更穩(wěn)定,可以加上第4個(gè)字節(jié)數(shù)據(jù)的判斷
  426.    case KEY_0:KEY_VAL=0; LCD_disp_char(11,1,KEY_VAL+0x30);  LCD_disp_char(12,1,' '); break;
  427.    case KEY_1:KEY_VAL=1; LCD_disp_char(11,1,KEY_VAL+0x30);  LCD_disp_char(12,1,' '); break;
  428.    case KEY_2:KEY_VAL=2; LCD_disp_char(11,1,KEY_VAL+0x30);  LCD_disp_char(12,1,' '); break;
  429.    case KEY_3:KEY_VAL=3; LCD_disp_char(11,1,KEY_VAL+0x30);   LCD_disp_char(12,1,' ');break;
  430.    case KEY_4:KEY_VAL=4; LCD_disp_char(11,1,KEY_VAL+0x30);   LCD_disp_char(12,1,' ');break;
  431.    case KEY_5:KEY_VAL=5; LCD_disp_char(11,1,KEY_VAL+0x30);   LCD_disp_char(12,1,' ');break;
  432.    case KEY_6:KEY_VAL=6;  LCD_disp_char(11,1,KEY_VAL+0x30);  LCD_disp_char(12,1,' ');break;
  433.    case KEY_7:KEY_VAL=7; LCD_disp_char(11,1,KEY_VAL+0x30);   LCD_disp_char(12,1,' ');break;
  434.    case KEY_8:KEY_VAL=8; LCD_disp_char(11,1,KEY_VAL+0x30);   LCD_disp_char(12,1,' ');break;
  435.    case KEY_9:KEY_VAL=9; LCD_disp_char(11,1,KEY_VAL+0x30);   LCD_disp_char(12,1,' ');break;
  436.    case prex:LCD_disp_string(11,1,"PR");clock_change();break;
  437.    case nex :LCD_disp_string(11,1,"NX");clock_add();break;
  438.    case play_pause:LCD_disp_string(11,1,"PS");clock_set();break;
  439.    case ch_: LCD_disp_string(11,1,"C-");change_del();break;
  440.    case ch: LCD_disp_string(11,1,"CH");change_set();break;
  441.    case cha:LCD_disp_string(11,1,"C+");change_add();break;
  442.    case eq: LCD_disp_string(11,1,"EQ");
  443.              if(clockoff[clockset-1]==0)
  444.                clockoff[clockset-1]=1;
  445.              else clockoff[clockset-1]=0;
  446.                break;
  447.    case _a:LCD_disp_string(11,1,"V+");break;
  448.    case __:LCD_disp_string(11,1,"V-");break;
  449.    case _100a:LCD_disp_string(11,1,"1+");break;
  450.    case _200a:LCD_disp_string(11,1,"2+");break;
  451.    
  452.     case power:LCD_disp_string(11,1,"PW");break;
  453.    case up: LCD_disp_string(11,1,"UP");break;
  454.    case down:LCD_disp_string(11,1,"DW");break;
  455.    case left:LCD_disp_string(11,1,"LF");break;
  456.    case right:LCD_disp_string(11,1,"RT");break;
  457.    case ok:LCD_disp_string(11,1,"OK");break;
  458.    default:KEY_VAL=' ';break;
  459.    }
  460.   key_code[2]=' ';
  461.    
  462. }

  463. void oclockon()
  464. {
  465.   uchar clock_flag[5];
  466.   uchar temp1,temp2,temp3;
  467.   temp1=I2cByteRead(0xd0,0x02);  //時(shí) 24小時(shí)制
  468.   temp1&=0x3f;     
  469.   temp2=BCD2HEX(temp1);
  470.   
  471.   temp1=I2cByteRead(0xd0,0x01);  //分
  472.   temp3=BCD2HEX(temp1);
  473.   uchar i;
  474.   for(i=0;i<5;i++)
  475.   {
  476.     if(temp2==oclock[i][0])
  477.     {
  478.       if(temp3==oclock[i][1])
  479.       {
  480.         if(clockoff[i]==1)
  481.           clock_flag[i]=1;
  482.         else clock_flag[i]=0;
  483.       }
  484.       else clock_flag[i]=0;
  485.     }
  486.      else clock_flag[i]=0;
  487.   }
  488.   clock_on=0;
  489.   for(i=0;i<5;i++)
  490.   {
  491.     if(clock_flag[i]==1)
  492.       clock_on=1;
  493.   }
  494. }
復(fù)制代碼



  1. #include"config.h"

  2. uchar t;
  3. /***********TA初始化*********/
  4. void init_TA()
  5. {
  6.   TACCTL0 = CCIE;                           // TACCR0 interrupt enabled
  7.   TACCR0 = 60000;                            //5ms中斷一次
  8.   TACTL = TASSEL_2 + MC_1;                  // SMCLK, upmode
  9. }


  10. #pragma vector=TIMER0_A0_VECTOR  
  11. __interrupt void Timer_A (void)
  12. {

  13.   if(++t==200)
  14.   {  
  15.     t=0;
  16.     dh11_read();
  17.     get_show_Temperature();
  18.     get_show_time();
  19.     oclockon();
  20.   }
  21.   if(clock_on==1)
  22.     P1OUT ^= 0x08;
  23. }
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表
中国成人在线视频| 国产又大又黄又爽| 一区二区三区四区五区视频 | 香蕉视频网站在线播放| 日韩污视频在线观看| 免费国偷自产拍精品视频| 亚洲开发第一视频在线播放| 国产www精品| 日韩电影免费观看中文字幕| 五月婷婷综合网| 99久久精品免费看国产| 欧美日韩国产亚洲一区| 日本在线一区二区三区| 日本色护士高潮视频在线观看| 日韩在线视频免费播放| 国产国语性生话播放| 欧美亚洲日本一区二区三区| 精品久久久久久综合日本| 久久久久久国产精品| 亚洲美女精品久久| 欧美精品乱人伦久久久久久| 一区二区三区四区激情| 91丨porny丨首页| 亚洲精品一二三区区别| 国产精品nxnn| 中国色在线日|韩| 3p视频在线观看| 裸体网站视频| 你懂的视频在线看| 好想男人揉我下面好多水| 久久这里只有精品9| 日本精品在线免费观看| 91超碰中文字幕久久精品| 日韩一区二区三区电影在线观看| 亚洲综合男人的天堂| 91一区一区三区| 久久精品免费观看| 宅男噜噜噜66一区二区 | 国产激情视频在线观看| 小香蕉视频在线| 天天骑天天射| 免费看污网站| 91视频论坛| 免费观看欧美成人禁片| 少妇高潮久久久| 久久国产香蕉视频| 中文字幕免费在线观看视频| 久久免费精彩视频| 91成人福利视频| 在线视频这里只有精品| 四虎国产成人精品免费一女五男| 精品无码在线视频| 亚洲欧美日韩色| 国产裸体视频网站| 日本wwwwwww| 国产又黄又嫩又滑又白| 欧美69精品久久久久久不卡 | 国产天堂视频| 欧美另类69xxx| 最近中文av字幕在线中文| 香蕉久久一区二区三区| 污污视频在线免费看| 欧美一区二区三区成人片在线| 成人黄色免费视频| 亚洲精品第五页| 人妻丰满熟妇av无码区hd| 成人久久久精品国产乱码一区二区 | 亚洲乱码在线观看| a天堂在线观看视频| www.蜜臀av| 夜夜嗨av禁果av粉嫩avhd| 精品小视频在线观看| 青青青手机在线视频| 99久久人妻精品免费二区| www.超碰97.com| 国产亚洲欧美在线视频| www.国产区| 一区二区成人网| 91日韩精品视频| 中文字幕欧美视频| 最近中文字幕无免费| 欧美激情视频二区| 欧美日韩免费一区二区| 久久久精品国产一区二区三区| 成人动漫视频在线观看免费| 国产亚洲一区二区三区在线播放| 国产偷国产偷亚洲高清97cao| 久久综合一区二区三区| 影音先锋欧美资源| 男人添女人下部高潮视频在观看| 国产免费又粗又猛又爽| 男人网站在线观看| 老熟妻内射精品一区| 亚洲自拍一区在线观看| 亚洲精品国产suv一区| 韩日中文字幕第一页| 成人18网站| 国产三级在线观看| www在线观看黄色| 日韩视频一区二区三区四区| 欧美1级片网站| 视频一区在线播放| 久久精品www人人爽人人| 亚洲国产91精品在线观看| 国产男女爽爽爽| 免费污视频在线一区| 国产视频aaa| 538任你躁在线精品视频网站| 又黄又爽在线观看| 性欧美大战久久久久久久久| 很很鲁在线视频播放影院| 精品久久久久久亚洲综合网站| 日韩在线观看视频一区二区三区| 欧美性狂猛xxxxxbbbbb| h在线免费观看| 在线宅男视频| 白白色在线观看| 久久婷婷五月综合色丁香| 首页亚洲中字| 性8sex亚洲区入口| 成人av网站在线| 亚洲图片一区二区| 日韩免费观看高清完整版 | 国产精选久久久久久| 日本公妇乱淫免费视频一区三区| 成人毛片一区二区| 又色又爽又黄18网站| 久久免费视频精品| 狠狠鲁男人天堂| 国产大片中文字幕| 天天射天天色天天干| 四虎av网址| 男女在线观看视频| 久久九九精品视频| 99精品热视频只有精品10| 99这里只有久久精品视频| 色噜噜偷拍精品综合在线| 一区三区二区视频| 91视频88av| 日本wwww视频| 国产一区二区三区在线视频观看| 亚洲成人精品女人久久久| 成年人在线免费| 欧美videosex性欧美黑吊| 男男gay无套免费视频欧美| 久久精品99久久久| 亚洲大片精品永久免费| 精品国产一区久久久| 国产一区二区三区av在线| 天天干天天综合| 国产精品免费一区二区| 日韩欧美精品免费| 亚洲色图欧美色| www日本高清| 二区中文字幕| 精品日韩视频| 激情五月***国产精品| 国产农村妇女毛片精品久久麻豆 | 好吊的妞视频这里都有| 免费高潮视频95在线观看网站| 日韩中文首页| 久久久久青草大香线综合精品| 日韩欧美一区二区免费| 国产精品久久久久77777| 久久综合九色综合88i| 青青草华人在线视频| 亚洲videos| 俄罗斯女人裸体性做爰| 国产精品久久久久久久久久久久久久久久久 | 国产1区2区3区中文字幕| 国产精品毛片一区二区| 亚洲欧洲激情在线乱码蜜桃| 青青免费在线视频| 高清精品视频| 国产成人综合精品三级| 欧美成人乱码一区二区三区| 2022国产精品| 无码人妻丰满熟妇区毛片蜜桃精品| 国产精品久久久午夜夜伦鲁鲁| xxxx影院| 欧美国产不卡| 久久久噜噜噜久久中文字幕色伊伊| 日韩久久午夜影院| 欧美一区二区三区在线播放| 色噜噜在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 五月婷婷欧美激情| 亚洲综合极品香蕉久久网| 黄色网在线免费看| 午夜久久影院| 精品国产乱码久久久久酒店| 欧美天堂亚洲电影院在线播放| 2024亚洲男人天堂| 国产熟人av一二三区| 蜜臀99久久精品久久久久小说| av在线影音| 欧美经典一区| 成人国产在线观看| 一级做a爰片久久毛片美女图片| 一区国产精品| 国产在线精品观看| 美女胸又www又黄的网站| 日本国产精品| 成人免费在线视频观看| 性欧美长视频免费观看不卡| 精品久久久久久久无码| 国产毛片毛片毛片毛片| 日韩黄色影院| 亚洲国产裸拍裸体视频在线观看乱了中文 | 日韩欧美精品一区二区三区经典| 最新中文字幕av| 自拍电影在线观看| 日韩三区四区| 97se亚洲国产综合自在线| 国产一区二区三区毛片| 欧美 亚洲 视频| 免费视频网站在线观看入口| 成人免费在线电影| 久久成人一区| 亚洲精品大尺度| www国产免费| 夜夜躁日日躁狠狠久久av| 国产大片在线免费观看| 亚洲福利久久| 精品少妇一区二区三区免费观看| 日产国产精品精品a∨| 91久久国产视频| 日韩a级作爱片一二三区免费观看| 午夜欧美视频| 欧美一区二视频| 一区二区三区视频| 亚洲一级黄色大片| 黄视频网站在线看| 精品制服美女久久| 中文字幕一区日韩电影| 国产嫩草在线观看| 日韩不卡高清| 亚洲专区**| 亚洲一区二区精品久久av| 成人羞羞国产免费| 丝袜美腿小色网| 亚洲欧美一区二区三区在线播放| 亚洲精品九九| 亚洲精品永久免费精品| 日韩视频第二页| 中文字幕2020第一页| 2020国产精品极品色在线观看| 一二三四社区欧美黄| 国产精品我不卡| 日韩三级视频在线| а√天堂资源地址在线下载| 成人免费毛片高清视频| 全球成人中文在线| 国产黄a三级三级| 欧美男男同志| 久久精品av麻豆的观看方式| 欧美精品在线网站| 久久久久国产精品区片区无码| 成人精品3d动漫| 夜夜嗨一区二区| 色午夜这里只有精品| 熟妇高潮一区二区| 米奇在线777| 日一区二区三区| 久色乳综合思思在线视频| 国产xxxxxxxxx| 中文字幕高清在线| 久久99国产精品尤物| 国内精品久久久久久久久| 国产欧美一区二区三区在线观看视频| 午夜丝袜av电影| 九九热在线视频观看这里只有精品| 97在线看福利| 手机在线免费看片| 欧美人与禽性xxxxx杂性| 国产精品毛片无遮挡高清| 国产一区高清视频| 亚洲黄色小说网址| 偷窥自拍亚洲色图精选| 亚洲国产成人91精品| 久久久久亚洲av无码麻豆| 高清免费观看在线| 国产精品一区二区视频| 91精品美女在线| 中文字幕免费在线看| 国产精品毛片aⅴ一区二区三区| 欧美性生交大片免网| av免费观看大全| 国内福利视频| 久久精品伊人| 国产成人精品在线观看| 怡红院av久久久久久久| 综合欧美精品| 欧美一级高清片在线观看| 91香蕉视频免费看| 在线播放免费| 2023国产精品| 日韩欧美在线电影| 国产美女被草| 久久午夜av| 国产在线观看精品| 亚洲h视频在线观看| 青青草原综合久久大伊人精品| 原创国产精品91| 精品国产国产综合精品| 国产激情在线播放| 欧美三区免费完整视频在线观看| www.com久久久| 国产午夜在线视频| 亚洲色图另类专区| 欧美日韩精品在线一区二区| 国产视频二区| zzijzzij亚洲日本少妇熟睡| 日本免费高清一区| 国产精品免费视频一区二区三区| 久久久久欧美精品| 亚洲a成v人在线观看| 婷婷五月综合激情| 亚洲三级免费| 亚洲一区二区日本| 好男人官网在线| 另类天堂av| 18成人在线| 日韩一区二区三区四区区区| 亚洲影院一区| 亚洲free嫩bbb| free性欧洲69| 久久精品91| 国产精品久久亚洲| 国产卡一卡二卡三| 久久99精品国产麻豆婷婷洗澡| 99视频网站| 国产视频二区三区| 国产精品综合网| 日本黄色a视频| 国产网红在线| 自拍偷拍国产亚洲| 亚洲 激情 在线| 国内外激情在线| 欧美酷刑日本凌虐凌虐| 中文字幕成人动漫| 日韩成人精品一区二区三区| 亚洲欧美日韩中文视频| 中国一级免费毛片| 成人看的视频| 国产精品香蕉av| 另类国产精品一区二区| 国产精品影音先锋| 2022中文字幕| 在线视频您懂的| 狠狠色香婷婷久久亚洲精品| 手机在线看片日韩| 欧美在线一级| 久久久国产在线视频| 国产伦一区二区| 亚洲一卡久久| 蜜桃999成人看片在线观看| 婷婷亚洲天堂| 一个色综合网站| 久久午夜夜伦鲁鲁片| 亚洲欧美在线综合| 欧美国产激情18| 天天操天天干天天插| 国内成人免费视频| 国产精品igao激情视频| 国产视频网站在线| 欧美日韩国产高清一区二区三区| 久久嫩草捆绑紧缚| 怕怕欧美视频免费大全| 国产精品免费一区| 青春草在线视频观看| 日韩美女视频19| 无码人妻aⅴ一区二区三区| 久久久久久久久成人| 97视频在线观看视频免费视频| www久久com| 久久蜜桃av一区精品变态类天堂| 视频在线观看免费高清| 欧美xxxxxx| 欧美大成色www永久网站婷| 在线成人综合色一区| 成人一级片在线观看| 别急慢慢来1978如如2| 欧美大胆性生话| 精品中文字幕视频| 欧美超强性xxxxx| 中文字幕欧美激情一区| 人妻av一区二区| 北条麻妃一区二区三区在线观看| 国产精品精品视频一区二区三区| 五月天丁香在线| 一区二区三区影院| 国产一二三av| 久久精品国内一区二区三区水蜜桃| 国内精品视频免费| 青春有你2免费观看完整版在线播放高清 | 国产日韩欧美视频在线观看| 麻豆91在线观看| 激情网站五月天| 欧美成人黑人|