⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad 0804控制程序0.htm

📁 包含大量程序:AD转换类
💻 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>&nbsp; <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>&nbsp; <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>;*&nbsp; 
      E-mail:sxj1974@163.com (51c51 test web)&nbsp; 51单片机学习网,自学单片机的网站&nbsp; 
      *<BR>;* Create by :石学军 <A 
      href="http://www.51c51.com/">http://www.51c51.com/</A>&nbsp;&nbsp; <A 
      href="http://www.8951.com更多例程请登陆网站/">http://www.8951.com更多例程请登陆网站/</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      *<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 + -