1、目 录 第1章 绪论设计目及要求 2 1.1 绪 论 2 1.2 设计目 2 1.3 设计要求 2 第2章系统总体方案选择及说明 3 2.1硬件设计框图 3 2.2 软件设计框图 4 第3章 数据采集系统概述、工作原理及其说明 5 3.1数据采集系统概述 5 3.2工作原理及其说明 5 第4章 各单元硬件设计及说明 7 4.1单片机时钟源 7 4.2 ADC0809(模数转换芯片) 10 4.3 程序存储器和数据存储器电路设计 11 第5章 软件设计及说明 12 5.1设计条件 12 5.3 模块程序设计 15 第6章 调试步骤及使用说明 21
2、 第7章 设计总结 22 参考文献 23 附 录 24 A、系统电路原理图: 24 B、程序 25 电气信息学院课程设计评分表 31 第1章 绪论设计目及要求 1.1 绪 论 随着计算机技术飞速发展和普及,数据采集系统也迅速地得到应用。在生产过程中,应用这一系统可对生产现场工艺参数进行采集,监视和记录,为提高产品质量,降低成本提供信息和手段。在科学研究中,应用数据采集系统可获得大量动态信息,是研究瞬间物理过程有力工具,也是获取科学奥秘重要手段之一。总之,不论在哪个应用领域中,数据采集及处理越及时,工作效率就越高,取得经济效益也越高。本设计采用ATMEGA16单片机作为
3、数据采集系统控制核心,系统分为数据采集模块、A/D转换模块、系统控制模块、键盘模块、显示模块等几部分。 1.2 设计目 利用单片机为核心设计一个多路数据采集系统,要求每个通道信号经A/D转换后以10进制数在LED 显示器上显示,并能够通过键盘操作切换显示不同通道采样值。 1.3 设计要求 本课题要求利用单片机为核心设计一个八路数据采集系统,要求每个通道信号经A/D转换后以10进制数在LED 显示器上显示,并能够通过键盘操作切换显示不同通道采样值。本系统中包括8路模拟量输入,范围0-5V。要求对8个通道模拟量进行巡回采样,再将采集数据进行工程量化转换后在LED显示器上显示,并能通过
4、按键切换所选通道采样数据。 第2章 系统总体方案选择及说明 2.1硬件设计框图 典型数据采集系统配置如图2.1所示,有已实现集成化,多个传感器预处理电路输出接入多路模拟开关,然后经过取样/保持电路和A/D转换后进入CPU系统。 生产工艺现场 传感器1 传感器2 传感器R . . . 预处理系统 多路模拟开关 . . . A/D转 换 器 计算机或其他微处理 器 图2.2 典型数据采集系统配置图 (1) 传感器是经典利用各种原理将被测物理量转化为电信号。 (2) 预处理模块
5、是将模拟信号进行调整、放大,在模拟电路方便实现基础上对信号进行自动补偿、自动校正,抑制温漂模块。 (3) 数据采集A/D模块将模拟信号进行采样、量化,转化为数字信号. (4) 计算机可能为PC机、单片机或其他专用处理器,具有数据存储、记忆及信息处理功能,具有判断、决策处理功能。 2.2 软件设计框图 信号选择单通道/八通道循环 A/D转换并送到70H~77H单元 选择被测通道,并确定存储地址 指定内容送到显示器 A/D转换值存入78H~7AH单元 通道选择信号 随动显示 循环显示 A/D转换值存入78H~7AH单元 A/D转换并送到70H~77H单
6、元 移动指针指向下通道存储地址 选择被测通道,并确定存储地址 指定内容送到显示器 开始 图2.2软件设计框图 第3章 数据采集系统概述、工作原理及其说明 3.1数据采集系统概述 数据采集是信息科学一个主要组词成部分,信息技术核心是信息获取,通信和计算机技术,常被称为3C技术,其中信息获取是基础和前提。数据采集是获取信息主要手段,它随着科学技术进步而得到迅速发展。目前各种各样数据采集系统已得到广泛应用,新型数据采集系统仍不断涌现。 随着科学技术发展及普及,数字设备正越来越多地取代模拟设备,在生产过程控制和科学研究等广泛领域中,计算机控
7、制技术正发挥着越来越主要作用,然而外部世界大部分信息是以连续变化物理量形式出现,例如温度、压力、位移、速度等。要将这些信息送入计算机进行处理,就必须先将这些连续物理量离散化,并进行量化编码,从而变成数字量,这个过程就是数据采集。 数据采集系统是计算机及外部世界联系桥梁。数据采集技术是信息科学主要组成部分,它是以传感器技术、信号检测及处理、电子学、计算机技术等方面技术为基础而形成一个综合应用技术学科,已广泛应用于国民经济和国防建设各个领域,并且随着科学技术发展,尤其是计算机技术发展及普及,数据采集技术有广阔发展前景。 3.2工作原理及其说明 1 、采用80C52单片机和ADC0809构
8、成一个八路数据采集系统。 2 、能够顺利采集各个通道信号。 3 、采集信号动态范围:0~5V。 4 、每个通道采样速率:100 sps。 5 、在面包板上完成电路,将采集数据送入单片机70H~77H存储单元。 6 、编写相应单片机采集程序到达规定性能: 8路输入模拟信号数值显示电路由A/D转换、数据处理及显示控制等组成。A/D转换由集成电路0809完成。0809具有8路模拟输入端口,地址 线(23~25脚)可决定对哪一路模拟输入作A/D转换。第22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存;6脚为测试控制,当输入一个2
9、微秒宽脉冲时,就开始A/D转换;7脚为A/D转换结束标志,当A/D转换数据结束时,7脚输出高电平;9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出;10脚为0809时钟输入端,利用单片机30脚六分频晶振信号再通过74hc193二分频得到。单片机P1、P3端口作4位LED数码管显示控制,P0端口作A/D转换数据读入用,P2端口用作A/D转换控制。 第4章 各单元硬件设计及说明 4.1单片机时钟源 4.1.1单片机时钟源 电容C1、C2和晶振(6MHz)组成8031外部时钟源电
10、路(如图4.1.1),将C1、C2和晶振组成回路称为LC并联谐振回路,晶振起电感作用,谐振频率由晶振频率所决定,8031单片机晶振可以选1.2MHz~12MHz。电容C1、C2取值一般在20Pf~100pF之间(在60pF~70pF时,频率比较稳定)。 图4.1.1单片机时钟源 采用80C52单片机作为数据处理及显示芯片,80C52芯片管脚图如下: 图3.1 80C52单片机引脚图 各管脚说明: VCC(40): 供电电源 GND(20):接地 P0(32~39)口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电
11、流。当P1口管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1(1~8)口:P1口是一个内部提供上拉电阻8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2(21~28)口:P2口为一个内部上拉电阻8位双向I/O口,P2口缓冲器可接收,输出4个T
12、TL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口管脚被外部拉低,将输出电流。这是由于内部上拉缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3(10~17)口:P3口管脚是8个带内部上拉电阻双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P
13、3口将输出电流(ILL)这是由于上拉缘故。P3口作为AT89C51一些特殊功能口,管脚 备选功能 表4.1 80C52单片机P3口引脚功能 端口引脚 第二功能 P3.0 RXD (串行输入口) P3.1 TXD(串行输出口) P3.2 (外部中断0) P3.3 (外部中断1) P3.4 T0(定时器0) P3.5 T1(定时器1) P3.6 (外部数据存储器写选通) P3.7 (外部数据存储器都选通) RST(9):复位输入。当振荡器复位器件时,要保持RST脚两个机器周期高电平时间。 PSEN(29):外部程序存储器选通信号。在由
14、外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效/PSEN信号将不出现。 EA / VPP(31):当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1(18):反向振荡放大器输入及内部时钟工作电路输入。 XTAL2(19):来自反向振荡器输出。 电容C1、C2和晶振(6MHz)组成8031外部时钟源电路,将C1、C2和晶振
15、组成回路称为LC并联谐振回路,晶振起电感作用,谐振频率由晶振频率所决定,8031单片机晶振可以选1.2MHz~12MHz。电容C1、C2取值一般在20Pf~100pF之间(在60pF~70pF时,频率比较稳定)。 4.2 ADC0809(模数转换芯片) 本系统采用ADC0809来转换模拟信号,其管脚图如下: ADC0908引脚功能说明: 图4.2 ADC0809引脚图 ADC0809引脚功能说明 IN0~IN7(1~5,26~28):8路模拟量输入端。 2-1~2-8(8.14.15.17.18.19.20.21):8位数字量输出端。 ADDA、AD
16、DB、ADDC(23~25):3位地址输入线,用于选通8路模拟输入中一路 ALE(22):地址锁存允许信号,输入,高电平有效。 START(6): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC(7): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE(9):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK(10):时钟脉冲输入端。要求时钟频率不高于640KH
17、Z。 REF(+)、REF(-)(12.16):基准电压。 Vcc(11):电源,单一+5V。 GND(13):地。 4.3 程序存储器和数据存储器电路设计 EPROM2716是8031单片机程序存储器,用于存放指令,常数及表格。其地址范围为0000H~07FFH。片选端接地,表示2716总是处于选通状态。开机后,由8031 PSEN控制端(低电平有效),自动执行从0000H开始程序。如果从EPROM中取常数或查表,则需要执行MOVCA,@A+DPTR指令。 RAM6116是8031单片机数据存储器,用于存放采集数据及数据计算及处理结果等。它地址范围也是000
18、0H~07FFH,但不会及EPROM2716地址发生冲突。因为它片选端是通过8031地址线控制。当地址线P26 =0 时,RAM6116才选通。8031 执行MOVX@DPTR,A指令可以产生信号,将累加器A内容送片外数据存储器。 执行MOVX A,@DPTR指令可以产生信号,将片外数据存储器由DPTR指定地址单元中内容送至累加器A。DPTR表示16位地址计数器内容,它可以通过执行MOV DPTA,#addrl6指令被赋值。 第5章 软件设计及说明 5.1设计条件 本系统8路模拟量输入,范围0-5V。要求对8个通道模拟量进行巡回采样,再将
19、采集数据进行工程量转换后在LED显示器上显示,并能通过按键切换所选通道采样数据。 5.2编程思想和流程图 编程思想:根据硬件电路图,我们应用汇编语言进行编程。首先在P2.4和P2.3引脚提供正脉冲,启动A/D转换,因转换需要一定时间,所以需延时等待;然后读取数据,利用软件编程,将二进制数转换为十进制数,送到数码管显示;从左到右轮流点亮显示器各位,对于显示器每一位来说,每隔一段时间点亮一次,利用人视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁,利用单片机P1口提供显示段码,P3口低四位提供位码,数码管第一位显示通道数,后三位显示0~255采集数据。流程图如下所示:
20、 将转换结果的个位送到数码管显示 5.1 主程序流程图 5.2.1主程序流程图 开始 启动测试 AD转换结束P3.7=1? 取数据P2.5=1 0809地址加1 地址小于8? 结束 Y N N Y 5.2.2 模数转换流程图 5.3 模块程序设计 1、初始化程序 系统上电时,将70H~77H内存单元清0,P2口置1. CLEARMEMIO: CLR A
21、 MOV P2,A ;P2口置0 MOV R0,#70H ;内存循环清零(70H~7BH) MOV R2,#0CH LOOPMEM: MOV @R0,A INC R0 DJNZ R2,LOOPMEM MOV A,#OFFH MOV P0,A ;P0,P1,P3端口置1 MO
22、V P1,A MOV P3,A RET ;子程序返回 2、主程序 在刚上电时,因70H~77H内存单元数据为0,则每一通道数码管显示值都是000.当进行一次测量后,将显示出每一通道AD转换值。每个通道数据显示时间在1S左右。主程序在调用显示程序和测试程序之间循环,其流程图如5.1.1。 汇编程序: START: LCALL CLEARMEMIO ;初始化 MAIN: LCALL DISPLAY ;显示数据一次 LCALL
23、 TEST ;测量一次 AJMP MAIN ;返回MAIN循环 NOP ;PC值出错处理 NOP ;空操作 NOP ;空操作 LJMP START ;重新复位启动 DISPLAY: MOV R3,#08H ;8路信号循环显示控制 MOV R0,#70H ;显示数据初值(70H~77H) MOV 7BH,#00H ;显示通道路数(0~7) DISLOOP1:MOV A,@R0
24、显示数据转为3位十进制BCD MOV B,#100 ;7AH、79H、78H显示单元内 DIV AB ;显示数据除100 MOV 7AH,A ;商入7AH MOV A,#10 ;A放入数10 XCH A,B ;余数及数10交换 DIV AB ;余数除10 MOV 79H,A ;商入79H MOV 78H,B ;余数入78H MOV
25、 R2,#0FFH ;每路显示时间控制4ms*255 DISLOOP2:LCALL DISP ;调4位LED显示程序 DJNZ R2,DISPLOOP2 ;每路显示是时间控制 INC R0 ;显示下一路 INC 7BH ;通道显示数值加1 DJNZ R3,DISLOOP1 ;8路显示未完转DISLOOP1再循环 RET ;8路显示完子程序结束 LED共阳显示子程序,显示内容78H~7BH,数据在P1输出,列扫描在P
26、3.0~P3.3口 DISP: MOV R1,#78H ;赋显示数据单元首地址 MOV R5,#0FEH ;扫描字 PLAY: MOV P1,#0FFH ;关显示 MOV A,R5 ;取扫描字 ANL P3,A ;开显示 MOV A,@R1 ;取显示数据 MOV DPTR,#TAB ;取段码表首地址 MOVC A,@A+DPTR ;查显示数据对应段码 MOV
27、 P1,A ;段码放入P1口 LCALL DL1MS ;显示1ms INC R1 ;指向下一地址 MOV A,P3 ;取P3口扫描字 JNB ACC.3,ENDOUT ;4位显示完转ENDOUT RL A ;扫描字循环左移 MOV R5,A ;扫描字放入R5暂存 MOV P3,#0FFH ;显示暂停 ALMP PLAY ;转PLAY循环 ENDOUT:
28、 MOV P3,#0FFH ;显示数据,端口置1 MOV P1,#0FFH RET ;子程序返回 LED数码显示管用共阳段码表,分别对应0~9,最后一个是“熄灭符” TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH, 1ms延时子程序,LED显示用 DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,
29、DL1 RET 3、显示子程序 采用动态扫描法实现4位数码管数值显示。测量所得AD转换数据放70H~77H内存单元中。测量数据在显示时需经过转换成十进制BCD码放在78H~7BH中,其中7BH存放通道表指数。寄存器R3用作8路循环控制,R0用作显示数据地址指针。 4、模数转换测量子程序 模数转换测量子程序是用来控制对0809 八路模拟输入电压AD转换,并对应数值移入70H~77H内存单元,其流程图如5.1.2。 TEST: CLR A ;清累加器A MOV P2,A ;清P2口 MOV
30、 R0,#70H ;转换值存放首地址 MOV R7,#08H ;转换8次控制 LCALL TESRART ;启动测试 WAIT: JB P3.7,MOVD ;等A/D转换结束信号后转MOVD: AJMP WAIT ;P3.7为0,等待 TESTART: SETB P2.3 ;锁存测试通道地址 NOP ;延时2微秒 NOP CLR P2.3 ;测试通道地址锁存完毕 SETB P2.4 ;启动测试,发开始
31、脉冲 NOP ;延时2微秒 NOP CLR P2.4 ;发启动脉冲完毕 NOP ;延时4微秒 NOP NOP NOP ;子程序调用结束 RET 取A/D转换数据至70H~77H内存单元 MOVD: SETB P2.5 ;0809输出允许 MOV A,P0 ;将A/D转换值入A MOV @R0,A ;放入内存单元 CLR
32、 P2.5 ;关闭0809输出 INC R0 ;内存地址加1 MOV A,P2 ;通道地址移入A INC A ;通道地址加1 MOV P2,A ;通道地址送0809 CLR C ;清进位标志 CJNE A,#08H,TESTCON ;通道地址不等于8转TESTCON在测试 JC TESTCON ;通道地址小于8转TESTCON在测试 CLR A ;大于或等于8
33、A/D转换结束,恢复端口 MOV P2,A ;P2口置0 MOV A, #0FFH MOV P0,A ;P0口置1 MOV P1,A ;P1口置1 MOV P3,A ;P3口置1 RET ;取A/D转换数据结束 TESTCON: LCALL TESTART ;再发测试启动脉冲 LJMP WAIT ;跳至WAIT,等待A/D转换结束信号 END ;程序结束
34、 第6章 调试步骤及使用说明 由于程序比较多,整体调试不容易发现和改正错误,故采取子程序调试方法,但要明确子程序具体功能。例如:调试显示子程序时,只将显示子程序进行汇编,确认无误后单步执行,观察CPU窗口和DATA窗口以及CODE窗口相应单元变化是否跟预期一样。如果有问题找出问题所在。采取各个击破方法调试好各个子程序。 确定各子程序无误后,再调试完整程序,要注意各子程序之间衔接以及和主程序之间调用和返回。运行后,观察有无键盘显示功能。若运行结果不正确,首先应根据程序运行实际现
35、象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。通过反复调试,发现并排除软件及硬件存在各类问题,以满足系统设计预期目。 第7章 设计总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力重要环节,是对学生实际工作能力具体训练和考察过程.随着科学技术发展日新日异,单片机已经成为当今计算机应用中空前活跃领域, 在生活中可以说得是无处不在。因此作为二十一世纪大学来说掌握单片机开发技术是十分重要。 回顾起此次单片机课程设计,我仍感慨颇多,确,从选题到定稿,从理论到实
36、践,在接近两星期日子里,可以说得是苦多于甜,但是可以学到很多很多东西,同时不仅可以巩固了以前所学过知识,而且学到了很多在书本上所没有学到过知识。通过这次课程设计使我懂得了理论及实际相结合是很重要,只有理论知识是远远不够,只有把所学理论知识及实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己实际动手能力和独立思考能力。在设计过程中遇到问题,可以说得是困难重重,这毕竟第一次做,难免会遇到过各种各样问题,同时在设计过程中发现了自己不足之处,对以前所学过知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过
37、知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学们探讨下在蔡老师辛勤指导下,终于游逆而解。同时,在蔡老师那里我学得到很多实用知识,在次我表示感谢!同时,对给过我帮助所有同学和各位指导老师再次表示忠心感谢! 参考文献 1. 《单片机应用系统设计》 何立民 编 北航出版社 2. 《单片机原理及应用》 王迎旭 主编 机械工程出版社 3. 《51系列单片机设计实例》 楼然苗 等编 北航出版社 4. 《51单片机应用系统开发典型实例》戴家 等编 中国电力出版社 5. 《单片微型计算机原理及接口技术》陈光东 等编 华中科技大学出版社
38、 6. 《单片机实用系统设计技术》房小翠 编 国防工业出版社 附 录 A、系统电路原理图: 系统电路原理图 B、程序 70~77H存放采样值,78H~7BH存放显示数据,一次个位,十位百位,通道标志。 主程序和中断程序入口 ORG 0000H ;程序执行开始地址 LJMP START ;跳至START执行 ORG 0003H
39、 ;外中断0中断入口地址 RETI ;中断返回(不开中断) ORG 000BH ;定时器T0中断入口地址 RETI ;中断返回(不开中断) ORG 0013H ;外中断1中断入口地址 RETI ;中断返回(不开中断) ORG 001BH
40、 ;定时器T1中断入口地址 RETI ;中断返回(不开中断) ORG 0023H ;串行口中断入口地址 RETI ;中断返回(不开中断) ORG 002BH ;定时器T2中断入口地址 RETI ;中断返回(不开中断) 初始化程序
41、中各变量 CLEARMEMIO: CLR A MOV P2,A ;P2口置0 MOV R0,#70H ;内存循环清零(70H~7BH) MOV R2,#0CH LOOPMEM: MOV @R0,A INC R0 DJNZ R2,LOOPMEM MOV A, #OFFH MOV P0, A
42、 ;P0,P1,P3端口置1 MOV P1, A MOV P3, A RET ;子程序返回 主程序 START: LCALL CLEARMEMIO ;初始化 MAIN: LCALL DISPLAY ;显示数据一次 LCALL TEST ;测量一次 AJMP MAIN ;返回MAIN循环 NOP ;PC值出错处理
43、 NOP ;空操作 NOP ;空操作 LJMP START ;重新复位启动 DISPLAY: MOV R3,#08H ;8路信号循环显示控制 MOV R0,#70H ;显示数据初值(70H~77H) MOV 7BH,#00H ;显示通道路数(0~7) DISLOOP1: MOV A,@R0 ;显示数据转为3位十进制BCD码存入 MOV B,#100 ;7AH、79H、78H显示单元
44、内 DIV AB ;显示数据除100 MOV 7AH,A ;商入7AH MOV A,#10 ;A放入数10 XCH A,B ;余数及数10交换 DIV AB ;余数除10 MOV 79H,A ;商入79H MOV 78H,B ;余数入78H MOV R2,#0FFH ;每路显示时间控制4ms*255 DISLOOP2: LCALL D
45、ISP ;调4位LED显示程序 DJNZ R2,DISPLOOP2 ;每路显示是时间控制 INC R0 ;显示下一路 INC 7BH ;通道显示数值加1 DJNZ R3,DISLOOP1 ;8路显示未完转DISLOOP1再循环 RET ;8路显示完子程序结束 LED共阳显示子程序,显示内容78H~7BH,数据在P1输出,列扫描在P3.0~P3.3口 DISP: MOV R1,#78H ;赋显示数据单元首地址
46、 MOV R5,#0FEH ;扫描字 PLAY: MOV P1,#0FFH ;关显示 MOV A,R5 ;取扫描字 ANL P3,A ;开显示 MOV A,@R1 ;取显示数据 MOV DPTR,#TAB ;取段码表首地址 MOVC A,@A+DPTR ;查显示数据对应段码 MOV P1,A ;段码放入P1口 LCALL DL1MS ;显示1ms
47、 INC R1 ;指向下一地址 MOV A,P3 ;取P3口扫描字 JNB ACC.3,ENDOUT ;4位显示完转ENDOUT RL A ;扫描字循环左移 MOV R5,A ;扫描字放入R5暂存 MOV P3,#0FFH ;显示暂停 ALMP PLAY ;转PLAY循环 ENDOUT: MOV P3,#0FFH ;显示数据,端口置1 MOV P1,#0FFH
48、 RET ;子程序返回 LED数码显示管用共阳段码表,分别对应0~9,最后一个是“熄灭符” TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH, 1ms延时子程序,LED显示用 DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET 模数转换测量子程序 TEST: CLR A ;清累加器A
49、 MOV P2,A ;清P2口 MOV R0,#70H ;转换值存放首地址 MOV R7,#08H ;转换8次控制 LCALL TESRART ;启动测试 WAIT: JB P3.7,MOVD ;等A/D转换结束信号后转MOVD: AJMP WAIT ;P3.7为0,等待 TESTART: SETB P2.3 ;锁存测试通道地址 NOP ;延时2微秒 NOP CLR P2.3
50、测试通道地址锁存完毕 SETB P2.4 ;启动测试,发开始脉冲 NOP ;延时2微秒 NOP CLR P2.4 ;发启动脉冲完毕 NOP ;延时4微秒 NOP NOP NOP ;子程序调用结束 RET 取A/D转换数据至70H~77H内存单元 MOVD: SETB P2.5 ;0809输出允许 MOV A,P0 ;将A/D转换值入A






