1、CPU 和接口之间 的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0-基本输入/出方式、方式1-选通输入/出方式、方式2-双向选通工作方式。8255的内部结构及引脚如图6-4所示:图3.1 8255内部结构及引脚ADC0809主要功能AD0809具有8个通道的模拟输入线(IN0IN7),可在程序控制下对任意通道进行A/D转换,获得8位二进制数字量(D7D0)。模拟输入部分有8路多路开关,可由3位地址输入ADDA、ADDB、ADDC的不同组合来选择,ALE为地址锁存信号,高电平有效,锁存这三条地址输入信号。主体部分是采用逐次逼
2、近式的A/D转换电路,由CLK控制的内部电路的工作,START为启动命令,高电平有效,启动ADC0809内部的A/D转换,当转换完成,输出信号EOC有效,OE为输出允许信号,高电平有效,打开输出三态缓冲器,把转换后的结果送DB。ADC0809的内部结构和引脚如图3.3所示:图3.3 内部结构和引脚 七段LED显示器及其接口七段LED显示器:由七个发光段构成,每段均为1个LED二极管。通过控制不同段的点亮和熄灭,显示出16进制数字或字符。七段LED显示器有共阳极和共阴极两种结构,如图6-3所示的七段LED实际上包含8个LED(7段字形加上小数点DP)。1位LED显示器有1根位选线和8根段选线,段
3、选线控制字符的选择,位选线控制显示位的亮和暗。图3.4七段LED显示2.实验电路及连接 LED显示电路和键盘电路实验仪上已接好。原理图见图1。 A/D变换电路只要接上模拟量输入和地址选择信号即可。图1连接孔1连接孔21AD_CSCS22IN0电位器输出38255_CSCS04PA0L05PA1L16KEY/LED_CSCS1四、实现方法1.实验程序框图A/D采样子程序框图2.程序源代码mode equ 082h ; 方式0,PA,PC输出,PB输入PortA equ 8000h ; Port APortB equ 8001h ; Port BPortC equ 8002h ; Port CCA
4、ddr equ 8003h ; 控制字地址ADPort equ 0a000h ; AD采样输入片选CS273 equ 0a000h ; 控制输出片选UP equ 16h ; NextDOWN equ 15h ; LastLowLimit equ 10HighLimit equ 30LowTemp equ -45 ; A/D 0HighTemp equ 55 ; A/D 255Heat equ 1 ; 加热控制Cool equ 2 ; 致冷控制OUTBIT equ 09002h ; 位控制口OUTSEG equ 09004h ; 段控制口IN_KEY equ 09001h ; 键盘读入口data
5、 segmentLEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(? 显示的数据DelayT db 1 dup(?)CurTemp db 1 dup(?SetTemp db 1 dup(?PortABuf db 1 dup(?LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hKeyTable: 键码定义 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0
6、bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hdata endscode segment assume cs:code, ds:dataDelay proc near push ax ; 延时子程序 push cx mov al, 0 mov cx,ax loop $ pop cx pop ax retDelay endpDisplayLED proc near mov bx, offset LEDBuf mov cl, 6 ; 共6个八段管 mov ah, 00100000b ; 从左边开始显
7、示DLoop: mov dx, OUTBIT out dx,al ; 关所有八段管 mov al, bx mov dx, OUTSEG out dx,al mov al, ah out dx, al ; 显示一位八段管 push ax mov ah, 1 call Delay shr ah, 1 inc bx dec cl jnz DLoopDisplayLED endpTestKey proc near 输出线置为0 mov dx, IN_KEY in al, dx ; 读入键状态 not al and al, 0fh ; 高四位不用TestKey endpGetKey proc near
8、mov ch, 00100000b mov cl, 6KLoop: mov al, ch ; 找出键所在列 out dx, al shr ch, 1 in al, dx and al, 0fh jne Goon_ ; 该列有键入 jnz KLoop mov cl, 0ffh ; 没有键按下, 返回 0ffh jmp Exit1Goon_: dec cl shl cl, 2 ; 键值 = 列 X 4 + 行 mov ch, 4LoopC: test al, 1 jnz Exit1 shr al, 1 inc cl dec ch jnz LoopCExit1: mov ch, 0 mov bx,
9、offset KeyTable add bx, cx mov al, bx ; 取出键码 mov bl, alWaitRelease: 等键释放 mov ah, 10 call TestKey jne WaitRelease mov al, blGetKey endp; =DisplayResult proc near mov al, CurTemp test al, 80h jz GE0 mov LEDBuf, 40h ; - dec al jmp GoonGE0: mov LEDBuf, 0 ;Goon: mov cl, 10 mov ah, 0 div cl mov bh, 0 add
10、bx, offset LEDMAP mov LEDBuf+1, al mov bl, ah mov LEDBuf+2, al mov LEDBuf+3, 0 ; mov al, SetTemp mov LEDBuf+4, al mov LEDBuf+5, alDisplayResult endpReadAD proc near mov dx, ADPort mov al, 60rr: dec al ; delay jnz rrReadAD endpReadTemp proc near mov bx, 0 mov cl, 16RLoop: call ReadAD add bx, ax jnz R
11、Loop shr bx, 4 mov ax, bx mov cl, HighTemp - LowTemp mul cl mov al, ah ; /256 add al, LowTemp mov CurTemp, alReadTemp endpStart proc near mov ax, data mov ds, ax mov al, mode mov dx, CAddr 输出控制字 mov SetTemp, 20MLoop: jne KeyPressed call DisplayResult call DisplayLED call ReadTemp cmp CurTemp, al jge
12、 GN2 or PortABuf, Heat and PortABuf, not Cool jmp GN4GN2: inc al jle GN3 or PortABuf, Cool and PortABuf, not HeatGN3: and PortABuf, not (Cool+Heat)GN4: mov dx, PortA mov al, PortABuf jmp MLoopKeyPressed: call GetKey cmp al, DOWN jne Key0 cmp SetTemp, LowLimit je Key1 dec SetTemp jmp Key1Key0: cmp al
13、, UP jne Key1 cmp SetTemp, HighLimit inc SetTempKey1:start endpcode ends end start五、实施结果1操作步骤1).按照电路图链接电路,完成电路链接。2).打开计算机电源,执行WAVE集成调试程序源代码。3).执行程序源代码,改变电位器,进行实验并记录实验结果。2运行结果调整电位器,LED显示温度范围在-39到49,分辨率为2。当采集的温度值超过设定温度时,能点亮发光二极管。小于设定温度-2时显示绿色;温度超过设定温度+2,显示红色灯;温度在设定温度-/+2以内显示灯熄灭,表示温度。按键盘向上键,LED显示设定温度+1
14、,按向下键LED显示设定温度-1。六、改进意见及建议这次设计基本的完成了课程设计的要求,实现了温度的采集及显控制示。通过测试表明系统的设计是正确的,可行的。但是由于设计经验和知识水平有限,系统还存在许多不足和缺陷。改进意见:在原有的设计中可以加入了报警,如果所设计的系统是监控某一设备,当设备的温度达到我们所设定的温度值时,系统会产生报警.。报警时驱动扬声器发出声音,以便操作员来维护,从而达到报警的目的。七、设计体会在此次课程设计过程中,我经历了失败的痛苦,也尝到了成功的喜悦。同时也检查了自己的知识水平,使我对自己有一个全新的认识。而且我在巩固了平时所学习的知识的同时,也通过不断查阅相关资料,学
15、习新的知识。通过此次课设,我明白了很多,理论指导实践,但是理论也需要实践给予证明,凡事都要通过自己的思考推敲,否则自己不会取的大的进步。而且在平时的学习生活中,应该多和周围的同学相互学习,交流经验。遇到不会的问题时,切忌焦躁!首先要经过自己的独立思考,有了一定想法后,可以去查找相关的资料书刊或者找同学讨论。在遇到问题,解决问题的过程中,不断加强自我的动手,动脑能力,也只有这样,在思路清晰,条理顺畅的时候,再去进行软件编写和硬件操作工作,才有可能起到事半功倍的效果。这次课程设计,不仅锻炼我的分析问题、处理问题的能力,还提高了自己的动手能力以及沟通协作的能力。也让我更加明确了日后的学习目标,那就是学东西一定要扎实,绝不能一知半解。这次课程设计使我受益匪浅,在课程设计中,培养的能力和锻炼对于我今后的学习和生活来说,是很重要的经历与经验,它将积极地影响我。 (注:可编辑下载,若有不当之处,请指正,谢谢!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1