




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、课程设计目的和意义 1二、总体方案论证 2七段码显示概述 2算法说明 2三、程序流程图设计及其说明 4四、程序段落说明 6数据段定义 6程序初始化 7数码显示处理工作 7清空显示屏 7重置光标 7取得计数并为下次循环准备 8一个数字的数码管显示 8显示程序 8程序延时部分 9判断键盘输入部分 9结束DOS以及跳出语句 10延时子程序 10五、程序调试说明、结果记录及分析 11六、课程设计收获及心得体会 14参考文献 15附录 16一、课程设计目的和意义随着计算机技术的飞速发展和普及,七段数码管显示在多个领域有着广泛的应用。数据显示是工、农业控制系统中至关重要的一环,在医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及压力等参数。同时,还要对某一检测点任意参数能够进行观察,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。
随着工、农业的发展,数据的采集与显示势必将得到越来越多的应用,这必将为七段数码管的应用提供很好的基础,为适应这一趋势,作这方面的研究就显得十分重要。在科学研究中,运用七段数码管系统可获得大量的动态信息,也是获取科学数据和生成知识的重要手段之一。总之,不论在哪个应用领域中,数据的显示将直接影响工作效率和所取得的经济效益。此外,计算机的发展对通信起了巨大的推动作用.计算机和通信紧密结合构成了灵活多样的通信控制系统,也可以构成强有力的信息处理系统,这样对社会的发展产生了深远的影响。数据通信是计算机广泛应用的必然产物。在本课程设计中对七段数码管显示系统作了基本的研究。本系统主要解决的是怎样进行模拟数据转换为数字数据以及怎样进行数据显示。二、总体方案论证七段码显示概述七段LED数码管显示原理:LED的发光原理,稍有电子技术基础的人士都很清楚,我们不想作过多的介绍,7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同。七段LED数码管显示过程描述:双击进入程序,显示DOS界面。屏幕上出现提示“Ifyouwanttoquit,pleasepress'q'or'Q'!”字样。同时模拟七段数码管循环显示数字0-9。若在键盘输入'q'or'Q'则退出该程序,如果输入的为其他符号或者没有输入则程序继续运行。设计汇编语言程序,实现七段码显示效果,具体功能要求如下:(1)数字0~9或A~F中的每个数字、字母用“¦”和“—”字符组成的“七段”码图形表示;(2)运行程序后,要求数字0~9或字母A~F依次循环显示;(3)单击“Q”或“q”键退出程序。。根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试。由于程序需要在DOS界面上显示七段数码管,所以要模拟七段数码管。在数据定义的时候要给予定义。按照七段数码管显示数字的形状来对显示的每一位数字进行二进制编码,列表(2-1)如下七段码显示器字形与代码的对应关系如下:7152634715263412345678FEHF6HFCH5EH74HB6H24HEEH12345678FEHF6HFCH5EH74HB6H24HEEH代码字形代码1234567812345678字形1111111011101110111111101110111011110110001001001111011000100100BAH1111110010111010BAH11111100101110100101111010110110010111101011011011001010011101001100101001110100CAHCAH3EHD6H00111110110101103EHD6H0011111011010110DEH1101101011011110DEH1101101011011110DAHDAHA4H1101100010100100A4H1101100010100100D8HD8H表2-1由于本程序只需要循环显示数字0-9,所以数据段定义的七段码的数字为0F6H,0FEH,0A4H,0DEH,0D6H,74H,0B6H,0BAH,24H,0EEH(9-0)。然后程序循环显示每一位数字,从所赋初值开始,以此减1循环显示,循环的同时检测键盘是否有输入,如果有输入则与"Q"和"q"想比较,如果输入的是这两个则结束循环,否则循环继续。每次循环中调用延时子程序来达到调节数码管刷新的频率。三、程序流程图设计及其说明程序流程图如下图3-1开始开始初始化程序初始化程序给timer赋初值给timer赋初值B把buf中的内容传送到res中把buf中的内容传送到res中清屏清屏重置光标于开始处3重置光标于开始处3判断timer是否为0判断timer是否为0是否timer-1赋值给timertimer-1赋值给timer取取该数的数码编码在res中偏移量给cl赋初值7给cl赋初值7①①该数码循环左移一位判断是否为0该数码循环左移一位判断是否为0否偏移地址内的内容用空格代替偏移地址内的内容用空格代替是保留偏移地址内容保留偏移地址内容送入res送入resCl-1Cl-1判断cl是否为0判断cl是否为0否是显示res中的内容以及系统提示显示res中的内容以及系统提示调用延时子程序调用延时子程序AAB判断键盘是否有输入判断键盘是否有输入无有判断输入是否为判断输入是否为“Q”或者“q”否是结束结束图3-1从程序流程图可以看出,程序一旦开始运行就不会自动停止,需要人工输入“Q”或者“q”来终止程序。程序分为如下部分:七段码数据定义部分;循环显示数字部分;显示每一个数字部分;判断键盘输入部分;子程序延时部分。四、程序段落说明datasegment bufdb'__',0DH,0AH db'||',0DH,0AH db'--',0DH,0AH db'||',0DH,0AH db'--',0DH,0AH,24H resdb32dup(?)deskdb1,6,8,13,18,20,25leddb0EEh,24H,0BAH,0B6H,74H,0D6H,0DEH,0A4H,0FEH,0F6Htimerdb?messagedb'Ifyouwanttoquit,pleasepress''q''or''Q''!',0ah,0dh,'$' dataends在数据定义段,定义了模拟七段数码管的显示,同时给为buf开辟空间res。定义每段数码管在buf里面的偏移量。为0-9的每一位数字的七段数码管显示编码,以及循环显示的数字个数即起始显示数字timer。定义系统提示推出的信息。codesegment assumecs:code,ds:data,es:datamainprocnearstart:movax,datamovds,axmoves,axT:movtimer,9again:leasi,bufleadi,rescldmovcx,32repmovsb为数字显示赋初值timer为9,程序从9开始到0的循环显示。程序把buf中的内容传送到res中。movah,06hxoral,almovbh,7xorcx,cxmovdx,186Fhint10h调用BIOS的第06h号功能。给ah赋值06h表示调用的是第06h号功能。al与al相与达到al置零的效果,清屏。为bh赋值7为滚入行属性。cx与cx相与置零,左上角行列号置零。Dx赋值186fh为显示的右下角赋行列号。movbh,0movdx,0movah,2int10h调用BIOS的第2h号功能。置页号bh为0。置行列号dx为0。xorbx,bxmovbl,timermoval,led[bx]cmpbl,0jlTdecblmovtimer,bl取得初始计数timer以及其在定义的数据段led中的数码编码。判断timer数值是否为0,如果为0则跳转到程序的开头重新为timer赋值,如果timer不为0则将timer减1后的数值赋给timer作为下次循环的初值。movcl,7leadi,deskmove:rolal,1jcnextmovbl,[di]movsi,bxmovres[si],20hmovres[si+1],20hnext:incdiloopmove为cl赋值7,因为没个七段数码管有7个部分要显示,将数字的数码编码每一位循环左移到CF中,然后把CF中的数值与1相比较,如果是1则跳转到next(该段数码管的显示),如果是0则继续执行下面的程序,由于每个数码管占两个字节所以用20h(空格)填充res[si]跟res[si+1]以完成原字符的模拟。movah,09hmovdx,segmessagemovds,dxmovdx,offsetmessagemovah,09hint21hleadx,resmovah,09hint21h调用DOS的09h号功能输出字符,显示所需要输出的字符。首先输出数据段定义的系统提示信息。然后由于数字数码管模拟部分已经存储在res中,所以显示res的内容就是显示的是该数字的数码管模拟。movbl,25N:calldly_qrtrdecbljnzN给bl赋值确定延时部分调用延时子程序的循环次数。m1:movah,0bhint21hcmpal,00hjnem2jmpagain调用DOS的第0bh号功能,判断al中的数值,如果为00h则有输入跳转到下一部判断输入的字符,如果为0ffh则直接跳转到again循环执行下一个数字的显示。m2:movah,08hint21hcmpal,'Q'jeexitcmpal,'q'jeexitjmpagain;调用DOS的第08h号功能,判断al中的是否为“Q”或者“q”,如果是两者中的一个则调转到exit结束DOS以及跳出语句。如果不是则跳转到下一个数字的显示。exit:movah,4chint21h至此主函数结束dly_qrtrprocnearpushcxpushdxmovdx,90dll:movcx,65500dl2:loopdl2decdxjnzdllpopdxpopcxretdly_qrtrendp延时子程序给dx赋值90,赋值loop循环次数cx=65500,每次循环dx减1,检测dx是否为0,不为0则返回dll处。延时时间为90*65500*(系统执行一条指令时间)。五、程序调试说明、结果记录及分析运行程序结果倒数从9到0如下列截图5-1到5-10所示:9图5-18图5-27图5-36图5-45图5-54图5-63图5-72图5-81图5-90图5-10在程序运行的任何时候按“Q”或者“q”程序退出。在本程序中,因为只需要循环显示0-9这十个数字,所以并没有小数点以及其他清零等功能,程序是循环执行的,在没有用户干预情况下,不会停止显示。一旦我们在DOS环境下,从键盘输入字母‘Q’或‘q’时,程序将终止显示。六、课程设计收获及心得体会这次微机原理课程设计总共进行了一个星期时间,在这七天当中是苦多于甜。同时学到很多有用的东西,不但巩固了以前所学知识,而且学到了很多平时上课没有讲解的问题。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图画出来,但是我开始总觉得这样做没必要,很浪费时间。这次课程设计彻底改变了我以前的错误认识。我认识到由于之前接触的程序都是很简短、很基础的,所以可以不用事先把程序原理方框图画出来,但是在课程设计中碰到的编程需要很多代码才能完成的任务,画程序方框图是很有必要的。只有通过程序方框图,才能明白每一步要做什么,需要完成什么任务。必须要有一个清晰的思路,在程序的调试过程中才能更容易的查处出错的部分。这次微机原理的课程设计是一个发挥所学知识的舞台,巩固了所学知识并且学会了如何应用到实际工作当中。在同学和老师的帮助下受益匪浅。参考文献[2]王爽.汇编语言(第2版).北京:清华大学出版社,2008附录程序清单datasegment bufdb'__',0DH,0AH;定义模拟数码管 db'||',0DH,0AH db'--',0DH,0AH db'||',0DH,0AH db'--',0DH,0AH,24H resdb32dup(?);开辟此空间让每次显示不至于破坏buf数据deskdb1,6,8,13,18,20,25;每段数码管在buf的偏移量leddb0EEh,24H,0BAH,0B6H,74H,0D6H,0DEH,0A4H,0FEH,0F6H;0-9的10个数的数码编码,最低位不空,其他从左往右,为0的则关闭相应数码管timerdb?messagedb'Ifyouwanttoquit,pleasepress''q''or''Q''!',0ah,0dh,'$';系统提示信息dataendscodesegment assumecs:code,ds:data,es:datamainprocnearstart:movax,datamovds,axmoves,axT:movtimer,9again:leasi,buf;将buf的内容传送到res中leadi,rescldmovcx,32repmovsb;每执行一次cx内容减1,直到cx内容为0movah,06h;清空显示屏幕xoral,al;al置0movbh,7xorcx,cx;cx置0movdx,186Fhint10hmovbh,0;重置光标于开始处movdx,0movah,2int10hxorbx,bx;bx置0movbl,timer;取得计数moval,led[bx];取得该数的数码编码cmpbl,0;判断计数bl是否为0jlTdecbl;bl减1movtimer,bl;把减1后的bl赋值给timer作为下次循环开始时显示的初值;一个数字的数码管显示movcl,7;所需要检测的位数leadi,desk;取各段数码管在res的偏移量move:rolal,1;左移1位,七段数码管要移动7次jcnext;如果是1,则该段数码管打开,直接跳到下一步movbl,[di];如果是0则该段数码管关闭,继续往下执行程序movsi,bxmovres[si],20h;用空格填充原字符完成模拟,每个数码管占两个字节movres[si+1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区的护理评估
- 2025年农村修房协议
- 人教部编版三年级语文下册《鹿角和鹿腿》公开课教学课件
- 武则天课件内容
- 工业机器人模拟考试题+答案
- 护理六联观察实施要点
- 肿瘤的免疫诊断
- 班干部大队委员竞选28
- 护理组长老师竞聘
- 眼科护理微课
- 2025春季学期国开电大本科《公共部门人力资源管理》一平台在线形考(形考任务1至4)试题及答案
- 国际音乐比赛参赛计划
- 安徽省合肥八中2025届高三最后一卷英语试题及答案
- 2025届河北省张家口市高三第三次模拟考试地理试题(原卷版+解析版)
- 钢筋供货居间协议书
- 2025年山东省淄博市张店区中考数学二模试卷
- 2025届上海市普陀区数学七下期末质量检测模拟试题含解析
- ISO27001:2022信息安全管理手册+全套程序文件+表单
- 多器官功能障碍综合征
- 2025至2030中国映前广告市场运行态势及发展战略建议报告
- 储能项目投资合作协议书模板
评论
0/150
提交评论