控制工程课程设计报告
//CLKOUT=(1+1)*CLKIN=20M,自动延时最长时间
//CLKMD=0x17FA;
}
void int1_ini()
{
IMR=0x0002; //使能外部中断1
IFR=0xFFFF; //清除所有中断标志位
asm(" rsbx INTM"); //全局使能可屏蔽中断
}
interrupt void int1() //int1中断子程序
步骤:1、实验接线
CS0CS8255
(输出)PA0~PA7LED-A~LED-DP(段控)
(输出)PB0~PB5LED-1~LED-6(位控)
2、编程并全速或单步运行。
3、全速运行时观察数码管的变化。
程序:assume cs:code
code segment
org 100h
start:nop
nop
start1:mov cx,06h
内容:把待显示字符的LED代码组成一个七段代码表,存放在存储器中。通过对8255编写程序在多位LED数码管上显示输出。
1、设计出8255与8086接口对应硬件电路,并完成相应的连接
2、设计出8255与LED数码管的对应硬件接口电路,并完成相应的连接
3、编写程序,在数码管上显示相应字符或数字
4、写出习题部分要求的程序
send_buff=0xA4;
send();
/*送出数据0x00~0x0F*/
for(p=0;p<16;p++)
{
send_buff=0xC8;
send();
send_buff=p;
send();
delay_long();
/*数据左移指令*/
send_buff=0xA1;
send();
}
/*清除指令*/
mov bx,00feh
movdx,04a6h
movax,80h
outdx,ax
disp:mov di,offset segcod
mov dx,04a0h
mov al, bh
mov ah, 00h
add di,ax
mov al,cs:[di]
out dx,al
mov dx,04a2h
mov al, bl
6、新建源文件:FileNewSource File,保存为xf.c到上述文件夹下。
7、把上述红色字体的文件添加到工程中去:ProjectAdd Files to
8、点击fileNewSource flie编写程序xf.c,单击保存按扭,保存文件类型为.c.完成后再修改中断向量文件vectors.asm,点击工具Compile,如果没有问题,则点击Build(构建),在Debug文件夹下生成.out文件
db7fh,6fh,77h,7ch,39h,5eh,79h,71h(分别对应8-F)
db01h,02h,04h,08h,10h,20h,40h,80h(分别对应abcdefgh);显示字形码表
codeends
endstart
2DSP原理与应用实验
实验一:常用指令实验
实验说明:AD7822通过DSP的I/O口完成数据通讯。采样数据存储在从数组data_buff[]中。
next:movch,cl ;保存行值至CH
movcl,7;列数从0开始编号0-7
begin0:shlah,1;ah为A口的内容,逻辑左移1位,末位补0
jncgoon;无进位则转移,即可确定列
loopbegin0
jmpcheck0
goon:;计算显示码在discode中的位置:(行数-1)*8+列数
send_buff=0xA4;
send();
cs_high();
for(;;)
{
}
}
实验四:二维图形生成
实验说明:在本实验中,以cos或sin函数生成一维图形,并以 轴为旋转轴旋转360度,生成二维图形,用CCS的图形观察窗口观察。
3、当用键盘输入时在数码管上显示相应值
4、写出习题部分要求的程序
步骤:1、实验接线
CS0CS8255; (输入)PA0~PA7RL10~RL17(列选择线); (输出)PB0~PB7LED-A~LED-DP;(输出)PC0~PC2KA10~KA12(行选择线); (输出)PC3LED1(数码管控制开关)。
out dx, al
push cx
call delay
pop cx
inc bh
rol bl,1
loop disp
jmp start1
delay:mov cx,45h;延时常数可以自己定义
delay1:nop
nop
nop
nop
loop delay1
ret
segcod db 6dh,7dh,07h,7fh,6fh,77h
北京化工大学北方学院
课程设计报告
课程名称控制工程课程设计
专业、班级
学号
姓名
指导教师
设计时间
2011年10月
一、引言
⑴设计目的
①微机原理与接口技术实验
掌握8255A的编程原理与多位LED数码管的显示方法。
②DSP原理与应用实验
1.熟悉A/D转换的基本原理;
2.掌握AD7822BN的技术指标和常用方法;
2、掌握使用Protel 99SE绘制原理图的方法。
⑵设计意义
1.检测学生将理论与实际相联系的能力。
2.锻炼学生的实际操作能力。
3.检验学生的逻辑分析能力。
4.考查学生对书本知识的掌握程度。
5.让学生熟悉一些常用软件的使用方法。
二、正文
⑴实验设备
1微机原理与接口技术实验
MUT—Ⅲ型实验箱、8086CPU模块
check0:;check0检测是否有健被按下
movax,00h;C口的PC0、PC1、PC2作为行选择线
movdx,04a4h;C口地址
outdx,ax; 写入C口内容00H,即令所有的行都为低电平
movdx,04a0h;A口地址
inax,dx;读入A口的内容
cmpal,0ffh;判定是否有列线为低电平
jecheck0;没有,无闭合键,则循环等待
movcx,05ffh;有键闭合,延迟常数,以修改来改变延时时间
delay:loopdelay;有,则延迟清除抖动,当cx=0时则停止该循环
;行扫描键盘和列扫描键盘,确定被按键的行值和列值
movcl,3;行数
movah,0
moval, 0fbh;0fbh=1111 1011B
//ad7822的地址
ioport unsigned port8008;
unsigned int data_buff[256];
unsigned int j=0;
void sys_ini() //系统初始化子程序
{
//全局禁止所有可屏蔽中断
asm(" ssbx INTM");
//(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间
jnenext;比较结果不等于0则转移,即有列线为低电平
popax; 比较结果不等于0,即没有列线为低电平,(ax)=00fbh
roral,1;fbh(1111 1011B)循环右移,(al)=1111 1101准备检测下一行
loopcontin;循环扫描下一行
jmpcheck0;若所有行都没有被按下,则返回check0重新检测
2、编程并全速或单步运行。
3、全速运行时按动键盘,观察数码管的变化。
程序:assumecs:code
codesegmentpublic
org100h
start:movdx,04a6h;控制寄存器地址
movax,90h;设置为A口(04A0H)输入,B口(04A2H)输出,C口(04A4H)输出
outdx,ax;8255初始化
codeends
endstart
实验二:8255键盘扫描实验
实验原理介绍:本实验用到两部分电路:键盘电路和8255可编程并口电路。
内容:用8255扩展扫描3X8行列式键盘,由一位LED数码管显示
1、设计出8255与8086接口对应硬件电路,并完成相应的连接
2、调试对应8255、键盘、及数码管硬件接口电路及相应接口软件
2.启动CCS2.0,用Project/Open打开NORMAL\exp09_keyboard\keyboard_led目录下的“keyboard_led.pjt”工程文件;双击“keyboard_led.pjt”及“Source”可查看各源程序;并加载“DEBUG”目录下的 “keyboard_led.out”;
9、上述无误后,点击FileLoad Program,下载.out文件,接着点击Run按钮,观察实验结果
程序:#include "tms320uc5402.h"
void main(void)
{ long i;
while(1)
{asm(" ssbx xf");
for(i=1;i<565535;i++) {}
addsi,cx;显示码偏移地址
movdx,04a4h;C口地址
moval,0fh
outdx,al;写入C口内容
moval,[si];取被按键的显示字形码送入al
movdx,04a2h;B口地址
outdx,al;将显示字形码送B口输出显示
nop
nop
jmp check0
discodedb3fh,06h,5bh,4fh,66h,6dh,7dh,07h(分别对应0-7)
PMST&=0x00FF;