關于 51 單片機顯示多個數碼管時出現殘影

殘影現象:
在這里插入圖片描述

出現殘影代碼:

#include <REGX52.H>
#include <INTRINS.H>
void Delayxms(unsigned int x)		//@11.0592MHz
{while(x){unsigned char i, j;_nop_();i = 2;j = 199; do{while (--j);} while (--i);x--;}
}
void DisplayDigitalNumber(unsigned char location,unsigned char number){// select nth number_lightunsigned char numbers[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};switch(location){case 1 :P2_4 = 0;P2_3 = 0; P2_2 = 0;break;case 2 :P2_4 = 0;P2_3 = 0; P2_2 = 1;break;case 3 :P2_4 = 0;P2_3 = 1; P2_2 = 0;break;case 4 :P2_4 = 0;P2_3 = 1; P2_2 = 1;break;case 5 :P2_4 = 1;P2_3 = 0; P2_2 = 0;break;case 6 :P2_4 = 1;P2_3 = 0; P2_2 = 1;break;case 7 :P2_4 = 1;P2_3 = 1; P2_2 = 0;break;case 8 :P2_4 = 1;P2_3 = 1; P2_2 = 1;break;}P0 = numbers[number];}
void main(){while(1){DisplayDigitalNumber(3,1);DisplayDigitalNumber(2,2);DisplayDigitalNumber(1,3);}
}

原因分析

位選與段選切換不同步(main):

  • 原代碼中先設置位選(選擇數碼管)再設置段選(顯示數字)。此時若位選已打開,但段選數據尚未穩定,會導致瞬間顯示錯誤數據,產生殘影。

缺乏消隱處理:

  • 在切換數碼管時,沒有關閉所有位選,導致舊段選數據可能殘留在新位選上,形成短暫的重影。

動態掃描時間不足:

  • 主循環連續調用顯示函數,但未給每個數碼管足夠的顯示時間。快速切換導致每個數碼管點亮時間過短,人眼感知為殘影。

解決方案,在設置玩顯示以后,直接把數碼管的顯示清空就不會有殘影了,并且延遲顯示一下:

//只需要修改顯示函數即可
void DisplayDigitalNumber(unsigned char location,unsigned char number){// select nth number_lightunsigned char numbers[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};switch(location){case 1 :P2_4 = 0;P2_3 = 0; P2_2 = 0;break;case 2 :P2_4 = 0;P2_3 = 0; P2_2 = 1;break;case 3 :P2_4 = 0;P2_3 = 1; P2_2 = 0;break;case 4 :P2_4 = 0;P2_3 = 1; P2_2 = 1;break;case 5 :P2_4 = 1;P2_3 = 0; P2_2 = 0;break;case 6 :P2_4 = 1;P2_3 = 0; P2_2 = 1;break;case 7 :P2_4 = 1;P2_3 = 1; P2_2 = 0;break;case 8 :P2_4 = 1;P2_3 = 1; P2_2 = 1;break;}P0 = numbers[number];Delayxms(1);P0=0x00;
}

在這里插入圖片描述

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

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

相關文章

STM32學習筆記之常用外設接口(原理篇)

&#x1f4e2;&#xff1a;如果你也對機器人、人工智能感興趣&#xff0c;看來我們志同道合? &#x1f4e2;&#xff1a;不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸對你有幫助&#xff0c;可點贊 &#x1f44d;…

InnoDB 引擎核心知識點

InnoDB 引擎核心知識點 6.1 邏輯存儲結構 表空間&#xff08;Tablespace&#xff09;&#xff1a;所有數據邏輯上存儲在一個表空間中&#xff0c;物理上可能由多個文件組成。段&#xff08;Segment&#xff09;&#xff1a;分為數據段&#xff08;B樹葉子節點&#xff09;、索引…

深度學習 Deep Learning 第9章 卷積網絡 CNN

深度學習 Deep Learning 第9章 卷積網絡 章節概述 本章深入探討了卷積網絡的原理、變體及其在深度學習中的應用。卷積網絡通過卷積操作實現了參數共享和稀疏連接&#xff0c;顯著提高了模型的效率和性能。本章首先介紹了卷積操作的基本形式及其在不同數據維度上的應用&#x…

基于MATLAB的渦旋光和高斯光疊加產生平頂光

強度疊加耦合成平頂光&#xff0c;不發生干涉 通過分別生成高斯光和渦旋光的強度分布&#xff0c;然后按合適的權重將它們疊加&#xff0c;得到近似平頂光&#xff08;flat‐top beam&#xff09;的效果。由于我們只是將強度相加&#xff08;而非復振幅疊加&#xff09;&#…

wordpress-網站百寶箱插件

含置頂,網頁寵物, 哀悼, 禁止復制, 禁止查看源碼, 彈幕, WP優化,媒體分類,預加載,定時發布,在線客服, 留言板, 手機客服, 網站背景, 公告, 跑馬燈, 水印, 分享, 打賞, 海報圖, 廣告,數據庫管理,圖片加載特效。等綜合功能插件

北斗導航 | 基于北斗三號短報文通信的北斗-YOLO融合系統原理,算法公式,系統流程框圖,matlab代碼,應用場景

以下是關于基于北斗三號短報文通信的北斗-YOLO融合系統的詳細解析,包含原理、算法公式、系統流程、Matlab代碼框架和應用場景。一、系統原理 北斗-YOLO融合系統結合了北斗三號短報文通信(雙向通信能力)和YOLO目標檢測算法,用于在無地面網絡覆蓋區域實現實時目標檢測與數據傳…

Vue 中的日期格式化實踐:從原生 Date 到可視化展示!!!

&#x1f4c5; Vue 中的日期格式化實踐&#xff1a;從原生 Date 到可視化展示 &#x1f680; 在數據可視化場景中&#xff0c;日期時間的格式化顯示是一個高頻需求。本文將以一個邀請碼關系樹組件為例&#xff0c;深入解析 Vue 中日期格式化的 核心方法、性能優化 和 最佳實踐…

試試智能體工作流,自動化搞定運維故障排查

APO 1.5.0版本全新推出的智能體工作流功能&#xff0c;讓運維經驗不再零散&#xff01;只需將日常的運維操作和故障排查經驗轉化為標準化流程&#xff0c;就能一鍵復用&#xff0c;效率翻倍&#xff0c;從此告別重復勞動&#xff0c;把時間留給更有價值的創新工作。更貼心的是&…

LeetCode-215. 數組中的第K個最大元素

1、題目描述 給定整數數組 nums 和整數 k&#xff0c;請返回數組中第 k 個最大的元素。 請注意&#xff0c;你需要找的是數組排序后的第 k 個最大的元素&#xff0c;而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入: [3,2,1…

分布式光伏防逆流管理:技術要點與實踐解析

在國家“雙碳”目標推動下&#xff0c;分布式光伏作為新能源體系的重要組成部分&#xff0c;正迎來快速發展。國家能源局近期發布的《關于做好新能源消納工作保障新能源高質量發展的通知》明確提出&#xff0c;需加強網源協調與調節能力&#xff0c;優化新能源利用率。其中&…

Ubuntu capolar 上實現內網穿透

在官網https://www.cpolar.com/ 注冊用戶&#xff0c;獲取tocken 1.1 安裝cpolar 在Ubuntu上打開終端&#xff0c;執行命令 首先&#xff0c;我們需要安裝curl&#xff1a; sudo apt-get install curl 國內安裝&#xff08;支持一鍵自動安裝腳本&#xff09; curl -L htt…

【CSS】CSS 使用全教程

CSS 使用全教程 介紹 CSS&#xff08;層疊樣式表&#xff0c;Cascading Style Sheets&#xff09;是一種樣式表語言&#xff0c;用于描述 HTML 或 XML 文檔的布局和外觀&#xff0c;它允許開發者將文檔的內容結構與樣式表現分離&#xff0c;通過定義一系列的樣式規則來控制網頁…

Jenkins 集成 SonarQube 代碼靜態檢查使用說明

環境準備 Jenkins 服務器 確保 Jenkins 已安裝并運行&#xff08;推薦 LTS 版本&#xff09;。安裝插件&#xff1a; SonarQube Scanner for Jenkins&#xff08;用于集成 SonarQube 掃描&#xff09;NodeJS Plugin&#xff08;可選&#xff0c;用于 JavaScript 項目&#xff0…

EasyRTC輕量級Webrtc音視頻通話SDK,助力帶屏IPC在嵌入式設備中的應用

一、市場背景 隨著人們生活水平的提高&#xff0c;對于家居安全和遠程監控的需求日益增長&#xff0c;帶屏IPCam不僅滿足了用戶實時查看監控畫面的需求&#xff0c;還提供了諸如雙向語音通話、智能報警等豐富的功能&#xff0c;極大地提升了用戶體驗。 此外&#xff0c;技術的…

AI編輯器-Trae 玩轉AI 編程

參考 掘金社區地址 Trae下載地址 管理插件 Trae 從入門到實踐:AI 編碼的妙筆生花 掘金社區 掘金社區簡介 掘金是面向全球中文開發者的技術內容分享與交流平臺。我們通過技術文章、沸點、課程、直播等產品和服務,打造一個激發開發者創作靈感,激勵開發者沉淀分享,陪伴開發者…

C語言代碼如何操作硬件?

在嵌入式開發中&#xff0c;C代碼通過直接操作硬件寄存器來控制硬件&#xff0c;這些寄存器被映射到特定的內存地址。以下是其工作原理的詳細分步解釋&#xff1a; 1. 內存映射硬件寄存器 微控制器將外設&#xff08;如GPIO、定時器、UART等&#xff09;的寄存器映射到內存地…

Flume-試題

以下是對話中涉及的題目及其簡要解析&#xff1a; 1. 哪個 Flume Source 可用于監控某個端口&#xff0c;將流經端口的每一個文本行數據作為 Event 輸入&#xff1f; - A. Avro Source - B. exec Source - C. Spooling Directory Source - D. Netcat Source 2. 哪…

C++《紅黑樹》

在之前的篇章當中我們已經了解了基于二叉搜索樹的AVL樹&#xff0c;那么接下來在本篇當中將繼續來學習另一種基于二叉搜索樹的樹狀結構——紅黑樹&#xff0c;在此和之前學習AVL樹類似還是通過先了解紅黑樹是什么以及紅黑樹的結構特點&#xff0c;接下來在試著實現紅黑樹的結構…

【第23節】windows網絡編程模型(WSAEventSelect模型)

目錄 引言 一、WSAEventSelect模型概述 二、 WSAEventSelect模型的實現流程 2.1 創建一個事件對象&#xff0c;注冊網絡事件 2.2 等待網絡事件發生 2.3 獲取網絡事件 2.4 手動設置信號量和釋放資源 三、 WSAEventSelect模型偽代碼示例 四、完整實踐示例代碼 引言 在網…

概率預測之NGBoost(Natural Gradient Boosting)回歸和分位數(Quantile Regression)回歸

概率預測之NGBoost(Natural Gradient Boosting)回歸和線性分位數回歸 NGBoostNGBoost超參數解釋NGBoost.fitscore(X, Y)staged_predict(X)feature_importances_pred_dist 方法來獲取概率分布對象分位數回歸(Quantile Regression)smf.quantreg 對多變量數據進行分位數回歸分…