📄 ad 0804控制程序0.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0039)http://www.8951.com/TEST/TEST/tl004.htm -->
<HTML><HEAD><TITLE>单片机通信</TITLE><LINK href="AD 0804控制程序0.files/gpszx.css"
type=text/css rel=stylesheet><LINK href="../index.files/gpszx.css" type=text/css
rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2523" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<DIV align=center>
<TABLE height=356 cellSpacing=0 cellPadding=0 width=769 bgColor=#66ccff
borderColorLight=#000000 border=0>
<TBODY>
<TR>
<TD align=middle width=752 bgColor=#ffffff colSpan=5 height=356>
<P align=left><FONT font><FONT color=#ff0000>单片机提高</FONT><FONT
color=#ff0000><IMG height=11 src="AD 0804控制程序0.files/gif091.gif" width=28
border=0></FONT><FONT color=#454545>WWW.51C51.COM
自学单片机的网站:作中国单片机编程技术普及推广第一站!倚天一出宝刀屠龙</FONT></FONT><IMG height=100
src="AD 0804控制程序0.files/titou2.jpg" width=760 border=0> <FONT
color=#454545 font><A href="http://www.8951.com/index.htm">返回主页 给我留言</A>
<A href="http://www.8951.com/jiaoxue.htm">单片机教学</A> <A
href="http://www.8951.com/tigao.htm">单片机提高</A> <A
href="http://www.8951.com/pinzhi.htm">品质技术</A> <A
href="http://www.8951.com/1000/WANGZHI.HTM">单片机网址</A> <A
href="http://www.8951.com/down/down.htm">软件下载</A> <A
href="http://www.8951.com/yejin/yejin.htm">学液晶显示</A> <A
href="http://www.8951.com/chanpin.htm">产品介绍</A> <A
href="http://www.8951.com/10/huikan.htm">如何购买</A></FONT><FONT size=2>
<BR><BR><BR>;AD 0804控制程序:转动电位器,数码管后三位依次显示000-255,此程序可以做一个温度计,
一个电压表...<BR>;***************************************************************************<BR>;*
E-mail:sxj1974@163.com (51c51 test web) 51单片机学习网,自学单片机的网站
*<BR>;* Create by :石学军 <A
href="http://www.51c51.com/">http://www.51c51.com/</A> <A
href="http://www.8951.com更多例程请登陆网站/">http://www.8951.com更多例程请登陆网站/</A>
*<BR>;***************************************************************************<BR>;//定义ADC的连接端口<BR>ad_cs
equ P3.6 ;芯片选择<BR>ad_wr equ P2.0 ;转换开始<BR>ad_rd equ P3.7
;RD=LOW,数字信号输出<BR>ad_input_port equ p1 ;定义数据位<BR>Counter EQU 59H
;计数器,显示程序通过它得知现正显示哪个数码管<BR>FIRST EQU P2.4 ;第一位数码管的位控制<BR>SECOND EQU P2.5
;第二位数码管的位控制<BR>THEER EQU P2.6 ; 第三位数码管的位控制<BR>DISPBUF EQU 5AH
;显示缓冲区为5AH和5BH<BR><BR>org 0000h<BR>ajmp main<BR>ORG 000BH
;定时器T0的入口<BR>AJMP DISP ;显示程序<BR>org 0030h<BR>main:<BR>MOV SP,#5FH
;设置堆栈<BR>MOV P1,#0FFH<BR>MOV P0,#0FFH<BR>MOV P2,#0FFH
;初始化,所显示器,LED灭<BR>MOV TMOD,#00000001B ;定时器T0工作于模式1(16位定时/计数模式)<BR>MOV
TH0,#HIGH(65536-2000)<BR>MOV TL0,#LOW(65536-2000)<BR>SETB TR0
;开定时器0<BR>SETB EA ;开总中断<BR>SETB ET0 ;开定时器0中断<BR>MOV Counter,#0
;计数器初始化<BR>LOOP:<BR>lcall adc_demo ;调用AD子程序<BR>ajmp
LOOP<BR><BR>;//==========================================<BR>;//
启动AD转换<BR>;//==========================================<BR>Adc_Start:<BR>clr
ad_cs<BR>nop<BR>clr ad_wr<BR>nop<BR>setb ad_wr<BR>nop<BR>setb
ad_cs<BR>nop<BR>ret<BR>;//==========================================<BR>;//
读AD转换<BR>;//==========================================<BR>Adc_Read:<BR>mov
ad_input_port,#0ffh<BR>clr ad_cs<BR>nop<BR>clr ad_rd<BR>nop<BR>nop<BR>mov
a,AD_INPUT_PORT<BR>nop<BR>setb ad_rd<BR>nop<BR>setb
ad_cs<BR>ret<BR>;//==========================================<BR>;//
AD转换读取延时程序,显示读到的数值<BR>;//==========================================<BR>Adc_Demo:<BR>lcall
Adc_Start<BR>lcall delay1ms<BR>lcall adc_read<BR>MOV B,#100
;AD转换出的值除100商为百位数<BR>DIV AB ; 取百位数 余数在B寄存器<BR>MOV DISPBUF,A
;把百位存入百位寄存器DISPBUF<BR>MOV A,B ;余数再送A<BR>MOV B,#10 ;余数除10商为十位数<BR>DIV AB ;
除法,余数在寄存器B<BR>MOV DISPBUF+1,A ;A是十位数存第二位显示寄存器<BR>MOV DISPBUF+2,B ;
B是个位数存第三位显示寄存器<BR>RET<BR><BR>DISP: ;定时器T0的中断响应程序动态扫描<BR>PUSH ACC
;ACC入栈<BR>PUSH PSW ;PSW入栈<BR>MOV
TH0,#HIGH(65536-2000);定时时间为2000个周期,约2170微秒<BR>MOV
TL0,#LOW(65536-2000)<BR>SETB FIRST<BR>SETB SECOND ;关显示<BR>SETB
THEER<BR>MOV A,#DISPBUF ;显示缓冲区首地址<BR>ADD A,Counter<BR>MOV R0,A<BR>MOV
A,@R0 ;根据计数器的值取相应的显示缓冲区的值<BR>MOV DPTR,#DISPTAB ;字形表首地址<BR>MOVC A,@A+DPTR
;取字形码<BR>MOV P0,A ;将字形码送P0位(段口)<BR>MOV A,Counter ;取计数器的值<BR>JZ DISPFIRST
;如果是0则显示第一位<BR>DEC A<BR>JZ DISPSECOND ;如果是1显示第二位<BR>CLR THEER
;否则显示第3位<BR>AJMP DISPNEXT<BR>DISPFIRST:<BR>CLR FIRST ;显示第一位<BR>AJMP
DISPNEXT<BR>DISPSECOND:<BR>CLR SECOND<BR>DISPNEXT:<BR>INC Counter
;计数器加1<BR>MOV A,Counter<BR>DEC A ;如果计数器计到3,则让它回0<BR>DEC A<BR>DEC A<BR>JZ
RSTCOUNT<BR>AJMP DISPEXIT<BR>RSTCOUNT:<BR>MOV Counter,#0
;计数器的值回0<BR>DISPEXIT:<BR>POP PSW<BR>POP ACC<BR>RETI<BR>DISPTAB:db
28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h ;字形代码表<BR>;0 1 2 3 4 5 6 7 8
9<BR>delay1ms: ;延时子程序<BR>mov r7,#10<BR>MM:mov r6,#50<BR>djnz r6,$
;2us<BR>djnz
r7,MM<BR>ret<BR>end<BR><BR><BR><BR><BR><BR><BR></FONT></P></TD></TR></TBODY></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -