通讯设备人机接口设计(硬件实验系统) 1_第1页
通讯设备人机接口设计(硬件实验系统) 1_第2页
通讯设备人机接口设计(硬件实验系统) 1_第3页
通讯设备人机接口设计(硬件实验系统) 1_第4页
通讯设备人机接口设计(硬件实验系统) 1_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、通讯设备人机接口设计(计算机硬件技术基础课程设计)专 业:自动化 重庆大学自动化学院2013年9月人员及任务分配专业班级学 号姓 名任务分配自动化1班20104951定时中断,时钟显示自动化1班20105049总体设计,程序连接自动化1班20105071键盘扫描,显示自动化1班20105098来电闪烁,撰写实验报告自动化1班20104893占线程序段的编写目录一、系统功能和设计方案31.1 基本设计目标实现31.1.1 基本设计目标31.1.2 按键说明41.2 硬件连接51.2.1 键盘扫描连接图:51.2.2 显示连接图:61.3 系统设计思路6二、程序流程图7三、编程与调试8四、心得体会

2、8五、程序清单11一、系统功能和设计方案1.1 基本设计目标实现根据课程设计任务书所提出的要求,我们小组将利用计算机硬件实验系统的输入输出设备模拟通讯设备的来电、接听、挂断和拨号功能。1.1.1 基本设计目标你可以选择0-9的号码,每当输入一个数字,就会在led的最高位显示出当前按下的数字,当再次按下数字时,led上的数字将会显示在后面,这样就始终保持当前输入号码为led的最低位。然后按下a键进行拨号,此时系统先判断是否处于占线状态,若处于占线状态,则led上则会显示busy;若不处于占线状态,则拨通了电话。拨通电话后,若一段时间无人接听,led上会显示55555555,当然也可以拨动k3直接

3、挂断,若拨动k2则进入通话阶段,led开始计时。通话阶段可以通过k3自己挂断,也能通过k5对方挂断。我们的拓展功能则是:1、拨号可以拨1到15位任何号码。 2、若按错了号码,则可以通过键盘上的b键回删。 1.1.2 按键说明(1) 实验箱面板上4*4小键盘:表1.1 4*4键盘功能对照表按键功能按键功能按键1数字键按键8数字键按键2数字键按键9数字键按键3数字键按键0数字键按键4数字键按键a拨号按键5数字键按键b回删按键6数字键按键7数字键(2)实验箱面板上开关功能说明:表1.2 开关功能对照表开关功能开关功能开关1无开关2接听开关3 己方挂断开关4占线开关5对方挂断开关6无1.2 硬件连接

4、确定了基本功能软件设计方案,我们通过查阅相关资料,综合讨论后设计出了硬件连接方案,下面是我们的硬件连接: 8254:gate1+5vclk147kcs320hout18259的irq0 8259:int1intrsp-1+5vcs-1340hirq08254的out1 第5片8255:cs300hpa0-pa3p0-p3pb0-pb3k0-k3pa6q-d1pa7q-d0pc1k2pc2k3pc3k4pc4k5 1.2.1 键盘扫描连接图:图1.1 1.2.2 显示连接图:图1.21.3 系统设计思路将整个系统分为许多个小的模块,各个模块之间相互独立,通过定义不同的接口来实现各个模块的连接。这

5、样在调试程序的时候,可以分别进行调试。可以加快课程设计的进程,缩短课程设计时间,简化我们的调试工作。关于通讯系统的人机接口设计,其实主要是要完成三大功能的设计。即:接听功能,拨号功能和查询功能。我们从这三个功能入手,分别对其进行了模块细化,画出了相应的程序流程。二、程序流程图图2.1三、编程与调试在明确实现目的与方法后,我们画出了流程图,根据流程图,我们编制出整个设计的主程序和子程序,并且通过组员的反复调试后,实现了提出的基本功能。四、心得体会 本次课程设计我们小组抽到的是通讯设备人机接口的模拟设计,在刚分配好设计任务书后,小组4人快速选好组长,并初步安排好后面两周的工作。 1黄超的心得体会:

6、 在这次课程设计中,我负责的是计时功能部分的设计。说实话,已经放了一学期的硬件知识,到现在我已经忘得差不多了。本来学习的时候就学得不是很好,为了不拖大家的后腿,我用了第一天整个晚上的时间把硬件的书粗略的过了一遍,把支离破碎的知识重新拾起在脑海里。 第二天,早上八点半,我们准时来到了实验室。我们几个理清了所有的功能和流程,一个上午我们把整个的流程图画出来了,再用了下午跟晚上的时间修改整理出来了主程序,和各个模块的流程图。第三天,我们把主程序和各个模块的流程图用专业工具画了出来。然后进行了任务分工,由于我编程水平一般,所以没有分配到特别复杂的模块,我负责计时程序。 乍一看,我的任务太简单了,我最初

7、也这么以为,可是当我真正着手干的时候我才发现,各种各样的问题都来了。 比如,我们使用的是三色led灯的六位显示。我要把所有需要显示的信息全部设计出来,而且显示的每一个信息都不能超过六位,最重要的是,还要使用能用八段led显示出来的字母,像如果遇见“w”之类的字母,我想没有哪位大神能用八段led把它显示出来吧。所以,这可真不是一件让人省心的事。遇见像挂断之类的信息还好,直接用英文“busy”,我想终究还是能够传情达意。最终我用了1个小时把这些需要显示的八种信息全部用八段led可以显示的英文或符号设计出来了。设计好这个问题又来了,三色led能显示的字形码只有0f这十六个数字,我们显示需要用到的字母

8、或者符号全都没有,没办法,自己编呗。对于从来都很不细心的我,这又是一个不小的挑战,还好最终我把这些东西都顺利的弄出来了。(很不幸,调试的时候还是发现编错了一个码) 在这次课程设计过程中我学到了许多东西,比如遇到问题解决不了要向老师或同学求助,我学会了如何与同学合作。学习了这么久这是第一次合作做出一个比较贴近现实生活和实际的系统,感觉自己终于能够将所学的知识跟实际应用联系到了一起。感谢这次课程设计,我学会了许多有用的东西,学会了与他人合作,学会了将知识运用于实际。 2,郝鸿凯的心得体会:此次的课程设计,拿到题目时,我有点不知所措,一直以来成绩不是很好,基础比较差 ,有些时候就不知道从哪里下手。不

9、过还好组长给我们分析了整个设计的流程,还给我分配了比较简单的任务,就是一小段的编程。硬件都是去年学的咯,现在基本都已经忘完了,不过既然接了任务还是要把它做好,于是乎我回去开始翻开硬件书来看了。不过现在看起来感觉还是很吃力,看了大半天才看懂点点,所以看的比较慢,看了几天才几乎了解到怎么编,编了好久终于编好了,拿给组长看,不过问题一大堆,还好组长厉害给我改了又改,才改好。还给我讲为什么这样,虽然听不懂,不过好像很厉害的样子。程序大概都已经编好了,接下来就交给组长来进行合并了,这是最难的部分,当然得交给最厉害的组长啦。组长花了一天的功夫终于合并好了,然后就进行调试了,调试才是关键的,即使程序编好了,

10、要是调试不出来还是不行,我们一组5个人咋实验室奋斗了2天才调试好,调试真的很复杂,有些时候明明觉得自己是对的,不过就是调试不出来。在调试过程中,都换了好几台硬件设备,不过还好终于调试好了。然后我们一一进行了实验,看看功能是否都完全实现了,虽然功能都比较简单,不过是能基本实现功能了。 3,赖升勇的的心得体会:此次设计,给我的最大体会就是团体与个人的力量,一个人的力量总是有限的,不过结合众人的力量就会发挥出强大的力量,此次的设计要是单独给一个人做,会很费时间,并且错误几率夜会增大。团体合作不仅能扬长补短,还能够增强彼此的团队协作能力。虽然我们这次做的不是特别的好,不过重要的是过程,从零到一,从无到

11、有的过程才是最重要的。结果已经不是特别重要了,重要的是我付出了,也感觉到了收获这就足够了,我相信在最后的检验阶段,经过老师的检验,我们一定会做的更好,不足的也希望老师能给与指出,一边我们以后做的更好。总的来说光是书本上的知识是不够的,只有自己做了菜知道自己的不足,也才能够进步,希望以后多一点这样的课程设计,也多一点这样的团队合作。加油。 4,杜征宇的心得体会:1:控制三色led的四片8255只能工作在输出方式,所以其控制字写入之后可以不用更改,但是第5片8255工作方式多样,比如,在扫描键盘的时候,a口是作为方式0输入,b口作为方式0输出,c口未用上,但是在对来电指示灯和拨号指示灯进行操作时,

12、应该由8255输出信号来控制,本可以用b口进行控制,但是在实验中发现,在按键时会干扰到那两个灯,所以我改变控制方式,使a口作为方式0输出,得以控制小灯而且不会影响到对键盘的操作。因此,当我们在改变各个端口的输入输出方式时,千万不要忘记更改控制字。2:在设计中我们用8254产生定时中断接8259ir0,但是当特殊情况来时,需要关闭中断,此时我们有三种方式可以避免中断,第一:关cpu的中断,这时只需执行指令cli,但是这样其他可屏蔽中断也会被屏蔽,显然这种方法不合适,第二:关8259中断,即写入操作命令字屏蔽掉8259对ir0的响应,这种方法最好。第三:因为8254工作在方式0,所以如果我们不写入

13、计数初值,则8254的定时中断信号无法产生,也可以“关”掉中断。3:总的来说,本次课程设计程序流程清晰,思路比较好找,因此如果注意到细节方面的问题,完成起来也比较容易,而且在程序调试过程中还很容易发现硬件的问题,比如某个键盘按下之后未弹起,这在程序走向中可以很清楚地辨识出来。当然,我觉得在做软件的时候,首先得拿个正确的程序去测试硬件是否能够正常工作,我们只有在保证硬件能够正常工作的前提下才能不出差错地将程序弄好。5,陈开宇的心得体会: 在课程设计中,我们在一起设计好流程图后,我们决定以分工的形式完成此次任务,每个人完成一段子程序,最后由一个同学完成所有子程序的捏合。我负责的是拨号功能模块,这一

14、部分相对来说比较简单。拨号功能其实就是键盘的扫描以及用4片8255显示相对应数字的功能,这些是以前在计算机硬件基础课程中所学习过的。 计算机硬件的知识都放了一个学期了,还是有些生疏了,我利用一个下午的时间简单的浏览了一下课本之后便开始编写程序。我的这部分程序主要就是键盘的扫描,用第五片8255的b口送信号,从a口读入判断是否有键按下,然后判断按键是否松开,再通过比较字型码跳转到响应程序段执行显示数字的功能。开始的时候遇到了很多问题,按键不能正常显示,走了很多弯路,最后才发现是我们组分配到的两台试验箱的键盘是坏的,在更换了试验箱后程序就可以正确运行了。完成了这部分内容我的程序也就是有一个主体了。

15、 因为是在模拟拨打电话的拨号阶段,所以我需要在根据按下数字的顺序决定是在哪一片的8255中显示,开始编写了一个让地址递增的程序,后来发现不行,因为4片8255的8个led的地址是跳变的,即四个a口是连续的,四个b口是连续的。也就是说我应该先送200,再送204,然后送201,然后205,以此类推所以只能建表完成,建表还算顺利,唯一的问题就是我在建表的时候没有搞清楚地址是字节,不是字,所以需要在计数的时减候2,即通过计数每次减2,直到摁下9次,程序将结束。 通过这次设计我还是学习到了很多知识的,因为这次是相对以前实验更为独立完成的一次自主编写程序的锻炼,从程序的设计、流程图的绘画、程序框架的设计

16、到每一个小程序段的细致完成,都是独立完成的,唯一的资料就是课本和网络,所以很锻炼人。在以后的工作中会有更多的机会独立完成任务,处理和学习相对应的软件。这次锻炼就显得更加珍贵和实用。这次课程设计给了我一个让我将理论与实际联系的机会,给了我一个通过小组合力完成任务的机会。最后,感谢老师的细心教诲和指导。 五、程序清单.486porta equ 300hportb equ 304hportc equ 308hk0 equ 0eehk1 equ 0edhk2 equ 0ebhk3 equ 0e7hk4 equ 0dehk5 equ 0ddhk6 equ 0dbhk7 equ 0d7hk8 equ 0b

17、ehk9 equ 0bdhka equ 0bbhkb equ 0b7hkc equ 7ehkd equ 7dhke equ 7bhkf equ 77h ;各个键值ctrl_8254 equ 32ch cunt0 equ 320h cunt1 equ 324hctrl_8255 equ 30chportb equ 304haddr0 equ 340haddr1 equ 348hintq equ 40ha8255 equ 200hb8255 equ 204hc8255 equ 208hcode segment use16org 2000h assume cs:code beg:jmp start

18、zhanxianc dd 0fffffh zhanxianc1 dd 100000h cf db -1 geshu dw 30d cunshu db ? count1 dd 50h second db 0 minute db 0 hour db 0 jianpantab dw 207h,203h,206h,202h,205h,201h,204h,200h dw 207h,203h,206h,202h,205h,201h,204h,200h tab db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;0_9的段码 initd proc xsdm0 db

19、 0c0h,0bfh,0c0h,0c0h xsdm1 db 0c0h,0c0h,0bfh,0c0h start: call init lp1: call jianpan jmp lp1 houbanduan proc pusha call laidian cmp cf,0 jz wt33 wt2: mov dx,308h in al,dx and al,14h cmp al,00h jz wt2 cli mov al,0ffh mov dx,addr1 out dx,al sti jmp wt22 jmp wt2 wt22: call delay2 call ltoff wt33: call

20、init popa ret houbanduan endp init proc pusha mov al,-1 mov cf,al mov dx,30ch mov al,99h out dx,al mov al,0ffh mov dx,300h out dx,al mov eax,80808080h mov dx,20ch out dx,eax mov eax,0ffffffffh mov dx,200h out dx,eax mov eax,0ffffffffh mov dx,204h out dx,eax mov ax,30d mov geshu,ax mov al,0 mov hour,

21、al mov second,al mov minute,al popa ret init endp zhanxian proc pusha mov dx,30ch mov al,89h out dx,al mov al,0bfh mov dx,300h out dx,al mov ecx,zhanxianc z1:mov dx,308h in al,dx and al,0ch cmp al,08h jz z3 ;占线 cmp al,04h jz z4 ;挂断 loopd z1 mov dx,200h mov eax,0ff9291ffh out dx,eax mov dx,204h mov e

22、ax,0ffff86ffh out dx,eax call houbanduan jmp z5 z3: call zhanxiand jmp z5 z4: call ltoff z5: call init popa ret zhanxian endp zhanxiand proc pusha mov ecx,zhanxianc1 zd:dec ecx cmp ecx,0 jz zdd mov dx,204h mov eax,0ff91c1ffh out dx,eax mov dx,200h mov eax,0ff9283ffh out dx,eax mov dx,308h in al,dx a

23、nd al,0ch cmp al,08h jz zd ; 占线键高电平 cmp al,04h jz zd1 ;己方挂断 cmp al,0ch jz zd1 ;占线键高,己方挂断 cmp al,00h jz zd2 zdd:call autocut jmp zd1 zd2: mov dx,200h mov eax,0ff9291ffh out dx,eax mov dx,204h mov eax,0ffff86ffh out dx,eax call houbanduan zd1:call ltoff popa ret zhanxiand endp init459 proc pusha mov d

24、x,ctrl_8254 mov al,70h ;方式0,定时中断 out dx,al mov dx,cunt1 ;通道1 mov ax,47000 out dx,al mov al,ah out dx,al ;定时1s,初始化完毕 mov dx,addr0 mov al,13h out dx,al mov dx,addr1 mov al,40h out dx,al mov dx,addr1 mov al,01h out dx,al mov dx,addr1 in al,dx and al,0feh out dx,al ;8259初始化 cli mov ax,0 mov ds,ax lea ax

25、,jishi mov ds:intq*4,ax mov ax,seg jishi mov ds:intq*4+2,ax sti popa ret init459 endp jishi proc pusha mov dx,cunt1 mov ax,47000 out dx,al mov al,ah out dx,al call jiayimiao call jishizhuanhuan mov al,20h mov dx,addr0 out dx,al ;中断结束 popa iret jishi endp jiayimiao procpusha mov al,secondadd al,1 daa

26、 mov second,al cmp al,60h jb s0 mov second,0 mov al,minute add al,1 daa mov minute,al cmp al,60h jb s0 mov minute,0 mov al,hour add al,1 daa mov hour,al cmp al,24h jb s0 mov hour,0 s0: popa retjiayimiao endpjishizhuanhuan proc pusha mov si,0 mov cl,4 mov al, second mov ah,al mov bx, offset tab and a

27、l,0fh xlat mov xsdm1si+3,al mov al,ah shr al,cl xlat mov xsdm0si+3,al mov al, minute mov ah,al and al,0fh xlat mov xsdm0si+2,al mov al,ah shr al,cl xlat mov xsdm1si+1,al mov al, hour mov ah,al and al,0fh xlat mov xsdm1si,al mov al,ah shr al,cl xlat mov xsdm0si,al mov eax,dwordptr xsdm0 mov dx,a8255

28、out dx, eax mov eax,dwordptr xsdm1 mov dx,b8255 out dx, eax mov eax, 05050505h mov dx, c8255 out dx, eaxpopa retjishizhuanhuan endp laidian proc near pusha mov ecx,count1lp0: dec ecx cmp ecx,0 jz lp3 ;无人接听 mov dx,300h mov al,3fh ;来电灯等亮 out dx,al mov dx,308h in al,dx and al,16h call delay1 ;闪烁延时 cmp

29、al,00h jz lp11 ;没按键 cmp al,10h jz lp4 ;按下挂断键 cmp al,04h jz lp4 jmp lp2 lp11: dec ecx cmp ecx,0 jz lp3 ;无人接听 mov dx,300h mov al,0bfh ;来电灯灭 out dx,al mov dx,308h in al,dx and al,16h call delay1 ;闪烁延时 cmp al,00h jz lp0 ;没按键 cmp al,10h ;按下挂断键 jz lp4 cmp al,04h jz lp4 lp2: mov dx,300h ;按下接听键 mov al,7fh o

30、ut dx,al ;来电指示灯常亮 call init459 jmp lp5 ;调用计时程序 lp3: call autocut call delay2 lp4: mov al,0 mov cf,al call ltoff lp5: popa ret laidian endp autocut proc near pusha mov eax,92929292h mov dx,200h out dx,eax mov dx,204h out dx,eax mov eax,05050505h mov dx,208h out dx,eax mov al,0ffh mov dx,300h out dx,a

31、l popa ret autocut endp ltoff proc near pusha mov dx,30ch mov al,89h out dx,al mov dx,300h mov al,0ffh out dx,al mov eax,0f0f0f0fh mov dx,208h out dx,eax popa ret ltoff endp jianpan proc pusha kscan: mov bl,0f7h nxtcol:mov al,bl mov dx,portb out dx,al mov dx,porta in al,dx and al,0fh cmp al,0fh jnz

32、fndkey ror bl,1 jc nxtcol jmp kscan fndkey:shl bl,4 or bl,al call jdlys keyup:mov al,0 mov dx,portb out dx,al mov dx,porta in al,dx and al,0fh cmp al,0fh jnz keyup cmp bl,k0jz aj_k0cmp bl,k1jz aj_k1cmp bl,k2jz aj_k2cmp bl,k3jz aj_k3cmp bl,k4jz aj_k4cmp bl,k5jz aj_k5cmp bl,k6jz aj_k6cmp bl,k7jz aj_k7

33、cmp bl,k8jz aj_k8cmp bl,k9jz aj_k9cmp bl,kajz aj_kacmp bl,kbjz aj_kbcmp bl,kcjz aj_kccmp bl,kdjz aj_kdcmp bl,kejz aj_kecmp bl,kfjz aj_kf jmp kscan aj_k0: mov al,tab0 mov ah,al mov si,geshu mov dx,jianpantabsi out dx,al dec geshu dec geshu cmp geshu,-2 jz ot1jmp kscanaj_k1: mov al,tab1 mov ah,al mov

34、si,geshu mov dx,jianpantabsi out dx,al dec geshu dec geshu cmp geshu,-2 jz ot1jmp kscanaj_k2: mov al,tab2 mov ah,al mov si,geshu mov dx,jianpantabsi out dx,al dec geshu dec geshucmp geshu,-2 jz ot1jmp kscanaj_k3: mov al,tab3 mov ah,al mov si,geshu mov dx,jianpantabsi out dx,al dec geshu dec geshucmp ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论