实验一 编程实现键盘输入和显示
键盘显示程序设计实验
实验四键盘显示程序设计实验目的1、理解串行接口键盘单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握几个的基本的传送类、控制类指令的使用方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、键盘接口电路工作原理串行接口键盘盘电路如图4-15所示。
键盘扫描线与显示位选扫描信号共用。
键盘输入只需要一根线,电路简单。
键盘扫描信号从74LS164输出,低电平有效。
当扫描到某个键时,若按键按下,在KEY端得到低电平,否则得到高电平。
通过判断KEY的电平就可以知道相应键盘是否按下。
图4-15 键盘接口电路图2、读键盘程序设计从上面工作原理分析可知,读键程序可以和显示程序结合在一起,也可以单独设计。
这种结构的键盘同样存在抖动问题。
为了减少程序误动作,程序设计时也要考虑去抖动问题。
这里设计一个把键值显示在LED上的程序。
为了简化问题,把读键程序与显示结合起来。
程序流程图如图4-16所示。
图4-16 键盘扫描程序流程图实验内容1、设计程序把键值显示在数码管。
#include<reg52.h>#include"display.h"extern uchar point;extern uchar table[8];uchar t,temp,time;char num;bit flag1;/*void main(){uchar i;table[0]=0x0;for(i=1;i<8;i++)table[i]=0x11;while(1){num=dispkey();if(flag==1)table[0]=num;delay_1ms(2);}}*//************************************************************2、设计程序按不同键时实现不同功能。
功能:按向上键:最右边一位数码管数值加1(0-9),到9时加1回到0 按向下键:最右边一位数码管数值减加1(9-0),到0时减1回到9按向左键:显示数字左移一位按向右键:显示数字右移一位keypointr:短按小数点右移,长按显示学号;接口:上下左右keypointrkeypointl**************************************************************/ void main(){uchar i,j=7,k=0;for(i=0;i<8;i++)table[i]=0x11;TMOD=0x01;EA=1;TH0=(65536-20000)/256;TL0=(65536-20000)%256;ET0=1;TR0=1;table[7]=0x1;while(1){delay_1ms(5);temp=dispkey();switch(temp){case 5: if ( flag==0){num=++table[j];//加1if(num==10)num=0;table[j]=num;delay_1ms(1);}; flag=1; break;case 4:if ( flag==0){num=--table[j];//减1if(num==-1)num=9;table[j]=num;delay_1ms(1);};flag=1;break;case 2: if ( flag==0) //右移{if(j==7){table[0]=table[7];table[7]=0x11;j=0;continue;}table[j+1]=table[j];//左边赋给右边j++;table[j-1]=0x11;delay_1ms(1);//关闭左一位};flag=1;break;case 8:if ( flag==0){ //左移if(j==0){table[7]=table[0];table[0]=0x11;j=7;continue;}table[j-1]=table[j];//右边赋给左边j--;table[j+1]=0x11;delay_1ms(1);//关闭右一位};flag=1;break;case 1:if ( flag==0) //小数点右移{if(flag1==1){table[0]=0x9;table[1]=0x4;table[2]=0x0;table[3]=0x8;table[4]=0x1;table[5]=0x0;table[6]=0x3;table[7]=0x1;}else{if(k==7){ point=tablepoint[7];k=0;continue;}point=tablepoint[k];k++;delay_1ms(1);}};flag=1;break;default:flag=0; break;}}}void timer0() interrupt 1{TH0=(65536-20000)/256;TL0=(65536-20000)%256;t++;time++;if(temp==1){if(time==50){if(temp==1)flag1=1;time=0;}}}/*******************************************************显示函数*******************************************************///#define __DISPLAY_H__#include"display.h"uchar code disptable[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71,0xfe,0xff};//0~F数码代码uchar code tablepoint[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 }; uchar point;uchar table[8];void delay_1ms(uchar z){uint x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}uchar dispkey(void){uchar i,keynum=0;i=8;DA T=disptable[table[i-1]];if(point&tablepoint[i-1])DA T=DA T&0xfe; //加入小数点DISPDIN =0;DISPCLK =0;DISPCLK =1;DISPDIN =1;delay_1ms(1);if(!key){delay_1ms(5);if(!key) keynum=i;}for (i=7;i>0;i--){DA T =0xff;DA T =disptable[table[i-1]];if(point&tablepoint[i-1])DA T=DA T&0xfe; //加入小数点DISPCLK =0;DISPCLK =1;delay_1ms(1);if(!key){delay_1ms(5);if(!key) keynum=i;}}DA T=0xff;return keynum;}思考题1、当按加1键时,每按一次数码管值变化可能超过1,是什么原因?答:原因是机械按键会有抖动现象,所以每按一次数码管值变化可能超过1。
课设环节_键盘输入及显示的电路设计
二、设计功能要求
1、根据按键显示对应的数字 2、采用移位显示。最新的数字从右边进入,而最左的一个数 字当有新数字输入时,计方框图
五、实验硬件验证
宗体仿真通过后,根据实际需要在演示板上进行部分联线, 将程序通过数据电缆由电脑下载到芯片,在演示板上进行 设计功能硬件验证。
六、实验报告要求
1、键盘设计功能和工作原理说明。 2、画出设计框图和原理图。 3、画出设计输入(原理图、VHDL、状态图)。 4、记录仿真波形图 。
实验十七 键盘输入及显示的电路设计
一、键盘工作原理说明
1、键盘是4行Y[3:0]×3列X[2:0]的矩阵式规格的键盘 2、由行线和列线上的电平信号来检知哪个键被按下 3、行扫描循环输出0001,0010,0100,1000 (DE1、 DE2、DE3通过74138实现) 4、键盘的列线和高电平Vcc连在一起,一旦没有键被按下时 列线全部为高电平(X0X1X2=“111”)。当对应的列中有 键盘按下则列为低电平。 5、键盘解码电路:根据输入的行信号和列信号就可确定所 按的是哪一个键。根据事先设定的解码方案,解码电路可 以把行码和列码译成键码输出,同时使能信号端输出一个 正脉冲。这个脉冲的作用是通知下一个模块(在七段显示 电路中的移位锁存器)把输出的有效键码锁存起来。
从键盘输入数据并显示实验报告
从键盘输入数据并显示实验报告一、实验目的与内容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 PROCLEA DX, striMOV AH, 09H ; 调显示功能INT 21HLEA DX , maxMOV AH , 0AHINT 21H ; 调 0A输入功能RETINPUT ENDP2. 转换。
c语言程序设计_实验一实验报告
实验项目名称:实验一C 语言的运行环境的使用实验目的及要求:1. 了解 Windows 系统下 C 语言的运行环境,熟悉 C 程序编辑、调试、运行的基本操作方法。
2. 熟练掌握编辑、编译、连接和运行 C 程序的方法。
3. 通过运行简单的 C 程序,初步了解 C 源程序的特点。
4. 初步理解 C 语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运行结果的基本输出方法。
实验内容(方法和步骤):1、编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for程序代码:#include <stdio.h>int main(){printf("Hello,World!\n");printf("Welcome to the C language world!\n");printf(Everyone has been waiting for.\n");return 0;}运行结果:2、编写程序,将两个整数相加,并输出结果。
程序代码:#include <stdio.h>int main(){int a,b,c;a=12;b=26;c=a+b;printf("c=%d\n",c);return 0";}运行结果:3. 编写程序,要求从键盘输入2 个整数,输出其中较大的数程序代码:#include <stdio.h>int main(){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c=max(a,b);pintf("max=%d",c);return 0;}int max(int x,int y){ int z;if (x>y) z=x;else z=y;return(z);}运行结果:4.输入并运行下程序,观察运行结果。
课程设计——键盘输入及数据显示程序设计
示程序设计中北大学汇编语言程序设计课程设计说明书学生姓名:学号:学院:信息与通信工程学院专业:自动化题目:键盘输入及数据显示程序设计指导教师:沈小林职称:副教授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码来寻址识别。
依次显示键盘输入的所有可显示字符,当用户按回车键时,输入结束。
然后通过显示器显示输入的字符。
微机原理实验一 编程实现键盘输入和显示
实验一编程实现键盘输入和显示**************************************************************************************一、题目内容**************************************************************************************❖循环提示由键盘输入一个字符,若为自己姓的首字母(大小写均可),则显示‘My name is:XXX(自己的姓名拼音);若为自己学号的末位数字,则显示’ My ID number is:XXX(自己的学号);若输入其他字符则退出程序。
(三种情况都要验证至少一次截图附在实验报告中。
)❖以电科2班张弛同学1207071201242为例,运行程序后显示:▪Please input a character: z▪My name is: Zhang Chi▪Please input a character: 2▪My ID number is: 1207071201242▪Please input a character:a▪Quit the program.**************************************************************************************二、流程图****************************************************************************************************************************************************************************三、程序代码************************************************************************************** stack segment stack 'stack'dw 32 dup(0) ;定义32字空间stack endsdata segmentOBUF DB 'Please input a key',0DH,0AH,'$' ;定义字符串MSG1 DB 20H,'My name is:Zeng HongQing',0DH,0AH,0AH,'$' ;定义字符串MSG2 DB 20H,'My ID number is:2',0DH,0AH,0AH,'$' ;定义字符串data endscode s egmentbegin proc farassume ss:stack, cs:code, ds:datapush dssub ax,axpush axmov ax,datamov ds,axAGAIN: MOV DX,OFFSET OBUF;调用9号功能,输出字符串“Please input a character:”MOV AH,9INT 21HMOV AH,1;1号功能调用,等待输入一个字符INT 21HCMP AL,'z';将输入的字符与“z”比较是否一样JZ NAM ;如果为零即输入字符为z则跳转至NAMJMP ID ;如果不为零即输入字符非z则跳转至IDNAM: MOV DX,OFFSET MSG1;9号功能调用,输出“My name is:Zeng HongQing”MOV AH,9INT 21HJMP AGAINID: CMP AL,32H ;将输入的字符与2的ASSCII码比较是否相等JNZ OTHER ;如果不为零即输入不为2则跳转至OTHERMOV DX,OFFSET MSG2 ;为零即输入为2则调用9号功能输出“My ID number is:2”MOV AH,9INT 21HJMP AGAINOTHER: M OV AH,4CH;若输入的是其他字符,调用中断21h的4ch号功能,退出程序INT 21Hretbegin endpcode e ndsend begin**************************************************************************************四、操作截图****************************************************************************************************************************************************************************五、实验分析或经验总结************************************************************************************** 1、编译汇编文件:先在记事本里输入代码后,再用汇编编译器编译。
键盘显示实验报告
键盘显示实验报告键盘显示实验报告一、引言键盘是我们日常生活中常用的输入设备之一,它通过按下不同的按键来输入字符和命令。
在计算机科学领域,键盘显示是一项重要的实验,它涉及到了计算机硬件和软件的相互配合。
本文将介绍一个键盘显示实验的设计和结果分析。
二、实验设计1. 实验目的本实验的目的是通过键盘输入字符,并在计算机屏幕上进行显示。
通过这个实验,我们可以深入了解键盘的工作原理和计算机输入输出的基本知识。
2. 实验材料本实验所需的材料包括:计算机、键盘、显示器和相应的连接线。
3. 实验步骤(1) 将键盘与计算机通过连接线连接好。
(2) 打开计算机,并启动相应的键盘显示程序。
(3) 在键盘上按下不同的按键,观察计算机屏幕上的显示效果。
(4) 分析和记录实验结果。
三、实验结果在本次实验中,我们按下了键盘上的不同按键,并观察了计算机屏幕上的显示效果。
实验结果表明,键盘输入的字符能够准确地显示在屏幕上,并且显示的速度非常快。
四、结果分析1. 键盘工作原理键盘是一种输入设备,它通过按下不同的按键来输入字符和命令。
当我们按下键盘上的某个按键时,键盘会发送一个信号给计算机,计算机通过解读这个信号来确定我们按下的是哪个按键,并将相应的字符显示在屏幕上。
2. 计算机输入输出键盘显示实验涉及到了计算机的输入输出过程。
输入是指将外部信息传递给计算机的过程,而输出是指将计算机处理后的信息传递给外部的过程。
在本实验中,键盘是输入设备,它将我们按下的按键信息传递给计算机;而显示器是输出设备,它将计算机处理后的字符信息显示在屏幕上。
3. 键盘显示的应用键盘显示技术在计算机领域有着广泛的应用。
无论是在日常办公还是在专业领域,键盘输入都是必不可少的。
通过键盘,我们可以输入文字、命令、密码等信息,实现与计算机的交互。
键盘显示技术的发展也为计算机的普及和应用提供了方便。
五、实验总结通过本次键盘显示实验,我们深入了解了键盘的工作原理和计算机输入输出的基本知识。
微机原理实验1 编程实现键盘输入和显示
微机原理实验实验名称:编程实现键盘输入和显示将自己的姓名拼音和9位学号定义在数据段循环提示由键盘输入一个数字,若为奇数,则显示自己的姓名拼音;若为偶数和0,则显示自己的学号;若输入其他字符则退出程序返回DOS 。
(三种情况都要有实验结果。
)▪ Please input a number:7▪ My name is:卢丽霞▪ Please input a number:8▪ My ID number is: 110703220.▪ Please input a number:q▪ Quit the program.YNYNNY代码:stack segment stack 'stack'dw 32 dup(0) 开始 输入mingzi 和num 调用1号系统功能,将输入的符号的ASCII 码值放入AL 中AL<’0’ AL>’9’a 是奇数 输出学号输出姓名 输出”Quit the program ” 结束stack endsdata segmentbuf1 db 'Please input a number:$'buf2 db 'My name is:$'buf3 db 'Please input a number:$'buf4 db 'My ID number is: $'buf5 db 'please input a number:$'buf6 db 'Quit the program$'mingzi db 'My name is:lulixia$'num db 'My ID number is:110703220$' data endscode segmentbegin proc farassume ss: stack, cs: code, ds: data push dssub ax, axpush axmov ax, datamov ds, axmov ax,datamov ds,axmov dx,offset buf1mov ah,9int 21hmov ah,01int 21hcmp al,'0'jb stopcmp al,'9'ja stopxor ah,ahmov bl,2div blcmp ah,0jz idmov ah,9mov dx,offset mingzi int 21hjmp beginid:mov ah,9mov dx,offset numint 21hjmp beginstop:mov ah,9mov dx,offset buf6int 21hmov ah,4chint 21hretbegin endpcode endsend begin程序结果:实验分析:本实验预先设置好的结果按需要显示,并运用科各种系统功能的调用,还用了比较cmp判断,还通过判断除法余数是否为零判断被除数的奇偶。
《C语言程序设计》 第4章 键盘输入与屏幕输出
可变长度输入 地址参数表
问题1:若未使用&,会怎样?
问题2:若格式字符写错,会怎样?
C语言程序设计
1346
第4章 键盘输入和屏幕输出
输入数据的格式控制——例
#include <stdio.h> int main(void) {
int a, b;
scanf("%d %d", &a, &bb); printf("a = %d, b = %d\n", a, b); return 0; } 问题:若程序第5行语句未使用&,结果会怎样?
return 0;
} 问题:如果用户输入的是123a,那么结果又会如何呢?
123a↙ a = 123, b = -858993460
C语言程序设计
2046
第4章 键盘输入和屏幕输出
输入数据的格式控制——例
#include <stdio.h> int main(void) {
int a, b;
格式字符串中的 普通字符原样输入
Example:
printf("Value is:%-10f", 32.6784728);
6 digits (default)
10 characters左对齐
C语言程序设计
946
第4章 键盘输入和屏幕输出
printf()的格式修饰符
显示精度.n 对浮点数表示输出n位小数 格式: %.nf
Example:
C语言程序设计
格式符%f与%lf
第4章 键盘输入和屏幕输出
调用scanf()输入数据时,通过地址指向变量
%f告诉编译器scanf()在该地址存储一个float型数 %lf告诉编译器scanf()在该地址存储一个double
C语言 实验
2.2.1 实验1:熟悉上机环境和顺序结构编程练习1. 键盘输入与屏幕输出练习问题1 要使下面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的。
#include <stdio.h>main(){char a,b;int c;scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);}A)1 2 34 B)1, 2, 34C)’1’,’2’,34D)12 34问题2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?问题3 要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?问题4 要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'1', '2',34,则应修改程序中的哪条语句?怎样修改?[提示:利用转义字符输出字符单引号字符。
]问题5 要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为'1', '2',34,则程序应修改程序中的哪条语句?怎样修改?第1种输入方式:1,2,34↙(以逗号作为分隔符)第2种输入方式:1 2 34↙(以空格作为分隔符)第3种输入方式:1 2 34↙(以Tab键作为分隔符)第4种输入方式:1↙2↙34↙(以回车符作为分隔符)2. 计算定期存款本利之和设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。
要求定期存款的年利率rate、存款期n和存款本金capital 均由键盘输入。
C语言程序设计-键盘输入和屏幕输出1
按指定类型和格式输出数据:printf() 按指定类型和格式输入数据:scanf() 输出单个字符:putchar() 输入单个字符:getchar() 格式化输入输出函数使用更灵活 几点忠告
– 不要拘泥于细节,不死记硬背 – 在使用中慢慢掌握
C语言程序设计
第4章 键盘输入和屏幕输出
SuXiaoHong
printf("Please input a float number:");
scanf("%f", &c);
printf("float:%f\n", c);
}
C语言程序设计
第4章 键盘输入和屏幕输出
C格式符的问题及解决—例4.6
#include <stdio.h> main() {
int a;
程序修改后得到的运行结果
char b; float c;
float number:3.500000
printf("Please input an integer:");
scanf("%d", &a);
printf("integer:%d\n", a);
printf("Please input a character:");
printf("Please enter the expression data1 + data2\n");
scanf("%d%c%d",&data1, &op, &data2); printf("%d%c%d = %d\n",
data1, op, data2, data1+data2); }
实验一键盘显示实验
实验一键盘显示实验一、实验目的(1)掌握MCS51 系统中键盘显示接口的方法;(2)掌握中断处理程序的编程方法。
二、硬件原理图2.1 数码管显示原理介绍实验箱上有6个共阴极数码管,图1是其外部特性图,图2是其内部原理图,由图2 可知,每个数码管由8个发光二极管组成,其中a~DP称为数码管的段控信号,K是8个发光二极管的公共端,称为位控信号。
所以为了让数码管显示一个数字,必须将位控信号接低电平,段控信号接高电平。
例如:如要显示数字“1”,b端和c 端应该接高电平,其余各端接低电平。
2.2 键盘扫描原理介绍键盘扫描原理如图3 所示,“K1”和“K2”是按键,按键的两端都接有10k的上拉电阻。
当行扫描端为低电平,同时“K1” 键被按下时,“K1”的列读取端就会出现低电平,由处理器对行扫描信号和列读取信号进行综合判断后,得出“K1”键被按下的结论。
2.3实验连线图实验接线如下图所示:单片机通过8279芯片控制数码管,同时以P1口扫描4*4键盘键值。
三、软件流程图3.1数码管显示实验流程图Y3.2扫描键盘显示实验流程图四、实验步骤⑴参照实验指导书连接杜邦线⑵编写程序,并用KeilC软件调试程序⑶程序编译无错后使用S51ISP 下载软件将程序下载到单片机中⑷观察实验现象,如果实验现象与预期不符则可以使用KeilC的软件仿真调试功能,通过软件仿真使程序单步运行,从中找到编程错误⑸向实验指导老师讲解程序原理,整理仪器离开实验室五、软件源码5.1数码管显示5.1.1C语言#include <reg52.h> //89C52 寄存器定义头文件#define DataPort P0sbit LATCH1=P2^2;//定义锁存使能端口段锁存sbit LATCH2=P2^3;// 位锁存unsigned chartable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79, 0x71}; //段码表,从0到9,从A到Funsigned char code ID1[]={1,1,0,3,1,0,5,2};unsigned char code ID2[]={1,1,0,8,1,1,6,2};//学号unsigned char code location[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码void Delay(unsigned int t); //延时函数声明/*------------------------------------------------主函数------------------------------------------------*/main(){unsigned char i=0;int a=0;while(1){for(a=0;a<1000;a++){P0=location[i]; //取位码LATCH2=1; //位锁存LATCH2=0;P0=table[ID1[i]]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0;Delay(200); //扫描间隙延时,时间太长会闪烁,太短会造成重影i++;if(8==i) //检测8位扫描完全结束?如扫描完成则从第一个开始再次扫描8位i=0;} //ID1显示结束for(a=0;a<1000;a++){P0=location[i]; //取位码LATCH2=1; //位锁存LATCH2=0;P0=table[ID2[i]]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0;Delay(200);//扫描间隙延时,时间太长会闪烁,太短会造成重影i++;if(8==i) //检测8位扫描完全结束?如扫描完成则从第一个开始再次扫描8位i=0;}}} //ID2显示结束/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量-----------------------------------------------------------------------------,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}5.1.2汇编;态扫描数码显示程序;P0口接J3,数据端口;P2.2接J2 B端子,表示段码锁存;P2.3接J2 A端子,标志位码锁存ORG 00HMOV 20H,#06H ;1MOV 21H,#06H ;1MOV 22H,#3FH ;0MOV 23H,#4FH ;3MOV 24H,#06H ;1MOV 25H,#3FH ;0MOV 26H,# 6D H ;5MOV 27H,# 5B H ;2 学号LATCH1 BIT P2.2LATCH2 BIT P2.3 ;定义段锁存与位锁存START:CALL SCANJMP STARTSCAN:MOV A,#0FEH ;扫描子程序MOV R0,#20HSETB CMOV R2,#08HLOOP:MOV P0,ASETB LATCH2CLR LATCH2MOV P0,@R0SETB LATCH1CLR LATCH1INC R0CALL DELAYRLC ADJNZ R2,LOOPMOV R2,#08HRETDELAY:MOV R3,#1 ;扫描延时D1:MOV R4,#2D2:MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND5.2扫描键盘显示#include<reg52.h> //包含头文件#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换#define KeyPort P1 //定义按键端口程序中遇到KeyPort 则用P1 替换sbit LATCH1=P2^2;//定义锁存使能端口段锁存sbit LATCH2=P2^3;// 位锁存unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~9 A~Funsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量void DelayUs2x(unsigned char t);//us级延时函数声明void DelayMs(unsigned char t); //ms级延时void Display(unsigned char FirstBit,unsigned char Num);//数码管显示函数unsigned char KeyScan(void);//键盘扫描unsigned char KeyPro(void);// 按键值处理函数,返回扫键值void Init_Timer0(void);//定时器初始化/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char num,i,j;unsigned char temp[8];Init_Timer0();while (1) //主循环{num=KeyPro();if(num!=0xff){if(i<8){temp[i]=dofly_DuanMa[num];if(num==14){temp[i]=dofly_DuanMa[num];i++;temp[i]=dofly_DuanMa[6];}for(j=0;j<=i;j++)TempData[7-i+j]=temp[j];}i++;if(i==9)//多出一个按键输入为了清屏原本应该为8{i=0;}}if(num==16){i=0;for(j=0;j<8;j++)//清屏TempData[j]=dofly_DuanMa[0];}Display(0,8); //显示全部8位//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------uS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5 uS------------------------------------------------*/void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------显示函数,用于动态扫描数码管输入参数FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示。
微机原理与接口实验
微机原理与接口实验实验目的:通过实验,掌握微机系统原理和接口的基本知识,能够正确使用各种接口设备进行输入输出操作。
实验器材:8086微机系统、键盘、数码管、LED灯、示波器等。
实验一:键盘输入实验实验内容:1.连接键盘到8086微机系统。
2.编写汇编程序,实现用户输入字符,并在数码管上显示用户输入的字符。
3.将程序加载到存储器中,并运行程序,进行输入测试。
实验步骤:1.将键盘接口与8086微机系统相连接。
键盘的数据引脚接到8086微机系统的8位数据总线,键盘的控制引脚接到8086微机系统的地址总线和控制总线上。
2.编写汇编程序,初始化键盘接口并循环接收键盘输入的字符。
将键盘输入的字符加载到寄存器中,并将其数字值转换为对应的ASCII码值,再将其显示在数码管上。
3.将汇编程序加载到存储器中,并运行程序进行测试。
实验结果:通过实验,可以实现键盘输入功能,并能够在数码管上显示用户输入的字符。
实验二:LED灯输出实验实验内容:1.连接LED灯到8086微机系统。
2.编写汇编程序,实现控制LED灯的亮灭。
3.将程序加载到存储器中,并运行程序,观察LED灯的亮灭情况。
实验步骤:1.将LED灯接口与8086微机系统相连接。
LED灯的引脚接到8086微机系统的8位数据总线上。
2.编写汇编程序,初始化LED灯接口并循环控制LED灯的亮灭状态。
3.将汇编程序加载到存储器中,并运行程序观察LED灯的亮灭情况。
实验结果:通过实验,可以实现LED灯的亮灭控制,根据程序中的指令可以控制LED灯的闪烁频率和顺序。
实验三:外设输入输出实验实验内容:1.连接外设设备(如温湿度传感器等)到8086微机系统。
2.编写汇编程序,读取外设设备的输入信息,并控制外设设备的输出。
3.将程序加载到存储器中,并运行程序,观察外设设备的输入输出情况。
实验步骤:1.将外设设备接口与8086微机系统相连接。
外设设备的输入引脚接到8086微机系统的数据总线上,外设设备的输出引脚接到8086微机系统的控制总线上。
键盘显示控制器实验课程设计
键盘显示控制器实验课程设计一、引言键盘显示控制器是一种常见的控制器设备,用于输入和输出设备之间的信息传输。
本文旨在设计一个键盘显示控制器的实验课程,让学生通过实际操作了解键盘显示控制器的原理和应用,并培养其实验实践能力。
二、实验课程设计1. 实验目的本实验旨在使学生掌握以下知识和技能:•了解键盘显示控制器的基本原理;•掌握键盘输入和显示输出的相关接口和信号;•能够使用键盘显示控制器进行输入和输出操作;•培养学生的动手能力和实验思维能力。
2. 实验器材和软件•实验器材:键盘、显示屏、微控制器开发板、连接线等;•实验软件:Keil C 编译器、仿真调试工具等。
3. 实验内容3.1 实验准备1.搭建实验平台:将键盘、显示屏和微控制器开发板连接起来;2.配置开发环境:安装 Keil C 编译器并配置正确的编译器和目标设备。
3.2 实验步骤3.2.1 键盘输入1.编写键盘初始化函数:配置键盘接口和相关的中断设置;2.实现键盘扫描函数:通过轮询或中断方式扫描键盘的输入;3.设计键盘输入处理函数:根据键盘输入的信息进行相应的处理。
3.2.2 显示输出1.编写显示屏初始化函数:配置显示屏接口和相关的参数;2.实现显示输出函数:将需要显示的信息发送到显示屏上。
3.2.3 整合测试1.编写主函数:初始化键盘和显示屏,并进入主循环;2.在主循环中实现键盘输入和显示输出的交互操作;3.进行实验现场测试和调试,确保键盘输入和显示输出正常工作。
4. 预期结果通过本实验的设计和实施,预期达到以下结果:•学生能够正确搭建实验平台,并能进行相关的配置和调试;•学生能够编写键盘输入和显示输出的相关函数;•学生能够编写主函数,实现键盘输入和显示输出的交互操作;•学生能够进行实验现场测试和调试,确保键盘输入和显示输出正常工作。
三、实验总结通过本次实验课程的设计和实施,学生们对键盘显示控制器的原理和应用有了更深入的了解,并通过实际操作培养了自己的实验实践能力。
按键输入和LED数码管扫描显示实验
按键输入和LED数码管扫描显示实验设计内容:给8个按键键盘的每个键定义一个功能,从左到右按键一次按下时,分别显示数字1-8,当有两个及以上的按键按下时,显示数字9。
LCD初始显示个人学号,当有按键按下时,最后一位显示对应的数字。
实验程序:#include <reg51.h>sbit key=P0^6; //键盘公共线,见原理图sbit ls1=P0^2; //千位公共极sbit ls2=P0^3; //百位公共极sbit ls3=P0^4; //十位公共极sbit ls4=P0^5; //个位公共极unsigned char keyval; //读取的键值#define Dat P1 //数据输出端char a;char b[4]={0,3,3,0}; //初始值为学号后四位unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//延时----------------------------Delay(unsigned int t){ while(t--); }//显示----------------------------void Display(unsigned char mun){ unsigned char j;for(j=0;j<50;j++){ Dat=a;Dat=tab[b[0]]; //把得到7段显示码数据送P1端口ls1=0; //点亮千位Delay(100); //显示一会ls1=1; //关闭,显示下一位Dat=tab[b[1]];ls2=0; //点亮百位Delay(100);ls2=1;Dat=tab[b[2]];ls3=0; //点亮十位Delay(100);ls3=1; //个位Dat=tab[b[3]];ls4=0;Delay(100);ls4=1;}}Dat=0xff; //P1恢复为0xff}//--键盘扫描程序-------------------------------------- Scankey(){ unsigned char i;key=0; //拉低键盘公共线if(Dat!=0xff) //有键按下{ Delay(1000); //消抖动if(Dat!=0xff) //有键按下{ i=~Dat;a=Dat; //读取键盘状态,switch(i){ case 0x01: keyval=0x01;break; //K1case 0x02: keyval=0x02;break; //K2case 0x04: keyval=0x03;break; //K3case 0x08: keyval=0x04;break; //K4case 0x10: keyval=0x05;break; //K5case 0x20: keyval=0x06;break; //K6case 0x40: keyval=0x07;break; //K7case 0x80: keyval=0x08;break; //K8default: keyval=0x09;break; } //其它双键按下不处理,均为9 b[3]=b[2];b[2]=b[1];b[1]=b[0];b[0]=keyval;while(Dat!=0xff){key=1; //暂时关闭键盘,不干扰显示Display(keyval); //等待按键抬起key=0; //开启键盘检测}}}key=1; //释放键盘公共线}//--主程序--------------------------------------------------------- main(){while(1){ Display(keyval); //显示Scankey(); //键盘扫描}}。
C语言程序设计文本的屏幕输出和键盘输入
C语言程序设计文本的屏幕输出和键盘输入C语言是一种常用的编程语言,用于开发各种软件应用程序。
其中,文本的屏幕输出和键盘输入是C语言程序设计的基础部分。
本文将详细介绍如何在C语言中进行文本的屏幕输出和键盘输入。
在C语言中,要进行文本的屏幕输出,可以使用printf函数,该函数用于向标准输出设备(通常是显示器)输出文本。
具体的语法格式如下:```cprintf("格式控制字符串", 参数列表);```其中,格式控制字符串用于指定输出的格式,而参数列表用于指定要输出的内容。
下面是一些常用的格式占位符和对应的数据类型:-%d:用于输出整数。
-%f:用于输出浮点数。
-%c:用于输出字符。
-%s:用于输出字符串。
例如,下面的代码演示了如何使用printf函数输出一些文本:```c#include <stdio.h>int maiprintf("Hello, World!\n");printf("My age is %d\n", 20);printf("My height is %f\n", 1.75);printf("My name is %s\n", "John");return 0;```在上面的代码中,第一个printf语句输出了一个字符串"Hello, World!",第二个printf语句输出了一个整数20,第三个printf语句输出了一个浮点数1.75,第四个printf语句输出了一个字符串"John"。
另外,C语言中还提供了更多的格式控制选项,用于指定输出的宽度、精度、对齐方式等。
具体的使用方法可以参考相关的C语言教程。
除了文本的屏幕输出,C语言还可以进行键盘输入。
要进行键盘输入,可以使用scanf函数,该函数用于从标准输入设备(通常是键盘)读取数据。
C语言程序设计 键盘输入和屏幕输出(4.2.6)--实验1顺序结构程序设计
实验项目表
实验1 顺序结构程序设计
【实验任务】熟悉C开发环境,并进行仿写和改写程序练习
1.参考例
2.1b和例2.2程序,在每一行输出变量的值以后,再输出该变量所占内存的
字节数,在不同的集成开发环境下运行程序,观察程序的运行结果。
2.参考例
3.4和例3.5程序,分别使用宏定义和const常量定义 的值,编程计算并
输出球的体积和表面积,球的半径r的值由用户从键盘输入。
3.参考例
4.2程序,编程从键盘输入一个小写英文字母,将其转换为大写英文字母后
将转换后的大写英文字母及其十进制的ASCII码值显示到屏幕上。
【实验目的】
熟悉Visual C++6.0和Code::Blocks集成开发环境,不同类型的变量的定义和赋值。
熟悉简单的算术运算、宏定义和const常量的使用,以及字符与字符的ASCII码值的输入输出方法。
C语言程序设计 文本的屏幕输出和键盘输入
/*-------例程 3-1-------*/
#include <stdio.h>
#include <conio.h>
int main()
{
int i; textbackground(0); clrscr();
我们以前介绍过的 printf(),putc(),puts(),putchar()和输出函数以整个屏幕为窗 口的,它们不受由 window 设置的窗口限制,也无法用函数控制它们输出的位置,但 Turbo C 提供了三个文本输出函数,它们受窗口的控制,窗口内显示光标的位置,就 是它开始输出的位置。当输出行右边超过窗口右边界时,自动移到窗口内的下一行开 始输出,当输出到窗口底部边界时,窗口内的内容将自动产生上卷,直到完全输出完 为止,这三个函数均受当前光标的控制,每输出一个字符光标后移一个字符位置。这 三个输出函数原型为:
符号常数 BLACK BLUE GREEN CYAN RED MAGENTA BROWN
表 3-2 颜色表
数
含
值
义
0
黑
1
蓝
2
绿
3
青
4
红
5
洋
红
6
棕
背景或背景
前景、背景 色
前景、背景 色
前景、背景 色
前景、背景 色
前景、背景 色
前景、背景 色
前景、背景
色
LIGHTGRAY
7
淡
前景、背景
灰
色
DARKGRAY
键盘输入显示数电课程实验报告
键盘输入显示数电课程实验报告西北工业大学课程设计报告题目键盘输入显示学院班级学生(学号)学生(学号)学生(学号)日期2013年1月11日摘要:键盘是最常用人机接口设备之一,在嵌入式系统中有着相当广泛的应用。
一般自行设计的简易矩阵键盘仅仅是按行、列排列起来的矩阵开关。
当需要较多的按键时,则会占用较多的I/O 端口,在软件上则要进行上电复位按键扫描及通信处理,而且还要加上按键的去抖动处理,增大了软硬件开销。
而PS/2 键盘,内嵌自动去除按键抖动设计,自动地识别键的按下与释放,软硬件开发简便,价格便宜,稳定可靠,将PS/2 键盘作为嵌入式系统的输入设备已经成为可行的方案。
本设计是以现场可编程逻辑器件(FPGA)为核心的PS/2接口键盘的输入识别电路。
利用QuartusⅡ软件编写verilog HDL硬件描述语言程序以实现键盘部分简单键值的识别与输出。
本设计主要以程序为核心,硬件电路的搭建使用FPGA实验箱,将程序顶层文件里定义的输入输出端口与实验箱管脚进行相应的配置,除实验箱上的reset键以外,外设是一个与实验箱通过PS/2接口相连的键盘和VGA接口相连的显示屏。
当系统上电后,按下键盘上的按键,实验箱上的数码管可以依次显示从键盘上输入的键值,同时VGA显示屏显示键值。
关键字:Ps/2接口键盘、FPGA 、QuartusⅡ、Verilog HDL、 VGA接口目录一、课程设计目的 (4)二、设计任务与要求 (4)三、方案设计与论证 (4)四、单元电路设计与参数计算 (5)五、程序设计 (7)六、程序调试 (7)七、遇到的问题及解决方法 (8)八、结论与心得 (8)九、参考文献 (9)键盘输入显示一、课程设计目的(1)巩固和加深所学电子技术课程的基本知识,提高综合运用所学知识的能力;(2)培养学生根据课题需要选用参考书、查阅手册、图表和文献资料的能力,提高学生独立解决工程实际问题的能力.(3)通过设计方案的分析比较、设计计算、元件选绎及电路安装调试等环节.初步掌握简单实用电路的工程设计方法.(4)提高学生的动手能力.掌握常用仪器设备的正确使用方法,学会对简单实用电路的实验调试和对整机指标的测试方法,(5)了解与课题有关的电路以及元器件的工程技术规范,能按课程设计任务书的要求编写设计说明书,能正确反映设计和实验成果,能正确绘制电路固等.二、设计任务与要求1.任务:设计一个键盘输入显示控制电路2.要求和指标:(1)由键盘输入0~F,总计16个字符,由开发板上的数码管显示;(2)该字符同时能在VGA上显示输出;3. 扩展要求:(A)能在VGA显示屏上切换字符显示的大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一编程实现键盘输入和显示
将自己的姓名拼音和9位学号定义在数据段
循环提示由键盘输入一个数字,若为奇数,则显示自己的姓名拼音;若为偶数和0,则显示自己的学号;若输入其他字符则退出程序返回DOS。
(三种情况都要有实验结果。
)
以电信2班王崇欣同学110703226为例,显示:
▪Please input a number:7
▪My name is: Wang Chongxin.
▪Please input a number:2
▪My ID number is: 110703226.
▪Please input a number:a
▪Quit the program.
实验报告要求:前三个每人1份,后三个每组1份;电子文档、打印手写均可,结果最好是截图。
▪实验名称、所做题目、班级姓名学号
▪流程图、程序并有必要的注释
▪结果截图(推荐),手写在分数上要打折扣。
▪实验分析或经验总结。
实验Word文档前三个用自己学号命名,后三个组号命名。
下个周三晚上由学习委员收集齐,打包注明实验X发到老师邮箱pwj@。