文档视界 最新最全的文档下载
当前位置:文档视界 › 东南大学微机实验综合课程设计

东南大学微机实验综合课程设计

东南大学微机实验综合课程设计
东南大学微机实验综合课程设计

东南大学自动化学院

微机实验及课程设计报告

《参数可调波形发生器》

姓名:学号:

专业:实验室:

组别:同组人员:

设计时间:

评定成绩:审阅教师:

目录

一.设计目的和要求--------------------------------------3 二.原理设计--------------------------------------------4 三.方案论证与实现--------------------------------------6 四.设计思路及流程图--------------------------------------------------------7 五.编程实现--------------------------------------------------------------------10六.方案测试与结果分析----------------------------------18 六.改进与提高------------------------------------------19 七.分析与总结------------------------------------------19

一、设计要求

1)基本要求

编制1 个参数在线可调的波形发生程序,由D/A 输出,构成参数在线可调的波形发生器,并用示波器观察波形。函数波形可选

f(t)=asin(bt),其中a、b参数在线可调(也可自己选择,但要求至少2 个参数可调且调节很明显)。参数调节采用如下两种方式之一:(1)两个可调电位器输出通过A/D 转换后作为可调参数;

(2)参数通过实验装置上的键盘实时修改(调整);

(3)精确时间,开关选择标准信号输出(例如a=2V, b=100πRAD/s,即50Hz 正弦波)。

2)设计提示

(1)当用电位器调节参数时,输出零不能对应相应的参数值就为零;

(2)当通过键盘修改参数时,先键入参数名如“a”,显示当前参数值,修改后再键入参数名,则修改参数完成,随后输出波形发生变化。

3)进一步设计要求

(1)分别采用两种参数调节方式在线调节参数;

(2)产生周期性三次可调函数f(t)=at3+bt2+ct+d。

二、原理设计

方案1 参数通过实验装置上的键盘实时修改运行程序后,程序首先显示一段字符串,提示输入相应的数字会得到不同的波形输出。

从键盘上敲入1后,程序会跳转到参数可调的正弦波发生器代码区域。之后,显示输入可调参数a(0~255)、b(0~255)的信息。输入a后,波形的幅度会发生相应的变化;输入b后,波形的频率会发生相应的变化。

从键盘上敲入0后,退出程序。

通过检测开关的状态,判断输出标准正弦波还是a,b值所对应的波形。

程序中的主要部分功能原理如下:

(1)程序中的a、b参数的输入

采用百位、十位、个位数字逐个读入的方法。输入百位数字以后,由于a、b的取值范围在000~255之间、故要判断输入的数字是否小于’0’,大于’2’,若小于’0’或大于’2’,则重新输入。输入的数若在'0'~'2'之间,将输入的数减去30h,有ASCII码值变为相应的数字,再将此数乘以100后存入c。输入十位数字后,判断输入的数字是否小于’0’,大于’9’,若小于’0’或大于’9’,则重新输入。输入的数若在'0'~'9'之间,将输入的数减去30h,有ASCII码值变为相应的数字,再将此数乘以10后存入d。输入个位数字后,判断输入的数字是否小于’0’,大于’9’,若小于’0’或大于’9’,则重新输入。输入的数若在'0'~'9'之间,将输入的数减去30h,有ASCII码值变为相应的数字,并将之存

入e 。 之后对c 、d 和e 求和,从而得到a 的值。同样的可以得到b 的值。

(2) 正弦波幅度的改变

实验中所用的8位D/A 转换器DAC0832的输入数据与输出电压的关系为:5256

2-?=N U U REF

o (REF U 表示参考电压,N 表示输入数据)。

产生正弦波是根据正弦函数建立一个正弦数字量表,取值范围为一个周期,此正弦数据表的输出幅度为5V 。读取一个正弦数据表中的数据后,将此数据乘以a 后再除以255,这样就相当于将输出正弦波的幅度变为原来的a/255倍。 (3) 正弦波频率的改变

正弦波频率的改变是通过改变读取正弦数据表中的两个相邻数据的时间间隔实现的。输入的数据b 加上10表示应调用的延时子程序的次数,设延时子程序的延时时间为t ,那么读取正弦数据表中的两个相邻数据的时间间隔为b*t 。

方案2 两个可调电位器输出通过A /D 转换后作为可调参数 先读正弦波数据的首地址和一周期取值数,然后按偏移值取出正弦波数据。启动ADC0809模/数转换器,读入IN0的值(IN0的值可以通过调节滑动变阻器1来实现),将取出的正弦波数据乘以此数据除以255,再将得到的数据赋值给DAC0832,调用延时子程序,之后将数据表偏移量加一,一周期剩余取值数减一。判断一周期内取值是否结束,若没有结束则继续按偏移值取出正弦波数据,若结束则返回

到读正弦波数据的首地址和一周期取值数。

三、方案论证与实现

针对设计思路,我们用到的硬件资源有:、0832、8255、1个LED 灯和1个逻辑电平开关、0809和2个电位器。各个硬件的主要作用和工作方式如下:

1)0832

根据键盘输入或者电位器调节得到的参数a、b,改变正弦波形数据表的数据,将得到的新数据输出给DAC0832,,用示波器观察双极性输出端Ub输出正弦波形。

2)8255、1个LED灯与1个逻辑电平开关

8255的C口接逻辑电平开关,作为输入,用来选择是否要输出标准正弦波形;A口接LED灯,作为输出,用来显示此时输出波形是否为标准正弦波形。

3)0809和2个电位器

通过实验台的两个电位器输出0~5V电压分别送入ADC0809的通道0和1(IN0、IN1),通过A/D转换,得到参数a和b。

;CS_AD-----2A0H,CS_DA-----298H;V1-----IN0,V2-----IN1,Ub-----示波器;C0-----K1(开关),A0-----LED灯

ioport equ 0EC00H-0280h ;TPC的io地址

adcs equ ioport+2A0h ;CS_AD,ADC0809片选地址

adcs1 equ ioport+2A1h

dacs equ ioport+298h ;CS_DA,DAC0809片选地址

io8255a equ ioport+288h ;8255A口地址

io8255b equ ioport+28bh ;8255控制寄存器端口地址

io8255c equ ioport+28ah ;08255C口地

四、设计思路及流程图

原理设计清晰了我的设计思路,我将整个整个程序分为了五个部分,分别为主程序设计、参数调整子程序(键盘输入及电位器调节),调幅及调频子程序设计、正弦波输出子程序、延时子程序。 1. 主程序设计:主要功能有

1) 控制整个程序的流程及程序跳转;

2) 通过检测开关的状态,判断输出标准正弦波还是当前a ,b 值所对应的波形;

3) 判断参数调节的方式是键盘输入还是电位器调节。

____

CS PA0PA1PA2PA3PA4PA5PA6PA7

PC0PC1PC2PC3PC4PC5PC6PC7

K0()

逻辑电平开关LED

8255

288H~28FH

ADC0809

____

CS

IN0IN1

2A0H~2A7H U1()电位器U2()

电位器____

CS

298H~29FH DAC0832

Ub 示波器

2.参数调整程序设计:略。(原理设计中已详细解释) 3. 调幅及调频子程序设计:略。

注:需要输出标准正弦波时,将相应的a ,b 值修改,并保存之前的a ,b 值。

Y

退出DOS

输入“1” 键盘修改参输入“2” 电位器修改参

获得参数a ,b

输出波形

开关为“1”

输出标准波形

输入为“1”或

输入为

输入数字

显示提示信息

开始

判断是否

退出

Y

Y

N

N

N

4. 正弦波输出子程序设计: 正弦波输出子程序的主要功能有:

1) 读取正弦波数据表的数据并利用数模转换显示; 2) 每显示一次数据后需要调用延时子程序;

3) 数据表偏移地址加1,读取下一数据,重复以上步骤。

5. 延时子程序设计: 延时子程序的主要功能有:

1) 通过b 值的改变得到相应的第一层延时参数; 2)延时子程序内嵌套第二层延时程序;

D/A 转换

a ×SIN[SI]

开始

输出

延时

SI=SI+1

SI=128

SI=0

N

Y

延时部分主要流程:延时程序涉及到嵌套延时,loop 指令根据CX 的值是否为0确定是否接着执行此指令,因而需要用到两次CX ,且相互之间不能影响,因而先将外层CX 堆栈(b 值不同则外层延时的CX 不同),给内层CX 赋值(1FFH ,此值不能改变),执行lOOP 指令,直到CX=0;然后将外层CX 弹出减1后堆栈;接着执行内层延时,重复上述步骤,直到外层CX=0。

四、编程实现

1、主程序设计

message1 db 0dh,0ah,0dh,0ah

开始

CX 堆栈

CX=CX-1

CX=0

CX 出栈

CX=CX-1

由b 值计算出CX 值

CX=1FFH (嵌套延时)

N

Y

db ' PRESS 1 FOR SINWAVE MODIFIY WITH THE PC KEYBOARD.',0dh,0ah db ' PRESS 2 FOR SINWAVE MODIFIY WITH THE

VARIABLE RESISTANCE.',0DH,0AH

db ' PRESS 0 FOR QUIT TO DOS.',0DH,0AH,'$'

db 0dh,0ah

message2 db 0dh,0ah,0dh,0ah

db 'Sinwave [f=a sin(b t)] is modified by the PC keyboard .',0DH,0AH db '-Directly press A or B to view the parameter .',0DH,0AH

db '-Input num(0-17)+A or(0-9) B to modify the parameter .',0DH,0AH db 'Input 0 quit to the begin',0dh,0ah,'$'

db 0dh,0ah

message3 db 0dh,0ah,0dh,0ah

db 'Sin wave [f=a sin(b t)] modified by the

variable resistance .',0DH,0AH

db 'Press anykey on the PC keyboard to return to

the begin.',0dh,0ah,'$'

db 0dh,0ah

message4 db 0dh,0ah

db 'please input num!',0dh,0ah,'$'

db 0dh,0ah

a d

b 1h ;可调参数a

b db 1h ;可调参数b

c db '1' ;c为百位数字f乘以100

d db '1' ;d为十位数字g乘以10

e db '1' ;e为个位数字h乘以1

f db '0' ;参数a的百位f

g db '0' ;参数a的十位g

h db '1' ;参数a的各位h

i db '1' ;i为百位数字l乘以100

j db '1' ;j为十位数字m乘以10

k db '1' ;k为个位数字n乘以1

l db '0' ;参数b的百位l

m db '0' ;参数b的十位m

n db '1' ;参数b的各位n

data ends

begin: mov ax,data ;开机显示message1

mov ds,ax

mov ax,stacks

mov ss,ax

lea dx,message1

mov ah,09h

int 21h

judge1: mov dx,0ffh

mov ah,07h

int 21h

cmp al,'1' ;按下'1',则键盘输入

jz start

cmp al,'2' ;按下'2',则电位器调节

jz sinvr1

cmp al,'0'

jnz begin ;不是'0',重新选择

jmp qit ;按下'0',则退出DOS

sinvr1: jmp sinvr

start: lea dx,message2

mov ah,09h

int 21h

2、参数调整程序设计

(1)键盘输入

l1: call sinout ;每次调用sinout,必须要有键盘输入,才会接着往下执行mov dl,0ah

mov ah,02h

int 21h

mov ah,08h

int 21h

cmp al,'a'

jnz ccc ;若不是a,跳转比较是否为b

jmp ddd ;是a,则跳转到a处理代码

ccc: jmp l2 ;若不是a,跳转比较是否为b

ddd: mov dl,al ;输入是a,a处理代码

mov ah,02h

int 21h

mov dl,0ah

mov ah,02h

int 21h ;输出回车

mov al,f ;输出a的百位f

mov dl,al

mov ah,02h

int 21h

mov al,g ;输出a的十位g

mov dl,al

mov ah,02h

int 21h

mov al,h ;输出a的个位h

mov dl,al

mov ah,02h

int 21h

ggg: lea dx,message4 ;输出“请输入修改后a的参数值”.

mov ah,09h

int 21h

mov ah,08h ;输入

int 21h

cmp al,'0'

jb ggg

cmp al,'2'

ja ggg

mov f,al ;显示输入的百位f

mov dl,al

mov ah,02h

int 21h

sub al,30h

mov bl,64h

mul bl

mov c,al ;c为百位数字f乘以100

mov ah,08h

int 21h

cmp al,'0'

jb ggg

cmp al,'9'

ja ggg

mov g,al ;显示输入的十位g

mov dl,al

mov ah,02h

int 21h

sub al,30h

mov bl,0ah

mul bl

mov d,al ;d为十位数字g乘以10

mov ah,08h

int 21h

cmp al,'0'

jb ggg

cmp al,'9'

ja ggg

mov h,al ;显示输入的个位h

mov dl,al

mov ah,02h

int 21h

sub al,30h

mov bl,01h

mul bl

mov e,al ;e为个位数字h乘以1

mov al,e

add al,d ;求和

add al,c

cmp al,0ffh ;若输入数字大于255则重新输入

ja ggg

mov a,al ;将最终输入得到的值赋给参数a

jmp l1 ;得到a的数值后重新跳到输入界面,

l2: cmp al,'b'

jnz eee ;若不是a,b跳转比较是否为0

jmp fff

eee: jmp l3 ;若不是a,b跳转比较是否为0

fff: ... ;与输入a时主要思想一致,不再给出具体代码

hhh: ...

l3: cmp al,'0' ;输入为零返回

jnz l4 ;若不是a,b,0,跳转到start重新等待键盘输入

jmp begin ;输入为0,返回上一级,即程序主界面的功能选择l4: jmp start ;若不是a,b,0,跳转到start重新等待键盘输入

(2)电位器调节参数

sinvr: lea dx,message3 ;使用电位器设置正弦波参数

mov ah,09h

int 21h

lea dx,mess2

int 21h ;去掉返回功能

sin1:

call sinout

lea dx,messab ;装入地址

mov ah,09h ;显示字符串

int 21h

mov al,00h

mov dx,adcs

out dx,al

in al,dx ;从A/D读入修改的幅度

CMP AL,'0'

JE ABA

A1: mov a,al ;幅度存到a

mov al,00h ;moomyu修改

mov dx,adcs1

out dx,al

in al,dx ;从A/D读入修改的频率

CMP AL,'0'

JE ABB

B1: mov b,al ;频率存到b

call sinout ;修改幅度和频率后重新调用sinout

mov ah,08h

int 21h

jz sin1

jmp bg

lea dx,message2 ;装入地址

mov ah,09h ;显示字符串

int 21h

mov ah,08h

int 21h

cmp al,'q'

jnz sin1

jmp bg

ABA:inc al

jmp A1

ABB:inc al

jmp B1

4、正弦波输出设计

;正弦波数据表

SIN DB 128D,135D,141D,148D,155D,161D,167D,174D,180D,186D DB 192D,198D,203D,209D,214D,219D,223D,227D,231D,235D

DB 239D,242D,245D,248D,250D,252D,253D,254D,255D

DB 255D,254D,253D,252D,250D,248D,245D,242D,239D

DB 235D,231D,227D,223D,219D,214D,209D,203D,198D,192D

DB 186D,180D,174D,167D,161D,155D,148D,141D,135D,128D

DB 121D,115D,108D,101D, 95D, 89D, 82D, 76D, 70D

DB 64D, 58D, 53D, 47D, 42D, 37D, 33D, 29D, 25D, 21D

DB 17D, 14D, 11D, 08D, 06D, 04D, 03D, 02D, 01D, 00D

DB 00D, 01D, 02D, 03D, 04D, 06D, 08D, 11D, 14D, 17D

DB 21D, 25D, 29D, 33D, 37D, 42D, 47D, 53D, 58D, 64D

DB 70D, 76D, 82D, 89D, 95D,101D,108D,115D,121D

sinout proc near ;输出正弦波

push ax

push bx

push cx

push dx

push si

mov ax,1h

sub cx,cx

mov cl,b

cmp cl,0

je S_OUT0

mov SI,0h

judge2: mov dx,io8255b ;设8255为C口输入,A口输出mov al,8bh

out dx,al

mov dx,io8255c ;从C口输入一数据

in al,dx

mov dx,io8255a

out dx,al

and al,00000001h

mov ah,0 ;判断开关状态

mov c,al

cmp c,1

jnz S_OUT2

jmp stadard

S_OUT2: mov dl,0ffh ;幅度

mov ah,06h

int 21h

jnz S_END

mov al,SIN[SI] ;从正弦波数据表中取数据mov bl,a

cmp bl,0

je S_OUT0

mov ah,00h

mov ah,00h

mul bl ;乘以a

mov bl,255D

div bl ;除以255

push cx

neg cl

add cl,10 ;b+10作为调用子程序的次数S_OUT1: call sin_delay1 ;频率

loop S_OUT1

pop cx

mov dx,dacs

out dx,al ;输出数据到dac0832

inc si

cmp si,116 ;共116个数据

jne S_OUT2

mov si,0h

jmp S_OUT2

S_END:pop SI

pop dx

pop cx

pop bx

pop ax

ret

S_OUT0:sub ax,ax

mov dx,dacs

out dx,al ;S_OUT0输出的是空信号,输出都为零jmp S_END

sinout ENDP

stadard: mov a,08h ;输出标准正弦波

mov b,01h

call sinout

jmp judge2

5、延时子程序设计

sin_delay1 proc near

push cx

mov cx,0f00h

loop $

pop cx

ret

sin_delay1 endp

五、方案测试与结果分析

将程序运行,可以达到预期的效果。当用键盘输入调节参数时,正弦波形幅度可以从0~5V以每0.3V为间隔连续调节,频率调节明显,先键入参数名如“a”,显示当前参数值,修改后再键入参数名,则修改参数完成,随后输出波形会发生变化;以电位器调节参数时,幅度、频率变化比较明显;标准波形满足2V,50Hz要求。

在运行代码的过程中也遇到了一些问题,主要的问题及解决思路如下:

1.堆栈问题

问题描述:在延时程序嵌套子延时,用到两次CX值,为保存原始的CX,因而要进行三次堆栈及弹出,过程中发现堆栈和弹出的顺序错乱使得CX发生值的突变,使得延时环节发生错误。

解决方法:主要在程序中随时将需要保护的寄存器内容推入堆栈进行保护,同时要注意先进先出,保证堆栈与出栈一一对应。

2.频率调节某些情况无法实现

问题描述:b值大小与延时环节的时间t成反比,此时需要用到出发

来决定延时程序最外层的CX值大小,即CX=T(程序中设定)/b;发现利用除法效果不明显,且因为除法较为复杂,不容易实现。

解决方法:利用NEG函数指令,对b求补,可以转化为乘法,及CX=T ×(NEG(b)+20H),可以满足b值越大,延时越小,但不能准确满足延时环节的时间t与b值大小的反比关系。实验表明,频率调节较为明显,基本上满足要求。

六、改进与提高

通过修改代码基本上实现了波形可调发生器的设计,包括基本功能和一部分扩展功能,但是通过实验,有很多需要改进的地方。

1、一部分功能不够完善,例如在利用电位器调节参数时,幅度及频率不是实时改变的,只有改变电位器后,按ENTER键才可以看到变化。

2、频率调节,对b值采用求补方法来确定延时时间,不能满足两者的反比关系,使得频率调节有一定的误差。

3、将本题延伸,定义其他波形的数据表,可以扩展到方波、三角波、锯齿波等其他波形。

七、分析与总结

在设计过程中,会遇到各种问题,很多时候,程序运行的结果与预想的不一样,没有正确的结果,此时需要耐心分析代码,找出问题。本次试验,常常遇到的问题是,程序跳转发生错误,逻辑发生错误,在修改的过程中,更加深刻地意识到程序模块之间的跳转规则。模块

调试完成,接着进行系统调试,利用TD查看寄存器的值可以知道程序是否按照预想的运行。系统调试是一件非常繁琐的事情,要使系统设计的更为完善,就必须花费大量的时间在调试上。

在实验验收的过程中,我们的程序并不太得到验收老师的认可,我们自己也承认没有精确计时等原因使整个课程设计有些简单,不太符合课程的要求。一开始为了贪图方便就采用了软件计时的方法,并没有看到精确计时的要求。也是对硬件的不为熟悉,对8253及8255的应用也有所欠缺。验收结束后,我又专门花时间研究了下,虽然对本次课程设计的帮助已经不大,但我认识到其实精确计时也并不很难。

对于两个可调电位器输出通过A/D 转换后作为可调参数的设计方案

主程序流程图:

微机原理课程设计电压报警器实验报告

南通大学电子信息学院 微机原理课程设计 报告书 课题名: 班级: 姓名: 学号: 指导老师: 日期: xxx

目录 1.设计目的 (2) 2.设计内容 (2) 3.设计要求 (2) 4.设计原理 (3) 5.硬件电路图 (3) 6.程序代码 (5) 7.程序及硬件系统调试情况 (19) 8.设计总结与体会 (19)

一、设计目的 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。 通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 二、设计内容 设计一个电压报警器,要求采集实验箱提供的0~5V的电压,当输入电压在3V以内,显示电压值,如2.42。当输入电压超过3V,显示ERR,并报警。电压值可在七段数码管显示,点阵广告屏显示或液晶屏显示。报警形式自行设计,

东南大学港口规划布置课程设计

《港口规划与布置》课程设计计算说明书 交通学院港航系 二○一三年八月

目录 1设计基础资料 (3) 2 1.1 港口状况及发展规 划 (3) 3 1.2 设计船 型 (3) 4 1.3 装卸工艺及装卸能 力 (3) 5 1.4 港处自然条 件 (3) 6 1.5 施工能

力 (3) 7 1.6 主要投资项目单 价 (4) 8 1.7 其他经济参数假 设 (4) 9港口规模 (5) 9.1件杂货码头最优泊位 数······························ ······························· (6) 9.2散货码头最优泊位 数······························ ·······························

(6) 9.3泊位年通过能力验 算······························ ······························· (6) 10港口总体布置 (8) 10.1港口水域布 置······························ ······························· (8) 10.1.1码头布 置···························· ····························· (8) 10.1.1.1码头顶高 程·························· ··························· (8) 10.1.1.2码头前沿水深(底高

东南大学微机第四次实验报告

东南大学 《微机实验及课程设计》 实验报告 实验四双列点阵发光二极管显示实验 姓名:董元学号:22011207 专业:测控技术与仪器实验室:计算机硬件技术实验时间:2013年05月15 日报告时间:2013年05月18日评定成绩:审阅教师:

一. 实验目的与内容(概述) 实验目的: 1)进一步掌握TPC实验装置的基本原理和组成结构; 2)了解双色点阵LED显示器的基本原理 3)掌握PC机控制双色点阵LED显示程序的设计方法 实验内容: 4-1、在双色点阵发光二极管上显示一个黄色或红色的“年”字。 4-2、在双色点阵发光二极管上显示你的姓的汉字或拼音的第一个字母。要求该字符红色和黄色相间。 要求: 1、正确设置退出条件:可以按任意键退出,或者显示一定的次数退出 2、注意尽量清晰地显示字符,消除重影问题 4-3、利用双色点阵发光二极管任意设计一款霓虹灯动态图案,要求二极管阵列可以间或发两种颜色的光,并能看清动态变换的效果。 二. 基本实验原理(或基本原理) 点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。当微机输出的控制信号使得点阵中有些LED 发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。车站广场由微机控制的点阵LED大屏幕广告宣传牌随处可见。 实验仪上设有一个共阳极8×8点阵的红黄两色LED显示器,其点阵结构如图所示。该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。 1、硬件连接: (1)行代码、红色列代码、黄色列代码各用一片74LS273锁存。 (2)行代码输出的数据通过行驱动器7407加至点阵的8条行线上, (3)红和黄列代码的输出数据通过驱动器DS75452反相后分别加至红和黄的列线上。 (4)行锁存器片选信号为CS1,红色列锁存器片选信号为CS2,黄色列锁存器片选信号为CS3。 2、流程图:

计算机操作系统综合设计实验报告实验一

计算机操作系统综合设计 实验一 实验名称:进程创建模拟实现 实验类型:验证型 实验环境: win7 vc++6.0 指导老师: 专业班级: 姓名: 学号: 联系电话: 实验地点:东六E507 实验日期:2017 年 10 月 10 日 实验报告日期:2017 年 10 月 10 日 实验成绩:

一、实验目的 1)理解进程创建相关理论; 2)掌握进程创建方法; 3)掌握进程相关数据结构。 二、实验内容 windows 7 Visual C++ 6.0 三、实验步骤 1、实验内容 1)输入给定代码; 2)进行功能测试并得出正确结果。 2、实验步骤 1)输入代码 A、打开 Visual C++ 6.0 ; B、新建 c++ 文件,创建basic.h 头文件,并且创建 main.cpp 2)进行功能测试并得出正确结果 A 、编译、运行main.cpp B、输入测试数据 创建10个进程;创建进程树中4层以上的数型结构 结构如图所示:。

createpc 创建进程命令。 参数: 1 pid(进程id)、 2 ppid(父进程id)、3 prio(优先级)。 示例:createpc(2,1,2) 。创建一个进程,其进程号为2,父进程号为1,优先级为2 3)输入创建进程代码及运行截图 4)显示创建的进程

3、画出createpc函数程序流程图 分析createpc函数的代码,画出如下流程图:

四、实验总结 1、实验思考 (1)进程创建的核心内容是什么? 答: 1)申请空白PCB 2)为新进程分配资源 3)初始化进程控制块 4)将新进程插入到就绪队列 (2)该设计和实际的操作系统进程创建相比,缺少了哪些步骤? 答:只是模拟的创建,并没有分配资源 2、个人总结 通过这次课程设计,加深了对操作系统的认识,了解了操作系统中进程创建的过程,对进程创建有了深入的了解,并能够用高 级语言进行模拟演示。一分耕耘,一分收获,这次的课程设计让 我受益匪浅。虽然自己所做的很少也不够完善,但毕竟也是努 力的结果。另外,使我体会最深的是:任何一门知识的掌握, 仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能 达到功效。

东南大学信息学院微机实验报告九

实验九 一、实验目的 1.熟悉系统功能调用INT 21H的有关功能 2.编写时钟程序 二、实验任务 1.执行时钟程序时,屏幕上显示提示符“:”,由键盘输入当前时、分、秒值,即XX:XX:XX,随即显示时间并不停地计时。 2.当有键盘按下时,立即停止计时,返回DOS。 三、源程序 DATA SEGMENT BUFFER DB 11 DB ? DB 10 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA OUTCLK: MOV AX,DATA MOV DS,AX MOV DL,':' MOV AH,2 INT 21H MOV DX,OFFSET BUFFER MOV AH,0AH ;输入字符串 INT 21H MOV BX,OFFSET BUFFER+2 MOV AL,[BX] ; 时针,ASCII码转非压缩BCD CMP AL, 03AH JAE ERROR1 CMP AL, 02FH JBE ERROR1 AND AL,0FH MOV [BX],AL INC BX MOV AL,[BX] AND AL,0FH MOV [BX],AL INC BX INC BX MOV AL,[BX] ; 分针

AND AL,0FH MOV [BX],AL INC BX MOV AL,[BX] AND AL,0FH MOV [BX],AL INC BX INC BX MOV AL,[BX] ;秒针 AND AL,0FH MOV [BX],AL INC BX MOV AL,[BX] AND AL,0FH MOV [BX],AL MOV BX,OFFSET BUFFER+2 CALL TOBCD ; 时针,两位非压缩BCD转换成两位压缩BCD MOV CH, AL ADD BX,3 CALL TOBCD MOV DH, AL ; 分针,两位非压缩BCD转换成两位压缩BCD MOV DH,AL ADD BX,3 CALL TOBCD ; 秒针,两位非压缩BCD转换成两位压缩BCD MOV DL,AL CMP CH, 24H JAE ERROR CMP DH, 60H JA ERROR CMP DL, 60H JA ERROR ERROR1: MOV AH,4CH INT 21H AGAIN: CALL DELAY MOV AL,DL ; 秒针加1 ADD AL,1 DAA MOV DL,AL CMP AL,60H JA ERROR JNE DISPY

微机硬件课程设计实验报告

目录 一、基础实验部分 (1) 实验1 存储器读写实验 (1) 实验2 简单I/O口扩展实验 (3) 实验3 8255并行口实验 (4) 实验4 8253定时器/计数器接口实验 (5) 实验5 8259中断控制器实验 (7) 二、综合设计实验部分 (12)

一、基础实验部分 实验1 存储器读写实验 一、实验设备 微机实验箱、8086CPU模块。 二、实验要求 学会用使用工具软件,掌握用单步执行和断点方式运行程序,观察寄存器和内存中的数据变化等程序调试的手段。 三、实验步骤 1、实验接线:本实验无需接线。 2、编写调试程序。 3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。 四、思考题 1、①单步执行到“intram”标号的语句时,ds寄存器的数据是什么?②采用断点方式运行时执行到第一个断点处,2000H~202FH内存单元的数据是什么?③执行到第二个断点处,2000H~200FH内存单元的数据是什么?④并根据观察结果和对源程序的判读简述源程序的运行效果。 答:①ds寄存器的数据是0100H。 ②2000H~202FH内存单元的数据全是00。 ③2000H~200FH内存单元的数据是AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55。 ④源程序的运行效果是在第一个间断点处可以把数据清零,在第二个间断点处即 可完成赋值。

2、修改程序,实现从2000H 到200FH 单元依次赋值00H~0FH 的功能。 答:程序如下 code segment assume cs:code org 0100h start: mov ax,0100h mov ds,ax ;数据段地址 mov es,ax mov si,1000h ;偏移地址 mov cx,0010h ;循环次数 mov al,0 ;将al 清零 intram: mov [si],al inc si ;将偏移地址+1 inc al ;将al 的值+1 loop intram nop ;设置断点处 jmp start code ends end start 五、出现的问题及解决过程 序号 出现的问题 原因 解决过程 1 不能得到内存单元的运 行结果 未在程序中设置断点 在程序中设置正确断点 2 2000H 到200FH 单元得不 到00H~0FH 设置的循环次数不对 mov cx,0016h 将循环次数改为 mov cx,0010h

微机课设实验报告

微机课程设计 数字温度计实验报告

一、题目: 上位机:完成界面设计与通讯程序 1、能够显示两个温度值,温度精度0.5度,当超出报警温度阈值时,温度 值后又提示字幕。 2、能够设定报警温度阈值 3、每隔一秒将温度值保存至文件存档。当超出报警温度阈值时,温度值后 面有提示。 4、可以对串口进行设置。 下位机:完成电路设计与控制程序 1、用两个DS18B20测温。 2、通过串口与上位机通信,并传输温度值,接受阈值设置。 3、当超出报警温度阈值时,有相应指示灯提示。 4、将当前温度显示LCD1602液晶屏上,当超出报警温度阈值时,温度值后 有提示。 二、原理 DS18B20是DALLS公司推出的“1—wire”接口的数字温度传感器,可以直接将温度转换为9~12串行信号供单片机处理。由于这种传感器只有一个IO口,是单总线串行接口,单片机可以利用串行通信将数据读出并按照LCD 的协议显示在1602液晶屏上。同时,通过PC机与单片机之间的串行通信,可以用PC机控制温度的警戒值以及记录不同时间测量的温度。 三、原理图 图3.1 LCD、18B20以及串口与单片机最小系统连接图

图3.2电源模块 四、流程图 1、上位机流程图 图4.1.1发送数据流程图图4.1.2 接受数据流程图

2、下位机流程图 图4.2.2读出温度子程序流程图 图4.2.1总流程图 图4.2.4计算温度子程序流程图

图4.2.3 温度转换流程图 图4.2.6温度值显示在LCD1602上 图4.2.5 显示数据刷新子程序 五、源程序 1、上位机程序:见附录1; 2、下位机程序:见附录2; 3、实验结果显示(上位机):见附录3。

东南大学电路实验实验报告

电路实验 实验报告 第二次实验 实验名称:弱电实验 院系:信息科学与工程学院专业:信息工程姓名:学号: 实验时间:年月日

实验一:PocketLab的使用、电子元器件特性测试和基尔霍夫定理 一、仿真实验 1.电容伏安特性 实验电路: 图1-1 电容伏安特性实验电路 波形图:

图1-2 电容电压电流波形图 思考题: 请根据测试波形,读取电容上电压,电流摆幅,验证电容的伏安特性表达式。 解:()()mV wt wt U C cos 164cos 164-=+=π, ()mV wt wt U R sin 10002cos 1000=??? ? ? -=π,us T 500=; ()mA wt R U I I R R C sin 213.0== =∴,ππ40002==T w ; 而()mA wt dt du C C sin 206.0= dt du C I C C ≈?且误差较小,即可验证电容的伏安特性表达式。 2.电感伏安特性 实验电路: 图1-3 电感伏安特性实验电路 波形图:

图1-4 电感电压电流波形图 思考题: 1.比较图1-2和1-4,理解电感、电容上电压电流之间的相位关系。对于电感而言,电压相位 超前 (超前or 滞后)电流相位;对于电容而言,电压相位 滞后 (超前or 滞后)电流相位。 2.请根据测试波形,读取电感上电压、电流摆幅,验证电感的伏安特性表达式。 解:()mV wt U L cos 8.2=, ()mV wt wt U R sin 10002cos 1000=?? ? ?? -=π,us T 500=; ()mA wt R U I I R R L sin 213.0===∴,ππ 40002==T w ; 而()mV wt dt di L L cos 7.2= dt di L U L L ≈?且误差较小,即可验证电感的伏安特性表达式。 二、硬件实验 1.恒压源特性验证 表1-1 不同电阻负载时电压源输出电压 2.电容的伏安特性测量

微机原理课程设计报告

— 微机原理 课程设计报告 ——电子表程序设计 ^ 。

(一)设计任务: 用汇编语言设计一电子表程序,要求: ! (1)实现秒、分、时的计时,并显示于屏幕中央 (2)能够校时 (3)能够半点、整点报时 (二)设计原理 该程序主要由三部分构成:时间设置、延时程序和时钟显示。 (1)时间设置 … ①输入初始时间 先调用DOS操作系统模块2,在显示屏上显示‘:’,再调用DOS操作系统模块10,提示输入初始时间。由键盘输入的时间以字符串形式存放在已定义的存储器缓冲区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓冲区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放置在寄存器CH、DH、DL中。 ②暂停计时 按Pause Break键即可暂停计时,再按下任意键恢复计时 ③重新输入时间 在程序运行时,可按下Esc键重新输入初始时间,此时程序检测到Esc(ASCII码为1BH)被按下,返回①步提示重新输入时间。 以上两步可实现校时的功能。

④半点、整点报时 《 程序运行时,分钟值每次改变都需要与30、60比较,若相等,则调用DOS操作系统模块7使计算机响铃并在时间后显示‘ ------’。同时若分、秒值为60则需进位,时为24时进位,保证时钟程序的正确性。 (2)延时程序 计算机在执行指令时,各种操作都按指令执行,但在像程序控制器那样由计算机发出指令控制外部设备是,由于外部设备所具有的机械惯性或其他原因,需要在计算机发出指令后有规律地延迟或等待一段时间。这类延时,可以用硬件延时来完成,单用软件来实现也是一种方便和常用的方法。 计算机执行每一条指令,虽然很快,但还是需要一段时间的。因此从理论上讲,可在程序中加一些与程序无关的指令去完成,要计算指令执行的时间,又不能过多的为了延时而增加编制程序的工作量。因此,编制延时程序,应尽量采用较少的指令,节约存储器,并且不能对主程序造成影响。 每条指令执行时间的长短,是以计算机的时钟周期为基本单位的。当CPU采用的时钟频率一定时,时钟周期也为定值。因此可根据时钟周期的多少来计算执行指令所需的时间。完成本设计任务使用的计算机采用Intel Pentium 4处理器,主频为,时钟周期约为。 通过时间约1s的长延时累加,并以时、分、秒的形式显示出来,就可以编写出一个时钟程序。 (3)时钟显示 … ①设置光标位置子程序IOSET

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

微机课程设计电梯控制器

《微机实验及课程设计》 课程设计报告 FBI Warning: 汇编代码是好几届之前的一个学姐的,我只是修改了一下.修改后完美运行报告是我自己写的 不需要注明出处,就说是你写的

目录 一.课程设计目的与要求 (2) 二.方案论证与原理设计 (3) 三.详细(机理)设计 (3) 四.方案实现与测试(或调试) (6) 五.分析与总结 (7) 一. 课程设计目的与要求 设计目的:

微机课程综合设计用于检验和提高学生在原理与接口综合应用方面分析问题与解决问题的能力,同时也给学生提供更多、更好的训练机会,课程给出了10 道微机硬件应用综合测试题。为完成每道测试题,至少需要选用TPC 微机实验装置中三部分以上的硬件电路(还需将它们有机组合起来)并编制相应的应用。 通过试验还能够让学生更好的了解所学知识在实际控制中的运用,增加对本专业的认识和学习兴趣。 设计要求: 1)设计基本要求 用键盘、按钮、八段码和LED 模拟电梯工作过程。楼层设为8 层,键盘数字键1~8 用来键入希望停的楼层,8 个LED 显示希望停的楼层,2 位八段码指示电梯当前所在楼层,按钮用来启、停电梯。电梯正常运行时以每2 秒1层的速度上升或下降。要求“电梯”能按以下方式运行: (1)设当前电梯停在某层(2 位八段码显示相应楼层,8 个LED 全灭)。键入1~8 数字键,如键入的数字与当前电梯停层同,则什么亦不动作,若不同则相应楼层的LED 亮;如再按运行键,则电梯自动判别上升或下降(在运行过程中八段码显示楼层变化)一直到达希望停的楼层(八段码显示该楼层,相应LED 灭); (2)设当前电梯正在上升或下降运行(此时八段码显示楼层变化,LED 指示希望抵达的楼层),若键入新的希望停的楼层数字(相应的LED 亮),则对同方向(上升或下降)未到的楼层能停,对其它情况则先停原希望停的楼层,然后按运行键后继续运行)。如下几例: ①设电梯当前在2 层,向上运行,LED 指示希望在6 层停,此时若键入4,则电梯将在4 楼停,若再按运行键,则继续运行至6 层停; ②同上情况,若键入的不是4 而是8,则电梯将先停在6 层,再按运行键,运行至8 层停; ③同上情况,若键入的不是4(或8),而是1,则电梯先停在6 层,再按运行键,运行至1层停。 2)进一步设计要求 除运行按钮外,再设计几个按钮,模拟更多的电梯运行功能,如: ①同步在8*8 点阵显示器显示上升与下降箭头,当停止时显示当前所在楼层号. ②直达按钮。若按此按钮,电梯按直达方式运行,即对运行期间新键入的停靠楼层(即使是同方向未到 楼层)亦不停,直达终点楼层; ③急停按钮。电梯运行中,若按此按钮,则电梯立即停在下一到达的楼层; ○4断电待修按钮。按下该钮电梯不能工作,再按一下才能重新工作; ○5设置急停开关(K0-K7 至一),引入中断处理,立即响应,就近停靠; 分工情况:

微机控制技术实验报告

《微机控制技术》课程设计报告 课题:最少拍控制算法研究专业班级:自动化1401 姓名: 学号: 指导老师:朱琳琳 2017年5月21日

目录 1. 实验目的 (3) 2. 控制任务及要求 (3) 3. 控制算法理论分析 (3) 4. 硬件设计 (5) 5. 软件设计 (5) 无纹波 (5) 有纹波 (7) 6. 结果分析 (9) 7. 课程设计体会 (10)

1.实验目的 本次课程设计的目的是让同学们掌握微型计算机控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、控制算法的设计、硬件设计的方法。学习并熟悉最少拍控制器的设计和算法;研究最少拍控制系统输出采样点间纹波的形成;熟悉最少拍无纹波控制系统控制器的设计和实现方法。复习单片机及其他控制器在实际生活中的应用,进一步加深对专业知识的认识和理解,使自己的设计水平、对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。 2.控制任务及要求 1.设计并实现具有一个积分环节的二阶系统的最少拍有纹波控制和无纹波控制。 对象特性G (s )= 采用零阶保持器H 0(s ),采样周期T =,试设计单位阶跃,单位速度输入时的有限拍调节器。 2.用Protel 、Altium Designer 等软件绘制原理图。 3.分别编写有纹波控制的算法程序和无纹波控制的算法程序。 4.绘制最少拍有纹波、无纹波控制时系统输出响应曲线,并分析。 3.控制算法理论分析 在离散控制系统中,通常把一个采样周期称作一拍。最少拍系统,也称为最小调整时间系统或最快响应系统。它是指系统对应于典型的输入具有最快的响应速度,被控量能经过最少采样周期达到设定值,且稳态误差为定值。显然,这样对系统的闭环脉冲传递函数)(z φ提出了较为苛刻的要求,即其极点应位于Z 平面的坐标原点处。 1最少拍控制算法 计算机控制系统的方框图为: 图7-1 最少拍计算机控制原理方框图 根据上述方框图可知,有限拍系统的闭环脉冲传递函数为: ) ()(1)()()()()(z HG z D z HG z D z R z C z +==φ (1) )(1)()(11)()()(1z z HG z D z R z E z e φφ-=+== (2) 由(1) 、(2)解得:

微机原理课程设计

合肥工业大学 计算机与信息学院 课程设计 课程:微机原理与接口技术设计专业班级:计算机科学与技术班 学号:2 姓名:

一、设计题目及要求: 利用8259A中断,实现对8253多种计数初值的设定: 1.在中断服务程序中设定8253的计数初值。 2.开关K1用于设定秒方波的计数初值,K2用于设定1秒方波的计数初值,K3用于设定2秒方波的计数初值。 3.用8253的输出信号,控制一个发光二极管,以演示修改效果。 二、设计思想: 整体设计: ①利用8259A芯片设定IR1、IR2、IR3三个中断,分别用三个开关的高低电平触发中断。 ②在三个终端的中断服务子程序里面为8253芯片通道0设定不同频率的方波计数初值,使得在触发不同中断时8253芯片产生周期为秒、1,秒、2秒的方波。③将8253的输出端口与发光二极管连接,通过二极管的亮灭显示出8253内部方波的频率。 部分设计: ①8253芯片方式3初值确定:根据分频电路T(n)=T/2*公式以及、1s、2s方波的频率计算出初值分别为2580H、4B00H、9600H。 ②8253芯片和8259芯片的片选方法:设定8259A和8253芯片的端口号分别为0FFE0H 、0FFE1H,以及0FFFCH—0FFFFH,使得在连接138译码器时,A连A2,B连A3,C连A4,T0连接8259A芯片的CS端,T7连接8253芯片的CS端。 ③8259A中断向量表写入以及芯片初始化:根据8259A各个中断在中断向量表中的地址,将IR0、IR1、IR2的中断服务程序入口地址写入向量表中;ICW4设定除中断0、1、2外其他位屏蔽。 ④手动设置中断结束:为了不影响各个中断之间的交替响应,在每个中断服务程序结束之前写入中断结束方式,将20H输出到8259端口,将当前中断结束响应后再响应下一个中断。 三、功能流程图: 结果讨论: 附录:实验代码:(完整的源程序) CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H Port0 EQU 0FFE0H ;8259芯片的端口号 Port1 EQU 0FFE1H START: CALL F8259

微机系统课程设计实验报告---交通信号灯自动控制模拟指示系统[13页].docx

微机系统课程设计实验报告

课题:交通信号灯自动控制模拟指示系统 一、课程设计目的 1.掌握CPU与各芯片管脚连接方法,提高借口扩展硬件电路 的连接能力。 2.加深对定时器、计数器和并行借口芯片的工作方式和编程 方法的理解。 3.掌握交通信号灯自动控制系统的设计思路和实现方法。 二、课程设计内容 设计并实现十字路口通信号自动控制模拟指示系统。设该路口由A、B两条通行相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。 三、应用系统设计方案 交通信号灯的亮灭时间及数码管显示时间可以通过8253来控制,8253的时钟源采用时钟信号发生器与分频电路提供,通过计算获得计数初值为1000。按照需要设定工作在方式3. 交通信号灯及数码管可以采用系统提供的相应模块,控制可以通过8255可编程并行借口,PA口控制红黄绿交通灯的亮灭,PB口和PC口控制时间显示数码管的段和位。PC0作为OUT1的输入。

四、系统测试结果 1.基本功能实现 (1)以秒为计时单位,两位数码管以十进制递减计数显示通行剩余时间,在递减计数为零瞬间转换。即南 北的绿灯、东西的红灯同时亮30秒,同时南北路口 数码管递减显示绿灯剩余时间;为0时,南北的黄 灯闪烁5秒钟,同时东西的红灯继续亮;南北的红 灯、东西的绿灯同时亮30秒,同时东西路口数码管 递减显示绿灯剩余时间;为0时,南北红灯继续亮, 同时东西的黄灯闪烁5秒;若不结束,则开始循环。 (2)通过键盘可以对红、黄、绿三色信号灯所亮时间再0~99内任意设定。 (3)十字路口的通行气势状态可自行设定,系统启动后自动运行,按“Q”退出。 2、发挥部分实现 (1)增加人工干预模式,在特殊情况下可通过人工干预,手动控制A、B交通灯的切换时间,并可以随时切 换为自动运行模式。 (2)增加夜间控制功能,交通灯在进入夜间模式后,A、B干道上红、绿灯均不亮,黄灯信号灯闪烁。 (3)增加红灯倒计时显示。

东南大学MCU综合课程设计

东南大学自动化学院 《MCU技术及课程设计》 数字钟设计报告 姓名:学号: 专业:自动化实验室: 组别:同组人员: 设计时间:2015年6月1日——2015年6月17日 评定成绩:审阅教师:

目录 一. 课程设计的目的与要求 (3) 二. 原理设计 (3) 三. 方案实现与测试,实验流程图,可采用c语言实现 (8) 四.分析与总结 (9)

一.课程设计的目的与要求 1.可设定时间初始值; 2.能够使用按键调整时间的时分位; 3.使用段式LCD显示。 二.原理设计 MSP430的液晶显示有静态、2MUX、3MUX、4MUX四种显示模式,而最常用还是4MUX 模式。通俗讲,就是有四个公共端(相当于数码管扫描显示的位选端)、若干个驱动端的模式。这种模式的最大优点就是能使用最少的引脚提供最多的液晶显示段。图1表示了4MUX显示模式下的公共端与驱动端,其中(a)说明了一个”8”字的四个公共端,(b)说明了两个驱动端,当分别给公共端与驱动端液晶信号时,就显示对应的数码。 图一 在MSP430系列能驱动液晶显示的单片机中,专门开辟了一片存储空间(LCDMEM1~LCDMEM20)存放要显示的信息,被称为液晶显示缓存,简称液晶显存。MSP430F6638共有20字节单元液晶显存,如果使用4MUX方式显示,可以显示160段液晶笔画。这时,每个显存将对应两个驱动端。图2表示了在4MUX方式下的液晶显存、液晶显示、液晶驱动端之间的对应关系。 段式LCD的驱动方法基本上和数码管是不太一样的,数码管只要给电和选通就亮。 但是段式LCD的驱动是靠两部分组成的:

第一部分是不间断的电压脉冲,这个电压脉冲还是被分为好几个电压等级了,如果你用的是1/4duty1/3偏压的话,那么就要有四个电压等级。也就是VCC---2/3VCC--1/3VCC---GND 这几个电压等级直接可以用电阻进行分压得到,然后直接和430单片机的R03---GND; R13----1/3VCC;R23---2/3VCC;R33---VCC这样直接连接就可以了。这样电压等级就有了,具体在里面生成的电压等级脉冲,MSP430是可以自己生成的,不用我们担心了。 COM0--COM3就这些个电压等级的输出管脚。直接连上LCD屏的COM0---COM3就可以了。 第二部分是选通管脚选通管脚也就是LCD上面的SEG1----SEG12,和MSP430F6638的SEG0---SEG11直接相连,硬件电路如下: JP5是用一个跳帽来控制背光(由于板卡IO口有限),把跳帽跳上段式LCD背光打开。 2段式LCD驱动编写步骤: 首先要明白每个输出管脚何时输出和输出什么,这样才能得到我们想要的字形。 MSP430F6638自带有对多达160图块进行对比度控制的集成LCD驱动器,有LCD段码寄存器,就是说你只要把这些你要显示的字形(当然如果你只想显示数字的话,只用存0-9这几个字码就可以了),段码寄存器的地址是从091H开始------到0A4H每个地址里面可以放一个8位,每一位对应于液晶上面的一段,所以说一个地址对应于液晶上面就是一个字。(一个字的段码也是8位的) 这样的话,我们只要将要显示的一个数字的编码发到这个单片机的断码寄存器里面,就可以直接显示了,是通过COM口的脉冲波形同时将寄存器里面的段进行耦合,产生压差,LCD 只有产生压差才能点亮。一直提供一个不变的高电平是要烧坏液晶的,这就是和数码管区别的地方。不过这些脉冲430单片机已经帮我们做好了。 总体的步骤就是,我们将LCD的段码先整理好,然后放在一边备用,等到你想显示某个数据的时候,只要将这个8位的段码直接写入单片机留给你的LCD寄存器写入端口数组就可以了。 在MSP430F6638里面也就是LCDMEM[];[]中应该写的是要显示的位,这个位是数码管上面的位置,比如你想显示液晶上面的第2位数,先不说要显示的内容是什么,这里的位选应该是LCDMEM[1],因为是从0开始的,所以第二位应该是LCDMEM[1].(从091H开始------到0A4H每个地址都可以存一个8段)然后说显示的内容:

物联网传输综合课程设计实验报告 人体红外数据通信实验

物联网传输综合课程设计实验报告 人体红外数据通信实验 一、实验目的 1. 了解基于Z-Stack 协议栈的SappWsn 应用程序框架的工作机制 2. 掌握在ZigBee 协议栈中添加人体红外传感器驱动的方法。 二、实验设备 1. 装有IAR 开发工具的PC 机一台 2. 下载器一个 3. 物联网多网技术开发设计平台一套 三、实验原理 在Z-Stack APP中的HAL\Target\CC2530EB\Includes组中,提供了一个hal_io.h的文件,如图所示。 其中,提供了名为HalIOSetInput 的函数,可以将燃气传感器端口(P1.0)设置为输入,然后通过调用HalIOGetLevel 函数来获取传感器状态。 四、实验步骤 1、将单片机zigbee协调器拆卸下来,取出烧写器。通过Mini USB接口将zigbee 协调器与下载器和PC机相连。

2、将实验箱控制方式切换开关拨至“手动”一侧,转动实验箱“旋钮节点选择”旋钮,使得协调器旁边的LED灯被点亮 3、打开配套代码中的ZStack-CC2530\Projects\SappWsn\SappWsn.eww工程文件,在“Tools”组中,找到“f8wConfig.cfg”文件,双击打开,并找到大概第59 行的“-DZAPP_CONFIG_PAN_ID=0xFFFF”,将其中的“0xFFFF”修改为其他值,例如0x0010

4、在工程目录结构树上方的下拉列表中,选择“CoordinatorEB”,点击工具栏中的“Make”按钮,编译工程,等待工程编译完成,如看到警告,可以忽略。在工程目录结构树中的工程名称上点击鼠标右键,选择“Options”,并在弹出的对话框中选择左侧的“Debugger”,并在右侧的“Driver”列表中选择“Texas Instruments”,点击“Download and Debug”按钮。待程序下载完毕后,点击“Go”按钮,使程序开始运行。点击工具栏中的“Stop Debugging”,退出调试模式, 5、转动实验箱“旋钮节点选择”旋钮,使得热释红外传感器节点旁边的LED灯被点亮,在工程目录结构树上方的下拉列表中,选择“EndDeviceEB”,在“SAPP_Device.h”文件中,取消“HAS_IRPERS”的注释,并保证其他的功能均被注释,如图所示

东南大学微机实验报告一

微机实验报告 实验一指令与汇编语言基础 姓名:学号: 专业:测控技术与仪器实验室: 时间:2013年04月23号报告时间:2013年04 月23号评定成绩:审阅教师:

一、实验目的 1)了解命令行操作基本方式和基本命令,掌握PC环境下命令行方式的特点; 2)掌握汇编语言程序指令编辑、宏汇编、连接、运行基本概念;3)熟练掌握动态调试程序TD的常用命令和窗口功能,学会用TD调试程序,修改环境; 4)学会利用DEBUG或TD检查认识指令功能的正确方法。 二、实验内容 (一)必做实验 1-1、要求计算两个多字节十六进制数之差: 3B74AC60F8-20D59E36C1=? 式中被减数和减数为5个字节,存放在DATA1和DATA2的内存区,低位在前,高位在后。试编写减法的程序段,要求相减的结果存放在首址为DATA3的内存区。 1-2、以BUFFER为首地址的内存区存放了10个十六位带符号数,编写程序比较它们的大小,找出其中最小的带符号数,存入MIN和MIN+1单元。 三实验源程序和流程图 1、十六进制相减 A、实验要求: 计算两个多字节十六进制数之差:

3B74AC60F8-20D59E36C1=? 式中被减数和减数为5个字节,存放在DATA1和DATA2的内存区,低位在前,高位在后。试编写减法的程序段,要求相减的结果存放在首址为DATA3的内存区。 B、实验源代码和流程图 DATA SEGMENT DATA1 DB 0F8H,60H,0ACH,74H,3BH DATA2 DB 0C1H,36H,9EH,0D5H,20H DATA3 DB 5 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,5 MOV DI,0 CLD LOOPER: MOV AL,DATA1[DI] SBB AL,DATA2[DI] MOV DATA3[DI],AL INC DI DEC CX JNZ LOOPER MOV AH,4CH INT 21H CODE ENDS END START C、实验过程及实验结果

微机原理课程设计总结

微机原理课程设计 数据采集系统(中断法)

一、课设目的:进一步掌握微机原理知识,了解微机在实时采集数 据的应用,学习掌握编程和程序调试的方法。 二、课设内容和要求:用中断法将ADC0809通道0外接0—5V电 压,转换成数字量后,在七段数码管LED上显示。以小数点后 两位表示精度,显示模拟电压的十进制;0809通道0的数字量 以线性控制方式DAC0832输出,当通道0的电压为5V时,0832 的OUT为0V当通道0的电压为0时,0832的OUT为2.5V; 此模拟电压再送到ADC0809通道1,转换后的数字量在CRT 上以十六进制显示。ADC0809的采样脉冲CLK由定时器8254 的OUT0提供;ADC0809的EOC信号用作8259中断请求信号。 三、总体设计: 1)、ADC0809的IN0采集电位器0—5V电压,IN1采集0832输出的模拟量。 2)、DAC0832将ADC0809的IN0数字量重新转换成模拟量输出3)、8259用于检测ADC0809转换是否结束和向CPU发送INTR 信号 4)8255为七段LED数码管显示提供驱动信息 5)、七段LED数码管显示ADC0809的IN0的值 6)8254提供ADC0809的采样时钟脉冲。 四、硬件设计:因采用PC机和微机实验箱,硬件电路设计相对比较简单,主要利用微机实验箱上的8255并行口,ADC0809,DAC0832,七段数码管LED,8254定时/计数器,74LS574输出接口,电位器等

单元 (图1:数据采集系统硬件连接示意图) 六、软件设计:本设计通过软件编程,实现模/数转换,0809分别对IN0 0—5V直流电压的采样和经线性控制后输出电压IN1采样,IN0

微机原理课程设计实验报告DOC

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称: 学年学期: 指导教师: 年月

课程设计成绩评定表 学生姓名学号成绩 专业班级起止时间2011.12.24—2012.11.28 设计题目字符串动画显示 指 导 教 师 评 语 指导教师: 年月日

目录 一、课程设计的目的 (1) 二、设计题目 (1) 三、设计内容要求 (2) 四、设计成员及分工 (2) 五、课程设计的主要步骤 (2) 六、课程设计原理及方案 (3) 七、实现方法 (3) 八、实施结果 (8) 九、总结 (8) 十、体会感受 (8)

一、课程设计的目的 课程设计是以自己动手动脑,亲手设计与调试的。它将基本技能训练、基本工艺知识和创新启蒙有机结合,培养我们的实践和创新能力。课程设计的意义,不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力。作为信息时代的大学生,基本的动手能力是一切工作和创造的基础和必要条件。 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。 《微机原理及应用》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。 通过课程设计实践,不仅要培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能以图纸和说明书等表达设计思想和结果的能力。培养学生事实求是和严肃认真的工作态度。 通过设计过程,要求学生熟悉和掌握微机系统的软件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的系统方案论证设计、编程、软件调试、查阅资料、编写说明书等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练的熟练掌握微机系统的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的软件调试方法和步骤,熟悉微机系统的软件开发工具的使用方法。 二、设计题目

相关文档
相关文档 最新文档