微机课程设计.docx
- 文档编号:28390662
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:17
- 大小:182.24KB
微机课程设计.docx
《微机课程设计.docx》由会员分享,可在线阅读,更多相关《微机课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
微机课程设计
课程设计报告
微机原理与应用
学院电信学院
专业信息工程2班
学生姓名蔡月冰
学号200830240052
指导教师梁亚玲
提交日期2009.3.8
目录
1.1概述1
1.1.1课程设计题目1
1.1.2课程设计目的1
1.1.3设计实现功能1
1.2硬件设计1
1.2.1硬件电路1
1.2.2器件介绍2
1.3软件设计2
1.3.1软件实现功能概述2
1.3.2程序流程图3
1.4系统调试和测试结果4
1.5心得体会4
1.6课程建议4
1.7附录程序清单4
简易电子广告牌设计
1.1概述
1.1.1课程设计题目
简易电子广告牌设计
1.1.2课程设计目的
进行一次综合的小型微机应用系统的软硬件设计。
通过课程设计,进一步巩固所学的知识,并将所学的内容加以综合运用。
将所学的理论与实际问题或应用相结合,进一步培养自主学习的能力,综合运用知识的能力,以及创新实践的能力。
1.1.3设计实现功能
基本功能在8*8双色点阵上显示红黄交替广告标语,按键盘键退出,创新实现功能有滚动闪动切换,滚动速度可通过旋钮调节,两段字符串切换,键盘输入数字显示
1.2硬件设计
1.2.1硬件电路
图1.1开关输入锁存74LS244其中K0连接到8253
图1.28253时钟分频计时
图1.3ADC0809模数转换电路
另外还有点阵连接,行片选信号CS1接280H;红列片选信号CS2接288H;黄列片选信号CS3接290H
1.2.2器件介绍
8253
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,每个计数器,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值。
74LS244
74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1C和2G作为它们的选通工作信号。
当1/OE和2/OE都为低电平时,输出端Y和输入端A状态相同;当1/OE和2/OE都为高电平时,输出呈高阻态。
ADC0809
ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0809的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
LED双色点阵
点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。
若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。
1.3软件设计
1.3.1软件实现功能概述
程序输出提示信息,完成ADC0809和8253初始化,0853两个计时器工作在方式2和3,完成分频输出,通过查表得出字符的点阵取模量依次显示,读取74ls244输入的量,进行滚动闪动切换,滚动速度可通过旋钮调节(通过ADC采样值控制循环次数),两段字符串切换,键盘输入数字显示,每次显示完成读取键盘值有键按下则退出。
程序主要分成显示,8253初始化,开关输入程序。
1.3.2程序流程图
主程序:
输入数字字符部分:
N
Y
1.4系统调试和测试结果
这个课程设计的调式我们先是运行自带的演示实验,用于确认硬件运行正常。
之后我们主要采用的是分模块调试,再综合起来。
实际调试中出现最多的问题是JNZ等跳转很容易由于代码过长而超出跳转范围,可以采取的就是先跳到一个短的标号,然后在这里用一句JMP。
其次还有就是亮度显示不足,经过反复实验得出一个比较合适的列延时。
另外就是0809控制速度的时候,输出值为0-255,导致速度过快甚至死机,所以我们对这个数据进行简单处理解决了这一问题,最后还有显示出现不稳定闪动,后发现是8253分频后翻转后稳定在另一个电平,我们通过添加初始化字程序解决这一问题。
设计结果达到设计要求,显示稳定,并且有教多的扩展,当然由于时间关系,还有些东西有待完善,比如程序的人机界面和操作简易有待提高,程序模块化做得不太完善,代码还有进一步优化的空间。
不过总的来说,这次课程设计调试结果还是比较满意的。
1.5心得体会
这次微机的课程设计进一步巩固了所学的知识,以前由于实验次数少,而且平时编程主要用的是C语言,这次的课程设计就很好的弥补了这部分缺少的知识,而且由于是团队合作,有利于培养协作精神。
这次课程设计还使所学理论知识和动手实践相结合,软件硬件设计结合,还培养了我们创新精神,比如我们实现的滚动调速功能,其实就是很简单的几句,不过做出的效果却让同学觉得很不错。
这次课程设计总的说,在老师细心的指导下,收获比较多,也为以后的课程,比如单片机,ARM等打下基础。
1.6课程建议
微机原理与应用这门课程觉得收获还是很多,不过感觉这个课程由于大家是先学C语言,使得大家对汇编学起来兴趣比较少,觉得C简单的几句汇编却是相当复杂,而汇编的底层操作优势也不是太明显,硬件部分实验由于课时等缘故上的时间比较少,觉得这个课程应该可以优先在大一时开设汇编部分,学完数电开设硬件部分,硬件部分甚至可以和单片机课程一起学。
1.7附录程序清单
;***************2008级微机原理与应用课程设计*************
;设计内容:
简易电子广告牌设计
;实现功能:
双色自动切换,滚动闪动切换,滚动速度可通过旋钮调节
;两段字符串切换,键盘输入数字显示
;硬件电路:
双色点阵74ls273825374ls244ADC0809
;创建时间:
2009年3月1日-2009年3月3日
;创建者:
08级信息工程2班蔡月冰曹永豪
;课程报告提交者:
蔡月冰200830240052
;*********************************************************
;地址声明,依次为点阵74ls244ADC08098253
ioportequ0e400h-0280h
prothequioport+280h
protlrequioport+288h
protlyequioport+290h
ls244equioport+2a0h
io0809aequioport+2B8h
io8253aequioport+29ah
io8253bequioport+299h
io8253cequioport+29bh
;数据端定义
DATASEGMENT
MESSDB'Strikeanykey,returntoDOS!
',0AH,0DH,'$';提示信息
AddweiDB00h,01h,02h,03h,04h,05h,06h,07h;一个字查表偏移量
countdw0;用于字符滚动或切换的查表偏移量
mflagdw0;两段不同字符串切换的标志
addcolordw0;更改颜色的标志
CHARSAVEDB18h,20h,28h,30h,38h,40h,48h,50h,58h,60h;1-9在BUFF中点阵偏移量
COUNTTMPDW0;键盘输入数字变量
BUFFDB8H,18H,3H,41H,0C1H,3FH,0H,3CH,0H,78H,48H,48H,0FFH,48H,48H,78H,0H,0H,3CH,42H,42H,7EH,0H,0H,0h,0h,3ch,42h,42h,3ch,0h,0h,0H,0H,0H,0feh,40h,0h,0h,0h,0H,22h,52h,4ah,46h,22h,0h,0h,0h,0h,6ch,92h,82h,44h,0h,0h,0h,4h,4h,7fh,24h,14h,0ch,0h,0h,0h,5ch,52h,52h,76h,0h,0h,0h,0h,4ch,92h,92h,7ch,0h,0h,0h,0h,60h,50h,4eh,40h,0h,0h,0h,0h,6ch,92h,92h,6ch,0h,0h,0h,0h,7ch,92h,92h,64h,0h,0h;点阵的取模量
timebufdb0H,0FEH,92H,92H,92H,92H,0FEH,0H,0H,0FFH,0A9H,0A8H,0A8H,0F8H,7H,1H,8H,18H,3H,41H,0C1H,3FH,0H,3CH;点阵取模量2
DATAENDS
;*********************************************************
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
;*************************代码段***************************
;在屏幕上显示提示信息
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS
MOVAH,09
INT21H;显示提示信息
MOVaddcolor,protly;先显示红色
CALLInt8253;调用8253初始化字程序
agn:
movdx,io0809a;启动A/D转换器,A/D中的数据转化成滚动显示速度
outdx,al
inal,dx;从A/D转换器输入数据
movah,0
shlax,1
addax,30h
movcx,ax;进行数据处理,防止滚动速度过快或者过慢
d2:
movah,01h
pushcx
movcx,0008h;点阵一次显示8列
movsi,offsetAddwei
next:
moval,[si]
testmflag,01h;判断是显示哪段文字
jnzflagdan
movbx,offsetbuff
jmpgh
flagdan:
movbx,offsettimebuf
gh:
addbx,count
xlat;得到第一列的取模码
movdx,proth
outdx,al
moval,ah
movdx,addcolor
outdx,al;显示第一列
shlah,01
incsi
calldelaylong;列延时,时间长则字符每列不连续,短则亮度低
loopnext
popcx
loopd2
moval,00;关闭显示,消隐
movdx,addcolor
outdx,al
movah,01;判断是否有键按下,有则返回DOS
int16h
jznbrk
MOVAH,4CH
INT21H
nbrk:
inccount;判断是否到了最后一个字符
cmpcount,18h;显示字符数=源操作数/8
JGEbigger
jmpnextch
bigger:
movcount,0h;重新定位到第一个字符
cmpaddcolor,protly;更换显示颜色
jzchange
movaddcolor,protly
jmpnextch
change:
movaddcolor,protlr
nextch:
;扫描74ls244,74ls244开关的1-7位,最底连接到8253
CALLReadKey;调用ReadKey子程序,在DL中返回244值
TESTDL,20H;第6位开关转到显示第一段字符
JNZdanshu
TESTDL,10H;第5位开关转到显示第二段字符
JNZsishu
TESTDL,08h;第4位开关转到显示键盘输入的数字
JNZshowch;XX
TESTDL,04h;第3位开关转到键盘输入数字子程序
JNZshuru
TESTDL,02H;第2位开关为滚动,闪动切换模式
jnzagn11
TESTDL,01H;闪动时,通过查询8253方式进行时间延时
JNZchangech
addcount,8
CALLInt8253;必须重新对8253初始化,否则电平使字符不停切换
changech:
deccount
agn11:
jmpagn
showch:
movcx,0f0h
d22:
movah,01h
pushcx
movcx,0008h;点阵一次显示8列
movsi,offsetAddwei
next1:
moval,[si]
movbx,offsetbuff
PUSHSI
pushax
MOVSI,OFFSETCHARSAVE
ADDSI,COUNTTMP;通过键盘程序得到偏移量
movAX,[SI]
movah,00h
addbx,ax
popax
popsi
xlat;;得到第一列的取模码
movdx,proth
outdx,al
moval,ah
movdx,protly
outdx,al
shlah,01
incsi
calldelaylong;列延时,时间长则字符每列不连续,短则亮度低
loopnext1
popcx
loopd22
moval,00;关闭显示,消隐
movdx,addcolor
outdx,al
movah,01;判断是否有键按下,有则返回DOS
int16h
jznextch
MOVAH,4CH;返回
INT21H
sishu:
movmflag,01h
jmpnextch
danshu:
movmflag,00h
jmpnextch
shuru:
;实现对按键单次检测
MOVAH,01H
INT16H
jzshuru;判断有键按下才扫描键值
MOVah,00h
int16h
movah,0
SUBAL,30H
movCOUNTTMP,ax;对ASCII码处理为0-9
MOVAH,01H;检测是否有键按下,没有则退出子程序
INT16H
jnzshuru
testmflag,01h
jnzsishu
jmpnextch
;******************读取244子程序**************************
ReadKeyPROCNEAR
movdx,ls244;从2A0输入一数据
inal,dx
movdl,al;将所读数据保存在DL中
ret
ReadKeyENDP
;******************8253初始化子程序************************
Int8253PROCNEAR
movdx,io8253c;向8253写控制字
moval,0b6h;使2通道为工作方式3
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8253a
outdx,al;先写入低字节
moval,ah
outdx,al;后写入高字节
movdx,io8253c
moval,76h;设8253通道1工作方式2
outdx,al
movax,5000;写入循环计数初值1000
movdx,io8253b
outdx,al;先写低字节
moval,ah
outdx,al;后写高字节
ret
INT8253ENDP
;******************软件延迟子程序************************
DELAYlongPROCNEAR
pushcx
movcx,0ffffh
timeb:
looptimeb
movcx,0ffffh
timec:
looptimec
popcx
ret
DELAYlongENDP
;***********************代码段结束*************************
CODEENDS
ENDSTART
;*********************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 课程设计