从键盘输入数据并显示实验报告
- 格式:doc
- 大小:57.00 KB
- 文档页数:6
实验报告08级班级:物理学(2)班课程:中教法实验姓名:彭发强学号:120081001244 日期:11-04-18 实验项目:MA TLAB程序设计实验目的:1、掌握利用if语句、switch语句实现选择结构的方法。
2、掌握利用for语句、while语句实现循环结构的方法。
3、掌握利用向量运算来代替循环操作的方法并理解MA TLAB程序设计的特点。
4、掌握定义和调用MA TLAB函数的方法实验内容:1、从键盘输入一个3位整数,将它反向输出。
如输入639,输出为936。
解:x=input('enter x:','s');j=length(x);for i=1:1:jy(j-i+1)=x(i);enddisp(y);2、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
解:If语句x=input(' Please enter your results:');if x<0|x>100disp(' Your input is not valid');elseif x>=90&x<=100disp('A');elseif x>=80&x<90disp('B');elseif x>=70&x<80disp('C');elseif x>=60&x<70disp('D');else disp('E')endSwitch语句x=input(' Please enter your results:');if x<0|x>100disp(' Your input is not valid');elseswitch xcase num2cell(0:59)y='E';case num2cell (60:69)y='D';case num2cell (70:79)y='C';case num2cell (80:89)y='B'otherwisey='A';enddisp(y);end3、输入20个数,求其中最大数和最小数。
汇编语言实验7实验报告一、实验目的本次实验旨在通过汇编语言编写程序,实现对字符串的操作和输出。
二、实验内容1. 编写一个汇编程序,要求从键盘输入一个字符串,并将其逆序输出到屏幕上;2. 编写一个汇编程序,要求从键盘输入两个字符串,并将它们拼接起来后输出到屏幕上。
三、实验过程1. 字符串逆序输出程序首先,需要从键盘输入一个字符串。
为了方便起见,我们可以先规定字符串的最大长度为100。
接着,我们需要定义两个变量:```buffer db 100 ; 用于存储输入的字符串length dw ? ; 存储输入的字符串长度```其中,db代表定义字节型变量,dw代表定义双字节型变量。
然后,我们需要使用INT 21H中断来读取用户输入的字符串。
具体而言,我们可以使用下面这段代码:```mov ah, 0Ah ; 设置INT 21H功能号为0Ahmov dx, offset buffer ; 将buffer的地址传给DX寄存器int 21h ; 调用INT 21H中断```该代码会将用户输入的字符串存储在buffer中,并且将其长度存储在length变量中。
接着,我们需要将该字符串逆序输出到屏幕上。
为了实现这个功能,我们可以使用栈来存储字符串中的每个字符,并逐个弹出来输出。
具体而言,我们可以使用下面这段代码:```mov si, offset buffer + 1 ; 将si寄存器指向字符串的第一个字符mov cx, length ; 将cx寄存器设置为字符串长度dec cx ; 字符串长度需要减1reverse:push byte ptr [si] ; 将当前字符压入栈中inc si ; 指向下一个字符loop reverse ; 循环直到所有字符都被压入栈中mov ah, 02h ; 设置INT 21H功能号为02h,表示输出一个字符print:pop dx ; 弹出栈顶元素int 21h ; 输出该字符loop print ; 循环直到所有字符都被弹出并输出完毕```2. 字符串拼接程序首先,需要从键盘输入两个字符串。
计算机工程系实验报告课程名称:Java面向对象程序设计班级:网络二班姓名:尚晶晶学号:一、实验目的:1、掌握char类型数据和int类型数据之间的互相转换,了解Unicode字符表;2、掌握从键盘输入基本类型的数据。
二、实验要求:1、有一函数:-1+2x x<0Y= -1 x=0-1+3x x>0 编写一个Java应用程序,从键盘输入一个x值,程序输出y的值。
2、编写一个Java应用程序,使用while循环语句计算1-1000之间能被3和7同时整除的整数之和。
3、编写一个Java应用程序,使用for循环计算8+88+888+8888+88888+...的前10项之和。
4、编写一个Java应用程序,计算1-1/3+1/5-1/7+1/9-1/11+...的前10000项之和。
5、编写一个Java应用程序,计算1+2!+3!+4!+...从第100项到第200项之和。
三、程序代码:1.import java.util.*;public class Example3_1{public static void main(String args[]){Scanner reader=new Scanner(System.in);int x=0,y=0;System.out.println("输入x: ");x=reader.nextInt();if(x<0){y=-1+2*x;}else if(x>0){y=-1+3*x;}else{y=-1;}System.out.printf("%d",y);}}2.public class Example3_2{public static void main(String args[]){int sum=0;int i=1;while(i<=1000){if(i%3==0&&i%7==0){sum=sum+i;}i++;}System.out.println("1000以内能同时被3和7整除的整数之和为:"+sum);}}3.public class Example3_3{public static void main(String srgs[]){long sum=0,a=8,b=a,i=1;for(i=1;i<=10;i++){sum=sum+b;b=b*10+a;}System.out.println("e="+sum);}}4.public class Example3_4{public static void main(String args[]){double sum=0;double a=0;int i=0;for(i=0;i<10000;i++){a=(i%2==0?1:-1)/(2*i+1);sum=sum+a;}System.out.println("前10000项之和为:"+sum);}5.public class Example3_5{public static void main(String args[]){int i=1,a=1;int sum=0;while(i<=200){if(i>=100){a=a*i;sum=sum+a;}i++;}System.out.println("从100项到第200项的和为:"+sum); }}四、运行结果:1.2.3.5.。
查询时键盘实验报告一、实验背景在计算机领域,查询是一种常见的操作。
键盘作为计算机的一种输入设备,是用户与计算机进行交互的重要工具之一。
通过键盘,用户可以输入各种指令和数据,包括查询关键词。
键盘的性能和使用体验直接影响到用户的操作效率和舒适度。
为了评估键盘的性能,我们进行了查询时键盘实验。
二、实验目的本实验的目的是评估不同类型键盘在查询操作中的性能表现,包括击键速度、准确性和舒适度等方面。
通过实验结果的比较,可以得出不同类型键盘的优缺点,为用户的选择提供参考。
三、实验方法1. 实验材料- 键盘A:机械键盘- 键盘B:薄膜键盘- 键盘C:触摸板2. 实验步骤1. 进行键盘A的实验:由实验者使用键盘A进行10次查询操作(先手工输入一段文字再进行查询),记录每次的击键速度和准确性。
2. 进行键盘B的实验:由实验者使用键盘B进行10次查询操作,并记录数据。
3. 进行键盘C的实验:由实验者使用触摸板进行10次查询操作,并记录数据。
4. 分析和比较实验结果。
四、实验结果1. 键盘A的实验结果序号击键速度(字/分钟)准确性(百分比)1 120 95%2 130 92%3 115 98%4 125 94%5 110 96%6 135 90%7 121 96%8 114 95%9 118 93%10 112 97%2. 键盘B的实验结果序号击键速度(字/分钟)准确性(百分比)1 95 92%2 100 89%3 90 96%4 105 93%5 92 95%6 97 91%7 100 93%8 91 92%9 98 90%10 93 94%3. 键盘C的实验结果序号击键速度(字/分钟)准确性(百分比)1 80 88%2 85 83%3 90 86%4 75 81%5 88 84%6 82 87%7 85 82%8 79 85%9 84 83%10 81 86%五、实验分析通过对实验结果的分析,可以得出以下结论:1. 在击键速度方面,机械键盘(键盘A)表现出最高的性能,平均每分钟击键速度为120字。
java输入输出流实验报告总结】Java输入输出流实验报告总结在本次实验中,我们学习了Java的输入输出流的概念和用法。
输入输出流是Java中用于处理输入和输出操作的工具。
通过输入流,我们可以将外部数据输入到程序中进行处理,通过输出流,我们可以将程序中的数据输出到外部文件或设备上。
在本次实验中,我们通过几个具体的示例来探索输入输出流的不同用法和特性,以期更好地理解和掌握它们的使用。
首先,我们学习了如何使用FileInputStream和FileOutputStream这两个类来进行字节流的输入和输出操作。
这两个类分别用于从指定文件中读取字节数据和将字节数据写入到指定文件中。
通过这两个类,我们可以实现文件的拷贝、移动、创建等功能。
同时,我们还了解了如何使用BufferedInputStream和BufferedOutputStream这两个类来提高读写效率。
这两个类可以通过缓存数据来减少对底层系统的IO操作次数,从而提高读写速度。
接下来,我们学习了如何使用FileReader和FileWriter这两个类进行字符流的输入和输出操作。
这两个类与字节流的输入输出类似,但它们处理的是字符数据。
通过这两个类,我们可以读取和写入文本文件中的字符数据。
我们还了解了字符编码和字符集的概念,并学习了如何使用InputStreamReader和OutputStreamWriter来进行字符流和字节流之间的转换。
除了字节流和字符流,我们还学习了对象流的使用。
对象流可以将Java 对象直接写入到文件中,也可以从文件中读取Java对象。
这在处理一些复杂的对象数据时非常有用。
我们通过使用ObjectInputStream和ObjectOutputStream这两个类,实现了对象的读写操作。
需要注意的是,被写入和读取的对象必须实现Serializable接口,否则会抛出NotSerializableException异常。
在实验过程中,我们还探索了如何使用标准输入输出流。
《数据结构》课程上机实验指导书实验一【实验名称】顺序表的基本算法【实验目的】创建一个顺序表,掌握线性表顺序存储的特点。
设计和验证顺序表的查找、插入、删除算法。
【实验要求】(1)从键盘读入一组整数,按输入顺序形成顺序表。
并将创建好的顺序表元素依次打印在屏幕上。
(2)设计一个带选择菜单的主函数,菜单中具备任意选择删除、插入、查找数据元素的功能。
(3)当选择删除功能时,从键盘读入欲删除的元素位置或元素值,按指定方式删除;当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号。
(4)每种操作结束后,都能在屏幕上打印出此时顺序表元素的遍历结果。
【实验步骤】1、实验前先写好算法。
2、上机编写程序。
3、编译。
4、调试。
例程:书上参考算法2-1,2-4,2-5,2-6,2-8!带菜单的主函数参考书上2.5综合实例!注意:顺序表的结构体!typedef struct{datatype items[listsize];int length;}SpList;实验二【实验名称】单链表的基本算法【实验目的】创建一个单链表,掌握线性表链式存储的特点。
设计和验证链表的查找、插入、删除、求表长的算法。
【实验要求】(1)从键盘读入一组整数,按输入顺序形成单链表。
并将创建好的单链表元素依次打印在屏幕上。
(注意:选择头插法或者尾插法!)(2)设计一个带选择功能菜单的主函数,菜单中至少具备任意选择删除、插入、查找数据元素,和求单链表表长等几项功能。
(3)当选择删除功能时,从键盘读入欲删除的元素位置,按指定位置删除;当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号;当选择求表长功能时,返回该单链表表长的数值。
(4)每种操作结束后,都能在屏幕上打印出此时单链表元素的遍历结果。
【实验步骤】1、实验前先写好算法。
微型计算机实验一实验报告实验一:微型计算机的基本操作及应用探究一、实验目的1.了解微型计算机的基本组成和工作原理;2.学习使用微型计算机进行基本操作;3.探究微型计算机在实际应用中的作用。
二、实验器材和仪器1.微型计算机实验箱;2.微型计算机主机;3.显示器;4.键盘。
三、实验内容1.将微型计算机主机与显示器、键盘连接;2.打开微型计算机并进行基本操作;3.使用微型计算机进行基本应用。
四、实验步骤1.将微型计算机主机与显示器、键盘连接,确保连接稳固;2.打开微型计算机主机,等待系统启动完毕;3.使用键盘进行基本操作,包括输入字符、回车等;4.运行预装的基本应用软件,并进行相应操作。
五、实验结果和分析在本次实验中,通过连接主机与显示器、键盘,我们成功打开了微型计算机并进行了基本操作。
使用键盘输入字符并通过回车键确认后,我们可以在显示器上看到相应的结果。
这表明微型计算机能够正确地接收和处理我们输入的指令,并将结果显示出来。
通过运行预装的基本应用软件,我们还可以进行更加复杂的操作,如文字处理、图形绘制等。
本次实验中,我们还了解到微型计算机的基本组成和工作原理。
微型计算机由主机、显示器、键盘组成。
在主机中,CPU是主要的控制中心,负责接收和处理指令;内存存储了计算机运行时所需的数据和程序;硬盘则保存了大容量的数据。
显示器负责将计算机处理的结果显示出来,键盘则用于输入指令和数据。
微型计算机的应用领域十分广泛。
它可以用于文字处理、数据处理、图形绘制等多个方面。
在今天的社会中,无论是企事业单位还是个人用户,几乎都需要使用微型计算机进行日常工作和生活。
微型计算机的快速计算和大容量存储能力,使得数据处理和信息管理变得更加便捷和高效。
六、实验总结通过本次实验,我们学习了微型计算机的基本操作和应用,并了解了微型计算机的基本组成和工作原理。
微型计算机在今天的社会中扮演着重要的角色,其广泛的应用范围使得人们的工作和生活更加便捷和高效。
单片机的键盘和显示实验报告㈠实验目的1.掌握单片机I/O的工作方式;2.掌握单片机以串行口方式0工作的LED显示;3.掌握键盘和LED显示的编程方法。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台㈢实验内容及要求实验硬件线路图见附图从线路图可见,8051单片机的P1口作为8个按键的输入端,构成独立式键盘。
四个LED显示器通过四个串/并移位寄存器74LS164接口至8051的串行口,该串行口应工作在方式0发送状态下,RXD端送出要显示的段码数据,TXD则作为发送时钟来对显示数据进行移位操作。
编写一个计算器程序,当某一键按下时可执行相应的加、减、乘、除运算方式,在四个显示器上显示数学算式和最终计算结果。
注:①通过按键来选择加、减、乘、除四种运算方式。
②输入两个数字均为一位十进制数,可预先放在内存中。
㈣实验框图(见下页)㈤思考题1.当键盘采用中断方式时,硬件电路应怎样连接~是键输出线,~是扫描输入线。
输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。
移位寄存器的移位速率是多少实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。
其实这个问题确实不知道怎么回答。
LED实验代码:ORG 0000HAJMP MAINORG 0030HMAIN:MOV 41H,#0BBH ;对几个存放地址进行初始化MOV 42H,#0BBHMOV 43H,#0BBHMOV 44H,#0BBHMOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL DISPLAY ;初始化显示KEY:MOV R3,#08H ;用来存放两个数据MOV R4,#02HMOV P1,#0FFH ;初始化P1口MOV A,P1 ;读取按键状态CPL A ;取正逻辑,高电平表示有键按下JZ KEY ;A=0时无键按下,重新扫描键盘LCALL DELAY1 ;消抖MOV A,P1 ;再次读取按键状态CPL AJZ KEY ;再次判别是否有键按下PUSH AKEY1:MOV A,P1CPL AANL A,#0FH ;判别按键释放JNZ KEY1 ;按键未释放,等待LCALL DELAY1 ;释放,延时去抖动POP AJB ,ADD1 ;K1按下转去ADD1JB ,SUB1 ;K1按下转去SUB1JB ,MUL1 ;K1按下转去MUL1JB ,DIV1 ;K1按下转去DIV1LJMP KEYADD1:LCALL BUFFER ;显示加数和被加数MOV 43H,#049HLCALL DISPLAY ;显示加号MOV A,R3ADD A,R4DA AMOV R3,A ;相加结果放入R6ANL A,#0FHMOV R4,A ;结果个位放入R7MOV A,R3SWAP A ;半字节交换,高四位放入低四位ANL A,#0FHMOV R3,A ;结果的高位放入R6LCALL L ;显示缓存区设置LCALL DELAY2 ;延时一秒后显示LCALL DISPLAYLJMP KEYSUB1:LCALL BUFFER ;显示减数和被减数MOV 43H,#40HLCALL DISPLAY ;显示减号MOV A,R3CLR CY ;CY清零SUBB A,R4 ;做减法PUSH ARLC A ;带进位循环左移,最高位放入CYJC F ;判断最高位,若为1则跳转到负数ZHENG: POP AMOV R4,AMOV R3,#00H ;高位清零SJMP OUTFU:POP ACPL A ;取绝对值INC AMOV R4,AMOV R3,#11H ;显示负号OUT: LCALL L ;显示缓存区设置LCALL DELAY2 ;延时1s后显示LCALL DISPLAYLJMP KEYMUL1:LCALL BUFFER ;显示两位乘数MOV 43H,#99HLCALL DISPLAY ;显示乘号MOV A,R3MOV B,R4MUL AB ;结果放入AB,A中是低8位,B中是高8位MOV B,#0AHDIV AB ;十进制转换MOV R4,B ;结果个位放入R7MOV R3,A ;结果的十位放入R6LCALL LLCALL DELAY2LCALL DISPLAY ;延时1s后显示LJMP KEYDIV1:LCALL BUFFER ;显示除数和被除数MOV 43H,#62HLCALL DISPLAY ;显示除号MOV A,R3MOV B,R4DIV AB ;A除以BMOV R4,B ;余数放在R4中MOV R3,A ;商放在R3中MOV A,R4MOVC A,@A+DPTR ;调用段选号MOV 41H,A ;显示余数MOV A,R3MOVC A,@A+DPTRMOV 43H,A ;显示商MOV 42H,#00HMOV 44H,#00HLCALL DELAY2 ;延时1S后显示LCALL DISPLAYLJMP KEYBUFFER: MOV 41H,#22H ;显示初始化,在做计算之前显示两个操作数,显示等号MOV DPTR,#TABLMOV A,R4MOVC A,@A+DPTRMOV 42H,AMOV A,R3MOVC A,@A+DPTRMOV 44H,ARETDISPLAY:MOV R5,#04H ;共四位需要显示MOV R0,#41HDISPLAY1:MOV A,@R0MOV SBUF,ADISPLAY2:JNB TI,DISPLAY2 ;是否传完了CLR TIINC R0DJNZ R5,DISPLAY1RETL:MOV A,R4MOVC A,@A+DPTRMOV 41H,A ;R4对应的段码MOV A,R3MOVC A,@A+DPTRMOV 42H,A ;R3对应的段码MOV 43H,#00HMOV 44H,#00HRETDELAY1: ;普通延时MOV R1,#20HDS1: MOV R2,#0FFHDS2: DJNZ R2,DS2DJNZ R1,DS1RETDELAY2: MOV R6,#14H ;定时1SMOV TMOD,#01HDS3:MOV TH0,#3CHMOV TL0,#0B0H ;50msSETB TR0LOOP:JNB TF0,LOOPCLR TF0CLR TR0DJNZ R6,DS3 ;1s到,中断返回RETTABL:DB 0BBH 09H 0EAH 6BH ;段码表DB 59H 73H 0F3H 0BHDB 0FBH 7BH 00H 0DBHDB 0F1H 0B2H 0E9H 0F2HDB 0D2H 40H实验结果及分析按键1:8+2= 结果:10按键2:8-2= 结果: 6按键3:8*2= 结果:16按键4:8/2= 结果:4从上面的结果可以看出,本次实验基本完成了实验要求。
(完整版)c++实验报告C++程序设计实验报告姓名:学号:班级:学院选课时间实验一数据类型和表达式【实验目的】1.熟悉并学习使用C++程序编译平台VC6.0;2.掌握如何在编译平台下编辑、编译、连接和运行一个简单的C++程序;3.掌握C++语言基础数据类型,熟悉变量及常量的定义和赋值方法;4.学会使用C++算术运算符和算术表达式;5.掌握C++程序的赋值和输入输出语句的使用方法;6.掌握简单C++程序的编写和调试【实验内容】1.从键盘上输入两个int型数,比较其大小,并输出显示其中较小的数代码:#includeusing namespace std;int main(){int a,b;int min(int x,int y);cin>>a>>b;cout<<min(a,b)<<endl;< p="">return 0;}int min(int x,int y){if(x<y)< p="">return x;elsereturn y;}2.从键盘上输入一个int型数,一个浮点数,比较其大小,将输出其中较大的数;代码:#includeusing namespace std;int main(){int a;float b;cin>>a>>b;if(a>b)cout<<a<<endl;< p="">elsecout<<b<<endl;< p="">return 0;}3.输入一摄氏温度,编程输出华氏温度。
已知;华氏温度转换为摄氏温度的计算公式如下:其中, F表示华氏温度, C表示摄氏温度。
代码:#includeusing namespace std;int main(){float a,b;cin>>a;b=a*1.8+32;cout<<b<<endl;< p="">return 0;}4.编程实现输入千米数,输出显示其英里数。
微机原理实验六__从键盘输入数据并显示实验六从键盘输入数据并显示1要求:编写程序,将键盘接收到的四位十六进制数转换为等值的二进制数,并显示在屏幕上。
若输入的不是0—F间的数字,则显示出错信息,并要求重新输入。
2目的:掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。
实验程序CRLF MACROMOV AH,02H ;换行MOV DL,0DHINT 21HMOV AH,02H ;回车MOV DL,0AHINT 21HENDM ;宏定义结束DATA SEGMENT ;数据段MARK DB?MESS DB'please input the number(H),press inter,ture intonumber(B).press space end.',0DH,0AH,'$'ERROR DB 0DH,0AH, 'input error',0DH,0AH,'$'DATA ENDS ;数据段结束STACK SEGMENT ;堆栈段STA DW 5 DUP(?)TOP DW?STACK ENDS ;堆栈段结束CODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOP ;SP指向堆栈段段尾HEAD: CRLF ;输出换行符MOV MARK,0MOV AH,09H ;显示9号功能,即字符串显示LEA DX,MESSINT 21H ;显示提示输入的信息CALL GETNUM ;接收键入数值送DXCMP MARK,01H ;比较两者大小JE HEAD ;如果相等则跳转MOV CX,0010H ;16位MOV BX,DXTTT: ROL BX,1 ;循环左移1位MOV DL,BLAND DL,01H ;屏蔽掉高7位ADD DL,30HMOV AH,02H ;字符输出INT 21H ;显示二进制位对应的ASCII字符 LOOP TTT ;循环跳转tttJMP HEADFINI: MOV AX,4C00H ;最后结束语句INT 21H ;返回DOSGETNUM PROC NEAR ;子程序,接收键入数值送DX PUSH CX XOR DX,DXGGG: MOV AH,01HINT 21H ;调用中断CMP AL,0DH ;输入为回车,则进行转换 JE PPPCMP AL,20H ;输入为空格,则退回DOS JE FINICMP AL,30HJB KKK ;输入有误,显示errorCMP AL,11HJB KKKCMP AL,2AHJB KKKCMP AL,2FHJA KKKSUB AL,20H ;使大小写输入一样MOV AH,ALCMP AL,'9'JBE SAVE1 ;大于零,且小于等于9,直接将ASCII码存放于HEX1变量。
键盘接口实验实验报告及程序一、实验目的本次实验的主要目的是深入了解计算机键盘接口的工作原理,并通过编程实现对键盘输入的读取和处理。
通过这个实验,我们将掌握如何与计算机硬件进行交互,提高对计算机系统底层运作的认识。
二、实验原理计算机键盘通常通过 PS/2 接口或 USB 接口与主机相连。
在本次实验中,我们以 PS/2 接口为例进行研究。
PS/2 接口使用双向同步串行协议进行通信,数据传输速率约为 10 167Kbps 。
键盘在向主机发送数据时,每个字节包含 11 位,分别是起始位(总是 0 )、 8 位数据位(低位在前)、校验位(奇校验)和停止位(总是 1 )。
主机通过向键盘发送命令来控制键盘的工作模式和获取相关信息。
三、实验设备及环境1、计算机一台2、开发板及相关配件3、编程软件(如 Keil 等)四、实验步骤1、硬件连接将开发板与计算机通过相应的接口连接好,确保连接稳定。
2、软件编程选择合适的编程语言和开发环境。
初始化相关的硬件接口和寄存器。
编写读取键盘输入数据的程序代码。
3、编译与下载对编写好的程序进行编译,检查是否有语法错误。
将编译成功的程序下载到开发板中。
4、实验测试按下键盘上的不同按键,观察开发板的输出结果。
检查读取到的数据是否准确,校验位是否正确。
五、程序代码实现以下是一个简单的基于 C 语言的键盘接口读取程序示例:```cinclude <reg51h>//定义 PS/2 接口相关引脚sbit PS2_CLK = P1^0;sbit PS2_DATA = P1^1;//读取一个字节的数据unsigned char ReadByte(){unsigned char data = 0;unsigned char i;while(PS2_CLK == 1);//等待时钟线拉低for(i = 0; i < 8; i++){while(PS2_CLK == 0);//等待时钟上升沿data =(data << 1) | PS2_DATA; //读取数据位}while(PS2_CLK == 1);//等待时钟线拉低return data;}void main(){unsigned char key;while(1){key = ReadByte();//读取键盘输入的数据//在此处对读取到的数据进行处理和显示}}```六、实验结果与分析在实验过程中,我们按下不同的键盘按键,开发板能够准确地读取到相应的键值。
目录1.总体方案选择 (2)1.1 实验要求: (2)1.2方案设计 (2)2.硬件原理电路图的设计及分析 (2)2.1主控模块 (2)2.1.1 STC89C52单片机主要特性 (3)2.1.2 STC89C52单片机管脚图 (4)2.1.3 STC89C52单片机的中断系统 (4)2.1.4 STC89C52单片机的定时/计数器 (4)2.2矩阵键盘模块设计: (5)2.2.1矩阵键盘原理介绍 (5)2.2.2矩阵键盘电路设计 (5)2.3 LCD液晶显示器简介 (6)2.3.1液晶模块简介 (6)2.3.2液晶显示部分与89S52的接口 (7)3系统软件设计 (9)3.1系统软件流程图 (9)3.2系统整体原理图 (10)4.系统调试 (11)4.1硬件调试 (11)4.2软件调试 (11)4.3调试结果 (12)5. 心得体会 (13)1.总体方案选择1.1 实验要求:1)通过小键盘实现数据的输入,并在LED数码管上显示2)实现+、-、*、/3)在LED数码管上显示结果4)并有清零,退出功能1.2方案设计本系统以STC89C52单片机为控制核心,对系统进行初始化,主要完成对键盘的响应、液晶显示灯功能的控制,起到总控和协调各模块之间工作的作用。
单片机通过检测键盘读取使用者按下对用功能的按键,然后通过单片机内部运放把运算的结果显示在液晶屏幕上。
图1-1系统结构框图本系统结构如图1-1所示,本设计可分为以下模块:单片机主控模块、键盘模块、功率放大模块、闹铃模块、按键设置模块。
下面对各个模块的设计方案逐一进行论证分析。
2.硬件原理电路图的设计及分析2.1主控模块STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。
STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。
STC89C52单片机的基本组成框图见图2-1。
C语言实验报告实验名称基本输入/输出学院材料与冶金专业班级冶金1003班姓名李钰龙学号20101410任课教师李婕实验时间2011-9-28 1.实验目的(1)熟练掌握scanf()/printf()库函数的调用格式,正确使用各种格式转换控制符,掌握各种类型数据的输入/输出方法;(2)掌握getchar()/putchar()库函数的调用格式,以及使用它们进行字符数据输入/输出的方法。
2.实验内容(2)输入并运行下面程序:#include<stdio.h>main(){int a,b,c;scanf("%d%d",&a,&b);c=a/b;printf("%d\n",c);}要求:调试通过后,运行该程序。
○1输入值:50 4<回车>,查看并运行结果;○2输入值:50.4 10.8<回车>,查看运行结果;○3输入值:50000 100<回车>,查看运行结果;○4输入值:10 0<回车>,查看运行结果;○5输入值:50,4<回车>,查看运行结果。
分析得到的结果,并说明原因。
(3)从键盘上输入三个小写字母,输出其对应的大写字母(例如:输入:a,b,c,则输出分别为A,B,C)。
要求:○1通过一条scanf库函数语句输入三个小写字母,通过printf函数以空格键分隔字符输出;○2通过getchar函数输入三个小写字母,通过printf函数以域宽为3的规定格式输出;○3通过getchar函数输入三个小写字母,通过putchar函数输出。
源程序○1#include<stdio.h>main(){char c1,c2,c3;scanf("%c%c%c",&c1,&c2,&c3);printf("%c %c %c\n",c1-32,c2-32,c3-32);}○2#include<stdio.h>main(){char c1,c2,c3;c1=getchar();getchar();c2=getchar();getchar();c3=getchar();printf("%3c,%3c,%3c\n",c1-32,c2-32,c3-32);}○3#include<stdio.h>main(){char c1,c2,c3;c1=getchar();c2=getchar();c3=getchar();putchar(c1-32);putchar(c2-32);putchar(c3-32);}4.运行结果(2)○112,有50除以4结果的整数部分是12,而转换说明符“d”表示“按十进制整数输出带符号整数”。
从键盘输入数据并显示实验报告
一、实验目的与内容
1、实验目的
掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理,并在程序中设置错误出口。
2、实验内容
编写程序,将键盘接收到的四位十六进制数按“Enter”回车键转化为二进制数,再显示在屏幕上, 按“空格键”结束!。
若输入的不是0-F间的数字,则显示出错信息,并要求重新输入。
二、实验设备(环境)
1、实验设备(含芯片名称、功能简介)
微型计算机一台
2、实验环境
TPC-ZK-II集成环境
3、使用语言
汇编语言
三、实验原理(实验所用到的知识点及相关内容)
1.在TPC-ZK-II集成环境下输入汇编程序,编译、连接,生成.exe文件。
2.按提示输入数据,在屏幕显示的运行结果中查看结果是否正确。
3.输入不同的数据,可得到不同的结果。
4、参考流程图
四、实验步骤(包括步骤、代码、实验截图及其必要说明)
编写程序,将键盘接收到的 4 位 16 进制数转换为等值的二进制数,再显示在荧光屏上。
分析:整个程序分为 3 个部分:键盘输入、转换、显示,可以分别用子程序来完成。
1. 输入。
输入可以利用字符串输入。
这时需要在主程序中先开辟一段输入缓冲区。
字符串输入 ( 0AH 功能 ),入口参数 DS : DX = 缓冲区的首地址,( DS :DX ) = 限制最多输入的字符数,功能号 AH = 0AH,类型号 21H。
出口参数 ( DS : DX+1 ) =实际键入的字符 ( 不含回车符 ),从( DS : DX+2 ) 开始顺序存放键入的字符串,回车符 0DH为串尾最后一字符。
实现功能:等待从键盘输入字符串,并存入设定的缓冲区内,同时回显字符串,光标随着移动,回车符使光标回到行首。
注意事项:应按要求先定义缓冲区,再调用。
数据缓冲区的设置如下:
DATA SEGMENT ; 定义缓冲区
MARK DB ?
MESS DB 'input:$' ;输入字符串提示
ERROR DB 0DH,0AH,'input error!',0DH,0AH,'$' ;输入错误提示
DATA ENDS
从键盘输入‘ ABCD ’, 回车,内存的存放结果 :
子程序如下:
INPUT PROC
LEA DX, stri
MOV AH, 09H ; 调显示功能
INT 21H
LEA DX , max
MOV AH , 0AH
INT 21H ; 调 0A输入功能
RET
INPUT ENDP
2. 转换。
由于在缓冲区中存放的是输入字符的 ASCII 码,比如
1→31H, A→41H ,a→61H,所以首先需要将它们转换成对应的数字的大小。
如何转换?
数字和字母的 ASCII 码是一个有序序列,数字 0~9 : 30H ~ 39H,大写字母 A~Z : 41H ~ 5AH,小写字母 a~z : 61H ~ 7AH。
对于每个字符,先减去 30H,数字 0~9 就转换完了;如果判断是否大于
09H,是则减去 07H,大写字母 A~F转换完毕,如果是小写字母 a~f,还要减去20H。
利用一个循环就可以将 4 个字符转换成相应的二进制数。
现在,在数据缓冲区中存放的是输入的 16进制数每一位的值,占用了 4 个字节,每个字节只用到低四位。
如:输入为 ABCD,则缓冲区中存放的是: 0AH,0BH,0CH,0DH。
实验要求将输入的 4 位 16 进制数转换成等值的二进制数,也就是一个字,所以还要将这 4 个字节进行组合。
组合方法如下:
将DX左移四位,腾出第四位的空间存放一位十六进制数,将此过程循环四次,就可将输入的四个十六进制数全部存放到DX中。
程序如下:
MOV CL,04H
SHL DX,CL ;左移四位,第四位0补齐
XOR AH,AH ;AH清零
ADD DX,AX ;把输入的数据放入DX中
3. 显示。
用“以二进制的形式显示 BX寄存器的内容”程序段来实现。
程序如下:
MOV BX,DX ;把DX的数据放入BX中
SHOW: ROL BX,1 ;循环左移一位
MOV DL,BL
AND DL,01H ;屏蔽掉高7位
ADD DL,30H ;将二进制码转换为ASCLL码输出(按ASCLL码进行输出的)
MOV AH,02H ;字符数出
INT 21H ;显示二进制对应的ASCLL字符
LOOP SHOW
完整代码如下:
CRLF MACRO
MOV AH,02H ;显示器输出
MOV DL,0DH ;换行
INT 21H
MOV AH,02H
MOV DL,0AH ;回车
INT 21H
ENDM
DATA SEGMENT
MARK DB ?
MESS DB 'input:$'
ERROR DB 0DH,0AH,'input error!',0DH,0AH,'$'
DATA ENDS
STACK1 SEGMENT
STA DW 32 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
HEAD: CRLF ;输出换行回车
MOV MARK,0
MOV AH,09H ;字符串显示
LEA DX,MESS
INT 21H
CALL GETNUM
CMP MARK,01H
JE HEAD ;输入错误,跳转到HEAD重新输入
MOV CX,0010H ;循环次数为16
MOV BX,DX ;把DX的数据放入BX中
SHOW: ROL BX,1 ;循环左移一位
MOV DL,BL
AND DL,01H ;屏蔽掉高7位
ADD DL,30H ;将二进制码转换为ASCLL码输出(按ASCLL进行输出的) MOV AH,02H ;字符数出
INT 21H ;显示二进制对应的ASCLL字符
LOOP SHOW
JMP HEAD
FINI: MOV AX,4C00H ;终止当前程序,返回调用程序
INT 21H
GETNUM PROC NEAR
XOR DX,DX ;清零
GO: MOV AH,01H
INT 21H ;键盘输入
CMP AL,0DH
JE HCHH ;输入为回车,则进行转换
CMP AL,20H
JE FINI ;输入为空格,则返回DOS CMP AL,30H
JB WRONG ;输入有误,显示error SUB AL,30H
CMP AL,0AH ;判断是否为0~9
JB BINGO
CMP AL,11H
JB WRONG
SUB AL,07H
CMP AL,0FH ;判断是否为A~Z
JBE BINGO
CMP AL,2AH
JB WRONG
CMP AL,2FH
JA WRONG
SUB AL,20H ;判断输入的为a~z BINGO: MOV CL,04H
SHL DX,CL ;左移四位,第四位0补齐 XOR AH,AH ;AH清零
ADD DX,AX ;把输入的数据放入DX中 JMP GO
WRONG: MOV AH,09H ;显示字符串
MOV DX,OFFSET ERROR
INT 21H
MOV MARK,01H ;将MARK置1 HCHH: PUSH DX ;压入堆栈
CRLF ;回车换行
POP DX ;弹出堆栈
RET吗
GETNUM ENDP
CODE ENDS
END START
五、实验结果(现象)
我们依次输入实验前一天的日期8位(分两次输入)、自己的学号8位(分两次输入)和四个大写字母ABCD,屏幕回显出它们对应的二进制码值;当我们输入一个不输入范围的字符时(比如说‘M’),程序返回‚input error!‛;当输入回车时,屏幕回显出16个0;当输入空格时,屏幕回显出‚done!‛,并返回DOS。
六、实验心得、疑问、建议
本实验做键盘输入并屏幕显示,将十六进制转换成等值二进制数,我们调用DOS功能,利用软中断指令INT 21H实现了键盘的输入、显示器的输出以及返回到DOS等命令,并通过判断将正确输入的四位十六进制数转换为二进制数回显到屏幕上。
编写程序时,我们要注意一点DOS环境下是不允许汉字输入的,否则视为乱码。
通过本次试验的学习,掌握了接收键盘数据的方法(接收到的数据是以ASCLL值进行存放的),并了解了将键盘数据显示时须转换为ASCLL码的原理。