51單片機PWM控制LED燈漸明漸暗實驗

51單片機PWM控制LED燈漸明漸暗實驗

1.概述

這篇文章介紹單片機的PWM通過占空比控制LED燈的漸明漸暗效果,通過該實驗掌握PWM的原理以及應用它做一些事情。

2.操作步驟

2.1.硬件電路

1.硬件準備
名稱型號數量
單片機STC12C20521
LED彩燈2
晶振12MHZ1
電容30pf2
電阻100歐姆2
面包板1
連接線5
2.電路圖原理圖

這次實驗使用了兩個LED燈交替閃爍,因此按照11號引腳接LED燈的方式在9號引腳同樣接入另一個LED燈即可。
在這里插入圖片描述

2.2.程序代碼

/*************************************************************
* 程序名: PWM控制兩個LED燈亮度漸亮漸暗
* 編寫人: bruce
* 硬件支持:TC12C2052 外部12MHZ晶振
* 日  期: 2023-11-14
* 修改日志: 通過控制PWM占空比調控LED燈亮和滅實現亮度漸變效果
/*************************************************************/#include<STC12C2052AD.H>/*********************************************************************************************
函數名:PWM初始化函數
調  用:PWM_init();
參  數:無
返回值:無
結  果:將PCA初始化為PWM模式,初始占空比為0
備  注:需要更多路PWM輸出直接插入CCAPnH和CCAPnL即可
/**********************************************************************************************/
void PWM_init (void){CMOD=0x02; //設置PCA定時器CL=0x00; CH=0x00;CCAPM0=0x42; //PWM0設置PCA工作方式為PWM方式(0100 0010)CCAP0L=0x00; //設置PWM0初始值與CCAP0H相同CCAP0H=0x00; // PWM0初始時為0CCAPM1=0x42; //PWM1設置PCA工作方式為PWM方式(使用時刪除//)CCAP1L=0x00; //設置PWM1初始值與CCAP0H相同CCAP1H=0x00; // PWM1初始時為0//CCAPM2=0x42; //PWM2設置PCA工作方式為PWM方式//CCAP2L=0x00; //設置PWM2初始值與CCAP0H相同//CCAP2H=0x00; // PWM2初始時為0//CCAPM3=0x42; //PWM3設置PCA工作方式為PWM方式//CCAP3L=0x00; //設置PWM3初始值與CCAP0H相同//CCAP3H=0x00; // PWM3初始時為0CR=1; //啟動PCA定時器
}/*********************************************************************************************
函數名:PWM0占空比設置函數
調  用:PWM0_set();
參  數:0x00~0xFF(亦可用0~255)
返回值:無
結  果:設置PWM模式占空比,為0時全部高電平,為1時全部低電平
備  注:如果需要PWM1的設置函數,只要把CCAP0L和CCAP0H中的0改為1即可
/**********************************************************************************************/
void PWM0_set(unsigned char a){CCAP0L=a;CCAP0H=a;
}/*********************************************************************************************
函數名:PWM1占空比設置函數
調  用:PWM1_set();
參  數:0x00~0xFF(亦可用0~255)
返回值:無
結  果:設置PWM模式占空比,為0時全部高電平,為1時全部低電平
/**********************************************************************************************/
void PWM1_set(unsigned char a){CCAP1L=a;CCAP1H=a;
}/*********************************************************************************************
函數名:毫秒級CPU延時函數
調  用:DELAY_MS (?);
參  數:1~65535(參數不可為0)
返回值:無
結  果:占用CPU方式延時與參數數值相同的毫秒時間
備  注:應用于1T單片機時i<600,應用于12T單片機時i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){unsigned int i;while( --a != 0){for(i = 0; i < 600; i++);}
}void main(void){//PWM初始化PWM_init();while(1){unsigned char a;for(a=0x00;a<0xff;a++){//設置PWM0占空比PWM0_set(a);//設置PWM1占空比PWM1_set(~a);DELAY_MS(8);}for(a=0xff;a>0x00;a--){//設置PWM0占空比PWM0_set(a);//設置PWM1占空比PWM1_set(~a);DELAY_MS(8);}}}

2.3.燒錄程序

使用Keil工具編譯程序,打開STC-ISP軟件選擇編譯后的hex文件,設置外部晶振,下載程序。將程序燒錄到單片機后,在給單片機冷啟動(斷掉5V電源在上電)使單片機切換為外部晶振,觀察兩個LED燈交替明暗變化。

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

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

相關文章

ubuntu上查看各個進程的實時CPUMEM占用的辦法

top常見參數top界面分析system monitorhtop1、查看htop的使用說明2、顯示樹狀結構3、htop使用好文推薦top top的用法應該是最為普遍的 常見參數 -d 更新頻率,top顯示的界面幾秒鐘更新一次 -n 更新的次數,top顯示的界面更新多少次之后就自動結束了 當然也可以將top日志通過…

Android進階知識:ANR的定位與解決

1、前言 ANR對于Android開發者來說一定不會陌生&#xff0c;從剛開始學習Android時的一不注意就ANR&#xff0c;到后來知道主線程不能進行耗時操作注意到這點后&#xff0c;程序出現ANR的情況就大大減少了&#xff0c;甚至于消失了。那么真的是只要在主線程做耗時操作就會產生…

RabbitMQ 的網頁界面操作說明

啟動 上面給用戶添加了角色和權限&#xff0c; 我們就可以登錄了 先手動創建兩個隊列&#xff0c;然后再把這兩個隊列和交換機綁定&#xff0c;就可以發布消息 回到隊列中看看有什么變化 隊列中顯示綁定了交換機 再看一下隊列中發生的變化 可以看到隊列中收到了信息

2023亞太杯數學建模B題:玻璃溫室中的微氣候法規,思路模型代碼論文

問題B 玻璃溫室中的微氣候法規 賽題思路&#xff1a;思路獲取見文末名片&#xff0c;第一時間更新 溫室作物的產量受到各種氣候因素的影響&#xff0c;包括溫度、濕度和風速[1]。其中&#xff0c;適 宜的溫度和風速是植物生長[2]的關鍵。為了調節玻璃溫室內的溫度、風速等氣…

基于C#實現樹狀數組

有一種數據結構是神奇的&#xff0c;神秘的&#xff0c;它展現了位運算與數組結合的神奇魅力&#xff0c;太牛逼的&#xff0c;它就是樹狀數組&#xff0c;這種數據結構不是神人是發現不了的。 一、概序 假如我現在有個需求&#xff0c;就是要頻繁的求數組的前 n 項和&#x…

Day29| Leetcode 491. 遞增子序列 Leetcode 46. 全排列 Leetcode 47. 全排列 II

Leetcode 491. 遞增子序列 題目鏈接 491 遞增子序列 本題目和前面的樹層去重不太一樣&#xff0c;因為這里不能對原集合進行排序&#xff0c;所以之前的去重就沒法使用了&#xff0c;只能單純的記錄該元素有沒有使用過&#xff08;去重&#xff09;&#xff0c;下面使用的是…

Redis事務的理解與使用

文章目錄 Redis 事務1)基本認識2)事務操作1.MULTI2.EXEC3.錯誤處理4.DISCARD5.WATCH6.SCRIPT Redis 事務 官方文檔&#xff0c;永遠是你學習的第一手資料&#xff1a;Redis 事務 1)基本認識 談到事務&#xff0c;大家首先都會聯想到 mysql 中復雜但又功能強大的“事務”&…

MySQL面試題總結

1. 表之間如何關聯 表與表之間常用的關聯方式有兩種&#xff1a;內連接、外連接&#xff0c;下面以MySQL為例來說明這兩種連接方式 內連接通過INNER JOIN來實現&#xff0c;它將返回兩張表中滿足連接條件的數據&#xff0c;不滿足條件的數據不會查詢出來 外連接 外連接通過OUTE…

SpringBoot——感謝尚硅谷官方文檔

SpringBoot——感謝尚硅谷官方文檔 1 Spring與SpringBoot1、Spring能做什么1.1、Spring的能力1.2、Spring的生態1.3、Spring5重大升級1.3.1、響應式編程1.3.2、內部源碼設計 2、為什么用SpringBoot2.1、SpringBoot優點2.2、SpringBoot缺點 3、時代背景3.1、微服務3.2、分布式分…

Dubbo從入門到上天系列第十八篇:Dubbo引入Zookeeper等注冊中心簡介以及DubboAdmin簡要介紹,為后續詳解Dubbo各種注冊中心做鋪墊!

文章目錄 一&#xff1a;Dubbo注冊中心引言 1&#xff1a;什么是Dubbo的注冊中心&#xff1f; 2&#xff1a;注冊中心關系圖解 3&#xff1a;引入注冊中心服務執行流程 4&#xff1a;Dubbo注冊中心好處 5&#xff1a;注冊中心核心作用 二&#xff1a;注冊中心實現方案 …

10.docker的網絡network-概述

1.docker的網絡模式 docker共有四種網路模式&#xff0c;分別是bridge、host、none和container. 1.1 bridge bridge,也稱為虛擬網橋。在bridge模式下&#xff0c;為每個容器分配、配置IP等&#xff0c;并將容器連接到一個docker0。使用–network bridge命令指定&#xff0c;…

【01】ES6:ECMAScript 介紹

ECMAScript 6.0 &#xff08;以下簡稱 ES6&#xff09;是 JavaScript 語言的下一代標準&#xff0c;已經在 2015 年 6 月正式發布。它的目標&#xff0c;是使得 JavaScript 語言可以用來編寫復雜的大型應用程序&#xff0c;成為企業級開發語言。 參考&#xff1a;《ECMAScript…

C# Winform使用log4net記錄日志

寫在前面 Log4Net是從Java的log4j移植過來的&#xff0c;功能也與log4j類似&#xff0c;可以把日志信息輸出到文件、數據庫、控制臺、Windows 事件日志、遠程系統日志服務等不同的介質或目標。 Log4Net配置選項豐富靈活&#xff0c;并且可在運行時動態更新配置并應用&#xf…

解析紫光展銳T820 5G芯片——讓照片接近原色

紫光展銳系統級安全的高性能5G SoC芯片平臺T820&#xff0c;采用八核CPU架構&#xff0c;6nm EUV先進工藝&#xff0c;金融級全內置安全方案&#xff0c;在性能、功耗與5G通信體驗等方面&#xff0c;較上一代產品更為出色。 此前&#xff0c;已經為大家講解過T820的拍照、安全性…

mac跑分工具 Geekbench v6.2.2

Geekbench 6 是一款跨平臺的系統性能測試軟件&#xff0c;可以對處理器和內存等硬件進行評測&#xff0c;并提供了單核和多核兩種測試模式。該軟件適用于 Windows、macOS、Linux 和 iOS 等多種操作系統平臺。 Geekbench 6 測試可以幫助用戶快速準確地了解自己設備的性能表現&am…

【brpc學習實踐五】brpc自適應限流案例

自適應限流 服務的處理能力是有客觀上限的。當請求速度超過服務的處理速度時&#xff0c;服務就會過載。 如果服務持續過載&#xff0c;會導致越來越多的請求積壓&#xff0c;最終所有的請求都必須等待較長時間才能被處理&#xff0c;從而使整個服務處于癱瘓狀態。 與之相對…

PHP中間件實現

目錄 1、簡單中間實現 2、使用閉包函數實現中間件 在PHP中&#xff0c;中間件是一種常用的設計模式&#xff0c;用于處理請求和響應&#xff0c;它可以在請求到達目標處理程序之前或響應發送給客戶端之前執行一些特定的邏輯。中間件提供了一種靈活的方式來修改或擴展應用程序的…

查看當前laravel版本三種方法(筆記二)

1、在終端中使用 Artisan 命令&#xff1a;在 Laravel 項目的根目錄下&#xff0c;打開終端&#xff08;命令行界面&#xff09;&#xff0c;然后運行以下命令&#xff1a; php artisan --version 2、控制器中打印版本 var_dump(app()->version()); 3、在 Laravel 項目的根目…

【kubernetes】k8s架構之節點

文章目錄 1、集群架構示意圖2、概述3、管理3.1 節點名稱唯一性3.2 節點自注冊3.3 手動節點管理 4、節點狀態4.1 地址&#xff08;Addresses&#xff09;4.2 狀況&#xff08;Condition&#xff09;4.3 容量&#xff08;Capacity&#xff09;與可分配&#xff08;Allocatable&am…

PTA-輸出三角形面積和周長

本題要求編寫程序&#xff0c;根據輸入的三角形的三條邊a、b、c&#xff0c;計算并輸出面積和周長。注意&#xff1a;在一個三角形中&#xff0c; 任意兩邊之和大于第三邊。三角形面積計算公式&#xff1a;areas(s?a)(s?b)(s?c)?&#xff0c;其中s(abc)/2。 輸入格式&…