驅動數碼管的實驗

2021-09-22 13:36:41 字數 2213 閱讀 4467

課程名稱:_微控制器原理與應用

專業班級:嵌入式14103班  

姓    名:_趙存檔       _ __

學    號:_14160310317    __

2015--2016    學年第  1  學期

實驗專案( 四 ) — 預習報告

專案名稱

驅動7段數碼管實驗

實驗目的及要求

1、掌握用proteus畫電路圖。

2、用keil編寫**,進行除錯。

3、進行**測試

實驗內容及原理

實驗內容:

開啟proteus軟體,畫出微控制器最小系統以及數碼管的電路圖,然後開啟keil軟體

實驗原理:

由原理圖可知,數碼管接線方式為共陽極,所以給予數碼管p1.0/1/2/3乙個低電平0即可點亮數碼管。p0則是賦值0x16進製制數。如果讓數碼管顯示0的話,則賦值0xc0即可顯示0. 顯示「0」是點亮了數碼管的a,b,c,d,e,f,段。

預習過程

中的疑問以及解答

驅動數碼管的實驗

疑問:疑問一:什麼才能點亮數碼管?

解答:先看原理圖,數碼管是否共陰極還是共陽極,由原理圖可知,該數碼管共陽極,所以給p1的0、1、2、3口乙個低電平0即可點亮數碼管,反之給乙個高電平1就能將數碼管熄滅。

疑問二:數碼管怎麼才能顯示數字呢?

解答:數碼管分7段,只要點亮各個數碼管段,即可顯示要求的數字。以共陽極數碼管為例子:將(dp)gfedcba轉成二進位制 1100 0000 ,轉成16進製制0xc0即可點亮0。

疑問三:我要讓數碼管中的乙個依次顯示10個數,**怎麼寫呢?

解答:先定義要點亮的數碼管,例如點亮p1.0,開頭定義sbit p1_0   =p1^0;然後定義乙個陣列來存放0—9的16進製制unsigned char code table=   ; 然後while(i--)依次遍歷陣列賦值給p0。點亮p1_0 = 0延遲函式 delay();點亮p1_0=1;

疑問四:怎麼寫延遲函式?

乙個機器週期1us, for迴圈8us, 第2個for迴圈8*1200約等於10ms,delay()函式延遲x*10ms

void delay(int x)

int i,j;

for(i=0;ifor(j=0;j<1200;j++);

疑問五:數碼管為什麼要接電阻?

解答:保護數碼管,限流。

疑問六:怎麼才能知道數碼管共陽極還是共陰極?

解答:看數碼管是否接電源。接電源為共陽極。

疑問七:共陰極數碼管跟共陽極數碼管點亮方式一樣嗎?

解答:不一樣。共陰極給以高電平點亮,共陽極給以低電平點亮。

實驗專案( 四 ) — 實驗報告

專案名稱

驅動數碼管的實驗

指導教師

高照玲實驗室

教室實驗日期

2015/10/16

分組情況

趙存檔成    績

實驗步驟(演算法、**、方法)給出流程圖

實驗**:

#include  

sbit p2_0   = p2^0;

void   delay(int);

unsigned   char code table=;

void   main()

int i=10;

while(i--)

p0=table[i];

p2_0   = 0;

delay(100);

p2_0 = 1;

void   delay(int x)

int i,j;

for(i=0;ifor(j=0;j<1200;j++);

實驗結果(結論及

分析)實驗結果以及分析:成績

驅動數碼管的實驗

課程名稱 微控制器原理與應用 專業班級 嵌入式14103班 姓 名 趙存檔 學 號 14160310317 2015 2016 學年第 1 學期 實驗專案 四 預習報告 專案名稱 驅動7段數碼管實驗 實驗目的及要求 1 掌握用proteus畫電路圖。2 用keil編寫 進行除錯。3 進行 測試 實驗...

數碼管的驅動

乙個數碼管需要點亮多長時間呢?也就是說要多長時間完成一次全部數碼管的掃瞄呢 很明顯 整體掃瞄時間 單個數碼管點亮時間 數碼管個數 答案是 10ms 以內。鬼影 的出現,主要是在數碼管位選和段選產生的瞬態造成的。解決方案有兩種 關閉段或者關閉位。示例 如下 include sbit addr0 p1 ...

數碼管顯示實驗

實驗目的 通過實驗,掌握如何通過74hc595擴充套件io口,掌握如何運用動態掃瞄的方法驅動多位數碼管 實驗內容 判斷按鍵sw8 int1 是否按下,並對按鍵次數計數,顯示在數碼管之上 微控制器剛啟動後,數碼管顯示為全0,當第一次按下sw8後,數碼管顯示0001,當第二次按下sw8後,數碼管顯示00...