Ⅰ 姝ょ數璺涓哄崟鐗囨満灝忕郴緇熺殑涓閮ㄥ垎錛岃繖涓鐢佃礬鏄濡備綍瀹屾垚鏁扮爜綆$殑鏄劇ず鐨勶紵鍘熺悊鏄浠涔堬紵
榪欐槸鍗曠墖鏈烘暟鐮佺℃樉紺虹嚎璺鍥撅紒
1錛氳繖鏄涓涓4浣嶇殑鏁扮爜綆°傦紙鏈夊叡闃存瀬鍜屽叡闃蟲瀬浜岀嶏級
4錛74573鑺鐗囩殑鍔熻兘灝變笉澶氳翠簡錛屽幓緗戜笂鎼滅儲鑺鐗囪祫鏂欏惂銆
Ⅱ 如何利用單片機讓4位數碼管顯示
利用動態掃描讓四位數碼管穩定的顯示1234。
3.2子情境目標:
(1)掌握單片機控制四位數碼管的動態掃描技術,包括程序設計和電
路設計,本任務的效果是讓四位數碼管穩定的顯示1234。
(2)用PROTEUS進行電路設計和實時模擬
3.3知識點鏈接
(1)數碼管動態掃描(動態掃描的定義以及與靜態顯示的區別)
動態顯示的特點是將所有位數碼管的段選線s一位數碼管有效。選亮數碼管採用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。
(2)匯流排的應用
元器件與匯流排的連線
P0口的接線採用匯流排方式,詳細如圖5-17所示。
① 選擇匯流排按鈕
② 繪制匯流排:與普通電線的繪制方法一樣,選擇合適的起點、終點單擊。
如果終點在空白處,左鍵雙擊結束連線。
畫匯流排的時候為了和一般的導線區分,我們一般喜歡畫斜線來表示分支線。此時我們需要自己決定走線路徑,只需在想要拐點處單擊滑鼠左鍵即可。在畫斜線時,需要關閉線路自動路徑功能才好繪制。
Proteus的線路自動路徑功能簡稱WAR,當選中兩個連接點後,WAR將選擇一個合適的路徑連線。WAR可通過使用標准工具欄里的「WAR」命令按鈕來關閉或打開,也可以在菜單欄的「Tools」下找到這個圖標。
③ 給與匯流排連接的導線貼標簽PARTLABELS
與P0口相連的線標簽名依次為P00—P06,本電路中的P0口的上拉電阻通過匯流排與P0口相連,數碼管也是通過匯流排與P0口相連,這些都需要標注,以表明正確的電氣連接。單擊繪圖工具欄中的導線標簽按鈕,使之處於選中狀態。將滑鼠置於圖形編輯窗口的欲標標簽的導線上,跟著滑鼠的指針就會出現一個「×」號,表明找到了可以標注的導線,單擊滑鼠左鍵,彈出編輯導線標簽窗口,如圖5-16所示。
在「string」欄中,輸入標簽名稱(如p00),單擊「OK」按鈕,結束對該導線的標簽標定。同理,可以標注其它導線的標簽,如圖5-16所示。
注意,在標定導線標簽的過程中,相互接通的導線必須標注相同的標簽名。
圖5-16編輯導線標簽窗口
3.4任務步驟
3.4.1步驟一:PROTEUS電路設計,單片機控制四位共陰極數碼管動態掃描顯示的原理圖如圖5-17所示。
圖5-17四位共陰極數碼管動態掃描顯示的原理圖
1、選取元器件
①單片機:AT89C52
②帶公共端的排阻:RESPACK-8
③四位共陰極數碼管:7SEG-MPX4-CC
2、放置元器件、放置電源和地、連線、元器件屬性設置
數碼管動態掃描顯示的原理圖如圖5-17所示,整個電路設計操作都在ISIS平台中進行。
(1)帶公共端的排阻(RESPACK-8)如圖5-18所示,在本電路中作為P0的
上拉電阻,在如圖5-19所示ComponentValue一欄中可更改阻值,例如本例中將阻值更改為200歐姆。
圖5-18排阻圖5-19排阻屬性框
至此,我們便完成了整個電路圖的繪制。
3.4.2步驟二:源程序設計與目標代碼文件生成
(1)程序流程圖
圖5-20數碼管動態掃描的流程圖
(2)源程序設計
#include<reg52.h>//52系列單片機頭文件
#defineucharunsignedchar
#defineuintunsignedint
uintx,y;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//共陰極數碼管編碼
voiddisplay(uchar,uchar,uchar,uchar);//聲明子函數
voiddelay(int);//聲明子函數
voidmain()
{
while(1)
{
display(1,2,3,4);//主程序始終調用數碼管顯示子程序
}
}
voiddisplay(uchara,ucharb,ucharc,uchard)
{
P2=0xef;
P0=table[a];//給第一個數碼管送"a"
delay(1);//延時1ms
P2=0xdf;
P0=table[b];//給第二個數碼管送"b"
delay(1);//延時1ms
P2=0xbf;
P0=table[c];//給第三個數碼管送"c"
delay(1);//延時1ms
P2=0x7f;
P0=table[d];//給第三個數碼管送"d"
delay(1);//延時1ms
}
voiddelay(uintz)//延時子函數
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
Ⅲ 單片機試驗數碼管上如何顯示數字
解決方法:
試驗數碼管上顯示數字( 單片機直接實現位選 共陰極) 。
解決方式:
連接方法:P0與J12 用8PIN排線連接 P1與JP16 用排線連接 。
代碼:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<113;y++)
{
}
}
}
unsigned int code dbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};
unsigned int code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
void main()
{
while(1)
{
P1=dbit[4];
P0=num[9];
}
}
位定義
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<113;y++)
{
}
}
}
void main()
{
while(1)
{
LSA=0;
LSB=0;
LSC=0;
P0=num[6];
delay(2);
LSA=1;
LSB=0;
LSC=0;
P0=num[6];
delay(2);
}
}
//讓八個數碼管全部亮並且從0~9循環
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar num;
uchar wnum=0x00;
uchar code dbit[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段選,選擇要顯示的數字
//uchar code wnum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//八位數碼管
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<113;y++)
{
}
}
}
void main()
{
P1=wnum;
while(1)
{
for(num=0;num<10;num++)
{
P0=dbit[num];
delay(500);
}
}
}