《微机原理课程设计.doc》由会员分享,可在线阅读,更多相关《微机原理课程设计.doc(15页珍藏版)》请在三一文库上搜索。
1、项目一 8279键盘显示设计一.要求 编写程序,以8279为键盘显示核心,按下小键盘0F,在实验机上LED数码管上对应显示0F,按实验机上暂停键结束。二.目的1.学习在88系统中扩展键盘显示接口的方法。2.学习8279接口芯片的编程。三.电路连线8279键盘显示电路连线图如图1所示。图1 8279键盘显示电路连线图CS8279已固定接至238H孔,模块中的十个短路套都套8279侧。一、 8279的功能及工作原理 8279是Intel公司生产的通用可编程键盘和显示器IO接口部件。利用8279,可实现对键盘显示器的自动扫描,并识别键盘上闭合键的键号,不仅可以大大节省CPU对键盘显示器的操作时间,从
2、而减轻CPU的负担,而且显示稳定,程序简单,不会出现误动作,由于这些优点,8279芯片日益被设计者所采用。1 8279的引脚及内部结构8279的引脚如图1所示。8279主要由下列部件组成,各部件的作用以及引脚的作用如下: (1) IO控制和数据缓冲器 双向的三态数据缓冲器将内部总线和外部总线DBo DB7,用于传送CPU和8279之间的命令,数据和状态。 为片选信号。当为低电平时,CPU才选中8279读写。 A。用以区分信息的特性。当A。为1时,CPU写入8279的信息为命令,CPU从 8279读出的信息为8279的状态。当A。为0时,IO信息都为数据。图1 8279的引脚图 (2) 控制逻辑
3、 控制与定时寄存器用以寄存键盘及显示器的工作方式,锁存操作命令,通过译码产生相应的控制信号,使8279的各个部件完成一定的控制功能。 定时控制含有一些计数器,其中有一个可编程的5位计数器,对外部输入时钟信号进行分频,产生100kHz的内部定时信号。外部时钟输入信号的周期不小于500ns。 (3) 扫描计数器 扫描计数器有两种输出方式。一种为外部译码方式(也称编码方式),计数器以二进制方式计数,4位计数状态从扫描线SL。SL3输出,经外部译码器译码出16位扫描线,另一种为内部译码方式(也称译码方式),即扫描计数器的低二位经片内译码器译码后从SL。一SL3输出。 (4) 键输入控制 这个部件完成对
4、键盘的自动扫描,锁存RL。RL7的键输入信息,搜索闭合键,去除键的抖动,并将键输入数据写入内部先进先出(FIFO)的存储器RAM。(5)FIFO RAM和显示缓冲器RAM 8279具有8个先进先出(FIFO)的键输入缓冲器,并提供16个字节的显示缓冲器RAM。 8279将段码写入显示缓冲器RAM,8279自动对显示器扫描,将其内部显示缓冲器RAM中的数据在显示器上显示出来。 IRQ为中断请求输出线,高电平有效。当FIFO RAM缓冲器中存有键盘上闭合键的编码时,IRQ线升高,向CPU请求中断,当CPU将缓冲器中的输入键的数据全部读取时,中断请求线下降为低电平; SHIFT、CNTLSTB为控制
5、键输入线,由内部拉高电阻拉成高电平,也可由外部控制按键拉成低电平。 RL。RL7为反馈输入线,作为键输入线,由内部拉高电阻(或称为上拉电阻)拉成高电平,也可由键盘上按键拉成低电平。 SL。SL3为扫描输出线,用于对键盘显示器扫描。 OUT B。-3、OUTA。-3为显示段数据输出线,可分别作为两个半字节输出,也可作为8位段数据输出口,此时OUTB。为最低位,OUTA3为最高位。 BD为消隐输出线,低电平有效,当显示器切换时或使用显示消隐命令时,将显示消隐。 RESET为复位输入线,高电平有效。当RESET输入端出现高电平时,8279被初始复位。 2 8279的操作命令字 CPU通过对8279编
6、程(将命令字写入8279)来选择其工作方式。8279的操作命令字简述如下: (1) 键盘显示器方式设置命令字 D7 D6 D5 D4 D3 D2 D1 D0000DDKKK高三位D7D6D5位为特征位000,D4D3两位用来设定显示方式,其定义如下:D4 D3显示方式0 08个字符显示左边输入0 116个字符显示左边输入1 08个字符显示右边输入1 116个字符显示右边输入 8279最多可用来控制LED显示器显示16位,当显示位数超过8位时,均须设定为16位字符显示。显示器的每一位对应一个8位的显示缓冲器RAM单元。CPU将显示数据写入缓冲器时有左边输入和右边输入两种方式。左边输入是较简单的方
7、式,地址为015的显示缓冲器RAM单元分别对应于显示器的0(左)位15(右)位。CPU依次从0地址或某一个地址开始将段数据写入显示缓冲器。当16个显示缓冲器都已写满时(从0地址开始写,写了16次),第17次写,再从0地址开始写入。 右边输入方式是移位输入方式,输入数据总是写入右边的显示缓冲器,数据写入显示缓冲器后,原来缓冲器的内容左移一个字节,原最左边显示器缓冲器的内容被移出。 在右边输入方式中,显示器的各位和显示缓冲器RAM的地址并不是对应的。若选用内部译码的键扫描方式,字符显示器只接4位。D2D1D。为键盘工作方式选择位,如下表,D2 D1 D。操 作 方 式0 0 0外部译码键扫描方式,
8、双键互锁0 0 1内部译码键扫描方式, 双键互锁0 1 0外部译码键扫描方式, N键依次读出0 1 1内部译码键扫描方式,N键依次读出1 0 0外部译码扫描传感器矩阵方式1 0 1内部译码扫描传感器矩阵方式1 1 0选通输入方式,外部译码键扫描方式1 1 1选通输入方式,内部译码键扫描方式 当设定为外部译码工作方式时,内部计数器作二进制计数,四位二进制计数器的状态从扫描线SL。-SL3输出,然后在外部进行译码,最多可为键盘显示器提供16根扫描线(16选1)。 当设定为内部译码工作方式时,内部扫描计数器的低2位被译码后,再由SLoSL3输出,即此时SLoSL3已经是4选1的译码信号了。显然当设定
9、为译码方式时,扫描位数最多为4位。 双键互锁就是当键盘中同时有两个以上的按键被按下对,任何一个键的编码信息均不能进入FIFO RAM中,直至仅剩下一键保持闭合时,该键的编码信息方能进入FIFO,这种工作方式可以避免部分误操作信号进入计算机。 N键依次读出的工作方式时,各个键的处理都与其它键无关,按下一个键时,片内去抖动电路等待两个键盘扫描周期,然后检查该键是否仍按着。如果仍按着,则该键编码就送入FIFO RAM中。一次可以按下任意个键,其它的键也可被识别出来并送入FIFO RAM中。如果同时按下多个键,则按键盘扫描过程发现它们的顺序进行识别,并 送入FIFORAM中。 选通输入的工作方式时,R
10、Lo-7作为选通输入口,CNTLSTB作为选通信号输入端。这是只选用显示器没有键盘的工作方式。扫描传感器矩阵的工作方式,是指片内的去抖动逻辑被禁止掉,传感器的开关状态直接输入FIFO RAM中,虽然这种方式不能提供去抖动的功能,但有下述优点:CPU知道传感器闭合多久,何时释放,在传感器扫描的工作方式下,每当检测到传感器信号(开或闭)改变时,中断线上的IRQ就变为高电平,在外部译码扫描时,可对88矩阵开关状态进行扫描,在内部译码扫描时,可对48矩阵开关的状态进行扫描。(2) 时钟编程命令字 8279的内部定时信号由外部的输入时钟经过分频后产生,分频系数由时钟编程命令字确定,时钟编程命令字格式如下
11、: D7 D6 D5 D4 D3 D2 D1 D0001PPPPPD7 D6D5=001为时钟编程命令字的特征位。D4 D3 D2 D1 D0为分频系数,可在231次分频中进行选择,将进入8279的时钟频率进行N次分频后,可获得8279内部所需的100kHz的时钟。内部时钟频率的高低控制着扫描时间和键盘去抖动时间的长短,在8279内部时钟为100kHz时,则扫描时间为5.1ms,去抖动时间为10.3ms。如果进入 8279的时钟频率为2MHz,要获得100kHz的内部时钟信号,则需要20分频,即 PPPPP=10100B=20 (3) 读FIFO RAM命令字 D7 D6 D5 D4 D3 D
12、2 D1 D0010AIXAAA高3位010为特征位,该命令只在传感器方式时使用。在CPU读传感器RAM之前,必须用这条命令来设定传感器RAM中的8个地址(每个地址一个字节)。 D2 D1 D0 (AAA)为8个字节地址的起始地址,D4(AI)为多次读时的地址自动增量标志,在键扫描方式中;AI,AAA均被忽略,CPU读键输入数据时,总是按先进先出的规律读出,直至输入键全部读出为止。在传感器矩阵扫描中,若AI=1 CPU则从起始地址开始依次读出,每次读出后地址自动加1,而不必重新设置读FIFO/传感器RAM命令;AI=0时,CPU仅读出一个单元的内容。 在键盘工作方式中,由于读出操作严格按照先入
13、先出顺序,因此,不需使用这条命令。 (4) 写显示缓冲器RAM命令字 D7 D6 D5 D4 D3 D2 D1 D0100AIAAAA高3位100为该命令字的特征位,该命令给出了显示缓冲器RAM的地址信息,当CPU执行写显示缓冲器RAM时,首先用该命令字给出要写入的显示缓冲器RAM地址,四位二进制代码AAAA可用来寻址显示缓冲器RAM的16个存储单元。若AI=1,则CPU在第一次写入时须给出地址外,以后每次写入,地址自动加1,直至所有显示缓冲器RAM全部写毕。若AI=0,则每次写入时需要指出一个地址。实际上每一个显示缓冲器RAM单元对应着一个字符显示位。(5) 读显示缓冲器RAM命令字 D7
14、D6 D5 D4 D3 D2 D1 D0011AAAAA在CPU读显示数据(检查)之前必须先输出读显示缓冲器RAM的命令。D7 D6D5= 011是该命令字的特征位。四位二进制代码AAAA用来寻址显示缓冲器RAM的一个缓冲单元。AI为自动增量标志,若AI=1,则CPU每次读出后,地址自动加1。 (6) 显示屏蔽消隐命令字 D7 D6 D5 D4 D3 D2 D1 D0101XIWAIWBBLABLB高3位101为该命令字的特征位。IWA和IWB分别用以屏蔽A组和B组显示缓冲器RAM。在双4位显示器使用时,即OUTA0-3和OUTBo-3独立地作为两个半字节输出时,可改写显示缓冲器RAM中的低半
15、字节而不影响高半字节的状态(D3=1),反之 D2=1时可改写高半字节而不影响低半字节。 BL位是消隐特征位,要消隐两组显示输出,必须使D。、Dl同时为1,BL=0时则恢复显示。 (7) 清除命令字 D7 D6 D5 D4 D3 D2 D1 D0110CDCDCDCFCA该命令字用来消除FIFO RAM和显示缓冲器RAM。其中D4 D3 D2 (CD)三位用来设定消除显示缓冲器RAM的方式,其定义如下:CF(D1)位用来置空FIFO RAM,当D1=1时,执行清除命令后,FIFO RAM被置空,使中断输出线IRQ复位;同时传感器RAM的读出地址也被置0。D4 D3 D2 消除显示缓冲器RAM的
16、方式1 0 X将显示RAM全部清01 1 0将显示RAM全部消20H1 1 1将显示RAM全部置10 X X不清除 CA(Do)是总清除的特征位,它兼有CD和CF的联合效用。当CA=1时,对显示RAM的清除方式由D3和D2的编码确定。清除显示缓冲揣RAM大约需100s时间,在此时间,CPU不能向显示缓冲器ARM写入数据。(8)结束中断/错误方式设置命令3状态字节 8279的状态字节用于键输入和选通输入方式中,指出FIFO RAM中的字符个数和是否出错,状态字的格式如下: D7 D6 D5 D4 D3 D2 D1 D0DUS/EOUFNNN D2 D1 D0表示FIFO RAM中数据的个数。 D
17、3在F=1时,表示FIFORAM已满(存有8个键入数据)。 D4在FIFO RAM中没有输入字符时,CPU对FIFO RAM读则置“1”。 D5当FIFO已满,又输入一个字符时发生溢出置“1”。 D6的SE用于传感器矩阵输入方式,几个传感器同时闭合时置“1”。 D7在清除命令执行期间该位为“1”,D7为1时对显示RAM写操作无效。 4 输入数据格式 在键扫描方式中,键输入数据格式如下: D7 D6 D5 D4 D3 D2 D1 D0CNHLSHIFTSCANSCANSCANRETURNRETURNRETURN D2D0指出输入键所在的列号(RL0-7状态确定)。 D5D3指出输入键所在的行号(
18、扫描计数值)。 D6控制键SHIFT的状态。(内部上拉,按下为0)D7控制键CNTL的状态, (内部上拉,按下为0) 控制键CNTL,SHIFT为单独的开关键。CNTL与其它键连用作特殊命令键,SHIFT可作为上下档控制键。当SHIFT接按键(对地),可与键盘(8x 8)配合,使键盘各键具有上、下键功能,这样键盘可扩充到128个键。CNTL线可接一键用作控制键,这样,最多可扩充到256键。在传感器扫描方式或选通输入方式中,输入数据即为RL0RL7的输入状态。 D7 D6 D5 D4 D3 D2 D1 D0RL7RL6RL5RL4RL3RL2RL1RL。程序框图 按程序流程图2编制实验程序,输入
19、源程序, 汇编、链接程序,执行程序,检查结果。图2 程序流程图Z8279 EQU 239HD8279 EQU 238HLEDMOD EQU 00 ;左边输入,八位显示外部译码八位显示LEDFEQ EQU 38H ;扫描频率CODE SEGMENTASSUME CS:CODE,DS:CODESTART: ;初始化 PUSH CS POP DS MOV DX,Z8279 MOV AL,LEDMOD OUT DX,AL MOV AL,LEDFEQ OUT DX,AL MOV DX,D8279 MOV AL,7FH OUT DX,AL MOV DX,D8279 MOV AL,7FH OUT DX,AL
20、 MOV DX,D8279 MOV AL,7DH OUT DX,AL MOV DX,D8279 MOV AL,7FH OUT DX,AL MOV DX,D8279 MOV AL,70H OUT DX,AL MOV DX,D8279 MOV AL,5EH OUT DX,AL MOV DX,D8279 MOV AL,79H OUT DX,AL MOV DX,D8279 MOV AL,77H OUT DX,AL ;以上为写(AEDK8688) NOP MOV DX,Z8279 MOV AL,0C2H OUT DX,AL ;置空FIFO寄存器 WAIIT: NOP IN AL,DX MOV BL,AL
21、 AND AL,80H CMP AL,80H JE WAIIT ;FIFO正在清除期间则跳转等待 MOV AL,BL AND AL,0FH CMP AL,00H JE WAIIT ;无键按下则等待 MOV AL,40H ;写 读FIFO RAM命令字 OUT DX,AL MOV DX,D8279 ;读入FIFO RAM内容 IN AL,DX NOP CMP AL,15H ;是结束符则结束 JE FINI NOP ;查表,将键码放入AL中 LEA BX,LED XLAT MOV DX,D8279 ;将AL中内容写到数码管上 OUT DX,AL MOV DX,Z8279 ;清FIFO RAM寄存器
22、 MOV AL,0C2H OUT DX,AL JMP WAIIT ;等待下一次键输入FINI: MOV DX,Z8279 ;清FIFO寄存器并关蜂鸣器 MOV AL,0C2H OUT DX,AL JMP $LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H DB 5EH,79H,71H CODE ENDSEND START 温度控制程序CSAD EQU 208HZ8279 EQU 239HD8279 EQU 238HZ8255 EQU 21EHZ8255A EQU 218HZ8255C EQU 21CHLEDMOD EQU 00
23、 ;左边输入,八位显示外部译码八位显示LEDFEQ EQU 38H ;扫描频率LEDCLS EQU 0C1H;清除显示RAMREADKB EQU 40HCOUNT EQU 8CODE SEGMENTASSUME CS:CODE,DS:CODESTART: PUSH CS POP DS ;指定SI到8100:1000,存放临时温度值 MOV SI,1000H MOV DX,Z8255 ;设置A口为输入,C口为输出 MOV AL,92H OUT DX,AL MOV DX,Z8255C MOV AL,0FFH OUT DX,AL CALL DELAY CALL DELAY MOV DX,Z8279
24、;初始化8279 MOV AL,LEDMOD OUT DX,AL MOV AL,LEDFEQ OUT DX,AL MOV AL,LEDCLS OUT DX,AL MOV AL,0 MOV SI,ALBEGIN: MOV BX,0 MOV CL,COUNT MOV CH,0BB: MOV DX,CSAD ;采样A/D值 MOV AX,0 OUT DX,AL CALL DELAY IN AL,DX ADC BX,AX ;求平均值 LOOP BB MOV AX,BX RCR AX,1 RCR AX,1 RCR AX,1 CALL CHANGTOBCD ;转化为十进制的温度值 PUSH AX CALL
25、 DIS CALL SET_T POP AX MOV BL,SI CMP AL,BL JA DOWN ;输入值与实际值比较,小于则加热,大于则停止加热 MOV AL,0H JMP UPDOWN: MOV AL,40HUP: MOV DX,Z8255C OUT DX,AL JMP BEGINSET_T PROC NEAR CALL READ_KEY CMP AL,0 JNZ THE_KEY JMP IN_ENDTHE_KEY: MOV AL,BL CMP AL,0DH ;IF BEING DKEY, START TO SET JZ ST_K JMP IN_ENDST_K: CALL READ_K
26、EY CMP AL,0FFH JNZ ST_K %H: MOV AL,BL MOV CH,BL CMP AL,0AH JNC ST_K CALL DIS_CHAR1ST_L: CALL READ_KEY CMP AL,0FFH JNZ ST_L%L: MOV AL,BL MOV CL,BL CMP AL,0AH JNC ST_L CALL DIS_CHAR2RD_E: CALL READ_KEY CMP AL,0FFH JNZ RD_E MOV AL,BL CMP AL,0EH JNZ RD_EEND_ST: MOV AL,CH MOV BL,CL MOV CL,4H ROR AL,CL AD
27、D AL,BL MOV SI,ALIN_END: RETSET_T ENDPREAD_KEY PROC NEAR MOV DX,Z8279 IN AL,DX ;读8279状态 AND AL,07H ;屏蔽D7-D3 JNZ GETVAL ;判断是否有键输入 MOV AL,0H ;置标志(无键输入) JMP NKBHITGETVAL: MOV AL,READKB ;读 FIFO RAM 命令 OUT DX,AL MOV DX,D8279 IN AL,DX ;读键 AND AL,3FH ;屏蔽 SHIFT 和 CTRL 键 MOV BL,AL ;置返回键值 MOV AL,0FFH ;置标志(有键输
28、入)NKBHIT: RET READ_KEY ENDPDELAY PROC NEAR PUSH CX MOV CX,0F00H LOOP $ POP CX RET DELAY ENDPCHANGTOBCD PROC NEAR ;BCD码转换子程序 MOV BL,3 MUL BL MOV BL,10 DIV BL AAM ;非压缩BCD码乘法调整指令 MOV BL,AL MOV AL,AH MOV CL,04H ROR AL,CL XOR AL,BL RETCHANGTOBCD ENDPDIS_CHAR1 PROC NEAR PUSH AX MOV DX,Z8279 MOV AL,91H OUT
29、 DX,AL POP AX LEA BX,LED XLAT MOV DX,D8279 OUT DX,AL RETDIS_CHAR1 ENDPDIS_CHAR2 PROC NEAR PUSH AX MOV DX,Z8279 MOV AL,90H OUT DX,AL POP AX LEA BX,LED XLAT MOV DX,D8279 OUT DX,AL RETDIS_CHAR2 ENDPDIS PROC NEAR ;显示子程序 MOV BL,AL ;将AL中内容写到数码管上 AND AL,0FH PUSH AX MOV DX,Z8279 MOV AL,96H OUT DX,AL POP AX
30、PUSH BX LEA BX,LED XLAT POP BX MOV DX,D8279 OUT DX,AL CALL DELAY MOV AL,BL MOV CL,04H ROR AL,CL AND AL,0FH LEA BX,LED XLAT MOV DX,D8279 OUT DX,AL CALL DELAY CALL DELAY RET DIS ENDPLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H CODE ENDSEND START小结项目二 温度控制设计要求编制程序,将温度控制在某一设定值。目的学会温度控制的一种方
31、法。电路及连线温度控制电路连线图如图3所示。图3 温度控制电路连线图T-DETECT接0809的IN0 口,T-CON接8255的PC6。CS0809接208H, CS8279已固定接至238H。,CS8255接218H。温度通过AD590温度传感集成芯片,将温度变化量转换成电压值变化量,经过OP07一级跟随后输入到电压放大电路,放大后的信号输入到A/D转换器将模拟信号转换成数字信号,利用CPU采集并存储采集到的数据。 在上图中,W8为放大倍数调节电位器,系统出厂时已设定好,用户不要随意调节;W7(图中未标出)为测温系统零点调节,用户可以调节系统零点。设定温度为0摄氏度时变换放大电路送出的模拟
32、量为0V,此时A/D输出的数字量为00H;温度为76.5摄氏度时变换放大电路送出4.9805V电压,此时A/D输出的数字量为FFH,即每0.3摄氏度对应1LSB变化量。编写程序使用八段数码管显示当前的温度。可以对比温度计的显示值和数码管的显示值。平台出厂时已依据标准调整好了放大器的增益和零位。应注意,由于热惯性的影响及温度计显示的滞后因素,若要精确观察某温度点的测量值,在加热到观察温度点后,应停止加热,等待温度计示值稳定后,再观察记录结果。若选区观察点温度较高,还应相应延长等待时间。 需要说明的是,由于温度计和温度采样芯片AD590的采样点不同,理论计算值同显示值略有偏差。平台利用IC温度传感
33、器AD590作为测温器,AD590是AD公司生产的一种精度和线性度较好的双端集成温度传感器,其输出电流与绝对温度有关,对于电源电压从5-10V变化只引起1A最大电流的变化或1摄氏度等效误差。图4 温度传感部分 图4给出了用于获得正比于绝对温度的输出电流的基本温度敏感电路,当温度有10的变化时输出电压变化为20mV,即该电路M点电压随温度变化为2mV/。将温度传感器输出的小信号跟随放大32倍左右后,送至8位A/D转换器转换成数字量,编制程序,微控制器采集、显示和控制温度。当温度超过报警温度76.5摄氏度时报警,此时,输出电压约为5.0V左右。通过电压比较器接通硬件报警电路报警。输入A/D的模拟信号有过压保护,不会损坏A/D转换器。在实验平台硬件中,已有安全设计,即加热温度不会超过90。程序框图按程序流程图5编制程序,输入源程序, 汇编、链接程序,执行程序,检查结果。 开 始 初始化子程序 设置温度 加 热 显示温度设置温度大于实际温度 停止加热YN图5程序流程图
链接地址:https://www.31doc.com/p-5022447.html