【TB作品】智能臺燈控制器,ATMEGA128單片機,Proteus仿真

題目 8 :智能臺燈控制器
基于單片機設計智能臺燈控制器,要求可以調節 LED 燈的亮度,實現定時開啟與關閉,
根據光照自動開啟與關閉功能。
具體要求如下:
(1)通過 PWM 功能調節 LED 燈亮度,亮度由高到低可分為 3 檔,通過按鍵進行調節
并對當前檔位進行指示。
(2)具有手動開啟和關閉功能。
(3)能夠顯示并修改當前時間(如時分顯示)
(4)可設置自動開啟和關閉的時間,當到達開啟時間時,LED 自動開啟;當到達關閉
時間時,LED 自動關閉。
(5)通過光敏電阻感知外界光照條件,在光照模式開啟的情況下,光照較低則 LED 自
動點亮,光照較高,LED 自動熄滅。(LED 開啟和關閉的光照閾值盡量能夠由用戶定義)
可添加符合題目背景的其它功能。

智能臺燈控制器

1 分為 定時開關機的自動模式、手動模式、光敏電阻控制模式,使用按鍵1切換模式,每個模式都有對應顯示,可以方便看出當前是什么模式。三種模式平行存在,無包含關系。還有一個修改當前時間模式平行。

2 單片機采用定時器走時,有時分秒的時間顯示,可以按鍵修改時分秒,設置當前的時間。

3 定時開關機的自動模式功能解釋:按鍵設置開機時間點和關機時間點,當當前的時間處于時間段內小燈點亮,否則小燈熄滅。

4 手動模式功能解釋:按鍵可以調節檔位,也有相對應顯示。

5 光敏電阻控制模式功能解釋:光敏電阻檢測到的電壓來控制臺燈亮度。
光照較低則 LED 自動點亮,光照較高,LED 自動熄滅

6 LED 開啟和關閉的光照閾值能夠由用戶定義

7 按鍵規劃

K1 切換模式:自動模式 手動模式 光敏電阻控制模式
K5 進入或者退出修改當前時間模式

定時開關機的自動模式下按鍵功能:
K2 切換選項
K3 加法
K4 減法

手動模式下按鍵功能:
K2 無作用
K3加檔位
K4 減檔位

光敏電阻控制模式下按鍵功能:
K2 無作用
K3 加光照閾值
K4 減光照閾值

修改當前時間模式下按鍵功能:
K2 切換選項
K3 加法
K4 減法

在這里插入圖片描述

這段代碼是一個基于AVR單片機的項目,用于實現LCD顯示、ADC0832數據采集、PWM控制和按鍵輸入功能。下面我將對其主要功能和實現方法進行詳細介紹。

項目簡介

該項目的核心功能包括:

  1. LCD顯示:用于顯示當前時間、模式和相關參數。
  2. ADC0832數據采集:通過ADC0832芯片采集模擬信號。
  3. PWM控制:用于調節輸出PWM信號的占空比。
  4. 按鍵輸入:實現多種模式切換和參數設置。

LCD顯示功能

LCD顯示模塊用于顯示各種信息,包括當前時間、模式狀態和傳感器數據。代碼中通過SetCurPosition函數設置LCD光標位置,LCD_write_comLCD_write_str函數用于發送指令和字符串到LCD。LCD顯示部分的代碼示例如下:

void display(void) {// 省略部分代碼...if (mode == 0) {// 顯示當前時間// 省略部分代碼...} else if (mode == 1) {// 顯示手動模式// 省略部分代碼...} else if (mode == 2) {// 顯示光強模式// 省略部分代碼...} else if (mode == 3) {// 顯示時間設置模式// 省略部分代碼...}
}

ADC0832數據采集

ADC0832是一個8位模數轉換器,用于將模擬信號轉換為數字信號。通過SPI協議與單片機進行通信。數據采集的核心函數是Get_AD_Result,其實現如下:

unsigned char Get_AD_Result(unsigned char ch) {// 省略部分代碼...return dat1; // 返回轉換結果
}

PWM控制

PWM控制部分用于調節輸出信號的占空比,從而控制連接設備的工作狀態。通過設置OCR1A寄存器來調整占空比。設置PWM占空比的函數如下:

void setPWM(unsigned int zhankongbi) {OCR1A = zhankongbi; // 設置占空比
}

按鍵輸入

按鍵輸入部分用于實現模式切換和參數設置。通過讀取PINF寄存器的值來檢測按鍵狀態,并根據按鍵的不同執行相應操作。按鍵檢測的核心函數如下:

unsigned char getkey(void) {// 省略部分代碼...return 0; // 返回按鍵值
}

主控制邏輯

主控制邏輯位于main函數中,通過無限循環不斷檢測按鍵輸入,更新顯示和控制輸出。其主要邏輯如下:

void main(void) {system_init(); // 系統初始化while (1) {unsigned char key = getkey();// 根據按鍵值更新模式和參數if (key) {// 省略部分代碼...}display(); // 更新顯示contorl(); // 控制輸出}
}

具體功能實現

  1. 時間顯示和設置:通過定時器中斷更新當前時間,并通過按鍵設置定時時間。
  2. 自動模式:根據預設時間范圍控制輸出狀態。
  3. 手動模式:用戶通過按鍵手動設置輸出狀態。
  4. 光強模式:通過ADC0832采集光強信號,根據設定閾值控制輸出狀態。

通過這種模塊化的設計,該項目能夠實現多種模式下的靈活控制和顯示功能,適用于需要多種輸入輸出控制的嵌入式系統應用。

資源:

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

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

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

相關文章

【本地調試】使用 Nginx 和 Hosts 文件實現本地開發調試請求轉發

可以按照以下 nginx 配置來設置,通過 nginx 和 host 將網頁的請求轉發到本地的后端服務器,以方便本地開發調試 一、nginx 配置 worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/js…

【Python】 數據分析中的常見統計量:中位數

那年夏天我和你躲在 這一大片寧靜的海 直到后來我們都還在 對這個世界充滿期待 今年冬天你已經不在 我的心空出了一塊 很高興遇見你 讓我終究明白 回憶比真實精彩 🎵 王心凌《那年夏天寧靜的海》 中位數(Median)是統計學…

深入淺出3D感知中的優化與基于學習的技術1(原創系列)

近期幾乎看了所有有關NERF技術論文,本身我研究的領域不在深度學習技術方向,是傳統的機器人控制和感知。所以總結了下這部分基于學習的感知技術,會寫一個新的系列教程講解這部分三維感知技術的發展到最新的技術細節,并支持自己最近…

娛樂圈發生震動,AI大模型技術已經取代了SNH48的小偶像?

自2023年以來,全球都被包裹在AI的驚天大潮之中,所有行業都在主動或被動地迎接改變。目前,各行業已經有大量公司正在把AI作為自身發展的最佳路徑。其中,娛樂行業作為最被人們熟知的行業也在面對AI的發展時,發生著巨大變…

解析Java中1000個常用類:Currency類,你學會了嗎?

在線工具站 推薦一個程序員在線工具站:程序員常用工具(http://cxytools.com),有時間戳、JSON格式化、文本對比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序員資料站 推薦一個程序員編程資料站:程序員的成長之路(http://cxyroad.com),收錄了一些列的技術教程…

解析connectionReset異常的原因與解決方案

解析connectionReset異常的原因與解決方案 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!今天我們將深入探討Java中connectionReset異常的原因及其解決方案。這…

遙遠星辰中的覺醒:超大質量黑洞的蘇醒與人類的未來

遙遠星辰中的覺醒:超大質量黑洞的蘇醒與人類的未來 在浩渺無垠的宇宙中,星辰的閃爍仿佛是時間的漣漪,穿越億萬年的距離,抵達我們的眼眸。而在這片星辰大海的深處,一個驚人的現象正在悄然上演——距離地球3.6億光年之遙…

Unity獲取剪切板內容粘貼板圖片文件文字

最近做了一個發送消息的unity項目,需要訪問剪切板里面的圖片文字文件等,翻遍了網上的東西,看了不是需要導入System.Windows.Forms(關鍵導入了unity還不好用,只能用在純c#項目中),所以我看了下py…

GMSB文章九:微生物的相關關系組間波動

歡迎大家關注全網生信學習者系列: WX公zhong號:生信學習者Xiao hong書:生信學習者知hu:生信學習者CDSN:生信學習者2 介紹 計算配對微生物在組間的相關關系波動情況進而評估不同分組的微生物狀態。secom_linear 函數…

線性表與順序存儲結構(下)

前言 接上文(線性表與順序存儲結構(上))。 這些順序存儲結構的方法在順序表上下卷中已經提到過,但是有些許不同,可以為理解順序表提供更豐富的視角。(不過最主要的區別在于順序表上下卷中的順…

機器人關節 viscous friction與結構阻尼

Viscous Friction(粘性摩擦) 定義:Viscous friction,也被稱為粘性摩擦或粘滯摩擦,是機器人關節在運動過程中由于接觸面之間的相互作用而產生的摩擦力。這種摩擦力與關節的運動速度有關,通常表現為速度越大&…

HarmonyOS開發實戰:分布式文件系統-hmdfs

分布式文件系統提供跨設備的文件訪問能力,適用于如下場景: 兩臺設備組網,A 設備可以無感讀取和修改 B 設備的文件。 邊緣服務器可以自動同步組網中多個嵌入式設備中的文件數據。 hmdfs 在分布式軟總線動態組網的基礎上,為網絡上…

Ubuntu添加系統字體

(2024.6.30) 系統字體保存路徑在/usr/share/fonts下,如果此目錄下缺少字體,則使用其他可視化api(如Python的pygame庫)的默認配置時可能會出現亂碼問題。 往Ubuntu中添加字體的方法 方法一:手…

Ant Design Vue:如何提升你的前端開發效率?

目錄 1. Ant Design Vue 簡介 1.1 特性概覽 1.2 安裝與配置 2. 常用組件及使用示例 2.1 Button 按鈕 2.2 Form 表單 2.3 Table 表格 2.4 Modal 對話框 3. 常見問題及解決方案 3.1 組件無法渲染 問題描述 解決方案 3.2 表單驗證失效 問題描述 解決方案 3.3 表格…

Python | 計算位渦平流項

寫在前面 最近忙著復習、考試…都沒怎么空敲代碼,還得再準備一周考試。。。等考完試再慢慢更新了,今天先來淺更一個簡單但是使用的python code 在做動力機制分析時,我們常常需要借助收支方程來診斷不同過程的貢獻,其中最常見的一…

51單片機-點亮LED燈

目錄 新建項目選擇型號添加新文件到該項目設置字體和utf-8編碼二極管如何區分正負極原理:CPU通過寄存器來控制硬件電路 用P2寄存器的值控制第一個燈亮進制轉換編譯查看P2寄存器的地址生成HEX文件把代碼下載到單片機中 新建項目 選擇型號 stc是中國生產的、這個里面…

token登錄比密碼登錄有什么優勢嗎

token登錄比密碼登錄有什么優勢嗎 使用令牌(Token)登錄相比于密碼登錄具有一些優勢,包括: 安全性:令牌通常采用加密技術,使得它們更難以被盜取或猜測。相比之下,密碼存在被猜測、破解或被暴力攻…

解決瀏覽器兼容性問題的方法

解決瀏覽器兼容性問題的方法 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!今天我們來探討如何解決網頁開發中常見的瀏覽器兼容性問題。隨著互聯網技術的發展&…

java中輸入輸出流的繼承關系

在 Java 中,輸入輸出流的繼承關系主要圍繞兩個抽象基類展開:字節流基類 InputStream 和 OutputStream,以及字符流基類 Reader 和 Writer。這些類形成了 Java I/O 系統的基礎,提供了豐富的子類以適應不同的輸入輸出需求。 字節流 字節流用于處理原始的二進制數據。 Input…

利用Linked SQL Server提權

點擊星標,即時接收最新推文 本文選自《內網安全攻防:紅隊之路》 掃描二維碼五折購書 利用Linked SQL Server提權 Linked SQL server是一個SQL Server數據庫中的對象,它可以連接到另一個SQL Server或非SQL Server數據源(如Oracle&a…