接口课设报告
- 格式:doc
- 大小:608.50 KB
- 文档页数:11
四川师范大学成都学院电路与电子技术课程设计VGA显示接口设计学生姓名秦谌磊学号2012101315所在学院通信工程学院专业名称通信工程班级2012级移动通信2班指导教师胡迎刚成绩四川师范大学成都学院二○一四年十二月课程设计任务书VGA显示接口设计内容摘要:本文利用现场可编程逻辑器件FPGA产生VGA时序信号和彩条图像信号,并将其作为信号源,应用于彩色等离子显示器的电路开发,方便彩色等离子显示器驱动控制电路的调试。
FPGA芯片具有可靠性高、编程灵活、体积小等优点,实验经过软硬件调试,最终在显示器上显示彩条正确图像。
利用此原理,可以设计更多的彩色图像,且可将采集的图像进行实时显示,将此作为信号源,应用于显示器电路的开发或某些嵌入式系统中,进行视频设备的调试与性能分析或系统中信号处理模块的调试与性能分析等。
关键词:FPGA VGA 显示接口VGA Interface of display of design Abstract:VGA-timing signals and color strip image were obtained by using FPGA. The signals were used as sources when developing the circuits of color plasma display panel, and it took great convenience to the debugging of the driving and controlling circuit of color plasma display panel. The FPGA chip has the advantages of high reliability, small volume, flexible programming, just because of this, the test could achieve the desired results, display screen displays color bar signals. According to this principle, we can design color image more, and make the image real-time display, such as the signal source, used in display circuit development or some embedded systems, video equipment debugging and performance analysis of the system signal processing module debugging and performance analysis.Keywords:FPGA VGA Interface of display目录前言 (1)1 VGA接口概述 (1)1.1 VGA接口 (1)1.2 VGA显示 (2)1.3 VGA信号时序 (3)1.4 VGA图形编码 (4)2 EDA概述 (5)2.1 EDA技术及其发展 (5)2.2 EDA技术开发流程 (6)2.3 Quartus II软件简介 (6)2.4硬件描述语言VHDL (7)2.5 现场可编程逻辑门阵列FPGA (7)3 设计方案 (8)3.1 总体设计框架图 (8)3.2 主模块设计 (9)3.2.1 分频模块 (9)3.2.2 VGA彩条信号产生模块 (9)4 设计实现 (10)4.1 新建工程项目 (10)4.2 选择芯片 (10)4.3 使用硬件描述语言编程 (11)4.4 锁定引脚 (11)4.5 下载 (11)5 仿真结果 (12)5.1 仿真波形 (12)5.2 下载调试 (12)6 总结 (13)附录 (14)参考文献 (17)VGA显示接口设计前言VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。
接口课程设计报告计算机0202班郝俊学号;012002013429 一.课程设计的要求与目的结合一个实际的接口技术问题,设计一个微机应用系统,包括主控机,数个下位机及执行部件,要求该系统综合应用并行接口、串行接口和其他接口,编写对应的上位机和下位机程序,实现主控机与下位机的远距离传送和远程监控功能。
系统结构,如图;其中;1.系统硬件由一台主控机,数台下位机和执行部件组成,主控机与下位机通过串行通信线连接。
2.主控机:与所有下位机进行数据交换,必要时需建数据库,进行数据处理等。
3.下位机:与主控机通信,控制执行部件。
4.执行部件;将接收的数据送入到下位机或将下位机输出的数据送到执行部件。
5.主控机程序:串行(RS232/RS485)通信程序,数据处理程序等。
6.下位机程序:串行(RS232/RS485)通信程序,执行部件控制程序二.课程设计的题目地铁计费系统1.系统功能;乘客进站要在执行部件上刷卡,出站也要刷卡,执行部件将接收到的数据通过下位机传送给上位机,上位机根据卡号得出卡上金额。
出站时计算费用,并判断乘客是否买足了票,如果费用大于卡上金额,表示票款不足,则发出警报;如果费用小于卡上金额,表示票款足够,则算出余额,最后将数据送到下位机显示出来。
2.开发环境我们本次课程设计所用的开发环境是实验室提供的MF多功能微机接口实验与开发平台,所用的语言是IBM-PC汇编语言。
3.实验分工我们组的成员有我,冯茂盛,徐捷和黄林,其中冯茂盛同学担任组长。
我们的分工如下;冯茂盛同学负责下位机的程序编写以及整体调试,徐捷同学负责上位机的程序编写,黄林同学和我分别负责上位机和下位机的辅助设计以及硬件设计连接。
三.流程图上位机的流程图如下下位机的流程图如下页四.源程序代码上位机源代码:data segmentbalance db '4'quit db0ah,0dh,'The balance in your account is:$'err db0ah,0dh,'The balance is not adequate!!$'fee db0ah,0dh,'The fee of this travel is:$'card db0ah,0dh,'The card number is:$'carderror db0ah,0dh,'Invalid card number!',0ah,0dh,'$'data endsstack segment stackdb200dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackcls macro op1,op2,op3,op4 ;用于清屏,分别是起止的行和列mov ah,6mov bh,1EHmov al,0mov ch,op1mov cl,op2mov dh,op3mov dl,op4int10Hendmint51 proc near ;8251A初始化子程序mov dx,309h;8251A命令口mov al,0;空操作out dx,almov al,40h;内部复位out dx,almov al,4eh;8251A方式命令out dx,almov al,27h;8251A工作命令out dx,alretint51 endpset_bps proc near ;8253-5计数初值计算与装入子程mov dx,307h;8253-5命令口mov al,0b6h;8253-5初始化命令out dx,almov dx,306h;8253-5计数器2的端口mov ax,34h;取计数初值out dx,al;装计数初值低字节mov al,ah;装计数初值高字节out dx,alret;返回set_bps endpbegin: mov ax,datamov ds,axcls 0,0,25,80mov ah,2mov bh,0mov dx,0101hint10hcall int51 ;调用8251A子程序,初始化8251Alea dx,card ;显示'The card number is :'mov ah,9int21hreceiv1: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?jz receiv1 ;未准备好,即无数据接收mov dx,308h;已准备好,即有数据传送过来,则接收卡号in al,dxmov dl,al;显示接收的字符mov ah,02hint21hcmp al,30hjne carderrmov dx,309h;发送数据transm1: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm1 ;未准备好,则等待mov dx,308h;将卡上的余额发送出去mov al,balanceout dx,al;发送结束,准备接收下位机传来的车费lea dx,fee ;显示'The fee of this travel is:'mov ah,9int21hreceiv2: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?jz receiv2 ;未准备好,即无数据接收mov dx,308h;已准备好,即有数据传送过来,则接收1个字符卡号in al,dxmov dl,al;显示接收的字符mov ah,02hint21hmov bl, balancecmp bl, aljb error ;如果车费大于余额,则不修改余额,直接跳出sub bl,al;否则,发送数据add bl,'0'mov balance,blmov dx,309htransm2: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm2 ;未准备好,则等待mov dx,308h;将卡上的余额发送出去mov al,balanceout dx,al;发送结束jmp overcarderr: lea dx,carderrormov ah,9int21hjmp overerror: lea dx,errmov ah,9int21hjmp overover: mov ax, 4c00hint21hcode endsend begin下位机源代码:data segmentinfo1 db0ah,0dh,'Please input the card number:$'carderror db0ah,0dh,'Invalid card number!!',0ah,0dh,'$'info2 db0ah,0dh,'Please input the fee:$'info3 db0ah,0dh,'The balance is:','$'info4 db0ah,0dh,'Press any key to check in!Press ESC to exit this program',0ah,0dh,'$' info5 db0ah,0dh,'Please press any key to check out!',0ah,0dh,'$'info6 db0ah,0dh,'Your balance is $'info7 db 'not adequate!',0ah,0dh,'$'card db10db ?db10dup(0)fee db10db ?db10dup(0)balance db10db ?db10dup(0)t dw0;初始化延时变量为0ta db14hdata endsstack segment stackdb200dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackcls macro op1,op2,op3,op4 ;用于清屏,分别是起止的行和列mov ah,6mov bh,1EHmov al,0mov ch,op1mov cl,op2mov dh,op3mov dl,op4int10Hendmint51 proc near ;8251A初始化子程序mov dx,309h;8251A命令口mov al,0;空操作out dx,almov al,40h;内部复位out dx,almov al,4eh;8251A方式命令out dx,almov al,27h;8251A工作命令out dx,alretint51 endpset_bps proc near ;8253-5计数初值计算与装入子程mov dx,307h;8253-5命令口mov al,0b6h;8253-5初始化命令out dx,almov dx,306h;8253-5计数器2的端口mov ax,34h;取计数初值out dx,al;装计数初值低字节mov al,ah;装计数初值高字节out dx,alret;返回set_bps endpdelay1 proc;延时子程1push bxmov bx,tdl1: dec bxjnz dl1pop bxretdelay1 endpdelay2 proc;延时子程2push cxpush bxmov cx,04ffhdl4: mov bx,0ffffhdl3: dec bxjnz dl3dec cxjnz dl4pop bxpop cxretdelay2 endpspk proc nearmov bx,200mov t,0ffffhmov dx,303h;从PC6输出方波loson: mov dx,303h;从PC6输出方波mov al,0dh;置PC6=1;打开8253out dx,alcall delay1mov dx,303hmov al,0ch;置PC6=0;关闭8253out dx,alcall delay1dec bxjnz losoncall delay2retspk endpbegin: mov ax,datamov ds,axcls0,0,25,80mov ah,2;设置光标mov bh,0mov dx,0001hint10hcall int51 ;调用8251A子程序,初始化8251Amov dx,303h;初始化8255A,使指示灯全熄mov al,82hout dx,almov dx,300hmov al, 11111111bout dx,allea dx,info1 ;从开关输入卡号mov ah,9int21hmov dx,303hmov al,82hout dx,almov dx,301hin al,dxl1: mov dx,303hmov al,82hout dx,almov dx,301hin al,dxmov bl,al;将口B输入的卡号数据做备份and al,10000000b;如果首位不是0,就等待,直到把首位开关置0cmp al,00000000bjz l1and bl,01111111bmov dl,blmov ah,2int21hmov dx,309h;否则,发送数据transm1: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm1 ;未准备好,则等待mov dx,308h;将已准备好的数据发送出去mov al,blout dx,al;发送结束cmp bl,30hjne carderrreceiv1: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?mov dx,308h;已准备好,即有数据传送过来,则接收1个字符in al,dxmov bh,al;将显示的余额存到bh中lea dx,info3mov ah,9int21hmov dl,bh;显示接收的字符mov ah,02hint21hlea dx,info2mov ah,9int21hmov dx,303h;test用来读入8255口B的信息mov al,82hout dx,almov dx, 301hin al, dxl2: mov dx, 301hin al, dxmov bl,al;此时bl用来存储输入的车费and al,10000000bcmp al,10000000bjz l2and bl,01111111bmov dl,blmov ah,2int21h;end of testmov dx,309h;发送数据transm2: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm2 ;未准备好,则等待mov dx,308h;将已准备好的数据发送出去mov al,blout dx,al;发送结束lea dx,info6mov ah,9int21hmov al, blcmp bh,aljb error ;如果车费大于余额,显示错误receiv2: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?mov dx,308h;已准备好,即有数据传送过来,则接收1个字符in al,dxmov dl,al;显示接收的字符mov ah,02hint21hjmp overerror: lea dx,info7mov ah,9int21hmov dx,303h;初始化8255Amov al,82hout dx,almov dx,300hmov al, 00000000bout dx,alcall delay2mov dx,300hmov al,11111111bout dx,alcall spkjmp overcarderr: lea dx,carderrormov ah,9int21hcall spkover:mov dx,303h;初始化8255A,使指示灯全熄mov al,82hout dx,almov dx,300hmov al, 11111111bout dx,almov ax,4c00h;程序退出int21hcode endsend begin五.程序的调试过程老师将接口课程设计的要求和内容布置下来以后,我,冯茂盛,徐捷和黄林决定组成一个小组,共同完成这个课题。
单片机原理与接口技术教程课程设计一、设计目的本次课程设计旨在通过学习单片机的原理和接口技术,培养学生的电子电路设计能力。
通过实现课程设计,学生可以了解单片机的基本原理和掌握单片机的常用接口技术。
同时,培养学生的动手能力和解决问题的能力,提升学生综合素质。
二、设计内容本课程设计包括两个部分:1. 单片机实验通过实验,学生可以了解单片机的基本原理和常用的接口技术。
实验内容如下:•实验1:单片机的基本使用方法及熟悉常见的单片机开发环境;•实验2:串口通信实验,了解串口通信的原理及实现方法;•实验3:数码管显示实验,掌握单片机数字信号输出及驱动方法;•实验4:ADC采集实验,了解单片机模拟信号采集方法和原理;•实验5:按键实验,学习数字信号输入及处理方法。
本次课程设计要求学生独立完成一个设计项目,要求具有一定难度和挑战,同时具有工程实践意义。
学生可以自选设计项目,但需要经过老师审核,确定选题范围。
设计项目的要求如下:•选题自主,但需与单片机相关,具有实际意义;•设计难度较高,具挑战性,可包括硬件和软件部分;•能够达到可实现状态,所需零件、器材不过于昂贵,所需时间不过于长。
三、设计流程单片机实验部分1.实验前准备学生需要先了解单片机的应用范围和基本原理,以及单片机硬件和软件的基本结构。
2.实验进行根据实验内容,学生需要编写程序、进行硬件连接和调试,进行实验,并记录实验现象和数据。
3.实验结果分析学生需要结合实验结果,分析实验中可能出现的问题,找出解决方案,并对实验结果进行评价。
1.选题学生根据自身的兴趣和专长,结合课程内容和要求,自主选题。
经过老师审核后,确定选题范围。
2.设计方案学生需要对设计项目进行详细的分析和设计方案的制定,包括硬件和软件部分。
设计方案需经过老师的审核。
3.制作过程学生需要按照设计方案,进行零件的选购、硬件的连接和程序的编写与调试。
4.实现验收学生需要对设计项目进行实现验收,并填写相关资料表格。
《接口技术》大型综合(课程设计)作业【目的】(1)掌握8086cpu微机接口电路的I/O系统的设计(2)掌握8086cpu微机接口电路的初始化汇编编程和具体项目功能的软件汇编语言代码编写(3)要求学生根据接口电路的硬件要求进行计算机的汇编语言程序设计,使学生的软件编程能力得到加强,对接口电路的综合应用能力有较大提高。
【要求】(1)每三个同学组成一个小组,选一位组长,负责与教师联系(2007年10月8日前选定题目及确定小组成员以电子版形式发至oucljp@);每一组选择一个题目,完成系统的软硬件部分设计。
(2)自学、查找所选择I/O接口芯片和内存芯片的相关的资料。
使用接口技术知识实现能完成相应功能的硬件系统。
(3)要求写出系统(包括各个子系统)的设计方案及论证,画出系统原理图(硬件连线图)以及系统工作流程。
(4)画出程序流程、编写系统初始化程序和功能程序清单。
【设计报告书内容要求】1.每一小组要上交一份完整的设计方案(放假前以电子版形式发至邮箱oucljp@),内容包括:(1)报告封面(设计题目、小组成员)(2)设计题目(3)小组成员分工及成果(4)设计方案以及论证(5)硬件原理图(包括芯片的选型介绍)(6)程序流程图(包括各个子系统和子过程的程序流程)(7)程序清单,要有适当的注释(8)程序运行结果分析与预测(9)系统改进(升级)建议或者方案等。
2.每一个同学需要上交一份设计报告,简单介绍在课程设计过程中所做的工作,碰到的问题以及解决方法,阐述综合作业的收获等等。
【设计成绩评定】本次设计的成绩占《接口技术》课程期末总评成绩的15%,具体评定方法如下:(1)报告内容的完整性占20%的比例。
(2)硬件原理图占20%的比例。
(3)程序流程图占20%的比例。
(4)程序清单占10%的比例。
(5)程序运行结果分析与预测占20%的比例。
(6)系统改进(升级)建议或者方案占10%的比例。
【系统要求】1.交通灯控制(1)要求:十字路口1) 正常情况下,两路口轮流放行,且以一位8段数码管显示剩余时间;2) 夜间,两路口均为黄灯闪烁,均可放行。
1接口技术课程设计报告——键控节目灯姓名:李丹丹姓名:李丹丹 班级:Z059141班 专业:网络与通信专业:网络与通信 指导教师:王文仲王文仲王振力王振力孟祥莲孟祥莲同组人:李丹丹、黄小娜、高凡齐高凡齐哈尔滨工业大学华德应用技术学院哈尔滨工业大学华德应用技术学院2007年7月13日一、系统硬件要求(芯片简介)8255芯片:1、Intel 公司生产的可编程并行接口芯片8255A 作为并行接口获得广泛的应用。
与Intel 公司的8255A 相类似的可编程并行接口芯片有Motorola 公司生产的MC6820MC6820、、Zilog 公司生产的Z80PIO Z80PIO。
2、8255有三个通道:有三个通道:A A 通道、通道、B B 通道、通道、C C 通道,每个通道有I/O 线:线:PA0PA0————PA7PA7PA7,,PB0PB0——————PB7PB7PB7,,PC0PC0——————PC7PC7PC7。
3、8255有DB 缓冲器与CPU 连接完成通信,有四个端口:连接完成通信,有四个端口:A A 口、口、B B 口、口、C C 口、控制口。
口、控制口。
4、8255设有联络线,若联络则将C 口的8条I/O 线做联络线,所以将C 口分成两部分:口分成两部分:C C 口上半部:口上半部:PC7PC7PC7——————PC4PC4与A 组成A 组、组、PC3PC3PC3——————PC0PC0与B 组成B 组,所以8255的控制方式分A 组控制、组控制、B B 组控制。
组控制。
5、8255是通过CPU 向其内送入控制关键字的方式来实现对各口的管理的,即工作方式控制字。
即工作方式控制字。
8279芯片:Intel8279芯片是一种通用的可编程的键盘、显示器接口器件,能够单独完成键盘输入和LED 显示两种功能。
键盘部分提供一种扫描的工作方式,可以和具有64个触点的键控阵列相连接,也可以与传感器阵列相边。
湖南科技大学潇湘学院信息与电气工程系《微机原理与接口技术》课程设计报告题目:基于D/A转换器DAC0832的波形发生器设计专业:通信工程班级:通信002班姓名:刘黎辉学号:0954040217指导老师:欧青立陈君宋芳课程设计任务书目录一、课程设计的目的及意义 (1)1.设计目的 (1)2.设计意义 (1)二、方案论证 (1)1.设计要求 (1)2.方案论证 (1)三、硬件电路设计 (2)1.波形产生电路 (2)2.按键控制电路 (4)3.地址译码电路 (6)四、程序设计 (7)1.波形发生原理 (7)2.程序流程图 (7)五、硬件连接及调试 (8)1.硬件连接 (8)2.电路调试 (8)六、体会与心得 (8)七、参考书目: (9)八、附录 (9)1.电路原理图............................................................................................ 错误!未定义书签。
2.程序源码................................................................................................ 错误!未定义书签。
一、课程设计的目的及意义1.设计目的(1)掌握计算机应用系统特别是微机接口系统的设计。
(2)掌握接口电路设计技术,初步掌握电子设计软件Protel99使用。
(3)掌握微机接口程序的编制与调试技术。
(4)掌握DAC0832芯片的使用方法。
(5)利用所学微机的理论知识进行软硬件整体设计,提高综合应用能力。
2.设计意义波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。
在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。
微机原理与接口技术课程设计一、课程设计目的本次课程设计旨在让学生通过实际操作掌握微机原理与接口技术的相关知识和技能,培养学生的实际操作能力和解决实际问题的能力。
二、课程设计内容本次课程设计主要分为两个部分:1.微机原理部分在微机原理课程部分,主要包括以下内容:–CPU原理–内存原理–总线结构–输入输出控制器–DMA原理–系统时钟2.接口技术部分在接口技术课程部分,主要包括以下内容:–并行接口–串行接口–USB接口–网络接口–图形接口–嵌入式接口三、课程设计流程1.阅读相关文献资料,了解课程设计的相关知识和理论。
2.设计并搭建硬件实验环境,包括计算机系统和各类接口设备。
3.学习并掌握各类接口的标准规范、通信协议和相关驱动程序。
4.设计并实现各类接口的应用程序,测试和调试各接口设备的正常工作。
5.针对常见的应用场景设计实际应用方案,并实现应用程序的开发和调试。
6.完成课程设计报告,记录整个课程设计的思路、方案和实现过程,并撰写总结和心得体会。
四、课程设计要求1.大家需要采用C语言、C++、VB等编程语言完成具体的编码工作。
2.上机实验前,要确保安全,防止电脑硬件因过流、过压等原因受损。
3.完成上机实验后,要及时清理实验环境,保持机房整洁有序。
4.报告要求规范、结构科学、语句通顺、内容完整。
五、参考书目1.电子工业出版社,《微型计算机接口技术》,2003年。
2.电子工业出版社,《微型计算机原理与应用》,2005年。
3.机械工业出版社,《接口技术原理与应用》,2007年。
4.清华大学出版社,《微处理器原理与接口技术》,2009年。
六、总结微机原理和接口技术是现代计算机科学技术中非常重要的两个方面。
在本次课程设计中,我们将理论知识和实际操作紧密结合起来,通过具体的实验操作和相关的编程工作,更好地理解和掌握了微机原理和接口技术的相关知识和技能,提高了我们的综合素质和专业技能水平。
最新接口实验报告实验目的:本次实验旨在验证最新接口的性能表现,兼容性以及稳定性。
通过实际操作测试,收集相关数据,以便对接口进行评估和优化。
实验环境:- 服务器配置:**************************,32GB RAM,SSD 硬盘- 操作系统:Ubuntu 18.04 LTS- 测试工具:JMeter 5.4.1,Postman,curl- 网络环境:100Mbps企业级网络,延迟低于10ms实验方法:1. 使用JMeter进行压力测试,模拟高并发场景,记录接口响应时间和吞吐量。
2. 利用Postman和curl进行接口调用测试,验证接口的功能性和返回数据的正确性。
3. 对接口进行异常输入测试,检查其容错能力和错误处理机制。
4. 监控服务器资源使用情况,评估接口对系统资源的消耗。
实验结果:1. 压力测试结果显示,在并发用户数达到1000时,接口的平均响应时间为200ms,吞吐量为5000次请求/分钟,系统资源消耗稳定,CPU 使用率维持在60%左右,内存使用约为1.5GB。
2. 功能性测试中,所有预定功能均正常工作,返回数据符合预期格式和内容。
3. 异常测试中,接口对非法参数输入表现出良好的容错性,能够返回合适的错误代码和提示信息。
4. 服务器资源监控表明,接口在高负载下对资源的占用合理,没有出现内存泄漏或CPU占用过高的情况。
结论与建议:根据实验结果,最新接口在性能和稳定性方面表现良好,能够满足高并发场景的需求。
建议在未来的开发中继续优化接口的响应速度,并定期进行压力测试以监控其性能变化。
同时,应加强对异常情况的处理,确保接口在各种条件下都能稳定运行。
接口与实现实验报告XXXXXXXX实验报告XXXXXXXXXX系部计算机系班级 XXXX班课程Java语言程序设计姓名 XXXX 学号2XXXXX 日期XXXXXXXXXXX项目接口与实现——评价成绩1.相关知识点接口体中只有常量的声明(没有变量)和抽象方法的声明。
而且接口体中所有的常量的访问权限一定都是public(允许省略public、final修饰符),所有的抽象方法的访问权限一定都是public(允许省略public、final修饰符)。
接口由类去实现以便绑定接口中的方法。
一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。
如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法。
2.实验目的本实验的目的是让学生掌握类怎样实现接口。
3.实验要求体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。
Gymnastics类和School类都实现了ComputerAverage接口,但实现的方式不同。
4.程序源代码interface ComputerAverage{public duble average(double x[]);}class Gymnastics implements ComputerAverage {public double average(double x[]);{int count=x.length;double aver=0,temp=0;for(int i=0;i<count;i++){for(int j=0;j<count;j++){if(x[j]<x[i]){temp=x[j];x[j]=x[i];x[i]=temp;}}}for(int i=0;i<count-1;i++){aver=aver+x[i];}if(count>2)aver=aver/(count-2);elseaver=0;return aver;}}class School implements ComputerAverage{public double average(double x[]);{int count=x.length;double aver=0;for(int i=0;i<count;i++){aver=aver/count;return aver;}}}public class Estimastor{public static void main(String args[]){double a[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97};double b[]={89,56,78,90,100,77,56,45,36,79,98};ComputerAverage computer;computer=new Gymnastics();double result= computer.average(a);System.out.printf(“%n”);System.out.printf(“体操选手最后得分:%5.3f﹨n”,result); computer=new school();result=computer.average(b);System.out.printf(“班级考试平均分数:%-5.2f”,result);}}5.运行效果示例程序运行效果:6.实验小结(1)可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。
《微机接口技术课程设计报告》设计题:大型闸门开关系统设计时间:2010.9.19至2010.9.25微机接口技术课程设计一、设计目的:模拟大型闸门的开启与关闭,熟悉接口设计的流程。
编程模拟实现产品监测。
二、设计要求:总体的系统由主控机(上位机)和下位机组成,上位机与下位机利用串行接口进行连接,利用俩个(或者两个以上功能部件)构成一个完整系统。
主控机负责数据处理,下位机负责接口控制。
具体的功能要求如下:1、用实验台上的信号电源模拟闸门位移传感器获得信号电压。
2、用实验台上的LED和扬声器模拟闸门到位报警。
3、用实验台上的步进电机或伺服电机模拟控制闸门的升降。
4、上位机模拟控制中心调节闸门开度的大小。
三、设计内容:大型闸门开关系统:系统总体的结构如下所示:1、成。
主控机和下位机通过串行通信线连接。
2、执行部件:由接口电路等组成,将接收的数据送入到下位机或将下位机输出的数据送到执行部件。
3、下位机:与主控机通信,控制执行部件。
4、主控机:与所有下位机进行数据交换,必要时需建数据库,进行数据处理等。
5、主控机程序:串行(RS232)通信程序,数据处理程序等。
6、下位机程序:串行(RS232)通信程序,执行部件控制程序。
闸门信号采用实验平台上的信号电源通过ADC0809采样数模转换来得到。
通过8255将采样数据送下位机,下位机通过串口通信将数据传给上位机,上位机来处理数据,并显示出数据的特性。
然后通过跟设置的一个阈值比较,来判断闸门是否到位,根据判断结果传送相应的信号控制给下位机,下位机根据信号做出相应的反应,设置相应的芯片。
如果闸门未到位,启动步进电机,模拟闸门升降的过程;如果闸门到位,则启动音乐发生器和LED灯,产生声光报警信号。
四、设计过程:首先,确定所需要的芯片及部件,我们要用到信号电源、ADC0809、8255、步进电机、音乐发生器以及一个报警用的LED灯。
利用ADC0809采样信号电源模数转换的得到的数据模拟闸门位移信号,通过8255传给下位机,下位机通过串行通信接口将数据传送给上位机,上位机对数据进行统计处理,然后传递给下位机一个信号位,表示闸门是否到位,下位机根据此信号位启动步进电机或产生声光报警。
简要设计框图:芯片接口图:总体的电路图就如上面所示,实验台的接线都画出来了,跟一开始的设计方案可能有一点的不同,这是在测试以后的确定版本。
程序设计如下所示:分工介绍:本次接口课设中,我们涉及到电路连线,界面设计,程序编码,程序调试,总体设计等分工和合作。
在项目中,我的任务是界面设计和编码部分,具体来说就是设计两个程序运行界面,包括上位机和下位机,界面设计包括响应代码和消息实时控制。
要求实现的就是在点击按钮“开始”时发送消息,然后接着编写代码,发送消息,传达给界面的连接状态,显示当前的连接状态。
而这个下位机发送的消息要传递给上位机,让上位机显示出闸门的位移和状态等等信息。
而且,后面根据老师的要求,要能够动态修改的警界位移,所以还需要增加一个响应功能和函数,用于动态监测到这个警界的变化,并反映到最终提示信息中,显示是否超过警界,同时还要让警报发声。
整个代码中,涉及到串口通信,使用了MSComm控件提供的几个接口来发送数据,接收数据,控制灯的显示,步进电机等等,所以我们小组成员在一起进行了很多的讨论和协商,同时不同功能模块和分工直接进行了相互的协作。
最终完满的完成了实验的任务!五、系统调试(1)在编码完成之初,由于通信的延迟选择的不同,观察上位机的时候,会明显感到闸门到位前与到位后的采样时间间隔不一致,通过调节各自的睡眠时间,这个问题得到了解决。
(2)在测试的过程中,发现了步进电机的运转有点问题,通过调试步进电机的运行睡眠时间解决了问题。
系统的运行框图如下:下位机:上位机:六、设计心得和体会首先,通过课设再次熟悉了接口的相关知识,8255芯片和模数转换的相关知识得到了巩固。
通过实际的系统的设计完成,锻炼了我们的实际分析问题,建立模型,再利用实验平台来实现相应功能的能力。
在这个过程中,锻炼了我们的团队协作能力,动手能力。
而且在实验的过程中,我们小组成员之间进行广泛而深刻的交流,进行了紧密和有效的沟通,互相帮助,进一步加深了我们对于接口课程的理解,提高了动手实践的能力。
本次的编码是通过VC来进行实现的,通过实际的操作,让我了解了VC中的串口通信机制;对于我做的关于界面和编码的工作,我认为感触很深。
不仅仅让我对于MFC的运行机制,消息通讯有了更深刻的体会,同时,通过实际编码,控制信号,发送消息,进而实现一些硬件的功能,比如LED灯的发光和扬声器的发声等等,让我体会到了编码的乐趣,而且利用VC的串口通信技术,以及相应的控件的使用,让我深刻的理解了接口原理,同时,对于MFC 界面编程和消息通讯都有了更加深刻的理解和更熟练的掌握。
总之,这次课设让我收获颇为丰富。
最后感谢老师的帮助和指导!七、附录:下位机通信部分:void CUpDlg::OnComm(){// TODO: Add your control notification handler code hereBYTE signal;int pc4,pc6,i;int xu[8]={0x05,0x15,0x14,0x54,0x50,0x51,0x41,0x45};VARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata[2048];CString strtemp,m_strEditRXData;OpenPortTalk();m_strEditRXData.Empty();//清空发送框if(m_ctrlComm.GetCommEvent()==2) //// comEvReceive读取数据{variant_inp=m_ctrlComm.GetInput();safearray_inp=variant_inp;len=safearray_inp.GetOneDimSize();for(k=0;k<len;k++)safearray_inp.GetElement(&k,rxdata+k);for(k=0;k<len;k++){BYTE bt=*(char *)(rxdata+k);strtemp.Format("%c",bt);m_strEditRXData+=strtemp;}}if(!m_pare("10")){m_RV="连接失败";UpdateData(FALSE);return;}else if(!m_pare("0")){m_RV="连接成功";UpdateData(FALSE);for(i=0;i<5;i++){Sleep(50);outportb(CTRL_8255,0x07);Sleep(50);outportb(CTRL_8255,0x0F);}}else{m_RV="连接成功";UpdateData(FALSE);outportb(CTRL_8255,0x06);int temp=atoi(m_strEditRXData);if(temp > gFormerAngle){for(int i = gFormerAngle; i < temp; ++i){for (int j = 0; j < 8; ++j){outportb(0x301,xu[j]);Sleep(50);}}}else{for(int i = gFormerAngle; i > temp; --i){for (int j = 7; j >= 0; --j){outportb(0x301,xu[j]);Sleep(50);}}}gFormerAngle=temp;}UpdateData(FALSE);//选择通道outportb(CTRL_8255,0x88);outportb(0x300,0);outportb(CTRL_8255,0x03); /*PC1 ALE置1*//*发送采样信号*/outportb(CTRL_8255,0x98);/*重写8255方式字,A口输入,C口低四位输出,C口高四位输入*/outportb(CTRL_8255,0x01); /*使PC0 START置高发启动信号*/outportb(CTRL_8255,0x02); /*pc1 ALE置0*/outportb(CTRL_8255,0x00); /*使PC0 START置低*/do{pc4=inportb(0x302)&0x10;}while(pc4==0); /*查询PC4 EOC的状态,直至为高电位,即,转换完成*/outportb(CTRL_8255,0x05); /*pc2=1 OE,允许读转换结果*/signal=inportb(PA_8255);strtemp.Format("%d",signal);Sleep(100);m_ctrlComm.SetOutput(COleVariant(strtemp));//pc6=0x40 & inportb(PC_8255);ClosePortTalk();//if(pc6==0)// exit(0);}上位机通信部分:void CUpDlg::OnComm(){// TODO: Add your control notification handler code hereVARIANT variant_inp;COleSafeArray safearray_inp;int range;LONG len,k;int state=-1;BYTE rxdata[2048];CString strtemp;//static int flag=0;range=0;if(flag==0){state=0;m_Log = "判断下位机是否匹配.";UpdateData(FALSE);}elsem_Log = "收到数据,处理中.";if(m_ctrlComm.GetCommEvent()==2){variant_inp=m_ctrlComm.GetInput();safearray_inp=variant_inp;len=safearray_inp.GetOneDimSize();for(k=0;k<len;k++)safearray_inp.GetElement(&k,rxdata+k);m_strEditRXData.Empty();for(k=0;k<len;k++){BYTE bt=*(char *)(rxdata+k);strtemp.Format("%c",bt);m_strEditRXData+=strtemp;}if(flag==0){if(!m_pare("160")){m_strEditRXData="3";m_Log = "下位机编号为"+m_strEditRXData;m_ctrlComm.SetOutput(COleVariant("9"));m_strEditRXData.Empty();}else if(!m_pare("0")){m_strEditRXData="0";m_Log = "下位机编号为"+m_strEditRXData;m_ctrlComm.SetOutput(COleVariant("9"));m_strEditRXData.Empty();}else if(!m_pare("32")){m_strEditRXData="1";m_Log = "下位机编号为"+m_strEditRXData;m_ctrlComm.SetOutput(COleVariant("9"));m_strEditRXData.Empty();}else if(!m_pare("128")){m_strEditRXData="2";m_Log = "下位机编号为"+m_strEditRXData;m_ctrlComm.SetOutput(COleVariant("9"));m_strEditRXData.Empty();}else{m_Log = "下位机连接失败";m_ctrlComm.SetOutput(COleVariant("10"));}flag++;UpdateData(FALSE);return;}range = GetRange(m_strEditRXData);m_strEditRXData="闸门位移为"+m_strEditRXData;if(range==1){m_range="闸门高度等级为1级对应步进电机相位为45度";}else if(range==2){m_range="闸门高度等级为2级对应步进电机相位为90度";}else if(range==3){m_range="闸门高度等级为3级对应步进电机相位为135度";}else if(range==4){m_range="闸门高度等级为4级对应步进电机相位为180度";}else if(range==5){m_range="闸门高度等级为5级对应步进电机相位为225度";}else if(range==6){m_range="闸门高度等级为6级对应步进电机相位为270度";}else if(range==7){m_range="闸门高度等级为7级对应步进电机相位为315度";}else if(range==8){m_range="闸门高度等级为8级对应步进电机相位为360度";}else if(range==0){m_range="闸门过高,报警";}}strtemp.Format("%d",range);m_ctrlComm.SetOutput(COleVariant(strtemp));m_Log = "数据处理完成,闸门高度数据已发送.";UpdateData(FALSE);}八、参考文献《微型计算机原理及运用》谭浩强清华大学出版社《现代微机系统与接口技术》高等教育出版社《微机接口技术应用》电子工业出版社《微机原理及接口技术》机械工业出版社。