77范文网 - 专业文章范例文档资料分享平台

光照强度测量仪(3)

来源:网络收集 时间:2020-05-08 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

3.控制程序设计

3.1 控制程序设计思路说明

初始化8255芯片,设置工作方式控制字为89(100010001B),即A、B口为输出,分别控制LED的段选、位选,C口输入。下图为控制字:

以采样五十次为一周期,求得五十次采样的总值。然后除以50,得到采样50次的平均值,存入LastAD。在每一次采样过程中,都在PC机和LED上输出上一周期采样转化得到的光照强度(单位:勒克斯)。具体转化过程为:

采样得到的模拟值经过AD转化后为电压值,电压范围为0-5V。而考虑到实际生活中,一般照明为200lux,重点照明为300lux,所以实验中可显示的光照强度为0-500lux。于是参考两者之间的线性关系,定下入下图的关系:

图10 电压-光照度函数(及副本函数)

注:本实验还制作了一个5V对应300lux的副本程序。

3.2 程序流程图

开始 初始化8255 CX=50 采样,计算采样总值 百位数/整数部分 入BUF/BUFFER+4, 十位数/第一位小数 入BUF+1/BUFFER+6, 个位数/第二位小数 入BUF+2/BUFFER+7。 调用DOS的9号功能在PC机上输出电压。 采样平均值送8255, 8255的PA口段选、PB口位选。 在LED上输出一位数据, 位选数据DATA2左移一位。 重复三次为一个周期。 然后还原DATA2=0FEH。 延时, i -- i=0? 继续下一次采样 Y 计算采样平均值 N 程序强制关闭 结束 图1-11 程序流程图

3.3控制程序

.MODEL TINY PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_ID EQU 10EBH ;厂商ID号 Device_ID EQU 8376 ;设备ID号 START2: CALL AD0809 XOR AH,AH ;采样值在AL中,AH清0后,AX即为采样值 ADD BX,AX ;BX为采样总值 CALL DISPLAY_PC

;在PC机上显示结果

CALL DISPLAY_LED

.STACK 100 .DATA

ADDR_0809 DW 00F0H LastAD DB 0 ;上一次AD转换值 IO_Bit8_BaseAddress DW ? BUFFER DB ' H . V$' msg0 DB 'BIOS不支持访问PCI $' msg1 DB '找不到Star PCI9052板卡 $' msg2 DB'读8位I/O空间基地址时出错$' msg3 DB 'AD转换结果(前边是16进制数,后边是十进制数): $'

COM_ADD DW 00E3H ;控制口偏移量 PA_ADD DW 00E0H ;PA口偏移量 PB_ADD DW 00E1H ;PB口偏移量 PC_ADD DW 00E2H ;PC口偏移量 LED_DATA DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;0-9的七段代码表 SHIFT DB 0FEH ;用于位选 .CODE

START: MOV AX,@DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址 MOV AH,09H LEA DX,msg3 INT 21H CALL Init8255 ;初始化8255A XOR AL,AL JMP START6

START1: MOV CX,50 ;采样五十次 MOV BX,0 ;累计五十次采样值

;LED显示上一次采样的结果LastAD LOOP START2 MOV AX,50 XCHG AX,BX DIV BL ;五十次的平均值,BL=50,平均值在AL中,余数在AH中 CMP AL,LastAD JZ START3

START6: MOV LastAD,AL

;LastAD值为AD转换值 START3: CALL IfExit JZ START1 JMP Exit

AD0809 PROC NEAR MOV SI,CX MOV AL,0

MOV DX,ADDR_0809 OUT DX,AL

MOV DX,IO_Bit8_BaseAddress MOV CX,100 AD08091:IN AL,DX

LOOP AD08091

;延时,等待AD转换完成

MOV DX,ADDR_0809 IN AL,DX MOV CX,SI RET

AD0809 ENDP

ToChar PROC NEAR ;转化为可显示的16进制数 ADD AL,'0' CMP AL,'9' JBE ToChar1 ADD AL,07H

ToChar1: RET ToChar ENDP

DISPLAY_PC PROC NEAR MOV SI,AX ;相当于PUSH MOV DI,BX MOV AL,LastAD

;将AD转换值读入AX中 MOV AH,AL AND AL,0FH CALL ToChar MOV BUFFER + 1,AL MOV AL,AH AND AL,0F0H ROR AL,4 CALL ToChar MOV BUFFER,AL MOV AL,AH XOR AH,AH MOV BL,51

;255/5 (16进制的1 = 1/51V) DIV BL OR AL,'0'

;转化为可显示的10进制数 MOV BUFFER + 4,AL

;整数部分 MOV AL,10 MUL AH DIV BL OR AL,'0' MOV BUFFER + 6,AL

;第一位小数 MOV AL,10 MUL AH DIV BL OR AL,'0' MOV BUFFER + 7,AL

;第二位小数 MOV DX,43 MOV AH,02H INT 10H ;定位光标 LEA DX,BUFFER MOV AH,09H INT 21H ;显示结果 MOV AX,SI ;相当于POP

MOV BX,DI RET

DISPLAY_PC ENDP

TO_LED PROC NEAR ;LED显示 LEA BX,LED_DATA XLAT ;经代码表转换为七段LED表中的段码,AL=BX[AL] MOV DX,PA_ADD ;从8255A 的PA口读取数字量,段选 OUT DX,AL MOV AL,SHIFT ;七段LED的位选,0FEH选取最低位,位选 MOV DX,PB_ADD ;PB口位选 OUT DX,AL CALL DLTIME ;延时 ROL AL,1

;向前选取次低位,位选 MOV SHIFT,AL MOV AL,0FFH

;禁止显示,全置为灭,防止数字串位 OUT DX,AL RET TO_LED ENDP

DISPLAY_LED PROC NEAR MOV SI,AX MOV DI,BX XOR AX,AX MOV AL,BUFFER + 7 SUB AL,30H CALL TO_LED

;在LED上显示右起第一位数 MOV AL,BUFFER + 6 SUB AL,30H CALL TO_LED

;显示第二位数 MOV AL,BUFFER + 4 SUB AL,30H CALL TO_LED ;显示第三位数 MOV SHIFT,0FEH

;恢复SHIFT原值,应用于下一次输出 MOV AX,SI MOV BX,DI RET

DISPLAY_LED ENDP

DLTime PROC NEAR MOV SI,CX MOV CX,1563 DLT: NOP ;空操作,用于延时 LOOP DLT

;循环延时,延时1.25ms MOV CX,SI RET

DLTime ENDP

IfExit PROC NEAR MOV SI,AX MOV DI,DX MOV DL,0FFH MOV AH,06H INT 21H MOV AX,SI MOV DX,DI RET IfExit ENDP

InitPCI PROC NEAR MOV AH,00H MOV AL,03H INT 10H ;清屏 MOV AH,0B1H MOV AL,01H INT 1AH CMP AH,0 JZ InitPCI2 LEA DX,msg0 InitPCI1: MOV AH,09H INT 21H JMP Exit

InitPCI2: MOV AH,0B1H MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID

MOV SI,0 INT 1AH

JNC InitPCI3

;是否存在Star PCI9052板卡 LEA DX,msg1 JMP InitPCI1 InitPCI3: MOV DI,PCIBAR3 MOV AH,0B1H MOV AL,09H INT 1AH

;读取该卡PCI9052基地址 JNC InitPCI4 LEA DX,msg2 JMP InitPCI1 InitPCI4: AND CX,0FFFCH MOV IO_Bit8_BaseAddress,CX RET InitPCI ENDP

Init8255 PROC NEAR MOV DX,COM_ADD MOV AL,89H

;A、B口为输出(段选,位选),C口输入 OUT DX,AL MOV DX,PA_ADD

;LED全熄灭 MOV AL,0FFH OUT DX,AL RET Init8255 ENDP

ModifyAddress PROC NEAR ADD ADDR_0809,CX ;ADDR_0809=34F0H ADD COM_ADD,CX ADD PA_ADD,CX ADD PB_ADD,CX ADD PC_ADD,CX RET

ModifyAddress ENDP Exit: MOV AH,4CH INT 21H END START

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库光照强度测量仪(3)在线全文阅读。

光照强度测量仪(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1035714.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: