動態數碼管python(動態數碼管掃描原理)

本文目錄一覽:

使用Python,實現程序運行計時的數碼管表示

用python實現計時器功能,代碼如下:

”’ Simple Timing Function.

This function prints out a message with the elapsed time from the

previous call. It works with most Python 2.x platforms. The function

uses a simple trick to store a persistent variable (clock) without

using a global variable.

”’

import time

def dur( op=None, clock=[time.time()] ):

if op != None:

duration = time.time() – clock[0]

print ‘%s finished. Duration %.6f seconds.’ % (op, duration)

clock[0] = time.time()

# Example

if __name__ == ‘__main__’:

import array

dur() # Initialise the timing clock

opt1 = array.array(‘H’)

for i in range(1000):

for n in range(1000):

opt1.append(n)

dur(‘Array from append’)

opt2 = array.array(‘H’)

seq = range(1000)

for i in range(1000):

opt2.extend(seq)

dur(‘Array from list extend’)

opt3 = array.array(‘H’)

seq = array.array(‘H’, range(1000))

for i in range(1000):

opt3.extend(seq)

dur(‘Array from array extend’)

# Output:

# Array from append finished. Duration 0.175320 seconds.

# Array from list extend finished. Duration 0.068974 seconds.

# Array from array extend finished. Duration 0.001394 seconds.

用for語句使數碼管動態顯示

數碼管動態顯示程序,本就應該用for循環語句寫,那些一位一位地顯示的程序,太不規範啦,程序顯得很長,很亂的。

如下的仿真圖,是8位數碼管,就得用for循環語句寫,程序很簡單,很簡潔。

程序如下

#includereg52.h

#includeintrins.h

unsigned char code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71};//共陰數碼管段碼錶

unsigned char buffer[]={1,2,3,4,5,6,7,8};

void delay()

{

unsigned int j;

for(j=400;j0;j–);

}

void display()

{

unsigned char i,ledbit=0xfe;

for(i=0;i8;i++)

{

P2=ledbit;  //先輸出位碼

P0=ledtab[buffer[i]];//後輸出段碼

ledbit=_crol_(ledbit,1);

delay();

}

}

void main()

{

while(1)

{

display();

}

}

怎麼實現數碼管動態動態掃描顯示(同時顯示不同的數字)?以下程序只能一次顯示一個數字。

很容易,首先假如我們有6位數碼管,每位數碼管需要8個段選1個公共選通端, 那麼6位數碼管自然是8位端選信號 6位選通信號(分別選通1-6其中的一個數碼管)

#define SMG_WEI P0 //P1.0 -P1.5 分別驅動數碼管選通

#define SMG_DUAN P1 //P1.0 -P1.7接數碼管8個段選

unsigned char smgcode[]={x,x,x,x,x,x,x,x,x,x} //對應數碼管0-9的值,實際根據段信號確定

void Delay(unsigned long w)

{

while(w–);

}

void DisPlay(unsigned char s1,unsigned char s2,unsigned char s3,unsigned char s4,unsigned char s5,unsigned char s6) //s1 -s6表示1-6的數碼管需要顯示的數字

{

SMG_WEI =0x01 //第1個數碼管選通 000001

SMG_DUAN =smgcode[s1]; //如s1傳入1表示要顯示1,那麼直接調用數組偏移量為1的值,顯示1

Delay(100); //延時一段時間消影

SMG_WEI =0x02 //第2個數碼管選通 000010

SMG_DUAN =smgcode[s2]; //如s2傳入2表示要顯示2,那麼直接調用數組偏移量為2的值,顯示2

Delay(100); //延時一段時間消影

S3 /////

S4 /////

S5 //////

SMG_WEI =0x20 //第6個數碼管選通 100000

SMG_DUAN =smgcode[s6]; //如s6傳入6表示要顯示6,那麼直接調用數組偏移量為6的值,顯示6

Delay(100); //延時一段時間消影

SMG_WEI =0;

SMG_DUAN =0; //清除顯示,保證每位數碼管亮度一致

}

void main()

{

while(1)

{

DisPlay(1,2,3,4,5,6);//數碼管顯示 1 2 3 4 5 6

}

}

Python七段數碼管繪製的文字步驟,請問哪位大佬能簡單說一下。是要文字版的,不需要寫代碼的?

繪製七段數碼管需要用到turtle繪圖體系。

基本思路是:1、繪製單個數字對應的數碼管。2、獲得一串數字繪製對應的數碼管。

具體操作:步驟1、繪製單個數碼管:顧名思義,七段數碼管是由7段基本線條組成的,不同的數字顯示不同的線條,並且數碼管可以有固定的順序;編寫程序時,可以先定義畫單段數碼管的函數,再定義根據數字繪製七段數碼管的函數,利用if語句,根據數字調用單段數碼管函數進行繪製。步驟2,獲得要輸出的數字,利用eval()函數將數字變為整數,調用根據數字繪製七段數碼管的函數進行繪製。

總結:1、對七段數碼進行分析,整理思路。根據數字繪製七段數碼管時,用到哪一段基本線條就把哪一段繪製出來。

七段數碼管

2、利用到的知識點:turtle庫、函數、if語句、eval()函數

數碼管的動態顯示問題,是共陽極的,在仿真的時候只有一個正常顯示

中斷里動態點亮數碼管的程序有錯誤,如下:

P1_0=0;P1_1=1;

P0=dispcode[second/10];

P1_0=1;P1_1=0;

P0=dispcode[second%10];

點亮第一位後接着滅掉第一位、點亮第二位,由於時間太快,而且中斷時間太長,所以第一位點亮就看不到了,而只能看到第二位的數字了,也就是dispcode[second%10]對應的數碼管。修改一下程序應該是這樣的:

#include reg51.h

sbit P1_0=P1^0;

sbit P1_1=P1^1;

unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

volatile unsigned char second; //告訴編譯器不要優化變量,具體用法百度一下

unsigned char tcount;

//短暫延時

void delay(char x)

{

char i,j;

for(i=0;ix;i++)

for(j=0;j200;j++);

}

void main(void)

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

ET0=1;

EA=1;

tcount=0;

second=0;

while(1)

{

P1_0=0;P1_1=1;

P0=dispcode[second/10];

delay(2); //x的值自己試試,只要能正常顯示就行

P1_0=1;P1_1=0;

P0=dispcode[second%10];

delay(2);

}

}

void t0(void) interrupt 1 using 0

{

tcount++;

if(tcount==20)

{

tcount=0;

second++;

if(second==60)

{

second=0;

}

}

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/291680.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-25 14:06
下一篇 2024-12-25 14:06

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論