色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美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時鐘”獲得代碼。若有錯誤歡迎指正。

審核編輯:湯梓紅

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

    關注

    6042

    文章

    44617

    瀏覽量

    637567
  • OLED
    +關注

    關注

    119

    文章

    6219

    瀏覽量

    224619
  • 實時時鐘
    +關注

    關注

    4

    文章

    248

    瀏覽量

    65904
收藏 人收藏

    評論

    相關推薦

    #單片機 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 ?3578次閱讀
    <b class='flag-5'>實時時鐘</b>的<b class='flag-5'>單片機</b>項目需要學習什么知識

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

    如何使用實時時鐘 IC DS1307 制作準確的時鐘。時間將顯示在液晶顯示屏上。
    的頭像 發表于 04-26 17:23 ?6666次閱讀
    使用<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次下載
    主站蜘蛛池模板: 亚洲国产日韩制服在线观看 | 江苏电台在线收听 | 欧美日本高清动作片www网站 | 亚洲国产在线视频中文字 | 亚洲日韩成人 | 亚洲熟女乱色一区二区三区 | 杨幂视频在线观看1分30秒 | 曰批国产精品视频免费观看 | 漂亮的保姆6在线观看中文 漂亮的保姆5电影免费观看完整版中文 | 又硬又粗又大一区二区三区视频 | 小妇人电影免费完整观看2021 | 欧美日韩午夜群交多人轮换 | 永久免费看mv网站入口 | 看了n遍舍不得删的黄文 | 综合人妻久久一区二区精品 | 美女穿丝袜被狂躁动态图 | 好紧好湿太硬了我太爽了文字 | 日本一卡2卡3卡四卡精品网站 | 99福利在线观看 | 国产精品高清免费网站 | 阿离被扒开双腿疯狂输出 | 国产成人综合在线观看 | 在线观看免费av网站 | zxfuli午夜福利在线 | 久久99综合国产精品亚洲首页 | 伊人热人久久中文字幕 | 欧美日韩北条麻妃一区二区 | 亚洲AV精品无码喷水直播间 | 91九色视频在线观看 | 国产人人为我我为人人澡 | 香蕉久久日日躁夜夜嗓 | 绞尽奶汁by菊花开 | 看 视频一一级毛片 | 全免费A敌肛交毛片免费懂色AV | 亚洲精品无码一区二区三区四虎 | 奶头被客人吸得又红又肿 | 中文字幕偷乱免费视频在线 | 青青草国产自偷拍 | 超碰在线观看 | 亚洲伊人精品综合在合线 | 亚洲人成网站7777视频 |