1、占空比可调的脉冲发生器沈阳航空航天大学课 程 设 计 报 告课程设计名称:微机系统综合课程设计课程设计题目:占空比可调的脉冲发生器院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:指导教师:张维君完成日期:2012年7月15日第1章 总体设计方案1.1课程设计的内容和要求一、课程设计内容:具体内容如下:1. 用8255和8253产生脉宽可调的脉冲信号;2. 用实验箱上键盘中的两个按键调节脉冲;3. 按脉宽增加键脉宽逐渐增大,按脉宽减小键脉宽逐渐减小;二、课程设计要求:1. 认真查阅相关资料;2. 独立设计、调试并通过指导教师现场验收;3. 撰写课程设计报告。1.2 课程设计原
2、理根据课设要求,要实现通过键盘按键调节脉宽的脉冲信号发生器。本次设计中主要使用了8259可编程中断控制器,8255可编程并行接口芯片,8279键盘/显示芯片,8253定时/计数器以及部分连线来实现以上功能。利用8253芯片产生一定频率的脉冲信号,并用8255芯片以程序查询方式,检测该信号上高、低电平的持续时间,还要利用8259芯片的中断信号扫描信号,通过改变高电平的持续时间来调节占空比。最后,应用8279芯片将结果显示到数码管上。1.3 方案设计根据本次课程设计要求,用8253芯片计数器0产生低频率的方波信号,然后叠加一个矩形波,使之成为一个改变分频就可以改变占空比的矩形波。再将该矩形波作为计
3、数器1产生的输入信号,使计数器1产生脉宽可调的脉冲信号,并把该脉冲信号接到8255的一个引脚(PB0),运用程序查询方式循环检测这个引脚高、低电平持续时间。利用芯片8259的中断功能循环扫描芯片8253计数器1的分频数,通过分频数计算占空比的值。在BX中存放分频数 NUM,在CX中存放(NUM-1)。然后,将BX中的数扩大100倍,再除以CX中的值,以此来计算出被扩大100倍后的占空比;接下来就是显示正确的占空比,将前面得到的准占空比除以10,再将AH中的结果存到CH中,将AL中的结果存到CL中,最后,由8279芯片将最终结果显示到数码管上。1.4 方案论证通过仔细阅读课程设计任务书,对本次课
4、程设计所要完成的题目和要求要充分理解,从以下两方面进行方案论证。 对预设使用的芯片进行论证8253可编程定时/计数器的功能:一是作为计数器,即在设置好计数初值后,便开始对外部脉冲作减1操作,当减为0时,输出一个信号;二是作为定时器,在设置好定时参数后,便开始对外部信号作减1操作,并按定时常数不断地输出为时钟周期整数倍的定时间隔。8255A是可编程并行输入输出接口芯片,具有三个8位并行端口,40个引脚,双列直插式封装。有三种输入输出方式,用于输出给定信号。8259A是可编程中断控制器芯片,用于管理和控制80x86的外部中断请求,坑人可实现中断优先级判定,提供中断信号,屏蔽中断输入等功能。8279
5、是可编程键盘/显示接口芯片。它的功能主要包括键盘输入和显示控制部分,其中键盘部分提供扫描功能。显示部分则是提供扫描方式的显示接口,可与8位或16位LED数码管连接构成。 对预设计的程序进行论证用小灯测试8253芯片产生的脉冲信号的频率,已达到设计中所要求的低频率信号。逐步测试数据采集模块,计算占空比模块,显示模块。经过认真仔细论证,证明所提出的方案切实可行。1.5设计环境软件环境:LCT88EA应有软件、Win2000、PC机硬件环境:AEDK实验箱第2章 详细设计方案2.1 模块设计1. 主模块:在主程序中,主要实现各个芯片的初始化,将8253芯片的计数器0设置为工作方式3,低8位读写,二进
6、制计数方式,使其输出方波在与一个矩形波叠加产生新的矩形波。,再将该矩形波作为计时器1的输入信号,并将计数器1设置为工作方式2,低8位读写,十进制计数方式,使计数器1产生低频率符合要求的脉冲信号;2. 数据结构部分:用BX寄存器存储当前的分频数,用CX寄存器存储当前分频数减一数。在内存中开辟了一个字节空间DISBUF,用来存放每种模式所要显示的结果在TAB表中的编码,在中断服务程序中通过按照这个空间中的8个编码查表显示数码管上所要显示的结果。3. 数据采集模块:采用程序查询方式,循环检测8253芯片计数器1的分频状态。记录当前分频数NUM,并保存到BX寄存器。4. 计算占空比模块:将BX中的数减
7、一得到的数存入CX中,然后,将BX中的数乘以100,再除以CX中的值,以此来计算出被扩大100倍后的占空比;接下来就是显示正确的占空比,将前面的到的准占空比除以10,再将AH中的结果存到CH中,将AL中的结果存到CL中。5. 显示模块:根据CH、CL中的值,由8279芯片查表后将对应的数据显示到数码管上,以得到最后的正确结果。2.2 程序流程图本次设计的主流程图如图2.2.1所示;采集数据模块流程图如图2.2.2所示;计算占空比模块流程图如图2.2.3所示;显示占空比模块流程图如图2.2.4所示。 图2.2.1 占空比测量的主流程图 图2.2.2 数据采集模块流程图 图2.2.3 计算占空比模
8、块流程图图2.2.4 显示模块流程图2.3 硬件连线图本次设计用到四个芯片,分别是8259可编程中断控制器,8255可编程并行接口芯片,8279键盘/显示芯片,8253定时/计数器。其中8255芯片的A、B、C端口及控制端口的地址为分别为200H,201H,202H,203H;键盘/显示芯片8279的数据端口地址为210H,控制端口地址为212H;定时/计数器芯片8253的端口地址为228-22BH。芯片8259的端口地址为220H具体连接情况如图2.2所示。图2.2 硬件连线图第3章 调试及结果分析3.1 调试步骤及方法在开始的时候,每次都没有结果显示。于是通过单步调试,通过查看各个寄存器中
9、的值,来验证各模块是否正常跳转以及模块的正确性。结果,在数据中断中没有中断产生。经过调试,可以正常显示预定的占空比的值,但是无法对占空比进行调节。经过思考发现,问题出在数据显示模块,每次显示完第一次预定的值以后没有对数码管进行清空,所以显示出现问题。之后,修改程序,在每次显示之前对数码管进行清空操作。问题得到解决。进一步修改,在计算模块中,将BX寄存器中的值乘以100后得到的结果存到AX寄存器中,用DX:AX做被除数,防止因BX中数值过大而使AL寄存器产生溢出而得到的不正确的结果。修改后,再次测试,则可以得到稳定而且正确的结果,误差很小。3.2 实验结果本设计已经基本满足任务书的要求。现将结果
10、简单介绍如下:1. 当将计数器1的初值赋为5,即产生五分频的脉冲信号时,数码管显示结果为0.80;2. 当按下实验箱上的”+”时,显示的占空比值增加,向1逼近。3. 当按下实验箱上的”-”时,显示的占空比值减小。向0.5逼近。3.3 结果分析由实验结果可知,由8253产生的方波最小的占空比的值为0.5。方波和矩形波叠加之后应该可以产生占空比小于0.5的值,但是此程序没有实现这个功能,有待提高。参考文献1 龚尚福.微机原理与接口技术M.西安:西安电子科技大学出版社,20032 王忠民.微型计算机原理M. 西安:西安电子科技大学出版社,20033 沈美明,温冬婵. IBM-PC汇编语言程序设计M.
11、北京:清华大学出版,2001附 录(源程序)TIM_CTL EQU 22bHTIMER0 EQU 228HTIMER1 EQU 229HTIMER2 EQU 22AHPC8255 EQU 203HPC8255C EQU 202HPC8255B EQU 201HZ8279 EQU 212HD8279 EQU 210HLEDMOD EQU 00H ;左边输入,八位显示外部译码八位显示CODE SEGMENTASSUME CS:CODESTART: JMP S NUM DB 5S: cli MOV DX,Z8279 ;置空FIFO寄存器 MOV AL,0c2H OUT DX,AL CALL INIT
12、8253 CALL INIT8259 MOV DX,TIM_CTL MOV AL,00010110B ;计数器0,低8位读写,工作方式3,二进制 OUT DX,AL MOV AL,00000101B MOV DX,TIMER0 OUT DX,AL MOV DX,TIM_CTL MOV AL,01010101B ;计数器1,低8位读写,工作方式2,十进制 OUT DX,AL MOV AL,NUM MOV DX,TIMER1 OUT DX,AL MOV DX,PC8255 MOV AL,10000010B ;A方式0,输出 B方式0,输入 C输出 OUT DX,AL MOV DX,PC8255B
13、MOV BX,0 MOV CX,0 CALL DISPLAY mov dx,223h out dx,al mov al,30h out dx,al STI JMP $A1: NOP JMP A1INIT8259: MOV AL,13H MOV DX,220H OUT DX,AL MOV DX,221H MOV AL,30H OUT DX,AL MOV AL,03 OUT DX,AL MOV AL,0FEH ;ocw1 OUT DX,AL IN AL,DX MOV AX,0 MOV DS,AX MOV SI,30H*4 MOV AX,OFFSET INTR1 MOV SI,AX MOV AX,C
14、S MOV SI+2,AX retINIT8253: push AX MOV DX,TIM_CTL MOV AL,00010110B ;计数器0,低8位读写,工作方式2,二进制 OUT DX,AL MOV AL,00000101B MOV DX,TIMER0 OUT DX,AL MOV AL,10110101B MOV DX,TIM_CTL OUT DX,AL MOV AX,6144 MOV DX,TIMER2 OUT DX,AL MOV AL,AH OUT DX,AL POP AX RET intr1: call readkey CMP AL,12H ;是减小 JE down CMP AL,
15、13H JE up iretDOWN: JMP AUP: INC NUM INC NUM JMP A RETA: MOV DX,Z8279 ;置空FIFO寄存器 MOV AL,0c2H OUT DX,AL CALL DISPLAY IRETreadkey: MOV DX,Z8279 ;置空FIFO寄存器 MOV AL,0C2H OUT DX,AL WAIIT: NOP MOV AX,0 IN AL,DX MOV BL,AL AND AL,80H CMP AL,80H JE WAIIT ;FIFO正在清除期间则跳转等待 MOV AL,BL AND AL,0FH CMP AL,00H JE WAI
16、IT ;无键按下则等待 MOV DX,Z8279 MOV AL,82H ;置 读FIFO RAM命令字 OUT DX,AL MOV DX,D8279 ;读入FIFO RAM内容 IN AL,DX ret DISPLAY: MOV CX,00H MOV BX,00H MOV DX,0 MOV CL,NUM DEC NUM MOV BL,NUM MOV AX,100 MUL BX DIV CX MOV CL,10 DIV CL MOV CH,AH ;个位 MOV CL,AL ;十位 PUSH CS POP DS MOV DX,Z8279 ;置空FIFO寄存器 MOV AL,0C2H OUT DX,
17、AL MOV DX,Z8279 MOV AL,LEDMOD OUT DX,AL MOV AL,90H OUT DX,AL MOV AL,CH LEA BX,LED XLAT MOV DX,D8279 OUT DX,AL ;显示个位 MOV AL,CL LEA BX,LED XLAT MOV DX,D8279 OUT DX,AL ;显示十位 MOV AL,10111111b MOV DX,D8279 OUT DX,AL ;显示小数点RETLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39HDB 5EH,79H,71H CODE EN
18、DSEND START课程设计总结:上个学期的微机原理课程结束以后,对所学的知识朦朦胧胧,缺乏实践的考验。通过本次课程设计,我对微机原理的理论知识有了更加深刻的理解,增强了动手能力。对所学的各芯片,尤其是8259,8253,8255, 8279这四个芯片的结构、功能和使用方法有了更加清晰的认识。通过编写和调试程序,我也进一步熟悉了所用的编程环境LCT88EA应用软件和AEDK实验箱的功能和使用方法。为以后进一步学习微机原理、汇编语言和硬件相关知识打下了很好的基础。通过这次课程设计,我发现了我在以前学习中的缺点和不足,比如对芯片的相关命令和使用方法还不够熟练;在课设中我还学会了8279的显示,不同方法计算占空比的值。学会了对汇编语言的单步调试,找到问题的所在。课设中,我老师和同学都给予我很大的帮助,同学们总是在我要放弃时给我指点,给我鼓励。老师在我迷茫的时候给我指出问的所在。这些都使我的课设顺利完成,非常高兴有这样的老师和同学。指导教师评语:指导教师(签字): 年 月 日课程设计成绩(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1