課程名稱:_微控制器原理與應用
專業班級:嵌入式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...