键盘录入数据的转换与显示程序设计说明书
键盘输入显示系统设计课程设计说明书
课程设计键盘输入显示系统设计初始条件:1.选用8086最小模式;2. 内存芯片使用2片6116(2K×8),1片2716(2K×8)EPROM;3. 8255、8259、74LS138、LCD字符型液晶显示器及其驱动器;4. 8255、8259的片选信号线分别接74LS138的Y1、Y2引脚;5. 采用4×4键盘进行菜单功能选择;6. 其他必须的配套元件。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 查阅参考资料,自学相关元件的内部结构、工作方式或初始化编程过程;2. 完成微机基本系统及其扩展接口电路设计,绘制微机系统硬件原理图;3. 绘制汇编源程序流程图,编制扩展接口电路工作的汇编源程序,包括初始化和监控工作程序;4. 通过微机或DSG-88实验装置进行汇编源程序的调试;5. 撰写设计说明书,设计说明书字数不少于5000字,具体要求见附录。
时间安排:指导教师签名:2008年11 月23日系主任(或责任教师)签名:年月日摘要键盘输入显示系统是我们日常生活中最常见的系统,我们知道,从外观上看普通的微型计算机系统是由主机箱、显示器、键盘、鼠标构成。
所以对键盘输入显示系统进行设计是非常必有和有用的。
当然本次课程设计的主要目的是达到在设计好的键盘输入显示系统中,在键盘上输入一个字符,然后在显示器上相应显示出对应的字符。
我的设计思想是:1、要实现键盘输入显示系统,首先要连接好硬件,如硬件图所示,其中各芯片接CPU,键盘的行线、列线分别接8255C口上半部、下半部,而且四根行线通过一个与非门接8259的IR0,LCD字符型液晶显示器接8255的B口,然后是编写程序。
2、编写主程序,先关中断,填写中断向量表,然后是对8259初始化,再开中断,执行其他程序。
3、编写子程序,其中有中断向量子程序、按键识别子程序、LCD显示子程序。
4、键盘输入显示:按键时,四根行线信号通过一个与非门产生一个高信号给8259IR0,8259查找中断向量表,产生中断子程序,并且在中断子程序中CALL子程按键识别序和LCD显示子程序。
键盘输入与液晶显示系统方案(最终版)
个人资料整理仅限学习使用微机原理与接口技术研究性专题设计报告课程名称:单片机原理与微机接口技术设计题目:键盘输入与液晶显示系统院系:机械与电子控制工程学院班级:机电1213班设计者:张威张古琴丁国华学号: 12223084 12223083 12223060指导教师:赵嘉蔚设计时间: 2018年6月机电学院《微机原理与接口技术》研究性专题任务书摘要键盘输入与液晶显示系统是单片机应用中最常见的一种形式,几乎涉及到人们日常生产和生活中的各个方面。
键盘是用于实现单片机应用系统中的数据和命令的输入,液晶显示器LCD能使人直观的获得需要了解的信息。
实现人机的交流互动。
因此,对液晶显示与键盘系统的研究与应用是很有必要的,对于我们今后的学习有着很强的推动作用。
目录一、设计要求7二、任务分工7三、主要元器件介绍83.1、AT89C5183.2、 1602LCD概述113.3、发光二极管143.4、蜂鸣器15四、仿真电路设计与系统仿真图164.1、 Proteus仿真软件的相关介绍164.2、复位电路仿真电路图:174.3、时钟电路仿真电路图184.4、1602LCD显示仿真电路图错误!未定义书签。
4.4、1602LCD显示仿真电路图184.5、键盘仿真电路图194.6、蜂鸣器和发光二极管电路仿真194.7、相关功能仿真显示图20五、程序流程图及相关程序175.1、程序构思:175.2、程序流程图:18六、遇到问题及解决方案196.1、软件问题19七、体会与感想20八、参考文献21九、附件22一、设计要求◆系统上电显示初始化界面,“欢迎使用本系统!” ;◆按数字键显示相应数字;◆按功能键实现相应功能;1、按功能键“A” ,发光二极管发光;2、按功能键“B” ,发光二极管不发光;3、按功能键“C” ,蜂鸣器报警;4、按功能键“D” ,蜂鸣器停止报警;5、按功能键“E”,显示组员姓名<Zhangwei zhangguqin dingguohua);6、按功能键“F”,显示“Thank you! JiDian 1213”。
课程设计键盘输入及数据显示程序设计
课程设计键盘输入及数据显示程序设
计
中北大学
汇编语言程序设计
课程设计说明书
学生姓名:学号:
学院:信息与通信工程学院
专业:自动化
题目:键盘输入及数据显示程序设计指导教师:沈小林职称:副教授
6月24日
中北大学
汇编语言程序设计实验
课程设计任务书
11/12 年第二学期
学院:信息与通信工程学院
专业:自动化
学生姓名:学号:
课程设计题目:数据显示及键盘输入程序设计
起迄日期: 6月18 日~6月24日
课程设计地点:中北大学
指导教师:沈小林
系主任:王忠庆
下达任务书日期: 06月20日
课程设计任务书
课程设计任务书
一、设计目的
1、经过程序设计和调试,加深对字符串程序设计的认识,。
键盘录入数据的转换与显示程序课程设计报告
3.要求程序运行后显示器显示:“please input the first number from -9999 to 9999!”的提示。
4.在输入数据之后,屏幕显示输入的值。
5.接着显示器显示“please input the second number from -9999 to 9999!”的提示。
MOV SI,OFFSET IN_ASC_BUF1+2;将第二个数的第一个字符放于源
数据区指针中
LP:MOV AX,[DI]地址内容送入AX
MOV [SI],AX
INC SI
INC SI
INC DI
INC DI
LOOP LP循环LP,读取出第一个数
模块二:输入第二个数
MOV B_BUF1,AX
MOV DX,OFFSET INPUT2;取第二个输入数的首地址
IN_ASC_BUFDB 6;十进制数的输入缓冲区,共可接收6个字符
DB ?;保留,用于10号调用时DOS填入实际输入字符个数
DB 6 DUP(?),'$';一个符号位,四位数字ASCII码,加上一个回车符,共计6字符
IN_ASC_BUF1DB 6
DB ?
DB 12 DUP(?),'$'
B_BUF1 DW ?;将第一个数转换为二进制后,放于此处
MOV AX,DATA
MOV DS,AX;设置DS
MOV DX,OFFSET INPUT1;取第一个输入数的首地址
MOV AH,09H
INT 21H;提示输入一个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第一个数
数字显示与键盘输入例程设计
学号:课程设计题目数字显示与键盘输入例程设计学院计算机科学与技术专业计算机科学与技术班级计算机班姓名指导教师201 年月日目录课程设计任务书 (2)1.课程设计目的与要求 (3)1.1目的描述 (3)1.2要求描述 (3)2.设计分析 (3)2.1需求分析 (3)2.2背景知识 (4)2.2.1微控制器AT89S52 (4)2.2.2 CH451芯片 (8)3.设计原理 (15)3.1硬件平台 (15)3.2设计原理 (16)3.3硬件连接 (18)3.4软件设计 (18)4.详细设计 (19)4.1平台初始化 (19)4.1.1MCU初始化 (19)4.1.2 CH451芯片初始化 (19)4.2模块说明 (20)4.2.1主要函数模块及功能 (20)4.2.2模块框图 (21)4.2.3 程序流程图 (21)5. 开发平台及源程序 (22)5.1开发平台 (22)5.2源程序的主要部分 (23)6. 程序测试 (29)6.1测试用例 (29)6.2程运行结果及分析 (30)7. 自我评价与总结 (32)7.1自我评价 (32)7.2经验与收获 (33)本科生课程设计成绩评定表 (34)课程设计任务书学生姓名:专业班级:计算机班指导教师:工作单位:计算机科学与技术学院题目: 数字显示与键盘输入例程设计初始条件:1.课程设计使用ZG211硬件综合实验平台(8051单片机),配有课程设计接口芯片和辅助芯片以及器件;2.ZG211有程序设计集成开发环境,程序设计语言为C语言;3.ZG211硬件综合实验平台使用说明书;要求完成的主要任务:(包括课程设计工作量及其技术要求,撰写说明书具体要求)1.学习使用ZG211硬件综合实验平台,程序设计集成开发环境;2.根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。
3.查阅和学习课程设计题目需要的接口芯片资料,掌握接口芯片的使用方法和编程要领。
课程设计——键盘输入及数据显示程序设计
示程序设计中北大学汇编语言程序设计课程设计说明书学生姓名:学号:学院:信息与通信工程学院专业:自动化题目:键盘输入及数据显示程序设计指导教师:沈小林职称:副教授2012年6月24日中北大学汇编语言程序设计实验课程设计任务书11/12 学年第二学期学院:信息与通信工程学院专业:自动化学生姓名:学号:课程设计题目:数据显示及键盘输入程序设计起迄日期:6月18 日~6月24日课程设计地点:中北大学指导教师:沈小林系主任:王忠庆下达任务书日期: 2011年06月20日课程设计任务书课程设计任务书一、设计目的1、通过程序设计和调试,加深对字符串程序设计的认识,掌握其调试方法;2、通过键盘及显示程序设计掌握汇编语言程序在键盘输入及文本显示方面的编程过程;3、学会DOS中关于显示功能调用的用法;4、领会修改显存方法显示字符。
二、程序设计要求(1)能识别数字键、字母键(能区分大小写);(2)一次最多字符(含数字)输入不超过80个;(3)依次显示键盘输入的所有可显示字符。
三、编程思路串(String)即数据串,是指存放在连续内存中的一组数据,通常表现为字节(或字)数组,串操作指令具有以下共性。
1)源串:地址由DS:SL表示。
2)目的串:地址由ES:DI表示。
3)自动修改地址:每次数据操作后,SI和DI自动递增或递减,取决于操作的数据类型(字节、字或双字)以及DF的值。
若DF=0,则SI和DI自动增加1、2或4;否则减1、2或4。
可以使用CLD或STD指令设置DF。
4)计数器:使用重复前缀时,用CX显示数据个数,每重复一次操作,CX 减1。
从键盘输入一串字符串,通过指令STRING DB 80 DUP(?)来设置一次最多字符(含数字)输入不超过80个,能识别数字键、字母键。
要使程序能够识别字母键的大小写,必须通过ASCII码来寻址识别。
依次显示键盘输入的所有可显示字符,当用户按回车键时,输入结束。
然后通过显示器显示输入的字符。
键盘录入数据的转换与显示程序设计说明书
课院专班姓学起指word完美格式南京工程学院止导课程设计报告书程名称微机原理及应用B(系、部、中心)自动化学院精心整理学习帮手-i -五•系统模块详细设计与调试:一).模块设计模块一.输入第一个数:MOV AH,09HINT 21H通过调用DOS系统的01H号功能--―键入字符并回车来实现,其出口参数为键入字符的ASCII码,存在AL中详细设计方案:DATA SEGMENTINPUT1 DB 0DH,0AH,'PLEASE IUPUT A FIRST NUMBER FROM -9999 TO9999!$' ;输入第一个数,在-9999至+9999范围内IN_ASC_BUF DB 6 ; 十进制数的输入缓冲区,共可接收6个字符DB ? ;保留,用于10号调用时DO蘋入实际输入字符个数DB6 DUP⑺,'$ ' ;一个符号位,四位数字ASCII码,加上一个回车符,共计6字符IN_ASC_BUF1 DB 6DB ?DB 12 DUP⑺,'$'B_BUF1 DW ? ; 将第一个数转换为一进制后,放于此处INPUT2 DB 0DH,0AH,'PLEASE IUPUT THE SECOND NUMBER FROM -9999TO 9999!$' ;输入第二个数,在-9999 至+9999范围OUT_ASC_SUM DB 6 DUP⑺,'$';将二个数的和转换为ASCII码后,放于此处,以供9号调用显示DATA ENDSMOV AX,DATAMOV DS,AX ;设置DS;取第一个输入数的首地址MOVDX,OFFSETNPUT1MOV AH,09HINT 21H ;提示输入一个数MOV DX,OFFSET IN_ASC_BUFMOV AH,0AHINT 21H 读取第一个数MOV CX,3 ;设置次数MOV DI,OFFSET IN_ASC BUF+2将第一个数的第一个字符LP1: MOV DX,OFFSET IN_ASC_BUFMOV AH,0AHINT 21H ;MOV CX,3MO\DI,OFFSETIN_ASC_BUF+2MO\SI,OFFSET IN_ASC_BUF1+7 MOV AX,[DI]MOV [SI],AXINC SIINC SIINC DIINC DILOOP LP1读取第二个数 ;设置次数 将第二个数的第一个 字符放于目的数 据区指针中 将第二个数的第一个 字符放于源数据 区指针中地址内容送入AX循环LP1,读取出第一个数模块二:输入第二个数针中 MOVSI,OFFSETIN_ASC_BUF1+2; 将第二个数的第一个字符 LP: MOV AX,[DI]放于源 数据区指针中 地址内容送入AX MOV [SI],AXINC SIINC SIINC DIINC DILOOP LP 循环LP,读取出第一模块二:输入第二个数个数MOV B_BUF1,AXMOV DX,OFFSETNPUT2 ; 取第二个输入数的首地MOV AH,09HINT 21H ; 址提示输入二个数模块三•两个二进制数求和并显示和:显示结果:MOV AH,09HMOV DX, OFFSET OUT_ASC_SUMINT 21HADD AX , BIN_BUF1 CALL BIN_TO_ASCII(((0*10+3)*10+5)*10+8) 要求补。
键盘显示实验报告
键盘显示实验报告键盘显示实验报告一、引言键盘是我们日常生活中常用的输入设备之一,它通过按下不同的按键来输入字符和命令。
在计算机科学领域,键盘显示是一项重要的实验,它涉及到了计算机硬件和软件的相互配合。
本文将介绍一个键盘显示实验的设计和结果分析。
二、实验设计1. 实验目的本实验的目的是通过键盘输入字符,并在计算机屏幕上进行显示。
通过这个实验,我们可以深入了解键盘的工作原理和计算机输入输出的基本知识。
2. 实验材料本实验所需的材料包括:计算机、键盘、显示器和相应的连接线。
3. 实验步骤(1) 将键盘与计算机通过连接线连接好。
(2) 打开计算机,并启动相应的键盘显示程序。
(3) 在键盘上按下不同的按键,观察计算机屏幕上的显示效果。
(4) 分析和记录实验结果。
三、实验结果在本次实验中,我们按下了键盘上的不同按键,并观察了计算机屏幕上的显示效果。
实验结果表明,键盘输入的字符能够准确地显示在屏幕上,并且显示的速度非常快。
四、结果分析1. 键盘工作原理键盘是一种输入设备,它通过按下不同的按键来输入字符和命令。
当我们按下键盘上的某个按键时,键盘会发送一个信号给计算机,计算机通过解读这个信号来确定我们按下的是哪个按键,并将相应的字符显示在屏幕上。
2. 计算机输入输出键盘显示实验涉及到了计算机的输入输出过程。
输入是指将外部信息传递给计算机的过程,而输出是指将计算机处理后的信息传递给外部的过程。
在本实验中,键盘是输入设备,它将我们按下的按键信息传递给计算机;而显示器是输出设备,它将计算机处理后的字符信息显示在屏幕上。
3. 键盘显示的应用键盘显示技术在计算机领域有着广泛的应用。
无论是在日常办公还是在专业领域,键盘输入都是必不可少的。
通过键盘,我们可以输入文字、命令、密码等信息,实现与计算机的交互。
键盘显示技术的发展也为计算机的普及和应用提供了方便。
五、实验总结通过本次键盘显示实验,我们深入了解了键盘的工作原理和计算机输入输出的基本知识。
实验四 键盘显示程序设计
实验四 键盘显示程序设计实验目的1、理解串行接口键盘单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握几个的基本的传送类、控制类指令的使用方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、 键盘接口电路工作原理串行接口键盘盘电路如图4-15所示。
键盘扫描线与显示位选扫描信号共用。
键盘输入只需要一根线,电路简单。
键盘扫描信号从74LS164输出,低电平有效。
当扫描到某个键时,若按键按下,在KEY 端得到低电平,否则得到高电平。
通过判断KEY 的电平就可以知道相应键盘是否按下。
图4-15 键盘接口电路图2、 读键盘程序设计从上面工作原理分析可知,读键程序可以和显示程序结合在一起,也可以单独设计。
这种结构的键盘同样存在抖动问题。
为了减少程序误动作,程序设计时也要考虑去抖动问题。
这里设计一个把键值显示在LED 上的程序。
为了简化问题,把读键程序与显示结合起来。
程序流程图如图4-16所示。
图4-16 键盘扫描程序流程图主程序 初值化,显示缓冲区,键值暂存,键盘缓存调用键盘显示程序键值相同 N显示计数为0 …… 键盘显示程序 N显示程序 延时程序执行后 读当前扫描的键状态,并存入键值暂存寄存器实验内容1、设计程序把键值显示在数码管。
2、设计程序按不同键时实现不同功能。
按最左边按键:小数点循环移位按向上键:最右边一位数码管数值加1(0-9),到9时加1回到0按向下键:最右边一位数码管数值减1(9-0),到0时减1回到9按向左键:显示数字左移一位按向右键:显示数字右移一位实验步骤及调试过程1、连接单片机开发板、万利仿真机2、连接仿真调试电缆(并口JTAG)3、打开ARM集成开发环境ADS,进行程序加载。
实验程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit CLK=P3^4;sbit DIN=P2^3;sbit key=P1^0;char num1=0;num=1;num2;char k;uchar code table[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71,0xFE};//0到F及off的代码void wei(uchar x); //声明函数void delay(uchar ms);void display(char wei,char shu);void clear164();uchar keyscan();void main(){clear164();wei(1);P0=0x03; //初始化显示的数为0,位数为第一位while(1){k=keyscan();switch(k){case 8:{++num2;if(num2>7) num2=0; }break; //最左边按键(原理图中的第七个):小数点循环移位case 1:{++num;if(num>7) num=0; };break; //按向右键(原理图中的第六个):显示数字右移一位case 5:{num1--;if(num1<0) num1=9;}break; //按向下键:最右边一位数码管数值减加1(9-0),到0时减1回到9case 4:{num1++;if(num1>9) num1=0;}break; //按向上键:最右边一位数码管数值加1(0-9),到9时加1回到0case 7:{--num;if(num<0) num=7;};break; //按向左键:显示数字左移一位}display(num2,16);display(num,num1);delay(2);}}void wei(char x) //数码管第X位显示{ char j;for (j=1;j<9;j++){if (x==j){ DIN=0;CLK=0;CLK=1;}else{DIN=1;CLK=0;CLK=1;}}P0=0xFE;}void delay(uchar ms) // 延时子程序(晶振12M){uchar i;while(ms--){for(i = 0; i < 120; i++);}}uchar keyscan(){char i,j;j=0;clear164();P0=0xff; //清除没有用到的位显示DIN=0;for(i=0;i<8;i++){CLK=0;CLK=1;DIN=1;if(key==0) //判断检测端口是否为0,若是就为按键值{delay(10);if(key==0){while(!key); //松手检测j=i+1;}}}return j;}void clear164()//将164输出所以清零{char k;for(k=0;k<8;k++){DIN=1;CLK=0;CLK=1;}}void display(char wei,char shu){uchar m,n;clear164();DIN=0;for(n=wei;n>0;n--)//去掉没有显示的位数{CLK=0;CLK=1;DIN=1;}CLK=0;CLK=1;P0=table[shu]; //显示号码的位数delay(5);for(m=8-wei;m>0;m--)//去掉剩下的位数{DIN=1;CLK=0;CLK=1;}}实验思考题1、当按加1键时,每按一次数码管值变化可能超过1,是什么原因?答:1)因为,按键在闭合和断开过程中出现一段抖动期,由于按键的不稳定性引起的,这是会呈现一串脉冲,可能是在松手时没去抖动。
键盘输入显示系统设计课程设计说明书
键盘输入显示系统设计初始条件:1. 选用8086最小模式;2. 内存芯片使用2片6116(2K×8),1片2716(2K×8)EPROM;3. 8255、8259、74LS138、LCD字符型液晶显示器及其驱动器;4. 8255、8259的片选信号线分别接74LS138的Y1、Y2引脚;5. 采用4×4键盘进行菜单功能选择;6. 其他必须的配套元件。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 查阅参考资料,自学相关元件的内部结构、工作方式或初始化编程过程;2. 完成微机基本系统及其扩展接口电路设计,绘制微机系统硬件原理图;3. 绘制汇编源程序流程图,编制扩展接口电路工作的汇编源程序,包括初始化和监控工作程序;4. 通过微机或DSG-88实验装置进行汇编源程序的调试;5. 撰写设计说明书,设计说明书字数不少于5000字,具体要求见附录。
时间安排:指导教师签名:2008年11 月23日系主任(或责任教师)签名:年月日摘要键盘输入显示系统是我们日常生活中最常见的系统,我们知道,从外观上看普通的微型计算机系统是由主机箱、显示器、键盘、鼠标构成。
所以对键盘输入显示系统进行设计是非常必有和有用的。
当然本次课程设计的主要目的是达到在设计好的键盘输入显示系统中,在键盘上输入一个字符,然后在显示器上相应显示出对应的字符。
我的设计思想是:1、要实现键盘输入显示系统,首先要连接好硬件,如硬件图所示,其中各芯片接CPU,键盘的行线、列线分别接8255C口上半部、下半部,而且四根行线通过一个与非门接8259的IR0,LCD字符型液晶显示器接8255的B口,然后是编写程序。
2、编写主程序,先关中断,填写中断向量表,然后是对8259初始化,再开中断,执行其他程序。
3、编写子程序,其中有中断向量子程序、按键识别子程序、LCD显示子程序。
4、键盘输入显示:按键时,四根行线信号通过一个与非门产生一个高信号给8259IR0,8259查找中断向量表,产生中断子程序,并且在中断子程序中CALL子程按键识别序和LCD显示子程序。
键盘输入与液晶显示系统设计(最终版)
微机原理与接口技术研究性专题设计报告课程名称:单片机原理与微机接口技术设计题目:键盘输入与液晶显示系统院系:机械与电子控制工程学院班级:机电1213班设计者:张威张古琴丁国华学号:12223084 12223083 12223060 指导教师:赵嘉蔚设计时间:2014年6月机电学院《微机原理与接口技术》研究性专题任务书姓名:张威张古琴丁国华专业:热能与动力工程班号:机电1213任务起至日期:2014 年5 月30 日至2014 年6 月9 日题目:键盘输入与液晶显示系统设计要求及主要任务:单片机运用系统中常运用LCD显示器与键盘进行人机间的输入、输出操作,本课题运用字符型LCD显示器SMC1602和4*4键盘实现按键输入和显示输出。
扩展一块液晶显示器和一个4*4键盘。
扩展后的液晶显示系统能够实现以下功能:1、系统上电显示初始化界面,显示“欢迎使用本系统!”2、按数字键显示相应数字3、按功能键“A”:发光二极管发光;4、按功能键“B”:发光二极管不发光;5、按功能键“C”:蜂鸣器报警;6、按功能键“D”:蜂鸣器停止报警;7、按功能键“E”:显示组员姓名“Zhangwei zhangguqin dingguohua ”8、按功能键“F” : 显示“Thank you! JiDian 1213”工作计划安排:(1)认真阅读课本,查阅资料,学习课程设计中所用芯片及器件,尤其是对LCD液晶显示器的学习和键盘扫描的复习(2)分析硬件和电路图(3)进行程序设计分工,根据课本9-2节程序编写课程设计程序(4)编写键盘扫描程序(5)编写功能按键分支程序并控制灯和蜂鸣器(6)编写显示数字子程序(7)编写功能键子程序(8)将程序进行组合,进行protues软件仿真(9)不断调试和改进源程序(10)完善实验报告,总结经验收获同组设计者及分工:张威 12223084程序编写与调试,Proteus仿真,撰写设计书张古琴 12223083 Proteus仿真, E、F键盘功能键设计,制作ppt 丁国华 12223060 程序编写与调试,Proteus仿真电路优化摘要键盘输入与液晶显示系统是单片机应用中最常见的一种形式,几乎涉及到人们日常生产和生活中的各个方面。
微机原理实验六从键盘输入数据并显示
实验六从键盘输入数据并显示1要求:编写程序,将键盘接收到的四位十六进制数转换为等值的二进制数,并显示在屏幕上。
若输入的不是0—F间的数字,则显示出错信息,并要求重新输入。
2目的:掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。
实验程序CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATA SEGMENTMARK DB?MESS DB'please input the number(H),press inter,ture into number(B).press space end.',0DH,0AH,'$'ERROR DB 0DH,0AH, 'input error',0DH,0AH,'$'DATA ENDSSTACK SEGMENTSTA DW32 DUP(?)TOP DW?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOPHEAD: CRLFMOV MARK,0MOV AH,09HLEA DX,MESSINT 21H ;显示提示输入的信息CALL GETNUM ;接收键入数值送DXCMP MARK,01HJE HEADMOV CX,0010H ;16位MOV BX,DXTTT: ROL BX,1 ;循环左移1位MOV DL,BLAND DL,01H ;屏蔽掉高7位ADD DL,30HMOV AH,02HINT 21H ;显示二进制位对应的ASCII字符LOOP TTTJMP HEADFINI: MOV AX,4C00HINT 21H ;返回DOSGETNUM PROC NEAR ;子程序,接收键入数值送DX PUSH CXXOR DX,DXGGG: MOV AH,01HINT 21HCMP AL,0DH ;输入为回车,则进行转换JE PPPCMP AL,20H ;输入为空格,则退回DOSJE FINICMP AL,30HJB KKKSUB AL,30HCMP AL,0AHJB GETSCMP AL,11HJB KKKSUB AL,07HCMP AL,0FHJBE GETSCMP AL,2AHJB KKKCMP AL,2FHJA KKKSUB AL,20HGETS: MOV CL,04SHL DX,CLXOR AH,AHADD DX,AXJMP GGGKKK: MOV AH,09HMOV DX,OFFSET ERRORINT 21HMOV MARK,01HPPP: PUSH DXCRLFPOP DXPOP CXRETGETNUM ENDPCODE ENDSEND START。
从键盘输入数据并显示实验
实验二从键盘输入数据并显示实验一、实验目的1.掌握键盘输入字符的方法和十六进制数字字符的ASCII码转换为二进制数的原理。
2.掌握子程序定义和调用的方法。
3.掌握循环移位指令的用法和无符号数比较大小的方法。
二、实验内容1. 从键盘上输入4位十六进制数,将其转换为16位二进制数并在显示器上显示出来。
要求输入的数字字符串以回车键结束。
若按下的键不是十六进制数字字符,则显示出错信息。
2. 从键盘上输入4位十六进制数(如果输入的数字超过4个,则以最后输入的4个为准),将其转换为16位二进制数并在显示器上显示出来。
要求输入的数字字符串以回车键结束。
若按下的键不是十六进制数字字符,则显示出错信息。
3.应该Masm for Windows 集成实验环境调试运行并讲解程序,并用屏幕录像软件录制全过程,全程开启摄像头,以MP4G格式上传,完成实验报告的书写。
三、实验程序和结果CRLF MACROMOV AH,02H ;显示器输出MOV DL,0DH ;换行INT 21HMOV AH,02HMOV DL,0AH ;回车INT 21HENDMDATA SEGMENT ;输入MARK DB ?MESSAGE DB 'PLEASE INPUT THEWORDS!',0DH,0AH,'INPUT:$' ; 输入字符串提示ERROR DB 0DH,0AH, 'NO MATCH!',0DH,0AH,'$' ;输入错误提示DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?) ;定义32个空字TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ;表明程序代码段与段地址之间的关系START: MOV AX,DATAMOV DS,AX ;将段地址送入段地址寄存器MOV ES,AXMOV SP,TOPHEAD: CRLF ;输出换行回车MOV MARK,0MOV AH,09H ;字符串显示LEA DX,MESSAGEINT 21H ;显示提示输入的信息CALL GETNUM ;接收键入数值送DXCMP MARK,01HJE HEAD ;输入错误,跳转到HEAD重新输入MOV CX,0010H ;16位;循环次数为16MOV BX,DX ;把DX的数据放入BX中,显示777 TTT: ROL BX,1 ;循环左移1位MOV DL,BLAND DL,01H ;屏蔽掉高7位ADD DL,30H ;将二进制转码为ASCII码输出MOV AH,02H ;字符输出INT 21H ;显示二进制位对应的ASCII字符LOOP TTTJMP HEADFINI: MOV AX,4C00H ;终止当前程序,返回调用程序INT 21H ;返回DOSGETNUM PROC NEAR ;子程序,接收键入数值送DXPUSH CXXOR DX,DX ;清零GGG: MOV AH,01HINT 21H ;键盘输入CMP AL,0DHJE PPP ;输入为回车,则进行转换CMP AL,20HJE FINI ;输入为空格,则退回DOSCMP AL,30HJB KKK ;输入有误,显示ERRORSUB AL,30HCMP AL,0AH ;判断是否为0~9JB GETSCMP AL,11HJB KKKSUB AL,07HCMP AL,0FH ;判断是否为A~ZJBE GETSCMP AL,2AHJB KKKCMP AL,2FHJA KKKSUB AL,20H ;判断是否为a~zGETS: MOV CL,04 ;转换SHL DX,CL ;左移四位,第四位0补齐XOR AH,AH ;AH清零ADD DX,AX ;把输入的数据放入DX中JMP GGGKKK: MOV AH,09H ;显示字符串MOV DX,OFFSET ERRORINT 21HMOV MARK,01H ;将MARK置1PPP: PUSH DX ;压入堆栈CRLF ;回车换行POP DX ;弹出堆栈POP CXRETGETNUM ENDPCODE ENDSEND START(页面不足请附页)四、实验总结和体会本实验做键盘输入并屏幕显示将十六进制转换成等值的二进制数,我们用DOS功能,利用软件中断指令INT 21H实现了键盘的输入显示器的输出以及返回到DOS的命令,并通过判断将正确输入的4位十六进制数转换为二进制数显示到屏幕上,编写程序时我们要注意一点,DOS环境下是不允许汉字输入的,通过本次实验的学习掌握并了解了接收键盘数据的方法,接收到的数据以ASCII码进行放,并了解了将键盘数据显示时需要转换为ASCII码的原理。
实验四键盘及显示设计实验报告
实验四键盘扫描及显示设计实验报告一、实验要求1. 复习行列矩阵式键盘的工作原理及编程方法。
2. 复习七段数码管的显示原理。
3. 复习单片机控制数码管显示的方法。
二、实验设备1.PC 机一台2.TD-NMC+教学实验系统三、实验目的1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。
2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。
3. 熟悉获取行列矩阵式键盘按键值的算法。
4. 掌握数码管显示的编码方法。
5. 掌握数码管动态显示的编程方法。
四、实验内容根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:1.扫描键盘输入,并将扫描结果送数码管显示。
2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。
实验具体内容如下:将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 4 次按下的按键编号。
五、实验单元电路及连线矩阵键盘及数码管显示单元图1 键盘及数码管单元电路实验连线图2实验连线图六、实验说明1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动。
抖动时间的长短由按键的机械特性决定,一般为 5~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
键抖动会引起一次按键被误读多次。
为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。
在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。
按键的抖动,可用硬件或软件两种方法消除。
2. 为了减少键盘与单片机接口时所占用 I/O 线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式。
3. 从数码管显示方式看,数码管分为静态显示和动态显示两种方式。
数字显示与键盘输入设计课程设计
学号:0121010340704课程设计题目数字显示与键盘输入例程设计学院计算机科学与技术学院专业计算机科学与技术班级姓名指导教师2013 年7 月 1 日目录课程设计说明书 (2)数字显示与键盘输入设计 (3)1.系统描述: (3)1.1实验目的 (3)1.2实验设备: (3)1.3设计要求: (3)2.设计过程: (3)32.2操作命令: (5)2.3操作过程: (8)2.3.1硬件连接: (8)2.3.2软件设计: (9)2.3.3设计成功标志:.................................................................................102.4程序设计:..............................................................................................102.5程序代码 ................................................................................................103.调试过程 .........................................................................................................153.1程序编译调试........................................................................................153.2在线编程写入程序................................................................................16164.课程设计总结:...............................................................................................17本科生课程设计成绩评定表 (18)课程设计任务书学生姓名:杨星专业班级:计算机1007班指导教师:唐祖锴工作单位:计算机科学与技术学院题目: 数字显示与键盘输入设计初始条件:1.课程设计使用ZG211硬件综合实验平台(8051单片机),配有课程设计接口芯片和辅助芯片以及器件;2.ZG211有程序设计集成开发环境,程序设计语言为C语言;3.ZG211硬件综合实验平台使用说明书;要求完成的主要任务:(包括课程设计工作量及其技术要求,撰写说明书具体要求)1.学习使用ZG211硬件综合实验平台,程序设计集成开发环境;2.根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。
实验5键盘输入与数码管显示实验
班级学号姓名实验组别实验日期室温报告日期成绩报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:实验5键盘输入与数码管显示实验一、实验目的学习键盘工作原理,掌握数据输入输出的方法。
二、实验内容及原理矩阵键盘扫描原理:由处理器通过行线给某一行按键送入低电平信号,按键在未使用的情况下列线上拉高电平信号,处理器对行线输出相连的I/O口进行扫描,当扫描到低电平信号时证明对应的键被按下。
本实验中采用的是2*8键盘,为了减少对处理器芯片I/O接口的直接引用,实验中使用了一片74HC595(U6)用来实验数据串并转换。
三、实验原理图四、实验步骤1. 实验连线74HC595(U6)时钟控制端接LPC2103总线接口模块的P0.19,数据输入端接总线接口模块的P0.20,选通端接总线接口模块的P0.21。
数据输出端接按键行扫描输入端。
按键8根行线接74HC595的数据输出端,2根列线分别接LPC2103总线接口模块的P0.17,P0.18.同时在列线上接入+3.3V 电源和上拉电阻以确保在没有信号输入的情况下列线给处理器送入的是高电平信号。
2.仿真器的设置:一般选用JTAG 调试,若使用RelInFlash 生成目标时,编译连接生成的目标代码会将芯片加密。
此时调试无法继续,须将硬件调成ISP 模式进行全片擦除。
3. 运行程序:keytest.hex4. 接通电源,按下按键并观察实验板上数码管的变化。
五、流程图主程序显示子程序键盘扫描六、实验程序#include "config.h" #include "Num show.h" #include "key.h"/**************************************************************************** * 名称:main()* 功能:数据送入数码管显示****************************************************************************/ int main(void){uint8 key_val=0,dis;uint8 str[8]={0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00};PINSEL0=0x00000000;//设置所有引脚连接GPIOPINSEL1=0x00000000;IODIR=SPI_IOCON; //设置LED为输出其他为输入//Num_show(str);while(1){key_val=get_key(); //取键值if(key_val<16){dis = key_val;if(dis<10){str[7]=dis;str[6]=0;}else{str[6]=1;str[7]=dis%10;}//for(m=0;m<10;m++) //延时显示键值}Num_show(str);//显示改变后的数值}return (0);}#include "config.h"#define SPI_CS 0x00000100//P0.8#define SPI_CS1 1<<11//P0.11#define SPI_DATA 0x00000040//P0.6#define SPI_DATA1 0x00000080//P0.7/**************************************************************************** * 名称:DelayNS()* 功能:长软件延时* 入口参数:dly参数越大延时越久* 出口参数:无****************************************************************************/ void DelayNS(uint32 dly){uint32 i;for(;dly>0;dly--)for(i=0;i<5000;i++);}/**************************************************************************** * 名称:HC595_SendDat()* 功能:向74HC595发送一个字节的数据* 入口参数:data要发送的数据* 出口参数:无* 说明:高位数据先发送****************************************************************************/ void HC595_SendDat(uint8 dat){uint8 i;IOCLR = SPI_CS; //SPI_CS=0for(i=0;i<8;i++) //发送8位数据{IOCLR = SPI_CLK; //SPI_CLK=0if((dat&0x80)!=0) IOSET = SPI_DA TA;else IOCLR = SPI_DA TA;dat<<=1;IOSET = SPI_CLK; //SPI_CLK=1}IOSET = SPI_CS; //SPI_CS=1,输出显示数据}void HC595_SendDat1(uint8 dat){uint8 i;IOCLR = SPI_CS1; //SPI_CS=0for(i=0;i<8;i++) //发送8位数据{IOCLR = SPI_CLK; //SPI_CLK=0if((dat&0x80)!=0) IOSET = SPI_DA TA1;dat<<=1;IOSET = SPI_CLK; //SPI_CLK=1}IOSET = SPI_CS1; //SPI_CS=1,输出显示数据}/***************************************************************************** 名称:Num_show()* 功能:显示收到的数据* 入口参数:str[],要显示的数据****************************************************************************/ int Num_show(uint8 str[]){const uint8 DISP_TAB1[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80};const uint8 DISP_TAB[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0--f 暗亮G P U r -uint8 i;// while(1){for(i=0;i<8;i++){HC595_SendDat(DISP_TAB[str[i]]);HC595_SendDat1(DISP_TAB1[i]);DelayNS(1);HC595_SendDat(0xff);HC595_SendDat1(DISP_TAB1[i]);}}return(0);}#include "config.h"#include "Num show.h"#define SPI_CS2 1<<21//P0.21#define SPI_DATA2 1<<20//P0.20#define SPI_CLK2 1<<19//P0.19#define KEY1 1<<17// P0.17#define KEY2 1<<18// P0.18/***************************************************************************** 名称:HC595_SendDat2()* 功能:向74HC595发送一个字节的数据* 入口参数:data要发送的数据* 说明:高位数据先发送****************************************************************************/ void HC595_SendDat2(uint8 dat){uint8 i;IOCLR = SPI_CS2; //SPI_CS2=0for(i=0;i<8;i++) //发送8位数据{IOCLR = SPI_CLK2; //SPI_CLK2=0if((dat&0x80)!=0) IOSET = SPI_DA TA2;else IOCLR = SPI_DA TA2;dat<<=1;IOSET = SPI_CLK2; //SPI_CLK2=1}IOSET = SPI_CS2; //SPI_CS2=1,输出显示数据}/**************************************************************************** * 名称:get_key()* 功能:按下按键取数值* 入口参数:无* 出口参数:键值* 说明:高位数据先发送****************************************************************************/uint8 get_key(void){uint8 key_value=16,i,j;uint8 k1[8]={0,1,2,3,4,5,6,7};uint8 k2[8]={8,9,10,11,12,13,14,15};const uint8 DISP_TAB2[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};for(i=0;i<8;i++){HC595_SendDat2(DISP_TAB2[i]); //扫描if((IOPIN&KEY1)==0){ DelayNS(10);if((IOPIN&KEY1)==0){ while((IOPIN&KEY1)==0);key_value=k1[i];break;}}}{for(j=0;j<8;j++){HC595_SendDat2(DISP_TAB2[j]); //扫描if((IOPIN&KEY2)==0){ DelayNS(10);if((IOPIN&KEY2)==0){while((IOPIN&KEY2)==0);key_value=k2[j];break;}}}}return key_value;}。
DWIN人机交互界面_数据参数录入及显示功能说明
DWIN人机交互界面_数据参数录入及显示功能说明
数据参数录入及显示功能说明1.按照下图1所示新建一个工程文件;
图1
2.按照下图2所示进行触控设置;
3.按照下图3所示进行按键键盘设置;
图3 3.按照下图4所示进行数据变量显示设置;
4.单击“生成变量配置”,然后再单击“系统配置”设定通讯帧头,波特率等,如下图5所示;
图5
4.单击“生成触控配置”和“生成变量配置”,将DWIN_SET文件下载到屏,发送如下命令测试;
实现功能:在露点处的框内显示30;
发送命令:AA BB 05 82 0000 001E
指令说明:
AA BB :指令帧头;
05 :长度,包括后面的字节数,从82开始计算;
82 :写变量指令;
0000 :变量地址;
001E :写的数值,30用十六进制表示;
实现功能:在露点处的框内显示30,在温度处的框内显示24,在微水处的框内显示40,在湿度处的框内显示70;
发送命令:AA BB 0B 82 0000 001E 0018 0028 0046
指令说明:
AA BB :指令帧头;
0B :长度,包括后面的字节数,从82开始计算;
82 :写变量指令;
0000 :变量地址;
001E :写漏点的数值,30用十六进制表示;0018 :写温度的数据为24;
0028 :写微水处的数据为40;
0046 :写湿度处的框内为70;。
键盘录入数据的转换与显示
目录键盘录入数据的转换与显示 (1)1设计任务及要求分析 (1)1.1设计任务 (1)1.2要求分析 (1)2方案比较及认证说明 (2)3系统原理阐述 (3)3.1系统设计的软硬件环境 (3)3.2系统设计中用到的DOS调用 (3)4软件设计说明 (6)4.1 ASCII码转换成二进制算法实现 (6)4.2二进制转换成ASCII码算法实现 (6)4.3主程序结构分析 (6)4.4子程序结构分析 (8)4.5中断程序的结构分析 (9)5调试记录及结果分析 (10)5.1调试记录 (10)5.2调试结果分析 (10)总结和心得体会 (11)参考文献 (12)附录一源程序和程序注释 (13)附录二程序运行结果截图 (16)附录三本科生课程设计成绩评定表 (17)键盘录入数据的转换与显示1设计任务及要求分析1.1设计任务从键盘读入二个五位十进制数(1位符号位+4位数值位),并将这二个十进制数,分别转换为二进制数,然后求其和,再将和以十进制形式进行显示。
按Q退出程序。
1.2要求分析通过对课程设计任务书的要求进行分析可知,首先要求从键盘读入二个五位十进制数(1位符号位(+-)+4位数值位),此时,向计算机中输入的数是其实是ASCII2码,而不是真正的二进制数,应该先将这两个分别输入的数在计算机中将其转化为计算机所能识别的机器语言即二进制,然后,通过相应的指令使这两转化过的二进制数相加,当然这个时候,并不能直接输出,因为此时的数是二进制数,不是ASCII2码,只有先转化成ASCII2码之后才能把这两个数之和以其对应的字符的形式输出到屏幕上。
以上就是本次课设的要求所对应的具体含义。
2方案比较及认证说明输入输出方式的比较。
方案一:BIOS功能调用方式输入输出数据。
此方案使用相对复杂一些,而其我们对BIOS 功能调用不是很熟悉。
方案二:MSDOS功能调用的方式输入输出数据。
此方案相对方案一较为简单实用,但是由于我们平时接触较少所以也不太熟悉。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OUT_ASC_SUMDB 6 DUP(?),'$';将二个数的和转换为ASCII码后,放于此 处,以供9号调 用显示
DATAENDS
MOV AX,DATA
MOV DS,AX;设置DS
MOV DX,OFFSET INPUT1;取第一个输入数的首地址
MOV AH,09H
INT 21H;提示输入一个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第一个数
MOV CX,3;设置次数
在程序得到正确的结果之前,会产生一些错误,只有经过调试阶段才能纠正程序中的错误,从而的到正确的结果。在程序编译过程中会提示语法错误,可再用编辑程序来修改源程序中的错误。当没有语法错误而得不到正确结果时,可用调试程序DEBUG来调试。它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
LOOP LP循环LP,读取出第一个数
模块二:输入第二个数
MOV B_BUF1,AX
MOV DX,OFFSET INPUT2;取第二个输入数的首地址
MOV AH,09H
INT 21H;提示输入二个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第二个数
MOV CX,3;设置次数
ADD AX , BIN_BUF1;计算这二个数之和
CALL BIN_TO_ASCII;将和转换为ASCII码,以供显示用
MOV DX,0AH
MOV AH,02H
INT 21H
MOV DX,OFFSET IN_ASC_BUF1+2
MOV AH,09H
INT 21H
MOV DX,0AH
MOV AH,02H
INT 21H
MOV DL,'='
MOV AH,02H
INT 21H
MOV DX,OFFSET OUT_ASC_SUM
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
模块四.十进制数转换成二进制数:
入口:十进制数的ASCII码在IN_ASC_BUF内
出口:转换后的二进制数在AX内
ADD AL,30H
MOV OUT_ASC_SUM+3,AL;保存百位数字
MOVAL,AH
CBW
MOV BL,10
DIV BL
ADD AL,30H
MOV OUT_ASC_SUM+4,AL;保存十位数字
ADD AH,30H
MOV OUT_ASC_SUM+5,AH;保存个位数字
RET
B_TO_ASC ENDP
B_BUF1 DW ?
INPUT2DB 0DH,0AH,'PLEASE IUPUT THE SECOND NUMBER FROM -9999 TO 9999!$'
OUT_ASC_SUMDB 6 DUP(?),'$'
二).程序调试
在DOS环境下,键入EDIT。启动全屏幕编辑软件EDIT,输入源程序。输入完毕,按alt+F选择SAVE保存程序(规定扩展名为*.ASM),按alt+X退出EDIT状态。
退出EDIT环境后,输入ASM或MASM 文件名↙(省略扩展名,系统默认为.ASM),对源程序进行汇编。源程序经汇编后产生三个输出文件:第一个是OBJ文件,即二进制目标文件,这是汇编的主要目的;第二个是LST文件,即列表文件;第三个是CRF文件,对于一般的程序可以不建立后两个文件。
MOV OUT_ASC_SUM+1,AL;保存万位数字
MOV AX,DX;将余数置入AX内,以便当作被除数
CWD
MOV BX,1000
DIV BX
ADD AL,30H
MOV OUT_ASC_SUM+2,AL;保存千位数字
MOV AX,DX;将余数置入AX内,以便当作被除数
MOV BL,100
DIV BL
MOV DI,OFFSET IN_ASC_BUF+2;将第二个数的第一个字符放于目的数据区指针中
MOV SI,OFFSET IN_ASC_BUF1+7;将第二个数的第一个字符放于源数据区指针中
LP1:MOV AX,[DI]地址内容送入AX
MOV [SI],AX
INC SI
INC SI
INC DI
INC DI
出口:转换后的ASCII码在OUT_ASC_SUM变量内
算法:AX中的数范围在+32767到-32768之间,先检查AX中的符号位,以决定输出“+”还是“-”,若是负数,应先求补,得到原码后即可与正数作统一处理。转换方法为将被转换的二进制数先除以10000,商;即为万位数,再将余数除以1000,商为千位数,以此类推,求出百、十位数,剩下的为个位数。最后,将各个数加上30H,即成为对应字符。
六.设计总结:
七.参考文献:
<微机原理实验与课程设计知指导书>,陆红伟编,中国电力出版社,2006年
<8086微型计算机组成,原理及接口>,顾滨,机械工业出版社,2001
<微型计算机原理及应用>,吕淑萍等,哈尔滨工程大学出版社,2004年
<微型计算机技术及应用>,戴梅萼,清华大学出版社,2005年
八.附件材料:
南京工程学院
课程设计报告书
课 程 名 称微机原理及应用B
院(系、部、中心)自动化学院
专业自动化(数控技术)
班 级
姓 名
学 号
起 止 日 期
指 导 教 师
一、设计题目………………………………………2
二、设计任务(要求)……………………………2
三、总体方案………………………………………2
四、原理框图………………………………………3
5。子程序中,实现十进制数转换为二进制方法是先将累加和赋0,再用累加和乘10加X得出结果。转换后在16位补码的表示范围内,如果为负数,则需求补。
6.子程序中,实现二进制数转换为十进制前先检查符号位,若为负数则求补,转换方法为将二进制数除以1000,再将余数除以1000,依次类推,求出百,十位数,剩下的为个位数,最后将各个数加上30H,即成为对应字符。
汇编程序产生的二进制目标文件不是可执行文件,还必须用连接程序(LINK)把OBJ文件转换成可执行的EXE文件。LINK程序有两个输入文件OBJ和LIB,两个输出文件EXE和MAP。连接时,输入LINK 文件名↙,对汇编生成的*.OBJ文件进行连接,计算时会询问生成的EXE文件名、MAP文件名以及参与连接的库文件名,如果不想生成MAP文件,没有库文件参与连接,则按回车键作答。最后,生成相应的*.EXE文件。从LINK过程的提示信息中,可看到最后给出了一个“无堆栈段”的警告性错误,这并不影响程序的执行。至此,产生了一个EXE文件,在DOS环境下可以直接运行该文件。
IN_ASC_BUFDB 6;十进制数的输入缓冲区,共可接收6个字符
DB ?;保留,用于10号调用时DOS填入实际输入字符个数
DB 6 DUP(?),'$';一个符号位,四位数字ASCII码,加上一个回车 符, 共计6字符
IN_ASC_BUF1DB 6
DB ?
DB 12 DUP(?),'$'
B_BUF1 DW ?;将第一个数转换为二进制后,放于此处
2. 先输入主程序。 输入两个数时,键盘接收的十进制数以ASCII码形式存放在内存单元中,将其转换为十进制数字。数值在-9999至+9999范围内。
3. 主程序中,两个二进制数数求和,结果也在16位补码的表示范围内。
4. 主程序中,和显示前,首先把二进制转换为十进制数,检查和的符号位,若为负数则求补。
算法:先将其转换成十进制数字,再用累加和乘10加X的方法变成二进制数,如将358转换为二进制数,可先将累加和赋0,再计算(((0*10+3)*10+5)*10+8),结果为二进制数,再由符号位决定是否需要求补。
ASC_TO_B PROC NEAR
MOV CL,IN_ASC_BUF+1;取字符个数
MOV CH,0
6.在输入数据之后,屏幕显示第二个数的输入的值。
7.最后显示器显示“****+****=****”,其中3个****分别是第一个加数,第二个加数,和。
三.总体方案:
1. 程序分为主程序和子程序,主程序主要是接收从键盘输入的数,两个数的求和,以及和的显示;子程序分别实现十进制数转换为二进制和将二进制数转换为十进制数。
MOV SI,10
L2:MUL SI
ADD AL,[BX]
ADC AH,0
INC BX
LOOP L2;累加乘10
CMP IN_ASC_BUF+2,'+'
JZ L3;符号是正号,转移
NEG AX;符号是负号,求补
L3:RET
ASC_TO_B ENDP
模块五.二进制数转换为十进制数:
入口:二进制数在AX内
LOOP LP1循环LP1,读取出第一个数
模块二:输入第二个数
模块三.两个二进制数求和并显示和:
显示结果:
MOV AH,09H
MOV DX,OFFSETOUT_ASC_SUM
INT 21H
将结果存入数据段中定义的缓冲区OUT_ASC_SUM中,再通过调用DOS系统的09H号功能——显示字符串(串尾字符为$,但不显示)来完成。