?? dpjjx26.htm
字號:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft FrontPage 5.0">
<TITLE>動態掃描顯示接口</TITLE>
<META NAME="Template" CONTENT="D:\MICROSOFT OFFICE\OFFICE\html.dot">
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080" background="../back.jpg">
<B><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<P ALIGN="CENTER" style="line-height: 150%; margin-top: 0; margin-bottom: 0">動態掃描顯示接口</P>
</font></B>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="宋體" LANG="ZH-CN"> 動態掃描顯示接口是單片機中應用最為廣泛的一種顯示方式之一。其接口電路是把所有顯示器的</font><font size="2"><FONT FACE="System,黑體" LANG="ZH-CN">8</FONT><FONT FACE="宋體" LANG="ZH-CN">個筆劃段</FONT><FONT FACE="System,黑體" LANG="ZH-CN">a-h</FONT><FONT FACE="宋體" LANG="ZH-CN">同名端連在一起,而每一個顯示器的公共極</FONT><FONT FACE="System,黑體" LANG="ZH-CN">COM</FONT><FONT FACE="宋體" LANG="ZH-CN">是各自獨立地受</FONT><FONT FACE="System,黑體" LANG="ZH-CN">I/O</FONT><FONT FACE="宋體" LANG="ZH-CN">線控制。</FONT><FONT FACE="System,黑體" LANG="ZH-CN">CPU</FONT><FONT FACE="宋體" LANG="ZH-CN">向字段輸出口送出字形碼時,所有顯示器接收到相同的字形碼,但究竟是那個顯示器亮,則取決于</FONT><FONT FACE="System,黑體" LANG="ZH-CN">COM</FONT><FONT FACE="宋體" LANG="ZH-CN">端,而這一端是由</FONT><FONT FACE="System,黑體" LANG="ZH-CN">I/O</FONT><FONT FACE="宋體" LANG="ZH-CN">控制的,所以我們就可以自行決定何時顯示哪一位了。而所謂動態掃描就是指我們采用分時的方法,輪流控制各個顯示器的</FONT><FONT FACE="System,黑體" LANG="ZH-CN">COM</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">端,使各個顯示器輪流點亮。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="宋體" LANG="ZH-CN"> 在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的(約</font><FONT FACE="System,黑體" LANG="ZH-CN" size="2">1ms</FONT><font size="2" FACE="宋體" LANG="ZH-CN">),但由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位顯示器并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="宋體" LANG="ZH-CN"> 下圖所示就是我們的實驗板上的動態掃描接口。由</font><font size="2"><FONT FACE="System,黑體" LANG="ZH-CN">89C51</FONT><FONT FACE="宋體" LANG="ZH-CN">的</FONT><FONT FACE="System,黑體" LANG="ZH-CN">P0</FONT><FONT FACE="宋體" LANG="ZH-CN">口能灌入較大的電流,所以我們采用共陽的數碼管,并且不用限流電阻,而只是用兩只1N4004進行降壓后給數碼管供電,這里僅用了兩只,實際上還可以擴充。它們的公共端則由</FONT><FONT FACE="System,黑體" LANG="ZH-CN">PNP</FONT><FONT FACE="宋體" LANG="ZH-CN">型三極管</FONT><FONT FACE="System,黑體" LANG="ZH-CN">8550</FONT><FONT FACE="宋體" LANG="ZH-CN">控制,顯然,如果</FONT><FONT FACE="System,黑體" LANG="ZH-CN">8550</FONT><FONT FACE="宋體" LANG="ZH-CN">導通,則相應的數碼管就可以亮,而如果</FONT><FONT FACE="System,黑體" LANG="ZH-CN">8550</FONT><FONT FACE="宋體" LANG="ZH-CN">截止,則對應的數碼管就不可能亮,</FONT><FONT FACE="System,黑體" LANG="ZH-CN">8550</FONT><FONT FACE="宋體" LANG="ZH-CN">是由</FONT><FONT FACE="System,黑體" LANG="ZH-CN">P2.7</FONT><FONT FACE="宋體" LANG="ZH-CN">,</FONT><FONT FACE="System,黑體" LANG="ZH-CN">P2.6</FONT><FONT FACE="宋體" LANG="ZH-CN">控制的。這樣我們就可以通過控制</FONT><FONT FACE="System,黑體" LANG="ZH-CN">P27</FONT><FONT FACE="宋體" LANG="ZH-CN">、</FONT><FONT FACE="System,黑體" LANG="ZH-CN">P26</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">達到控制某個數碼管亮或滅的目的。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="宋體" LANG="ZH-CN">下面的這個程序,就是用實驗板上的數碼管顯示</font><font size="2"><FONT FACE="System,黑體" LANG="ZH-CN">0</FONT><FONT FACE="宋體" LANG="ZH-CN">和</FONT><FONT FACE="System,黑體" LANG="ZH-CN">1</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="System,黑體" LANG="ZH-CN">FIRST		EQU	P2.7	;</font><font size="2" FACE="宋體" LANG="ZH-CN">第一位數碼管的位控制</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="System,黑體" LANG="ZH-CN">SECOND 	EQU	P2.6	;</font><font size="2" FACE="宋體" LANG="ZH-CN">第二位數碼管的位控制</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"><FONT FACE="System,黑體" LANG="ZH-CN">
<font size="2">DISPBUFF	EQU	5AH	;</font></font><font size="2"><FONT FACE="宋體" LANG="ZH-CN">顯示緩沖區為</FONT><FONT FACE="System,黑體" LANG="ZH-CN">5AH</FONT><FONT FACE="宋體" LANG="ZH-CN">和</FONT></font><font size="2" FACE="System,黑體" LANG="ZH-CN">5BH</font></P><FONT FACE="System,黑體" LANG="ZH-CN">
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">	
<font size="2">ORG	0000H</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">	
<font size="2">AJMP	START</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">	
<font size="2">ORG	30H</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2">START:</font></P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"><FONT FACE="System,黑體" LANG="ZH-CN">	
<font size="2">MOV	SP,#5FH		;</font></font><font size="2" FACE="宋體" LANG="ZH-CN">設置堆棧</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">MOV	P1,#0FFH</font></P>
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">	MOV	P0,#0FFH</P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"><FONT FACE="System,黑體" LANG="ZH-CN">	
<font size="2">MOV	P2,#0FFH	;</font></font><font size="2"><FONT FACE="宋體" LANG="ZH-CN">初始化,所顯示器,</FONT><FONT FACE="System,黑體" LANG="ZH-CN">LED</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">滅</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">MOV	DISPBUFF,#0	;</font></FONT><FONT FACE="宋體" LANG="ZH-CN" size="2">第一位顯示</FONT><font size="2" FACE="System,黑體" LANG="ZH-CN">0</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN">	<font size="2">MOV	DISPBUFF+1,#1	;</font></font><FONT FACE="宋體" LANG="ZH-CN" size="2">第二握顯示</FONT><font size="2" FACE="System,黑體" LANG="ZH-CN">1</font></P>
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">LOOP:</P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"><FONT FACE="System,黑體" LANG="ZH-CN">	
<font size="2">LCALL	DISP		;</font></font><font size="2" FACE="宋體" LANG="ZH-CN">調用顯示程序</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">AJMP	LOOP</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="System,黑體" LANG="ZH-CN">;</font><font size="2" FACE="宋體" LANG="ZH-CN">主程序到此結束</font></P>
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">DISP:</P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="System,黑體" LANG="ZH-CN">PUSH	ACC		;ACC</font><font size="2" FACE="宋體" LANG="ZH-CN">入棧</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="System,黑體" LANG="ZH-CN">PUSH	PSW		;PSW</font><font size="2" FACE="宋體" LANG="ZH-CN">入棧</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">MOV	A,DISPBUFF	;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">取第一個待顯示數</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">MOV	DPTR,#DISPTAB	;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">字形表首地址</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">MOVC	A,@A+DPTR	;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">取字形碼</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">MOV	P0,A		;</font></FONT><font size="2"><FONT FACE="宋體" LANG="ZH-CN">將字形碼送</FONT><FONT FACE="System,黑體" LANG="ZH-CN">P0</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">位(段口)</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">CLR	FIRST		;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">開第一位顯示器位口</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">LCALL	DELAY		;</font></FONT><font size="2"><FONT FACE="宋體" LANG="ZH-CN">延時</FONT><FONT FACE="System,黑體" LANG="ZH-CN">1</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">毫秒</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">SETB	FIRST		;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">關閉第一位顯示器(開始準備第二位的數據)</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">MOV	A,DISPBUFF+1	;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">取顯示緩沖區的第二位</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">MOV	DPTR,#DISPTAB	</font></P>
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">	MOVC	A,@A+DPTR</P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"><FONT FACE="System,黑體" LANG="ZH-CN">	
<font size="2">MOV	P0,A		;</font></font><font size="2"><FONT FACE="宋體" LANG="ZH-CN">將第二個字形碼送</FONT><FONT FACE="System,黑體" LANG="ZH-CN">P0</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">口</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">CLR	SECOND		;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">開第二位顯示器</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">LCALL	DELAY		;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">延時</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN"><font size="2">SETB	SECOND		;</font></FONT><font size="2" FACE="宋體" LANG="ZH-CN">關第二位顯示</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">POP	PSW</font></P><FONT FACE="System,黑體" LANG="ZH-CN">
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">	
<font size="2">POP	ACC</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">	
<font size="2">RET</font></P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" FACE="System,黑體" LANG="ZH-CN">DELAY:			;</font><font size="2"><FONT FACE="宋體" LANG="ZH-CN">延時</FONT><FONT FACE="System,黑體" LANG="ZH-CN">1</FONT></font><font size="2" FACE="宋體" LANG="ZH-CN">毫秒</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="System,黑體" LANG="ZH-CN" size="2">PUSH	PSW</font></P><FONT FACE="System,黑體" LANG="ZH-CN">
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -