色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用單片機+OLED顯示屏制作實時時鐘

王子變青蛙_35400519 ? 來源:王子變青蛙_35400519 ? 作者:王子變青蛙_35400 ? 2022-06-12 09:04 ? 次閱讀

目錄

一、引言

二、硬件連接

三、軟件介紹

1、主函數

(1)、按鍵控制函數

(2)、顯示函數

2、定時器中斷子程序

四、實物展示

五、源代碼獲取

一、引言

最近在學習OLED顯示屏的應用,通過OLED顯示時間、年、月、日,以及相關信息。還可以根據喜好添加不同的圖片。可以自行設置時間,控制屏幕的亮滅從而減少電量的損耗。設計中我一共使用了六個端口,OLED顯示屏占用兩個端口,控制加減的按鍵使用了兩個,控制屏幕的亮滅使用了一個。但程序中有一個缺陷,就是星期不會跟著日期的改變而改變,需要自己手動更改,后期如果我學會了再重新添加程序。

二、硬件連接

OLED顯示器的連接與上兩節使用的相同,如果制作實時時鐘,需要再添加一個時鐘芯片,本設計沒有使用時鐘芯片。四個按鍵,切換:P3^4,開關:P3^5,-:P3^6,+:P3^7.

三、軟件介紹

1、主函數

(1)、按鍵控制函數

一共使用四個按鍵,第一個為”加“按鍵,第二個為“減”按鍵,第三個為”開關“按鍵,第四個為“模式選擇”按鍵。

if(key2==0)//控制OLED屏幕亮滅
			{
				DelayUs2x(10);
				if(key2==0)
				{  num1++;  }
				while(!key2);
			}			
			if(num1==1){  OLED_Display_Off();	num=0;}//關閉
			if(num1==2)num1=0;
			if(num1==0)
			{
				OLED_Display_On();   //打開
			if(key3==0)//模式控制
				{
				DelayUs2x(10);
				if(key3==0)
				{  num++;  }
				while(!key3);
			   }
			
			if(key0==0)////加
			{
				DelayUs2x(10);
				if(key0==0)
				{
				   if(num==1){ hour++;if(hour>=24)hour=0; }//+
				   if(num==2){ minute++;if(minute>=60)hour=0; }//+	
           if(num==3){ year++; }//+
           if(num==4){ month++;if(month>=13)month=1; 
					                     if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&date==31)date=30; 
                               if(month==2&&date>28)date=28; 					 }//+
           if(num==5){ date++;if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&date>=32)date=1;	   //日
	                   else if(date>=31&&month==4||date>=31&&month==6||date>=31&&month==9||date>=31&&month==11)date=1;
					           else if(date>=29&&month==2)date=1; }//+	
           if(num==6){Q++;if(Q>=7)Q=0;}					 
				}
				while(!key0);
		  }
      if(key1==0)    //減
			{
			    DelayUs2x(10);
				if(key1==0)
				{  
				   if(num==1){ hour--;if(hour==255)hour=23; }//-
				   if(num==2){ minute--;if(minute==255)minute=59; }//-	
           if(num==3){ year--; }//-
           if(num==4){ month--;if(month==0)month=12; 
					                     if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&date==31)date=30; 
                               if(month==2&&date>28)date=28;}//-
           if(num==5){ date--;if(date==0&&month==1||date==0&&month==3||date==0&&month==5||date==0&&month==7||date==0&&month==8||date==0&&month==10||date==0&&month==12)date=31;
                              else if(date==0&&month==4||date==0&&month==6||date==0&&month==9||date==0&&month==11)date=30;
                              else if(date==0&&month==2)date=28;	}//-	
           if(num==6){Q--;if(Q==255)Q=6;}					 
				}
				while(!key1);
			}	
			if(num==7)num=0;

num用來控制對年、月、日、時、分哪一位的修改,等于1對小時的修改,等于2對分鐘的修改,等于3對年的修改,等于4對月的修改,等于5對年的修改,等于6返回。

(2)、顯示函數

顯示背景圖片。背景圖程序需要放在主循環之外。

OLED_DrawBMP(0,0,127,64,BMP1);	//生成圖像

顯示年、月、日、時、分、秒以及星期天。

 OLED_ShowNum(0,0,N,2,8);		//顯示數字		
		OLED_ShowChinese(13,0,0,7);	//文字 年
				
		OLED_ShowNum(22,0,Y,2,8);		//顯示數字		
        OLED_ShowChinese(35,0,1,7);	//文字 月
				
		OLED_ShowNum(46,0,R,2,8);		//顯示數字		
        OLED_ShowChinese(59,0,2,7);	//文字 日	
				
		OLED_ShowNum(33,5,S,2,16);		//顯示數字
		OLED_ShowString(50,5,":",16);   //顯示字符串		
		OLED_ShowNum(57,5,F,2,16);		//顯示數字
		OLED_ShowString(72,5,":",16);   //顯示字符串		
		OLED_ShowNum(79,5,M,2,16);		//顯示數字	
		
        OLED_ShowChinese(75,1,7,13);	//文字 星
        OLED_ShowChinese(88,1,8,13);	//文字 期
		OLED_ShowChinese(101,1,Q,13);	//文字 

2、定時器中斷子程序

void Timer0_isr(void) interrupt 1
if(num==500)        //大致1s
   {
    num=0;
	  second++;
	if(second==60)  //秒到60,分鐘加1
	 {
	  second=0;	  
	  minute++;
	  if(minute==60)//分鐘到60,小時加1
	    {
		 minute=0;
		 hour++;
		 if(hour==24)//小時到24,回零
		  {
			 hour=0;
		   date++;Q++;
				if(Q==8)
					 Q=0;
		   if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)//月1,3,5,7,8,10,12
			 {
			    if(date==31)
					{
						date=0;
					   month++;
						if(month==12)
							month=0;
							year++;
					}				
			  }
			  if(month==4||month==6||month==9||month==11)//月4,6,9,11
				{
			    if(date==30)
					{
						date=0;
					   month++;
						if(month==12)
							month=0;
							year++;
					}				
			  }
				if(month==2)//月2
				{
	         if(year%4==0)
           {
					    if(date==29)
					      {
					       date=0;
					       month++;
						     if(month==12)
								 {
							      month=0;
							      year++;
								 }
					      }
					 }						 
			    else if(date==28)
					     {
						     date=0;
					       month++;
						     if(month==12)
						     { 
							     month=0;
							     year++;
						     }
					     }				
			  }
			}
		  }
	 }
   
  }

實際中不同月份中天數不相同,1、3、5、7、8、10、12為31天,4、6、9、11為30天,2月為28天。程序中通過循環累加來計算時間,并根據不同的月份采用不同的累加。

四、實物展示

https://live.csdn.net/v/213880

這次我采用了自己焊接的一個單片機最小系統,通過兩節18650電池供電。通過穩壓芯片將電壓降至5V。

五、源代碼獲取

關注公眾號“小小創客者”回復“OLED時鐘”獲得代碼。若有錯誤歡迎指正。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634653
  • OLED
    +關注

    關注

    119

    文章

    6198

    瀏覽量

    224103
  • 實時時鐘
    +關注

    關注

    4

    文章

    245

    瀏覽量

    65767
收藏 人收藏

    評論

    相關推薦

    #單片機 OLED顯示屏 兌換的顯示屏到了!#單片機

    OLED顯示屏
    efans
    發布于 :2023年04月24日 16:51:22

    用51單片機驅動oled顯示屏

    文章目錄51單片機一.前言二.代碼三.總結51單片機一.前言說起51,可以說是老古董了,剛開始接觸單片機就是從51開始,今天就來用51單片機驅動ol
    發表于 07-15 07:11

    單片機顯示屏時鐘制作資料分享

    單片機顯示屏時鐘制作前言表盤處理獲取表盤圖片轉換c文件前言主控采用k210單片機,屏幕為nt35310,采用image2lcd取模
    發表于 11-18 07:25

    電腦實時時鐘的設計

    電腦實時時鐘以ATMEL89C51 單片機為核心,即ATMEL89C51 單片機執行全面控制,利用MC146818 時鐘芯片的性能高、功耗低
    發表于 05-30 11:59 ?56次下載
    電腦<b class='flag-5'>實時時鐘</b>的設計

    基于單片機的1602液晶顯示的DS1302實時時鐘

    基于單片機的1602液晶顯示的DS1302實時時鐘
    發表于 11-25 14:57 ?39次下載

    單片機制作RTC實時時鐘(DS1302)程序【C語言版】

    單片機制作RTC實時時鐘(DS1302)程序【C語言版】,感興趣的可以看看。
    發表于 12-30 13:48 ?0次下載

    一文看懂rtc實時時鐘單片機時鐘的區別

    本文首先闡述了rtc實時時鐘單片機時鐘的區別,其次介紹了單片機時鐘概念與單片機內外部時鐘方式
    的頭像 發表于 05-14 15:48 ?6.1w次閱讀

    實時時鐘單片機項目需要學習什么知識

    實現實時時鐘單片機開發學習過程中,一個里程碑式的綜合性項目,如果能獨立完成實現實時時鐘的相關顯示,設置等功能,那就代表著單片機編程已經完全
    的頭像 發表于 10-13 11:53 ?3538次閱讀
    <b class='flag-5'>實時時鐘</b>的<b class='flag-5'>單片機</b>項目需要學習什么知識

    使用實時時鐘IC DS1307制作精確時鐘的方法

    如何使用實時時鐘 IC DS1307 制作準確的時鐘。時間將顯示在液晶顯示屏上。
    的頭像 發表于 04-26 17:23 ?6570次閱讀
    使用<b class='flag-5'>實時時鐘</b>IC DS1307<b class='flag-5'>制作</b>精確<b class='flag-5'>時鐘</b>的方法

    基于STM32單片機RTC實時時鐘使用庫文件設計

    基于STM32單片機RTC實時時鐘使用庫文件設計源代碼
    發表于 04-26 14:28 ?5次下載

    基于AT89C51單片機1602液晶顯示的DS1302實時時鐘

    基于AT89C51單片機1602液晶顯示的DS1302實時時鐘Proteus仿真及程序
    發表于 05-04 15:18 ?2次下載

    基于51單片機實時時鐘設計

    電子發燒友網站提供《基于51單片機實時時鐘設計.rar》資料免費下載
    發表于 01-02 10:15 ?43次下載

    基于51單片機實時時鐘+溫度應用設計

    基于51單片機實時時鐘+溫度應用設計(仿真)
    發表于 01-02 09:55 ?6次下載

    基于51單片機實時時鐘設計

    電子發燒友網站提供《基于51單片機實時時鐘設計.rar》資料免費下載
    發表于 01-12 10:43 ?13次下載

    基于51單片機實時時鐘+溫度應用設計

    電子發燒友網站提供《基于51單片機實時時鐘+溫度應用設計.rar》資料免費下載
    發表于 01-12 10:20 ?0次下載
    主站蜘蛛池模板: 久久re视频这里精品青| 99国产精品久久| 免费在线看视频| 国产 交换 丝雨 巅峰| 亚洲高清中文字幕免费| 恋夜影视列表免费安卓手机版| FREE另类老女人| 午夜日韩久久影院| 麻豆区蜜芽区| 国产短视频精品区| 中文字幕日本在线mv视频精品| 日本阿v片在线播放免费| 国产在线一区二区AV视频| 92国产精品午夜免费福利视频| 少妇人妻偷人精品视蜜桃| 久久九九青青国产精品| 超碰在线97av视频免费| 亚洲一区综合图区| 日本精品久久久久中文字幕 1 | 暖暖的高清视频在线观看免费中文 | 丰满的美女射精动态图| 亚洲欧美日韩精品自拍| 内射气质御姐视频在线播放| 久久久久久久久a免费| BL全肉多攻NP高H| 在线伦理电影网| 伊人影院蕉久| 亚洲人视频在线观看| 亚洲国产成人精品不卡青青草原 | 99E久热只有精品8在线直播| 一品道门在线观看免费视频| 无码人妻丰满熟妇啪啪网不卡| 奇米色偷偷| 欧美日韩亚洲一区视频二区 | 一个人在线观看免费高清视频| 午夜福利体验试看120秒| 色综合五月激情综合色一区| 欧美性爱 先锋影音| 欧美人与禽ZOZO性伦交视频| 欧洲馒头大肥p| 日本久久网站|