键控数据采集及数值显示电路设计(微机原理)
《单片微型计算机原理及接口技术》按键接口实验报告
《单片微型计算机原理及接口技术》按键接口实验报告课程名称:单片微型计算机原理及接口技术实验类型:验证型实验项目名称:按键接口实验一、实验目的:1、熟悉单片机简单按键的接口方法。
2、掌握按键扫描及处理程序的编辑方法和调试方法。
二、Proteus仿真实验硬件电路按键接口实验的Proteus仿真实验硬件电路如图8.1所示。
三、实验任务用单片机P2.0~P2.2端口的3个按键分别对应控制P1.0~P1.3端口的3个LED小灯的亮与灭。
四、实验预习要求1、根据硬件电路原理图,画出实际接线图。
2、根据试验任务设计相应的调试程序。
独立列式按键查询实验的仿真硬件电路如图5.2所示。
3、阅读掌握Wave、Madwin、Keil-51等编译软件的使用方法。
4、完成预习报告。
五、实验设备计算机(已安装单片机汇编编译软件及Proteus软件)。
六、实验报告要求整理好实验任务1~2中经Proteus运行正确的程序。
实验八独立按键参考汇编程序;********************************************************;;实验程序8.1 ;;用单片机P2.0~P2.2端口的3个按键分别控制P1.0~P1.3 ;;端口的3个LED小灯的亮与灭;; 12MHz晶振;;*********************************************************;;KEYSW0 EQU P2.0 ;按键0KEYSW1 EQU P2.1 ;按键1KEYSW2 EQU P2.2 ;按键2LED0 EQU P1.2 ;LED小灯0LED1 EQU P1.1 ;LED小灯1LED2 EQU P1.2 ;LED小灯2;*************;;主程序入口;;*************;;ORG 0000H ;程序执行开始地址LJMP START ;跳至START执行;*********;;主程序;;*********;START: MOV P2,#0FFH ;置P2口为输入状态KLOOP: JNB KEYSW0,KEY0 ;读KEYSW0口,若为0转KEY0 JNB KEYSW1,KEY1 ;读KEYSW1口,若为0转KEY1 JNB KEYSW2,KEY2 ;读KEYSW2口,若为0转KEY2 AJMP KLOOP ;子程序返回;0键处理程序KEY0:LCALL DL10ms ;延时10ms消抖JB KEYSW0,KLOOP ;KEYSW0为1,程序返回(干扰)CPL LED0 ;开LED0灯WAIT0:JNB KEYSW0,WAIT0 ;等待键释放LCALL DL10ms ;延时消抖JNB KEYSW0,WAIT0 ;AJMP KLOOP ;返回主程序;1键处理程序KEY1:LCALL DL10ms ;延时10ms消抖JB KEYSW1,KLOOP ;KEYSW1为1,程序返回(干扰)CPL LED1 ;开LED1灯WAIT1:JNB KEYSW1,WAIT1 ;等待键释放LCALL DL10ms ;延时消抖JNB KEYSW1,WAIT1 ;AJMP KLOOP ;返回主程序;2键处理程序KEY2:LCALL DL10ms ;延时10ms消抖JB KEYSW2,KLOOP ;KEYSW2为1,程序返回(干扰)CPL LED2 ;开LED2灯WAIT2:JNB KEYSW2,WAIT2 ;等待键释放LCALL DL10ms ;延时消抖JNB KEYSW2,WAIT2 ;AJMP KLOOP ;返回主程序:***********;;延时程序;:***********;;约0.5ms延时子程序,执行一次时间为513sDL512:MOV R2,#0FFHLOOP1:DJNZ R2,LOOP1RET;约10MS延时子程序(调用20次0.5ms延时子程序)DL10ms:MOV R3,#14HLOOP2: LCALL DL512DJNZ R3,LOOP2RETEND ;程序结束七、思考与提高1修改按键功能,使得第一个键按下8个灯全亮,第二个键按下偶数灯全亮,第三个键按下流水灯点亮8个灯,第四个键按下全灭答:(汇编代码如所示)(仿真结果如图所示)2在第一个程序基础上加一位显示,按键按下后能显示按键的键码答:(汇编代码如图所示)(仿真结果如图所示)3在第一个程序基础上加四位显示,按键按下后能显示按键的键码如0003 答:(汇编代码如图所示)(仿真结果如图所示)八、讨论和心得。
微机原理与接口技术课程设计——液晶显示器与键盘系统(1)
微机原理与接口技术综合实践说明书课程名称:微机原理与接口技术综合实践设计题目:液晶显示器与键盘系统院系:机电学院热能与动力工程系班级:1112设计者:马茜曹家皓陈哲王明波王天辉指导教师:肖燕彩设计时间:2013.7.1-2013.7.12微机原理与接口技术综合实践任务书目录一、总体设计 (5)1.单片机选型 (5)2.按键扫描 (5)3.1620LCD显示 (5)二、主要元件介绍 (6)1.AT89S51概述 (6)1.1 AT89S51主要特征 (6)1.2 管脚说明 (7)1.3 本设计中的应用 (8)2.1620LCD (11)2.1 1620LCD概述 (11)2.2 1620LCD控制指令 (13)三、基于PROTEUS的硬件电路设计 (15)1.PROTEUS软件相关 (15)2.电路组成 (15)2.1复位电路 (15)2.2时钟电路 (16)2.31620LCD显示电路 (16)2.4按键扫描电路 (17)2.5蜂鸣器和发光二级管控制电路 (17)四、硬件配置 (18)1.按键扫描程序 (18)2.1620LCD显示程序 (20)五、电路仿真 (22)六、总结 (25)七、附件 (26)1.电路原理图 (26)2.源程序 (26)一、总体设计1.单片机选型AT89S51是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
根据万向开关的的档位,控制小直流电动机执行相应的动作。
2.按键扫描运用P0口第四位进行行扫描,高四位进行列扫描。
循环判断,得到按键位置。
并在相应按键按下后实现特定功能:按键10按下时,发光二级管点亮,按键11按下时,发光二级管停止亮;按键12按下时,蜂鸣器响,按键13按下时,蜂鸣器停止响。
微机原理与接口技术课设数据采集控制系统与数字电压表显示
微机原理与接⼝技术课设数据采集控制系统与数字电压表显⽰微机原理与接⼝技术课设———数据采集控制系统与数字电压表显⽰程序清单及注释:STACK SEGMENT STACKDB 256 DUP (?)STACK ENDSDATA SEGMENTMIN DB 0FFHMAX DB 00HSUM DW 0000HVR DB 00HLEDDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HV AR DB 00HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AL,00H ;数码管初始化MOV DX,284HOUT DX,ALMOV AL,10000010B ;8255初始化MOV DX,28BHOUT DX,ALMOV AL,0FFHMOV DX,288HOUT DX,ALMOV AL,00010001B ;8253初始化MOV DX,28CHOUT DX,ALMOV AL,01010001BMOV DX,28FHOUT DX,ALMOV AL,1HMOV DX,28DHOUT DX,ALL1: IN AL,289H ;判断k7TEST AL,10000000BJZ ENDLCALL SAMPLE ;调⽤采样⼦过程MOV AX,SUM ;计算VRXOR BX,BXMOV BL,MINSUB AX,BXMOV BL,MAXSUB AX,BXMOV BL,8DIV BLMOV VR,AL ;存均值VRMOV DX,289H ;判断k6IN AL,DXTEST AL,01000000BJZ L6CMP VR,0JC L1 ;VR<0CMP VR,51JBE L7 ;0<=VR<=51CMP VR,102JBE L8 ;51CMP VR,153CMP VR,255JBE L11 ;204JMP L1L7: CALL DIS1 ;调⽤⼦过程1,数码显⽰1,L1~L8显⽰单灯左跳JMP L1L8: CALL DIS2 ;调⽤⼦过程2,数码显⽰2,L1~L8显⽰双灯右跳JMP L1L9: CALL DIS3 ;调⽤⼦过程3,数码显⽰3,L1~L8显⽰向左渐亮JMP L1L10: CALL DIS4 ;调⽤⼦过程4,数码显⽰4,L1~L8显⽰向右渐灭JMP L1L11: CALL DIS5 ;调⽤⼦过程5,数码显⽰5,L1~L8闪动显⽰A/D值;LOG灯1秒闪动⼀次报警JMP L1L6: CALL DIS6 ;调⽤⼦过程6,进⾏数字有电压表显⽰JMP L1ENDL: MOV AX,4C00H ;返回dos界⾯INT 21HSAMPLE PROC ;定义采样⼦过程MOV CX,10XOR AX,AX ;变量赋初值MOV MAX,ALMOV SUM,AXMOV AL,0FFHMOV MIN,ALL2: MOV DX,290H ;采样启动转换OUT DX,ALMOV DX,289HL3: IN AL,DX ;判断转换是否完成TEST AL,00000001BJZ L3XOR AX,AX ;读取转换数据MOV DX,290HL4: CMP AL,MAX ;将获得数据与最⼤值MAX⽐较,如果⽐最⼩值⼩;则将其⽀付给最⼩值MIN JBE L5MOV MAX,ALL5: ADD SUM,AX ;将获取值加⼊总数LOOP L2RETSAMPLE ENDPDIS1 PROC ;定义⼦过程1,数码显⽰1,L1~L8显⽰单灯左跳MOV CX,8MOV SI,OFFSET LED ;数码显⽰1MOV DX,284HMOV AL,20HOUT DX,ALMOV AL,[SI+1]MOV DX,280HOUT DX,ALMVO AL,11111110B ;设置L1~L8显⽰单灯左跳MOV DX,288HNEXT: OUT DX,ALROL AL,1 ;AL循环左移⼀位CALL DELAY2LOOP NEXTRETDIS1 ENDPDIS2 PROC ;定义⼦过程2,数码显⽰2,L1~L8显⽰双灯右跳MOV CX,7MOV AL,20H ;数码显⽰2MOV DX,284HOUT DX,ALMOV SI,OFFSET LEDMOV AL,[SI+2]MOV DX,280HOUT DX,ALNEXT1: OUT DX,ALROR AL,1CALL DELAY2LOOP NEXT1RETDIS2 ENDPDIS3 PROC ;定义⼦过程3,数码显⽰3,L1~L8显⽰向左渐亮MOV CX,8 MOV AL,20H ;数码显⽰3MOV DX,284HOUT DX,ALMOV SI,OFFSET LEDMOV AL,[SI+3]MOV DX,280HOUT DX,ALMOV AL,0FFH ;设置L1~L8显⽰向左渐亮MOV DX,288HOUT DX,ALCALL DELAY2NEXT2: SHL AL,1OUT DX,ALROR AL,1CALL DELAY2LOOP NEXT2RETDIS3 ENDPDIS4 PROC ;定义⼦过程4,数码显⽰4,L1~L8显⽰向右渐灭MOV CX,8 MOV AL,20H ;数码显⽰4MOV DX,284HOUT DX,ALMOV SI,OFFSET LEDMOV AL,[SI+4]MOV DX,280HOUT DX,ALNEXT3: OUT DX,ALSAR AL,1CALL DELAY2LOOP NEXT3RETDIS4 ENDPDIS5 PROC ;定义⼦过程5,数码显⽰5,L1~L8闪动显⽰A/D值;LOG灯1秒闪动⼀次报警MOV CX,4 ;8253⼯作,LOG灯1秒闪动⼀次报警MOV AL,27HMOV DX,28FHOUT DX,ALMOV AL,30HMOV DX,28CHOUT DX,ALMOV AL,67HMOV DX,28FHOUT DX,ALMOV AL,10HMOV DX,28DHOUT DX,ALMOV AL,20H ;数码显⽰5MOV DX,284HOUT DX,ALMOV SI,OFFSET LEDMOV AL,[SI+5]MOV DX,280HOUT DX,ALMOV DX,288HNEXT4: MOV AL,VR ;设置L1~L8闪动显⽰A/D值NOT ALOUT DX,ALMOV AL,00010001B ;8253结束⼯作MOV DX,28FHOUT DX,ALMOV AL,1HMOV DX,28CHOUT DX,ALMOV AL,01010001BMOV DX,28FHOUT DX,ALMOV AL,1HMOV DX,28DHOUT DX,ALRETDIS5 ENDPDIS6 PROC ;定义数码电压显⽰⼦过程MOV SI,OFFSET LEDXOR AX,AXMOV AL,VRMOV BL,5 ;计算⼩数整数部分DIV BLXOR BX,BXMOV BL,ALMOV V AR,AHMOV AL,08HMOV DX,284HOUT DX,ALADD BX,SIMOV AL,[BX] ;获取数值的显⽰码OR AL,80H ;置最⾼位位1,显⽰⼩数点MOV DX,280HOUT DX,ALAND AX,00FFHMOV BL,10MUL BLMOV BL,51DIV BLXOR BX,BXMOV BL,ALMOV V AR,AHMOV AL,10HMOV DX,284HOUT DX,ALADD BX,SIMOV AL,[BX] ;获取数值的显⽰码MOV DX,280H OUT DX,ALCALL DELAYMOV AL,V AR ;计算⼩数点后第⼆位MOV BL,10MUL DLMOV BL,51DIV BLXOR BX,BXMOV BL,ALMOV AL,20HMOV DX,284HOUT DX,ALADD BX,SIMOV AL,[BX] ;获取数值的显⽰码OR AL,80H MOV DX,280HOUT DX,ALCALL DELAYRETDIS6 ENDPDELAY PROC ;延迟⼦过程1PUSH AXMOV DX,0FFHLAB: MOV CX,0FFHLAB1: NOP ;空操作LOOP LAB1DEC DXJNZ LABPOP AXPOP DXPOP CXRETDELAY ENDPDELAY2 PROC ;延迟⼦过程1 PUSH CXPUSH DXPUSH AXMOV DX,0FFHLAB2: MOV CX,0FFFFHLAB3: NOP ;空操作LOOP LAB3 DEC DXJNZ LAB2POP AXPOP DXPOP CXRETDELAY2 ENDPCODE ENDSEND START。
微机原理键盘扫描及显示设计实验
一、 实验名称:键盘扫描及显示设计实验 二、 实验目的1. 学习按键扫描的原理及电路接法; 2 .掌握利用8255完成按键扫描及显示。
三、 实验内容及步骤1.实验内容编写程序完成按键扫描功能,并将读到的按键值依次显示在数码管上。
实验机的按 键及显示模块电路如图 1所示。
按图2连线。
Γ≡≡If *—I〔01S冥Pπ图1键盘及显示电路2. 实验步骤 (1) 按图1接线;(2) 键入:CheCk 命令,记录分配的I/O 空间; (3) 利用查出的地址编写程序,然后编译链接; (4) 运行程序,观察数码管显示是否正确。
四、流程图22LZjXD2汽XDrXXDir d √I IWirI ⅝IOR A .■[QYO Λ :07 PBfl D⅛ PBl般唯* C4PB3PBl •皿 PBi 71 PB6 DO E55PB7FA.Q AlPAJAO 吨!PA5 I WR PCo 7 RD PCI ∙÷ CS PΩ I PCI图2实验连线>Cχ⅛ 7H *J J XXXXt- ⅛r√ *JJ <⅛i YYYY开始五、源程序是KeySCa n. asm;键盘扫描及数码管显示实验 根据CHECKE 置信息修改下列符号值 *******************的A 口地址的B 口地址 的C 口地址 的控制寄存器地址STACKI SEGMENT STACKDW 256 DUP(?) STACKI ENDS DATA SEGMENT DTABLE3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS ; 键值表,0〜F 对应的7段数码管的段位值CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX MOV SI,3000H ; 建立缓冲区,存放要显示的键值 MOV AL,00H ;先初始化键值为 0MOV [SI],AL MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV DI,3003H初始化8255工作方式方式0, A 口、B 口输出,C 口低4位输入・ *************** IoYo EQU 9800H 片选IOYO 对应的端口始地址 MY8255_ _A EQU IOY0+00H*4 ;8255 MY8255__B EQU IOY0+01H*4 ;8255MY8255__C EQU IOY0+02H*4 ;8255 DBMOV DX,MY8255_MODE MOV AL,81H;・***************************************************************** MY8255_MODE EQU IOY0+03H*4 ;8255OUT DX,AL BEGIN:CALL DIS ; CALL CLEAR ; CALL CCSCAN ; 显示刷新清屏扫描按键JNZ GETKEY1 ; 有键按下则跳置GETKEY1MOV AH,1 ; INT 16HJZ BEGIN ; QUIT: 判断PC键盘是否有按键按下无按键则跳回继续循环,有则退出MOV AX,4C00H ;INT 21H返回到DOSGETKEY1:CALL DIS ;CALL DALLYCALL DALLYCALL CCSCAN ;JNZ GETKEY2 ; JMPBEGIN ; 显示刷新再次扫描按键有键按下则跳置GETKEY2 否则跳回开始继续循环GETKEY2:MOV CH,0FEHMOV CL,00H ;COLUM:设置当前检测的是第几列MOV AL,CH ; MOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_C ;IN AL,DX 选取一列,将X1〜X4中一个置O读Y1〜Y4,用于判断是哪一行按键闭合L1:TEST AL,O1H ; JNZ L2 ; MOV AL,OOH ;JMP KCODE 是否为第1 行不是则继续判断设置第1 行第1 列的对应的键值L2:TEST AL,O2H ; JNZ L3 ; 是否为第2 行不是则继续判断MOV AL,04HJMP KCODEL3:TEST AL,04H JNZ L4MOV AL,08HJMP KCODEL4:TEST AL,08H JNZ NEXTMOV AL,0CHKCODE:ADD AL,CLCALL PUTBUFPUSH AX KON:CALL DISCALL CLEARCALL CCSCANJNZ KON POPAXNEXT:INC CL MOVAL,CH TESTAL,08H JZKERRROL AL,1 MOVCH,AL JMPCOLUM KERR:JMP BEGIN 设置第2 行第1 列的对应的键值是否为第3 行不是则继续判断设置第3 行第1 列的对应的键值是否为第4 行不是则继续判断设置第4 行第1 列的对应的键值将第1 列的值加上当前列数,确定按键值保存按键值显示刷新清屏扫描按键,判断按键是否弹起未弹起则继续循环等待弹起当前检测的列数递增检测是否扫描到第4 列是则跳回到开始处没检测到第4 列则准备检测下一列CCSCAN PROC NEAR MOV AL,00HMOV DX,MY8255_AOUT DX,AL 扫描是否有按键闭合子程序将4列全选通,X1〜X4置OMOV DX,MY8255_CIN AL,DXNOT ALAND AL,0FH RET CCSCAN ENDPCLEAR PROC NEARMOV DX,MY8255_BMOV AL,00H OUTDX,AL清除数码管显示子程序段位置0 即可清除数码管显示RET CLEAR ENDPDIS PROC NEAR ; PUSH AX ;MOV SI,3000HMOV DL,0F7HMOV AL,DLAGAIN:显示键值子程序以缓冲区存放的键值为键值表偏移找到键值并显示PUSH DXMOV DX,MY8255_A OUT DX,AL ;MOV AL,[SI] ; MOV BX,OFFSET DTABLE AND AX,00FFHADD BX,AXMOV AL,[BX] ; MOV DX,MY8255_BOUT DX,AL ;CALL DALLY INC SI ; POP DXMOV AL,DLTEST AL,01H ;JZ OUT1 ;ROR AL,1MOV DL,ALJMP AGAIN ; OUT1: 设置X1〜X4,选通一个数码管取出缓冲区中存放键值将键值作为偏移和键值基地址相加得到相应的键值写入数码管A〜Dp取下一个键值判断是否显示完?显示完,返回未显示完,跳回继续POP AXRET DIS ENDP 读Y1〜Y4取出Y1〜Y4的反值PUTBUF PROC NEAR ; 保存键值子程序MOV SI,DIMOV [SI],ALDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3003HGOBACK: RETPUTBUF ENDPDALLY PROC NEAR ; 软件延时子程序PUSH CXMOV CX,00FFHD1: MOV AX,00FFHD2: DEC AXJNZ D2LOOP D1POP CXRETDALLY ENDPCODE ENDSEND START六、体会和感想通过这次的实验我了解到自己还有很多的不足,比如做实验的速度很慢,效率很低,思维不集中导致最后老师验收的时候没有来的及交,对书本的了解不是很透彻,也因此我决定下次实验的时候一定要好好地去思考,尽量在课外把实验看懂!。
键控数据采集及数值显示电路设计(微机原理)
二○一二~二○一三学年第一学期信息科学与工程学院自动化系课程设计计划书班级:自动化1006班课程名称:微机原理及应用课程设计姓名:指导教师:二○一二年月十二日一、设计题目键控数据采集及数值显示电路设计二、设计任务按不同的数字键(0、1、2、3、4、5、6、7)采集0809相应数据通道的模拟量,并在LED数码管上显示值。
设定输入模拟量在0—5V范围内,显示值在0—255范围内。
三、设计要求1.画出连接线路图或功能模块引脚连接图。
2.采用8088CPU作主控制器,0809作A/D转换器,采用直接地址译码方法,给各芯片分配地址,选取芯片中必须包含有8255。
3.采用3个共阴极型LED动态显示,只需显示0—255范围内的值。
四、设计思想及需要用的主要芯片1、设计思想首先通过编程对8255初始化,然后通过8255对ADC0809转换器初始化,通过0~7号按键(在这里0~7号按键用开关实现,有按键的过程中会有抖动,所以需要加入一个74LS244芯片,用于缓冲),经8088微处理器处理后选择ADC0809的模拟通道,将0~5V内的模拟量通过选择的模拟通道传递给模数转换器,通过转换器把模拟量转换为0~255之间的数字量,将数字量通过可编程并行接口8255(在这里端口A作为数据输入端,端口B作为数据输出端,端口C 作为控制端),送给LED数码管显示。
2.主要芯片及其功能ADC0809是8位逐次逼近式A/D转换器。
片内有8路模拟开关及地址锁存与译码电路、8位A/D转换和三态输出锁存缓冲器。
其芯片引脚图如下8255是Intel 公司生产的可编程并行I/O 接口芯片,有3个8位并行I/O 口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
。
74LS244是数据输入三态缓冲器。
外设输入的数据和状态信号,通过数据输入三态缓冲器井经过数据总线传递给微处理器。
8个数据输入端与外设相连,8个数据输出端与微型计算机的数据总线相连。
微机原理课程设计报告数据采集显示系统
摘要:本系统实现了单路直流电压量的采集与显示。
其主要结构由A/D转换模块、8255并行接口模块、8086控制模块、数码管显示驱动电路和三位数码管显示电路组成。
由于本系统电路实验板是16位微控制器试验箱的外部拓展系统,所以整个系统的系统总线和地址总线是固定的,本次设计的重点主要是外围模块与8086的编程部分。
关键词:8086 8255 ADC0809 74LS240目录一、设计要求及方案选择 (1)(一)设计要求..................................................................................................... 错误!未定义书签。
(二)方案选择..................................................................................................... 错误!未定义书签。
二、系统各模块具体设计 (1)(一)整体框图 (1)(二)各模块具体分析 (2)三、系统性能测试 (5)(一)测试仪器 (5)(二)测试过程 (5)四、参考文献 (5)五、附录 (5)一、设计要求及方案选择设计要求:要求具有IN1路模拟输入输入信号为0——5V采用数码管3位,显示十进制结果输入量与显示误差<1%方案选择:ADC0809是逐次逼近型8位A/D转换芯片,具有8路模拟量输入,量程为0-5V,分辨率(相对误差)为0.38%,转换速度典型值为100us,并且片内带有三态输出缓冲器,可以与系统总线直接相连,不需要占用8255并行接口线。
而且其性能价格比非常高,故本次课程设计采用ADC0809作为转换芯片。
二、系统各模块具体设计(一)整体框图系统组成及原理框图如图1-1所示整体电路图:(二)各模块具体分析1、A/D转换模块ADC0809的ADDA ADDB ADDC ALE START 接8255的PB7-PB3,输出通道和系统总线直接相连。
数据采集电路与程序设计
题目七:数据采集电路与程序设计一、实验目的⑴掌握 A/D 转换与微机接口的应用方法; ⑵了解A/D 芯片0809转换性能及编程方法; ⑶通过设计掌握如何进行数据采集。
二、实验要求基本要求:通过实验仪上的W1电位器提供模拟量电压给实验仪上的0809做A/D 转换,将模拟量转换成数字量,在LED 数码管的左4位显示0809字样,右两位显示数字量扩展要求:通过发光二极管L1~L8 显示数字量三、实验仪器1.PC 机一台2.微机原理式实验开发系统 一台 3.Usb 数据线一条四、实验原理A/D 转换器大致分有三类:一是双积分A/D 转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D 转换器,精度、速度、价格适中;三是并行A/D 转换器,速度快,价格也昂贵。
实验用ADC0809 属第二类,是8 位A/D 转换器。
每采集一次一般需100μs 。
由于ADC0809 A/D 转换器转换结束后会自动产生EOC 信号(高电平有效),取反后将其与8088中断信号相连,可以用中断方式读取A/D 转换结果。
123CBAIN31IN42IN53IN64IN75START 6EOC 7D38OE 9CLK 10VCC 11VREF+12GND13D114D215VREF-16D017D418D519D620D721ALE 22ADD C 23ADD B 24ADD A 25IN026IN127IN228A D C 0809C C NU18VCCCLKD0D1D2D3D4D5D6D7EOCADDAADDBADDCWRRD231SN74LS02NU24A564SN74LS02NU24B DS24470R72IN7IN5IN3IN0CS500K(B2)(D2)0-5VA0A1A2P1.2CS1(0F000H)图5-1 A/D 数据转换采集电路接线图五、实验步骤1.将微机原理实验开发系统实验箱接上电源。
2.PC 机上启动星研电子,新建工程 (注意设置工程保存路径)3.观察工程文件结构,查看相应文件。
(完整版)微机毕业课程设计之数据采集系统
微机原理及接口技术课程设计书学院:信息与通信工程学院专业:测控技术与仪器班级:xxx学号:xxx姓名:xxx指导教师:xxx目录1、摘要 (2)2、总体方案设计 (2)2.1设计目的 (2)2.2设计任务与要求 (2)2.3设计方案 (3)3、硬件原理图设计设计 (3)3.1总设计图说明 (3)3.2各子硬件图说明 (4)3.2.1原理图所用芯片介绍 (4)3.2.2各子硬件电路说明 (9)4、程序设计 (13)4.1程序流程图 (14)4.2程序设计说明 (14)5、课程设计收获与心得体会 (17)6、参考文献 (18)7、附录 (19)一、摘要本次课程设计,主要是了解可编程外围芯片8255的工作原理,以及学会对ADC0809和8255芯片的应用和设计技术。
对微型计算机基本的系统结构、对微型计算机硬软件的工作原理有个整体的认识。
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、总体设计方案2.1设计目的1)进一步建立微机系统的概念,加深对系统的理解和认识,培养学生应用微型计算机解决实际问题的能力;2)进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。
3)进一步熟悉微机最小系统的构成及常用接口芯片的使用,提高系统设计的能力。
2.2设计任务和要求设计内容:以8088cpu为核心设计一个采集系统,系统可以实现一路模拟电压信号进行采集,已知该电压信号的电压范围是0~255mv,选用adc0809作为AD转换器,系统中有三位LED显示器显示所采集到电压的毫伏数。
设计要求:1)画出电路原理图,说明工作原理2)编写一个实现对输入模拟电压进行转换并在LED显示器显示当前采集数据的数字量程序2.3设计方案数据采集系统的设计,要求使用微型计算机的最小系统,且具有1路的输入,输入信号在0—255mV,而且采用数码管显示输入(显示10进制的结果)。
微机原理与接口技术-键盘LED显示【课程设计报告】
微机原理与接口技术-键盘LED 显示【课程设计报告】重庆大学课程设计报告课程名称:微机原理与接口技术设计题目:键盘LED显示院系:电气信息学院班级:2007级设计时间:2009年12月第一章概述 (2)1.1学习目的 (2)1.2 计算机的应用 (3)1.3学习计算机的意义 (3)1.4课程设计目的 (4)第二章总体方案设计 (4)2.1 设计注意问题 (4)2.2 总体思路 (5)第三章硬件设计 (5)3.1 8255工作原理 (5)3.2 键盘工作原理 (7)3.3 键特征值的形成 (8)3.4段值的形成 (9)3.5 8255接线图 (11)第四章软件设计 (12)4.1 8255初始化 (12)4.2 键盘扫描的处理方法 (12)4.2.1. 判断是否有键被按下的方法 (12)4.2.2. 判断是否有键被按下的源程序 (13)4.2.3 防抖动 (13)4.2.4.防抖动的延时子程序 (14)4.3 程序核心部分 (14)4.3.1 逐行扫描 (14)4.3.2逐行扫描的源程序 (15)第五章源程序代码 (15)5.1 根据整体思路以及软件设计得到的代码. 155.2 以上代码存在问题分析 (19)第六章难点分析 (20)第七章体会感慨建议 (25)第八章参考文献 (26)第一章概述1.1学习目的“微机原理与接口技术”是电气工程及其自动化专业的一门重要的专业基础课程。
我们通过该门课的学习,知道了微机的工作原理,微型计算机的基本结构,接口技术及汇编语言程序设计,为后续的课程的学习和今后的工作打下坚实的基础。
通过实验可以培养学生利用计算机技术和编程手段分析,解决专业领域的各种问题的能力和意识,并进一步感受微机发展的微机发展的新技术和新方法。
1.2 计算机的应用目前计算机的应用已经遍布各个行业,如科学计算、数据处理、过程控制、人工智能、网络应用等。
科学和工程计算:科学和工程计算的特点是计算量大,而逻辑关系相对简单,它是计算机重要应用领域之一。
键控编码显示电路的设计与制作
教学目的:
1.了解组合电路的的概念及特点; 熟悉组合电路的分析方法及设计 方法。
2.了解编码器的概念及编码器的分类。 3.理解优先编码器74LS148的功能及特点。 4.了解译码器的概念及分类。 5.了解数字显示电路的组成及数字显示器件的分类;熟悉七段字符 显示器的组成及特点,.熟悉七段显示译码器74LS48、4511的逻辑功能及 特点。 6.熟悉译码器74LS138的逻辑功能,掌握用74LS138实现逻辑函数 的方法。 7.了解数据选择器的概念,熟悉74LS151的逻辑功能;会用 74LS151实现逻辑函数。 8.熟练使用电路仿真软件Multisim,正确连接仿真电路并进行功能 检测。 9.能合理布局电路元器件并进行电路装配与调试。 10.电路常见故障排查。
3位二进制数码有8种取值组合,可以表示8个信号;
……
n位二进制代码有2n 种取值组合,可以表示2n个信号。
用n位二进制代码对2n个信号进行编码的电路称为二进制编码器。显
然,二进制编码器输入信号的个数N与输出变量的位数n之间满足N=2n
的关系。
N
n
个
位:常用的集成组合逻辑电路
2.2.1 编码器 a.优先编码器74LS148
二—十进制编码器功能示意图
2.2:常用的集成组合逻辑电路
2.2.1 编码器
2.编码器的分类
(2)二—十进制编码器 常用的二—十进制优先编码器有74LS147,它把I0~I9的十个状态(
数)分别编成十个BCD码。其中I9的优先权最高,I0的优先权最低。其功 能表如表所示。
74LS147优先编码器的输 入端和输出端都是低电平有 效,即当某一个输入端低电 平0时,4个输出端就以低电 平0的输出其对应的 8421BCD编码。当9个输入 全为1时,4个输入出也全为1 ,代表输入十进制数0的 8421BCD编码输出。
微机原理课程设计报告--数据采集系统三(中断法)
微机原理课程设计课设题目:数据采集系统三〔中断法〕实验者姓名:实验者学号:学院:数据采集系统三〔中断法〕一、实验目的进一步掌握微机原理知识,理解微机在实时采集过程中的应用,学习、掌握编程和程序调试方法。
二、实验内容1、用中断法,将ADC 0809通道0外接0 ~ 5V电压,转换成数字量后,在七段LED 数码管上,以小数点后两位〔几十毫伏〕的精度,显示其模拟电压的十进值;0809通道0的数字量以线性控制方式送DAC0832输出,当通道0的电压为5V时,0832的OUT为0V, 当通道0的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC 0809通道1,转换后的数字量在CRT上以十六进制显示。
2、ADC 0809 的CLK 脉冲,由定时器8254的OUT0提供;ADC 0809的EOC信号,用作8259中断恳求信号。
3、要有较好的人机对话界面;控制程序的运行。
三、总体设计1 、ADC 0809的IN0采集电位器0—5V电压,IN1采集0832输出的模拟量。
2 、DAC 0832将ADC 0809的IN0数字量后重新转换成模拟量输出。
3、8259用于检测ADC 0809转换是否完毕和向CPU发送INTR信号4、 8255为七段LED数码管显示提供显示驱动信息。
5、七段LED数码管显示ADC 0809的IN0的值。
6、8254提供ADC 0809的采样时钟脉冲。
7、有良好的人—机对话界面。
系统运行时,显示主菜单,开场数据采集, 在数据采集时, 主键盘有键按下,退出返回DOD系统。
四、硬件设计因采用了PC机和微机实验箱, 硬件电路设计相比照拟简单, 主要利用微机实验箱上的8255并行口、ADC 0809、DAC 0832、七段LED数码管单元、8254定时/计数器、74LS574输出接口、电位器等单元电路, 就构成了数据采集系统, 硬件电原理框图4-3-1所示。
五、软件设计本设计通过软件编程,实现模/数转换器0809分别对IN0 0-5V直流电压的采样,和经0832线性控制后输出电压的IN1采样,IN0的值转换成十进制后,在七段数码管上显示; IN1的值在显示器上显示。
微机原理键盘扫描及显示完整实验报
实验9键盘扫描及显示实验
实验时间2019年12月18日
实验类型■验证性□设计性□综合性
1.实验目的
了解键盘扫描及数码显示的基本原理,熟悉8255的编程。
2.实验内容及过程(主要内容、操作步骤)
将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。
键盘采用4X4键盘,每个数码管显示值可为0~F 共16个数。
实验具体内容如下:将键盘进行编号,记作0~F,当按下其中-一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。
3.测试数据及实验结果
4.实验分析及总结(主要考察内容)
通过本次实验,我理解了键盘扫描及数码显示的基本原理,通过理解分析程序,自己对程序进行了一些总结和修改,并进行了验证,进一步掌握了微机接口的学习方法。
教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结
1/ 1。
按键控制实验报告
键控计数值显示一、实验目的(1)熟悉Nios II系统构建,并选择简单、合适的系统(2)学习按键中断的控制方法(3)用HDL文本输入方法建立顶层模块、flash编程(4)能够自行改写程序二、实验设备与器件Quartus II 软件、EP4CE115F29实验箱三、实验方案设计实验可实现的功能本实验要求实时显示计数器输出的0~7F计数值,显示终端为八位LED、七段数码管和LCD显示器。
由KEY1~KEY3三个按键选择显示器件。
长按KEY1键时,只在八位LED上进行显示;长按KEY2键时,只在LCD显示器上进行显示;长按KEY3键时,只在七段数码管上进行显示;无键按下时则不显示, 但计数功能保持;KEY0按下时清零。
硬件系统(HDL文本)//=================================================== ====// This code is generated by Terasic System Builder//=================================================== ====module Test_1(//////// CLOCK //////////CLOCK_50,//////// LED //////////LEDG,//////// KEY //////////KEY,CLR,////////COUNT////////////COUNT,//////// SEG7 //////////HEX0,HEX1,//////// LCD ////////// LCD_BLON,LCD_DATA,LCD_EN,LCD_ON,LCD_RS,LCD_RW,//////// SDRAM ////////// DRAM_ADDR, DRAM_BA,DRAM_CAS_N, DRAM_CKE, DRAM_CLK, DRAM_CS_N, DRAM_DQ,DRAM_DQM, DRAM_RAS_N, DRAM_WE_N,//////// Flash //////////FL_ADDR,FL_CE_N,FL_DQ,FL_OE_N,FL_RST_N,FL_RY,FL_WE_N,FL_WP_N,);//=================================================== ====// PARAMETER declarations//=================================================== ====//=================================================== ====// PORT declarations//=======================================================//////////// CLOCK //////////input CLOCK_50;//////////// LED //////////output [7:0] LEDG;//////////// KEY //////////input [2:0] KEY;input CLR;////////////COUNT/////////////input [7:0] COUNT//////////// SEG7 //////////output [6:0] HEX0;output [6:0] HEX1;//////////// LCD //////////output LCD_BLON; inout [7:0] LCD_DATA;output LCD_ON; output LCD_RS; output LCD_RW;//////////// SDRAM //////////output [12:0] DRAM_ADDR; output [1:0] DRAM_BA; output DRAM_CAS_N; output DRAM_CKE; output DRAM_CLK; output DRAM_CS_N; inout [31:0] DRAM_DQ; output [3:0] DRAM_DQM; output DRAM_RAS_N; output DRAM_WE_N;//////////// Flash //////////output [22:0] FL_ADDR;output FL_CE_N; inout [7:0] FL_DQ; output FL_OE_N;input FL_RY;output FL_WE_N;output FL_WP_N;//=================================================== ====// REG/WIRE declarations//=================================================== ====//////// 7-SEG ////////////////wire[2:0] norkey;wire[7:0] count_in;wire[7:0] data;//=================================================== ====// Structural coding//=======================================================wire reset_n;assign reset_n = 1'b1;kernel kernel_inst(// 1) global signals:.clk_50(CLOCK_50),.reset_n(reset_n),.sdram_clk(DRAM_CLK),.sys_clk(clk_sys), ///////////////////////// the_key.in_port_to_the_key(~KEY),//the_count.in_port_to_the_count(count_in[7:0]),// the_lcd.LCD_E_from_the_lcd(LCD_EN),.LCD_RS_from_the_lcd(LCD_RS),.LCD_RW_from_the_lcd(LCD_RW),.LCD_data_to_and_from_the_lcd(LCD_DA TA),// the_led.out_port_from_the_led(LEDG),// the_sdram.zs_addr_from_the_sdram(DRAM_ADDR),.zs_ba_from_the_sdram(DRAM_BA),.zs_cas_n_from_the_sdram(DRAM_CAS_N ),.zs_cke_from_the_sdram(DRAM_CKE),.zs_cs_n_from_the_sdram(DRAM_CS_N),.zs_dq_to_and_from_the_sdram(DRAM_D Q),.zs_dqm_from_the_sdram(DRAM_DQM),.zs_ras_n_from_the_sdram(DRAM_RAS_N ),.zs_we_n_from_the_sdram(DRAM_WE_N),// the_seg7.out_port_from_the_seg7(data),.out_port_from_the_en_seg(en),// the_tri_state_bridge_flash_avalon_slave.address_to_the_cfi_flash(FL_ADDR),.read_n_to_the_cfi_flash(FL_OE_N),.select_n_to_the_cfi_flash(FL_CE_N),.tri_state_bridge_data(FL_DQ),.write_n_to_the_cfi_flash(FL_WE_N),);clk_div clk_div(.clkin(clk_sys),.clk_1KHz(clk_1KHz),.clk_1Hz(clk_1Hz));mydecoder_7seg yima(.clk(clk_1KHz),.segmenth(HEX1),.segmentl(HEX0),.data(data),.en(en));// .lowdata(data[3:0])); counter couter(.clk(clk_1Hz),.clr(CLR),//anjian qingling.count(count_in[7:0]));// Flash Configassign FL_RST_N = reset_n;assign FL_WP_N = 1'b1;///////////////////////////////////////////// LCD configassign LCD_BLON = 0; // not supportedassign LCD_ON = 1'b1; // alwasy onendmodule系统框图实验程序#include"count.h" //关于LCD的相关定义,控制LCD 的输出格式#include <unistd.h>#include <stdio.h>#include"system.h"#include"altera_avalon_pio_regs.h"#include"alt_types.h"#include"sys/alt_irq.h"volatile int a=0;volatile char b;unsigned char count1,count2,count3;static void KeyDown_interrupts(void* context,alt_32 id) //中断函数{IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0);//响应中断后,将中断响应位复位;b=IORD_ALTERA_AVALON_PIO_DATA(KEY_BASE); //读取中断响应值switch(b){case 0x1: //七段数码管显示IOWR_ALTERA_AVALON_PIO_DATA(EN_SEG_BASE,1);//IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);count1=IORD_ALTERA_AVALON_PIO_DATA(COUNT_BASE);IOWR_ALTERA_AVALON_PIO_DATA(SEG7_BASE,count1);break;case 0x2: //LCD显示count2=IORD_ALTERA_AVALON_PIO_DATA(COUNT_BASE); printf("%02x", count2);//直接用标准输出函数表示break;case 0x4://LED灯显示IOWR_ALTERA_AVALON_PIO_DATA(EN_SEG_BASE,0);count3=IORD_ALTERA_AVALON_PIO_DATA(COUNT_BASE);IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,count3);break;default: //无按键时,正常计数,但无显示break;}}void InitPIO(void)//中断初始化{IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_BASE,0x7);//开中断,允许后三位开中断IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0x0);//中断响应后复位,防止中断一直响应。
微机原理键盘控制与显示实验报告
微机原理键盘控制与显⽰实验报告专业:电⽓⼯程及其⾃动化姓名: _________实验报告学号: _______⽇期: ___ _____地点: ____ ________课程名称: ________微机原理(实验)___________指导⽼师: ____徐习东 _______成绩:__________________实验名称: ______ 键盘控制与显⽰_______实验类型: _____软件实验 ______同组学⽣姓名:__________⼀、实验⽬的和要求(必填)⼆、实验内容和原理(必填)三、主要仪器设备(必填)四、操作⽅法和实验步骤五、实验数据记录和处理六、实验结果与分析(必填)七、讨论、⼼得【实验⽬的】1.通过实验掌握 TMS320F2812 通⽤输⼊ / 输出管脚直接控制外围设备的⽅法2.了解发光⼆极管的控制编程⽅法。
3.了解 SPI 的使⽤。
4.了解如何使⽤ GpioA ⼝进⾏数据的锁存5.通过实验掌握 TMS320F2812 的扩展端⼝接收外围设备信息的⽅法6.了解键盘的使⽤原理及编程⽅法【实验内容】1.按键显⽰程序,对按键记录次数,以⼆进制显⽰在16 个 LED 上。
2.定时器编程,并⽤按键控制各位时分秒,使其能完成加减操作【实验仪器】TMS320F2812数字信号处理器与学⽣⽤集成板。
【实验步骤】1.撰写代码2.调试代码3.实现功能【实验代码】⼀、定时器①宏定义和全局变量定义然后同时定义了全局变量,包括时、分、分析:这段代码是初始宏定义,⽤于定义按键对应的编码与地址,秒,按键编码, LED 编码和控制位。
②共阳字形码分析:由于这次实验要⽤到数码管,所以我们要定义⼀个数码管共阳端字形码,使每⼀个代码对应⼀种显③SPI 初始化⼦程序分析:这⼀段是本次实验的重点,就是SPI 初始化。
1 )SPICCR :⽤于控制SPI 的状态,上下降沿发送,还有⼏位的数据。
其中第7 位,即 SPICCR.6 是控制SPI 在上下沿发送, 1 代表下降沿,2 代表上升沿;第8 位,即 SPICCR.7 是控制复位的,0 代表为复位状态;低 4 位控制数据长度,长度等于n+1 。
微机原理及接口技术课程设计-键盘显示控制器
新乡学院计算机与信息工程学院课 程 设 计 报 告2015年1月12日课程名称 微机原理与接口技术 项目名称 键盘显示控制器班 级 学 号 姓 名指导教师目录一、设计任务说明 (3)1.1、实验目的 (3)1.2、实验内容 (3)二、需求分析 (4)2.1、计算机的重要性 (4)2.2、8279芯片 (4)三、设计方案 (4)3.1、课程设计步骤与方法 (4)3.2、课程设计说明书与图纸 (5)3.3、设计程序 (8)四、测试分析 (14)五、总结 (15)六、参考文献 (15)课程设计报告正文内容一、设计任务说明1.1、实验目的1.掌握8279键盘显示电路的基本功能及编程方法2.掌握一般键盘盒显示电路的工作原理3.进一步掌握定时器的使用和中断处理程序的编程方法1.2、实验内容利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,设计一个秒表,由8253中断定时,小键盘控制秒表的启停及初始值的预置。
秒表的显示格式**.**.** 由左到右分别为分、秒、百分秒要求具体如下:1. C键:清楚,显示00.00.002. G键:启动,秒表计时3. D键:停止,秒表停止计时4. P键:设置分、秒、百分秒值。
输入时依次为分、秒、百分秒,同时应有判断输入错误的能力,若输入有错,则显示:E - - - - -,此时敲P 键可重新输入预置值。
5. E键:程序退出,返回DOS二、需求分析2.1、计算机的重要性计算机是当代众多新兴技术中发展最快、应用最广的一项技术,也是渗透力最强,对社会发展影响最为深远的高新技术。
今天它已经逐渐深入到社会的每一个细胞,改变着人们的生产方式,社会活动方式甚至家庭生活方式。
计算机发展如此迅速,影响如此深远。
有其深刻的社会背景。
2.2、8279芯片8279是一种通用的可编程的键盘/显示器接口器件,可对64个开关组成的键盘矩阵进行自动扫描,接收键盘上的输入信息,并在有键输入时向单片机请求中断,还能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二○一二~二○一三学年第一学期
信息科学与工程学院
自动化系
课程设计计划书
班级:自动化1006班
课程名称:微机原理及应用课程设计姓名:
指导教师:
二○一二年月十二日
一、设计题目
键控数据采集及数值显示电路设计
二、设计任务
按不同的数字键(0、1、2、3、4、5、6、7)采集0809相应数据通道的模拟量,并在LED数码管上显示值。
设定输入模拟量在0—5V范围内,显示值在0—255范围内。
三、设计要求
1.画出连接线路图或功能模块引脚连接图。
2.采用8088CPU作主控制器,0809作A/D转换器,采用直接地址译码方法,给各芯片分配地址,选取芯片中必须包含有8255。
3.采用3个共阴极型LED动态显示,只需显示0—255范围内的值。
四、设计思想及需要用的主要芯片
1、设计思想
首先通过编程对8255初始化,然后通过8255对ADC0809转换器初始化,通过0~7号按键(在这里0~7号按键用开关实现,有按键的过程中会有抖动,所以需要加入一个74LS244芯片,用于缓冲),经8088微处理器处理后选择ADC0809的模拟通道,将0~5V内的模拟量通过选择的模拟通道传递给模数转换器,通过转换器把模拟量转换为0~255之间的数字量,将数字量通过可编程并行接口8255(在这里端口A作为数据输入端,端口B作为数据输出端,端口C 作为控制端),送给LED数码管显示。
2.主要芯片及其功能
ADC0809是8位逐次逼近式A/D转换器。
片内有8路模拟开关及地址锁存与译码电路、8位A/D转换和三态输出锁存缓冲器。
其芯片引脚图如下
8255是Intel 公司生产的可编程并行I/O 接口芯片,有3个8位并行I/O 口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
。
74LS244是数据输入三态缓冲器。
外设输入的数据和状态信号,通过数据输入三态缓冲器井经过数据总线传递给微处理器。
8个数据输入端与外设相连,8个数据输出端与微型计算机的数据总线相连。
其引脚图如下
1G 1A121Y118A241Y216A361Y314A481Y4
12
2G 19B 1112Y19B 2132Y27B 3152Y35B 417
2Y4
3
U?
74LS273是数据输出寄存器。
8个输入端微型计算机的数据总线相连,8个数据输出端与外设相连,由时终端控制数据的写入。
其引脚图如下
C LR 1C LK 111
D 31Q 22D 42Q 53D 73Q 64D 84Q 95D 135Q 126D 146Q 157D 177Q 168D 18
8Q
19
U?
六、流程图:
七、源程序代码
STACK SEGMENT
DW 32 DUP(0)
STACK ENDP
DA TA SEGMENG
BUF DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,18H ;0~9的字形码
IBUF DB 4,0,4 DUP(0) ;分配空间,为存储数据做准备DA TA ENDS
CODE SEGMENT
START PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DA TA
MOV DS,AX
MOV DX,383H ;8255控制字寄存器的端口地址
MOV AL,83H ;方式选择字
OUT DX,AL
LOP1: MOV AL,0
MOV DX,005H ;读74LS244芯片地址
IN AL,DX ;读74LS244端口地址
AND AL,OFFH
JZ LOP5
MOV BL,0
LOP2:CMP AL,01H ;将按键转化成相应的数字
JE LOP3
SHR AL,1
INC BL
JMP LOP2
LOP3:MOV AL,BL
OUT DX,AL ; 启动A/D转换并选择通道
MOV DX,382H ;PC端口地址
LOP4:IN AL,DX
TEST AL,01H ;为1表示转换结束,否则继续等待
JZ LOP4
MOV DX,383H ;控制字寄存器的端口地址
MOV AL,80H ;写OE让其有效
OUT DX,AL
MOV AL,1 ;PC端口选择位置位字
OUT DX,AL ;将ADC0809的EOC改为高电平有效
MOV AL,0BH;
OUT DX,AL ;使OE有效,允许输出
MOV DX,383H
MOV 90H ;将PA端口设置为输入
OUT DX,AL
MOV DX,380H ;写PA端口,将转化结果写入8255
IN AL,DX
MOV DX,383H ;设置控制字,将PB端口设置为输出
MOV AL,80H
OUT DX,AL
MOV DX,381H ;读PB端口
OUT DX,AL
LOP5:MOV CL,10
MOV AH,0
BEGIN:DIV CL
MOV BP,OFFSET IBUF ;依次将百位,十位,个位存入IBUF MOV [BP+4],AH
MOV AH,0
DIV CL
MOV [BP+3],AH
MOV AH,0
DIV CL
MOV [BP+2],AH
MOV [BP+5],0DH ;存入回车符
MOV AH,04H ;用于操作七段显示器的位码
SHOW:MOV BL,DS:[BP+2]
MOV BH,0
MOV AL,BUF[BX] ;取出BCD数七段显示码,用于显示
MOV DX,380H ;74LS273端口地址,输出端码
OUT DX,AL
MOV AL,AH
MOV DX,384H ;输出位码
OUT DX,AL
MOV CX,1000 ;延时
LOOP $
INC BP ;调整指向BCD码的指针,用于显示下一个数字SHR AH,1 ;调整位码指针,是的下一个七段显示器有效
AND AH,AH ;判断三位数字是否已经完全输出
JNZ SHOW ;没有输入完,则跳转至SHOW
MOV AH,11 ;检测有无输入
INT 21H
CMP AL,0
JNZ LOP1 ;若有按键,则返回继续选择通道继续执行
RET
START ENDP
CODE ENDS
END START
八、实验小结
此次试验对于我来说是一次历练,由于我们在做实验时做的题目相对于这一次的课程设计来说要简单,所以开始拿到题目是有一些茫然。
冷静下来后开始分析题目,首先得知道题目究竟要我们做什么,实现什么功能。
然后拿着我们的《微机原理、汇编与接口技术》课本,分析一个个学过的芯片,看它能够实现什么功能,分析芯片的引脚应该怎样连接。
除了已经要求必须要用到的主要芯片,还需要找出一些辅助芯片,看究竟用哪一个芯片,能够是连接的电路图能够更加的简介。
在画硬件电路图上我也遇到了问题,由于没有选修电子电路CAD那门课,我一开始对Protel软件完全不熟悉,所以开始完全不知道图怎么画,最后请教的同学,他们教我怎样选择芯片、怎样选择一些元器件、怎样连接试图看起来更加清晰。
在Protel 软件里面所有芯片内部的接Vcc的引脚和接地的引脚都没有显示,再此加以说明。
在实现功能的时候自己也遇到了一些麻烦,比如我们一般做试验的时候,实验室里面不需要我们对如何实现8086芯片的功能进行连线,只需把相应的数据总线等与其他的芯片连接起来即可,且许多芯片的内部已经接好,不需要我们另外连接。
在该课程设计中模拟量是0~5V,我在这里在ADC0809的ref(+)和ref(-)端分别接+5V和地,在在它们之间接一个滑动变阻器来实现。