娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

AVR萬年電子日歷C程序

發布者:mlgb999最新更新時間:2019-11-12 來源: 51hei關鍵字:AVR  萬年電子日歷  C程序 手機看文章 掃描二維碼
隨時隨地手機看文章

main.c如下:


#include "iom16v.h"

#include "ds1302.h"

#include "macros.h"

#include "lcd12864.h" 

#define xtal  1

uchar  disp_time[33]="2008年11月27日  21:49:00  星期日";

uchar week[14] = "一二三四五六天";

/*----------鍵盤相關聲明-------------------------------------*/

#define key (PINA  & BIT(0))     //功能鍵

#define key1 (PINA  & BIT(1))     //只有加1鍵

uchar sum,keyflag=0;   //調用時,分,秒,標志,調用鍵盤處理標志.


/*延時函數*/

void delay_ms(unsigned char i) {

unsigned char a, b;

for (a = 1; a < i; a++) { 

  for (b = 1; b; b++) { 

   ;

   } 

  } 

}



/*********時間寫屏刷新函數***********/    

void  disp_reset(void)    

{  


  // disp_time[0] = time_buf[0]/10+48; //年

  // disp_time[1] = time_buf[0]%10+48;

   disp_time[2] =  time_buf[1] /10+48;//年

   disp_time[3] =  time_buf[1] %10+48;

   disp_time[6] =  time_buf[2] /10+48;//月

   disp_time[7] =  time_buf[2] %10+48;

   disp_time[10] =  time_buf[3] /10+48;//日

   disp_time[11] =  time_buf[3] %10+48;

   disp_time[16] =  time_buf[4] /10+48;//時

   disp_time[17] =  time_buf[4] %10+48;

   disp_time[19] = time_buf[5]/10+48;//分

   disp_time[20] = time_buf[5]%10+48;

   disp_time[22] = time_buf[6]/10+48;//秒

   disp_time[23] = time_buf[6]%10+48;

   disp_time[30] = time_buf[7]/10+48;//周

   disp_time[31] = time_buf[7]%10+48;

   

   switch (time_buf[7]%16)

   {

     case 0:

       //LCD_PutStr(2,4,"日");

    disp_time[30] =week[0];

    disp_time[31] =week[1];

    break;

     case 1:

       //LCD_PutStr(2,4,"一");

    disp_time[30] =week[2];

    disp_time[31] =week[3];

    break;

  case 2:

       //LCD_PutStr(2,4,"二");

    disp_time[30] =week[4];

    disp_time[31] =week[5];

    break;

     case 3:

       disp_time[30] =week[6];

    disp_time[31] =week[7];

    break;

  case 4:

       disp_time[30] =week[8];

    disp_time[31] =week[9];

    break;  

  case 5:

       disp_time[30] =week[10];

    disp_time[31] =week[11];

    break;  

  case 6:

       disp_time[30] =week[12];

    disp_time[31] =week[13];

    break;

  default:

       break;

   }

      

   LCD_PutStr(0,0,"當前日期是:");

   LCD_PutStr(1,0,disp_time);

/*---------------按鍵處理相關函數--------------------------*/ 

/************************************************************

函數名稱:void scanner()

功能描述: 按鍵函數

*************************************************************/

void scanner()

{ uchar i,j;  

if(!key)     //功能鍵按下

{ delay_ms(500);    //延時500MS

   if(!key)    //還按下,退出時間調整

   { keyflag=0;   //標志位為0

    sum=0;    //清0

     LCD_WriteCmd(0x0C);//清閃爍

  LCD_PutStr(3,0,"           ");

  

    for(i=0;i<7;i++) //十進制轉十六進制 

    { j=time_buf[ i]/10;

         time_buf=time_buf%10;

         time_buf=time_buf+16*j;

    } 

        ds1302_init();//DS1302初始化

        delay_ms(10); 

    ds1302_write_time();//寫入1302

    

    while(!key); //等待釋放

    delay_ms(10);   //延時消抖

   }

   else     //500MS內放開

   { keyflag=1;   //標志為1,進行時間調整

    sum++;    //功能鍵加1

switch (sum)

        {

     case 1:

        LCD_PutStr(3,0,"請調整年份");

     break;

     case 2:

        LCD_PutStr(3,0,"請調整月份");

     break;

  case 3:

        LCD_PutStr(3,0,"請調整日期");

     break;

     case 4:

        LCD_PutStr(3,0,"請調整時鐘");

     break;

     case 5:

        LCD_PutStr(3,0,"請調整分鐘");

     break;

     case 6:

        LCD_PutStr(3,0,"請調整秒鐘");

     break; 

  case 7:

        LCD_PutStr(3,0,"請調整星期");

     break; 

     default:

        break;

    } 

    

    if(sum==8)  

     sum=0;

    switch(sum)

     {

  case 1:   //  年閃爍   

         LCD_WriteCmd(0x90+1);

         LCD_WriteCmd(0x0f);

         break;

     case 2:   //為2,月閃爍

      // write_single(3,2,"-?");

      LCD_WriteCmd(0x90+3);

         break;

     case 3:   //日閃爍

         LCD_WriteCmd(0x90+5); 

         break;

  case 4:   //時閃爍

         LCD_WriteCmd(0x88+0); 

         break;

     case 5:   //分閃爍

         //LCD_WriteCmd(0x88+4);

     write_single(3,2,"0");

     LCD_WriteCmd(0x06);        //寫入時,游標右移動 

    

         break;

     case 6:   //秒閃爍

         LCD_WriteCmd(0x88+3);

         break;

     case 7:   //星期閃爍

         LCD_WriteCmd(0x88+7);

         break;

    }

   }

}

if(sum)      //功能鍵按下

{      

   if(!key1)

   { delay_ms(10);

    if(!key1)

    { while(!key1);//等待加1鍵釋放

     delay_ms(10);

     if(sum==1) //年

     {  time_buf[1]++;

      if(   time_buf[1]  ==100)

       time_buf[1]=0;

      disp_reset();

     }

     if(sum==2)  //月

     {  

   time_buf[2]++;

      if( time_buf[2] ==13)

       time_buf[2]=1;

       disp_reset(); 

     }

     if(sum==3)//日

     { time_buf[3]++;

      if(  time_buf[3]  ==32)

       time_buf[3]=1;

      disp_reset(); 

     }

     if(sum==4)//時

     { 

       time_buf[4]++;

      if( time_buf[4] ==24)

       time_buf[4]=0;

      disp_reset(); 

     }

     if(sum==5)//分

     { time_buf[5]++;

      if( time_buf[5] ==60)

       time_buf[5]=0;

      disp_reset(); 

     }

     if(sum==6)//秒

     {time_buf[6]++;

      if( time_buf[6] ==60)

       time_buf[6]=0;

      disp_reset(); 

     }

     if(sum==7)//星期

     {  time_buf[7]++;

      if( time_buf[7] ==7)

       time_buf[7]=0;

      disp_reset(); 

      

     }

    } 


   }

}

}


void main(void) {

unsigned char temp;

PORTA = 0xFF;    /*打開上拉*/

DDRA = 0x00;    /*方向輸入*/

PORTB = 0xF0;    /*電平設置*/

DDRB = 0xFF;    /*方向輸出*/

PORTC = 0x7F;

DDRC = 0x80;

PORTD = 0xFF;

DDRD = 0x00;

   DDRD &= ~BIT(7);

   PORTD &= ~BIT(7);

   DDRC |=BIT(6);  //設置輸出

   PORTC &= ~BIT(6);  //L:serial mode 串行

   DDRC &= ~BIT(7);

   PORTC &= ~BIT(7);


delay_ms(20);

LCD_Init();

ds1302_init();

delay_ms(10);

ds1302_write_time();

while (1) {

       scanner();

      if(!keyflag)

    {

   delay_ms(20);

   ds1302_read_time();

      disp_reset();

   }   

  }

}


DS1302.H包括如下


#include "iom16v.h"

/*復位腳*/

#define RST_CLR PORTC &= ~(1 << PC4)/*電平置低*/

#define RST_SET PORTC |= (1 << PC4)/*電平置高*/

#define RST_IN DDRC &= ~(1 << PC4)/*方向輸入*/

#define RST_OUT DDRC |= (1 << PC4)/*方向輸出*/

/*雙向數據*/

#define IO_CLR PORTC &= ~(1 << PC3)/*電平置低*/

#define IO_SET PORTC |= (1 << PC3)/*電平置高*/

#define IO_R PINC & (1 << PC3)/*電平讀取*/

#define IO_IN DDRC &= ~(1 << PC3)/*方向輸入*/

#define IO_OUT DDRC |= (1 << PC3)/*方向輸出*/

/*時鐘信號*/

#define SCK_CLR PORTC &= ~(1 << PC2)/*時鐘信號*/

#define SCK_SET PORTC |= (1 << PC2)/*電平置高*/

#define SCK_IN DDRC &= ~(1 << PC2)/*方向輸入*/

#define SCK_OUT DDRC |= (1 << PC2)/*方向輸出*/

#define ds1302_sec_add   0x80  //秒數據地址

#define ds1302_min_add   0x82  //分數據地址

#define ds1302_hr_add   0x84  //時數據地址

#define ds1302_date_add   0x86  //日數據地址

#define ds1302_month_add  0x88  //月數據地址

#define ds1302_day_add   0x8a  //星期數據地址

#define ds1302_year_add   0x8c  //年數據地址

#define ds1302_control_add  0x8e  //控制數據地址

[1] [2] [3] [4]
關鍵字:AVR  萬年電子日歷  C程序 引用地址:AVR萬年電子日歷C程序

上一篇:avr單片機流水燈的程序
下一篇:LCD12864簡單菜單程序,八個按鍵帶proteus仿真和程序

推薦閱讀最新更新時間:2025-06-27 14:32

常見PLC程序應用案例
十字路口的交通指揮信號燈布置: 一、控制要求 (1)信號燈系統由一個啟動開關控制,當啟動開關接通時,該信號燈系 統開始工作,當啟動開關關斷時,所有信號燈都熄滅。 (2)南北綠燈和東西綠燈不能同時亮。如果同時亮應關閉信號燈系統, 并立刻報警。 (3)南北紅燈亮維持 25s。在南北紅燈亮的同時東西綠燈也亮,并維持 20s。到 20s 時,東西綠燈閃亮,閃亮 3s 后熄滅,此時,東西黃 燈亮,并維持 2s。到 2s 時,東西黃燈熄滅,東西紅燈亮。同時, 南北紅燈熄滅,南北綠燈亮。 (4)東西紅燈亮維持 30s。南北綠燈亮維持 25s,然后閃亮 3s 后熄滅。同時南北黃燈亮,維持 2s 后熄滅,這時南北紅燈亮,東西綠燈亮。 (5)以上
[嵌入式]
常見PL<font color='red'>C程序</font>應用案例
單片機C程序main函數之前做了什么
在測試c語言單片機程序的時候,發現在main函數的執行之前,有很長的一段時間的延時,單片機在這段時間在做什么?進行了一下分析,得到結論如下: C程序 #include reg51.h sbit p1_7=P1^7; void interrupt0() interrupt 0 using 2 { p1_7=!p1_7; } void main() { EA=1; IT0=1; EX0=1; p1_7=0; do{}while(1); } 生成的機器碼: :03000300020006F2   中斷入口 :03000600B297327C   中斷程序 :0B000900D2AFD288D2A8C29780FE229E 
[單片機]
PIC16F877A片內EEPROM c程序
/*============================================================================= 訪問PIC16F877A片內EEPROM,運行程序: Begin Test - LED0亮, EEPROM Test OK- LED7亮, Write&Read OK - LED0/2/4/6亮。 =============================================================================*/ ///////////////////////////////////////////////
[單片機]
msp430單片機控制lcd1602顯示C程序
//MSP430寫的1602液晶顯示程序2011/8/26//硬件連接 //P4 數據口 P3.7---E P3.6---RW P3.5----RS #include msp430x14x.h #define uint unsigned int #define rw(x) P3OUT=(P3OUT&(~BIT6))|(x?BIT6:0); unsigned char table0 = hankouxueyuan ; unsigned char table1 = dianzisheji ; //**************延時**
[單片機]
LPC210X的PWM輸出DAC程序
程序在LPC210X單片機上面實現: void main() { U8 i; PINSEL0=0x00000000; PINSEL1=(0x02 8); PLL_Init(); T1TC=0; //Timer counter=0; T1PR=0; //prescale=0; T1PR =9; //9+1個Fpclk,TC增加一次 T1MCR=(1 1); //當MR0和TC相等時,TC復位 T1MR0=Fpclk/1000; //PWM的時鐘頻率為APB時鐘頻率的1/1000 T1MR3=T1MR0/10; //占空比為90% PWM1CON=(1 3
[單片機]
AVR32 MCU上的ABDAC外設音頻播放設計
  AVR32 MCU 上的 ABDAC 外設非常適合生成音頻播放。本文介紹了如何執行此操作,并包含指向生成正弦波輸出的示例驅動程序的鏈接。   許多嵌入式應用程序越來越多地具有音頻播放功能,無論是響應用戶輸入的簡單音頻反饋還是全高速流音頻。通過使用通用時鐘接口,Atmel AVR32 MCU 上的 ABDAC 能夠支持廣泛的播放頻率。   功能說明   ABDAC 是一個非常簡單的外圍設備,它的使用很簡單。它需要通用時鐘系統提供的時鐘信號,以及通道的數據輸入。圖 1 中的框圖給出了該模塊的概述。有關 ABDAC 外設的詳細說明,請參見器件的數據表。      圖 1:時鐘和數據路徑框圖。   通用時鐘   ABDAC
[單片機]
<font color='red'>AVR</font>32 MCU上的ABDAC外設音頻播放設計
AVR單片機采集DS18B20并LCD顯示
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define beep_0 (PORTD = PORTD&0x7F) #define beep_1 (PORTD = PORTD|0x80) #define RS_0 PORTC &= ~(1 PC0) #define RS_1 PORTC |= (1 PC0) #define RW_0 PORTC &= ~(1 PC1) #define RW_1 PORTC |= (1 PC1) #define EN_0 PORTC &= ~(1 pc2)
[單片機]
<font color='red'>AVR</font>單片機采集DS18B20并LCD顯示
初嘗Linux下的AVR單片機開發
此前接觸過AVR單片機,發現無論是書店里面的教材,還是網上一大堆的中文資料,無一例外都是說windows下使用WinAVR、ICCAVR之類的,Linux方面的簡直只字不提,難道這就是傳說中的中國國情?外國情況可很不一樣,玩單片機的Geek一般都很哈Linux,做單片機開發的軟件一應俱全,當然還是開源的。 昨天從淘寶重新買了條USB的下載線,回來一看是USBasp的設計,附送的光盤當然也是win下的驅動和說明了,忽略。 插上下載器,lsusb,認倒是認出來了,叫做VOIT,那怎么用呢?上網一搜,原來USBasp是德國人的設計http://www.fischl.de/usbasp/,GPL的,其中提到AVRDUDE支持USB
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

隨便看看

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京B2-20211791 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 丰都县| 阜康市| 泾川县| 阿拉尔市| 喜德县| 青岛市| 手游| 乐安县| 临潭县| 绥化市| 嘉鱼县| 洞头县| 龙口市| 咸丰县| 镇远县| 柯坪县| 平遥县| 盐城市| 邹城市| 临泽县| 峨山| 瓦房店市| 无为县| 商城县| 连州市| 湛江市| 益阳市| 会同县| 即墨市| 和顺县| 营山县| 深圳市| 巩义市| 阿拉善盟| 东莞市| 新巴尔虎左旗| 阳原县| 工布江达县| 安多县| 黎平县| 赤峰市|