基于51單片機的校園打鈴及燈控制系統

目錄

具體實現功能

設計介紹

資料內容

全部內容

資料獲取


具體實現功能

具體功能:
(1)實時顯示當前時間(年月日時分秒星期),LED模式指示燈亮。
(2)按下“打鈴+”和“打鈴-”按鍵可查看24個打鈴時間,模式指示燈滅,此時可通過4個按鍵調整打鈴時間的時和分。
(3)打鈴時間到,可實現蜂鳴器響、播放音樂(1分鐘)、打開/關閉宿舍燈、路燈、教學樓燈等功能(詳見打鈴時間表)。

仿真演示視頻:

基于51單片機的校園打鈴及燈控制系統-仿真視頻

設計介紹

51單片機簡介

51單片是一種低功耗、高性能CMOS-8位微控制器,擁有靈巧的8位CPU和可編程Flash,使得51單片機為眾多嵌入式控制應用系統提供靈活、高效的解決方案。

本設計所使用的芯片可兼容以下所有的51系列單片機(包括AT系列和STC系列)。

資料內容

仿真實現(protues8.7)

本設計利用protues8.7軟件實現仿真設計,具體如圖。

程序(Keil5)

本設計利用KEIL5軟件實現程序設計。

主函數如下:

///
/***************主函數*****************/
void main()
{uchar k=0,m=0;uchar week=0;beep=1;init_read();//初始化Ds1302ReadTime();TIME[0]&=0X7F;Ds1302Init();	lcd_init();      //調用液晶屏初始化子函數InitialSound();led1=0;           //打開LCD的背光電源led4=0;led3=0;led2=0;limit[0]=7;limit[1]=40;limit[2]=8;limit[3]=10;limit[4]=8;limit[5]=25;limit[6]=9;limit[7]=10;	limit[8]=9;limit[9]=20;	limit[10]=10;limit[11]=5;limit[12]=10;limit[13]=25;	limit[14]=11;limit[15]=10;limit[16]=11;limit[17]=20;	limit[18]=12;limit[19]=5;limit[20]=14;limit[21]=20;				limit[22]=14;limit[23]=30;limit[24]=15;limit[25]=15;limit[26]=15;limit[27]=25;limit[28]=16;limit[29]=10;limit[30]=16;limit[31]=30;	limit[32]=17;limit[33]=15;limit[34]=17;limit[35]=25;limit[36]=18;limit[37]=10;limit[38]=19;limit[39]=20;limit[40]=19;limit[41]=30;limit[42]=21;limit[43]=10;limit[44]=21;limit[45]=40;limit[46]=23;limit[47]=00;while(1){led1=1;	led=!flag;//點亮指示燈if(!key6 &&(k!=6))//組號+1{k=6;flag=0;if(num<25)num++;if(num==25){num=0;flag=1;//顯示當前時間}}if(!key1 &&(k!=1))//組號-1{k=1;if(num>1)num--;else{flag=1;//顯示當前時間}}if(!key2 &&(k!=2))//時+1{k=2;if(led)shi_jia();else{m=(TIME[2]>>4)*10+(TIME[2]&0X0F);if(m<23)m++;elsem=0;TIME[2]=(m/10<<4)+m%10;Ds1302Init();}}if(!key3 &&(k!=3))//時-1{k=3;if(led)shi_jian();else{m=(TIME[2]>>4)*10+(TIME[2]&0X0F);if(m>0)m--;elsem=23;TIME[2]=(m/10<<4)+m%10;Ds1302Init();}}if(!key4 &&(k!=4))//分+1{if(led)fen_jia();else{m=(TIME[1]>>4)*10+(TIME[1]&0X0F);if(m<59)m++;elsem=0;TIME[1]=(m/10<<4)+m%10;Ds1302Init();}k=4;}if(!key5 &&(k!=5))//分-1{if(led)fen_jian();else{m=(TIME[1]>>4)*10+(TIME[1]&0X0F);if(m>0)m--;elsem=59;TIME[1]=(m/10<<4)+m%10;Ds1302Init();}k=5;}if(P3==0xff)k=0;Ds1302ReadTime();//讀取時間if(flag==0){if(num==1){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[0]);//時write_sfm(6,limit[1]);//分}else if(num==2){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[2]);//時write_sfm(6,limit[3]);//分			}else if(num==3){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[4]);//時write_sfm(6,limit[5]);//分			}else if(num==4){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[6]);//時write_sfm(6,limit[7]);//分				}else if(num==5){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[8]);//時write_sfm(6,limit[9]);//分				}else if(num==6){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[10]);//時write_sfm(6,limit[11]);//分	}else if(num==7){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[12]);//時write_sfm(6,limit[13]);//分			}else if(num==8){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[14]);//時write_sfm(6,limit[15]);//分				}else if(num==9){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[16]);//時write_sfm(6,limit[17]);//分			}else if(num==10){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[18]);//時write_sfm(6,limit[19]);//分	}else if(num==11){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[20]);//時write_sfm(6,limit[21]);//分			}else if(num==12){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[22]);//時write_sfm(6,limit[23]);//分			}else if(num==13){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[24]);//時write_sfm(6,limit[25]);//分	}else if(num==14){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[26]);//時write_sfm(6,limit[27]);//分	}else if(num==15){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[28]);//時write_sfm(6,limit[29]);//分				}else if(num==16){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[30]);//時write_sfm(6,limit[31]);//分				}else if(num==17){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[32]);//時write_sfm(6,limit[33]);//分				}else if(num==18){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[34]);//時write_sfm(6,limit[35]);//分	}else if(num==19){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[36]);//時write_sfm(6,limit[37]);//分				}else if(num==20){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[38]);//時write_sfm(6,limit[39]);//分	}else if(num==21){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[40]);//時write_sfm(6,limit[41]);//分				}else if(num==22){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[42]);//時write_sfm(6,limit[43]);//分				}else if(num==23){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[44]);//時write_sfm(6,limit[45]);//分			}else if(num==24){write_sfm(0,num);//鬧鐘編號write_sfm(3,limit[46]);//時write_sfm(6,limit[47]);//分	}else{;}}else{write_sfm(6,(TIME[0]>>4)*10+(TIME[0]& 0x0f));//秒,從第二行第8個字后開始顯示(調用時分秒顯示子函數)write_sfm(3,(TIME[1]>>4)*10+(TIME[1]& 0x0f));//分,從第二行第5個字符后開始顯示write_sfm(0,(TIME[2]>>4)*10+(TIME[2]& 0x0f));//小時,從第二行第2個字符后開始顯示//顯示日、月、年數據:write_nyr(9,(TIME[3]>>4)*10+(TIME[3]& 0x0f));//日期,從第二行第9個字符后開始顯示write_nyr(6,(TIME[4]>>4)*10+(TIME[4]& 0x0f));//月份,從第二行第6個字符后開始顯示write_nyr(3,(TIME[6]>>4)*10+(TIME[6]& 0x0f));//年,從第二行第3個字符后開始顯示week = (TIME[5]>>4)*10+(TIME[5]& 0x0f)-1;if(week>=7){week=1;}if(week<1){week=7;}write_nyr(12,week);//日期,從第二行第9個字符后開始顯示}bell_if();//響鈴}
}

程序運行結果如圖:

全部內容

全部資料包括程序(keil5)、protues仿真(protues8.7)、設計說明、答辯PPT、開發資料、資料使用介紹、仿真視頻、最小系統介紹視頻等。

資料獲取

https://docs.qq.com/doc/DT2NwdVByRkRTWXNP

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87105.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87105.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87105.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP+mysql雪里開輕量級報修系統 V1.0Beta

# PHP雪里開輕量級報修系統 V1.0Beta ## 簡介 這是一個基于PHP7和MySQL5.6的簡易報修系統&#xff0c;適用于學校、企業等機構的設備報修管理。 系統支持學生提交報修、后勤處理報修以及系統管理員管理用戶和報修記錄。 初代版本V1.0&#xff0c;尚未實際業務驗證&#xff0c;…

XCTF-misc-base64÷4

拿到一串字符串 666C61677B45333342374644384133423834314341393639394544444241323442363041417D轉換為字符串得到flag

Mini DeepSeek-v3訓練腳本學習

Mini DeepSeek-v3 訓練腳本詳細技術說明(腳本在文章最后) &#x1f4cb; 概述 這是一個實現了Mini DeepSeek-v3大語言模型的訓練腳本&#xff0c;集成了多項先進的深度學習技術。該腳本支持自動GPU選擇和分布式訓練&#xff0c;適合在多GPU環境下訓練Transformer模型。 &…

FPGA 的硬件結構

FPGA 的基本結構分為5 部分&#xff1a;可編程邏輯塊&#xff08;CLB&#xff09;、輸入/輸出塊&#xff08;IOB&#xff09;、邏輯塊之間的布線資源、內嵌RAM 和內嵌的功能單元。 &#xff08;1&#xff09;可編程邏輯塊&#xff08;CLB&#xff09; 一個基本的可編程邏輯塊由…

算法專題八: 鏈表

1.兩數相加 題目鏈接&#xff1a;2. 兩數相加 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode…

5G+邊緣計算推動下的商品詳情API低延遲高效率新方案

在電商行業&#xff0c;商品詳情API的性能直接關系到用戶體驗與平臺競爭力。傳統云計算模式在處理高并發請求時&#xff0c;常面臨網絡延遲高、帶寬成本大等問題。而5G與邊緣計算的結合&#xff0c;為商品詳情API的低延遲高效率提供了新方案。本文將深入探討這一新方案&#xf…

【Python教程】CentOS系統下Miniconda3安裝與Python項目后臺運行全攻略

一、引言 為了在CentOS系統上高效地開發和運行Python項目&#xff0c;我們常常需要借助Miniconda3來管理Python環境。本文將詳細介紹如何在CentOS系統上安裝Miniconda3&#xff0c;并將Python項目部署到后臺運行。 二、Miniconda3和CentOS系統介紹 Miniconda3介紹 Minicond…

【讀點論文】A Survey on Open-Set Image Recognition

A Survey on Open-Set Image Recognition Abstract 開集圖像識別(Open-set image recognition&#xff0c;OSR)旨在對測試集中已知類別的樣本進行分類&#xff0c;并識別未知類別的樣本&#xff0c;在許多實際應用中支持魯棒的分類器&#xff0c;如自動駕駛、醫療診斷、安全監…

使用DuckDB查詢DeepSeek歷史對話

DeepSeek網頁版在左下角個人信息/系統設置的賬號管理頁簽中有個“導出所有歷史對話”功能&#xff0c;點擊“導出”&#xff0c;片刻就能生成一個deepseek_data-2025-06-14.zip的文件&#xff0c;里面有2個json文件&#xff0c;直接用文本編輯器查看不太方便。 而用DuckDB查詢卻…

多線程下 到底是事務內部開啟鎖 還是先加鎖再開啟事務?

前言 不知大家是否有觀察到一個最常見的錯誤&#xff1a; 先開啟事務&#xff0c;然后針對資源加鎖&#xff0c;操作資源&#xff0c;然后釋放鎖&#xff0c;最后提交事務 你是否發現了在這樣的場景下會出現并發安全的問題&#xff1f; &#xff08;提示&#xff1a;一個線程A…

Javascript解耦,以及Javascript學習網站推薦

一、學習網站推薦 解構 - JavaScript | MDN 界面如下&#xff0c;既有知識點&#xff0c;也有在線編譯器執行代碼。初學者可以看看 二、Javascript什么是解構 解構語法是一種 Javascript 語法。可以將數組中的值或對象的屬性取出&#xff0c;賦值給其他變量。它可以在接收數…

Java大模型開發入門 (11/15):讓AI自主行動 - 初探LangChain4j中的智能體(Agents)

前言 在過去的十篇文章里&#xff0c;我們已經打造出了一個相當強大的AI應用。它有記憶&#xff0c;能進行多輪對話&#xff1b;它有知識&#xff0c;能通過RAG回答關于我們私有文檔的問題。它就像一個博學的“學者”&#xff0c;你可以向它請教任何在其知識范圍內的問題。 但…

Qt KDReports詳解與使用

Qt KDReports詳解與使用 一、KD Reports 簡介二、安裝與配置三、核心功能與使用1、創建基礎報表2、添加表格數據3、導出為 PDF4、XML報表定義 四、高級功能1、動態數據綁定2、自定義圖表3、模板化設計4、頁眉頁腳設置 五、常見問題六、總結七、實際應用示例&#xff1a;發票生成…

Spring Cloud 原生中間件

&#x1f4dd; 代碼記錄 Consul&#xff08;服務注冊與發現 分布式配置管理&#xff09; 擁有服務治理功能&#xff0c;實現微服務之間的動態注冊與發現 ?不在使用Eureka&#xff1a;1. 停更進維 2. 注冊中心獨立且和微服務功能解耦 Consul官網 Spring官方介紹 三個注冊中…

CMake實踐: 以開源庫QSimpleUpdater為例,詳細講解編譯、查找依賴等全過程

目錄 1.環境和工具 2.CMake編譯 3.查找依賴文件 3.1.windeployqt 3.2.dumpbin 4.總結 相關鏈接 QSimpleUpdater&#xff1a;解鎖 Qt 應用自動更新的全新姿勢-CSDN博客 1.環境和工具 windows 11, x64 Qt5.12.12或Qt5.15.2 CMake 4.0.2 干凈的windows 7&#xff0c;最好是…

WordToCard制作高考志愿填報攻略小卡片【豆包版】

一、什么是WordToCard WordToCard是一個免費的工具&#xff0c;能夠將Word文檔自動轉換為美觀的知識卡片或圖文海報。以下是它的主要特點&#xff1a; 功能優勢 格式支持&#xff1a;支持標題、列表、表格、LaTeX公式等多種格式。模板豐富&#xff1a;提供多種風格的模板&am…

什么是PostCSS

PostCSS是一個用 JavaScript 工具和插件轉換 CSS 代碼的工具 PostCSS是基于 JavaScript 的 CSS 轉換引擎&#xff0c;通過插件系統對 CSS 進行現代化處理&#xff0c;PostCSS 不是預處理器&#xff0c;而是 CSS 的編譯器工具鏈&#xff0c;如同 Babel 之于 JavaScript&#xf…

游戲引擎學習第315天:取消排序鍵的反向順序

倉庫:https://gitee.com/mrxiao_com/2d_game_8 必須保證代碼能跟上不然調試很麻煩 回顧并為今天定調 目前正處于對引擎中 Z 軸處理方式進行修改的階段。上次我們暫停在一個節點&#xff0c;當時我們希望不再讓所有屏幕上的精靈都必須通過同一個排序路徑進行排序。我們想要將…

MySQL EXPLAIN 詳解

MySQL EXPLAIN 詳解:掌握 SQL 性能優化的關鍵工具 在日常數據庫開發和優化過程中,很多開發者會遇到 SQL 查詢變慢、索引未命中等問題。MySQL 提供了一個非常實用的工具 —— EXPLAIN 關鍵字,它可以幫助我們分析 SQL 查詢的執行計劃,識別潛在的性能瓶頸,從而有針對性地進行…

k8s使用私有harbor鏡像源

前言 在node上手動執行命令可以正常從harbor拉取鏡像&#xff0c;但是用k8s不行&#xff0c;使用kubectl describe pods xxx 提示未授權 unauthorized to access repository。 處理方法 創建一個secrete資源對象。以下示例中 registry-harbor 為secret資源對象的名稱。除了郵…