键盘录入数据的转换与显示程序课程设计报告
小键盘字符录入实训报告(3篇)

第1篇一、实训背景随着信息化时代的到来,计算机操作技能已成为现代社会必备的基本技能之一。
小键盘字符录入作为计算机操作技能的重要组成部分,对于提高工作效率、减少劳动强度具有重要意义。
为了提升学生的计算机操作水平,我校特开设小键盘字符录入实训课程。
本次实训旨在通过系统的训练,使学生掌握小键盘字符录入的基本技巧,提高录入速度和准确性。
二、实训目的1. 使学生熟悉小键盘的布局和键位分布。
2. 培养学生正确的坐姿和手指摆放,减少长时间录入带来的疲劳。
3. 提高学生的小键盘字符录入速度和准确性。
4. 培养学生良好的打字习惯,为今后的学习和工作打下坚实基础。
三、实训内容1. 小键盘基础理论:介绍小键盘的布局、键位分布、手指分工等基本知识。
2. 指法练习:通过指法练习,使学生掌握正确的手指摆放和移动。
3. 打字速度训练:通过逐级提高速度的要求,锻炼学生的打字速度。
4. 打字准确性训练:通过打字准确性训练,提高学生的打字准确性。
5. 实际应用:结合实际工作场景,进行文档录入、表格制作等实际操作。
四、实训过程1. 理论讲解:首先,由教师对小键盘的布局、键位分布、手指分工等基本知识进行讲解,使学生了解小键盘的基本操作原理。
2. 指法练习:在教师的指导下,学生进行指法练习,包括手指的摆放、移动等。
通过反复练习,使学生熟悉手指在键盘上的位置,为后续的打字速度和准确性训练打下基础。
3. 打字速度训练:在指法练习的基础上,学生开始进行打字速度训练。
教师设定不同的速度要求,学生通过逐级提高速度,锻炼自己的打字速度。
4. 打字准确性训练:在速度训练的同时,教师注重培养学生的打字准确性。
通过设置错别字、语法错误等练习,使学生提高对文字的敏感度。
5. 实际应用:在完成基础训练后,学生进行实际应用练习。
教师提供文档录入、表格制作等实际工作场景,让学生在实际操作中巩固所学知识。
五、实训成果通过本次实训,学生在小键盘字符录入方面取得了显著成果:1. 熟悉了小键盘的布局和键位分布,掌握了正确的手指摆放和移动。
实验十七 键盘输入及显示的电路设计

一、键盘工作原理说明
1、键盘是4行Y[3:0]×3列X[2:0]的矩阵式规格的键盘 、键盘是4 Y[3:0]× X[2:0]的矩阵式规格的键盘 2、由行线和列线上的电平信号来检知哪个键被按下 3、行扫描循环输出0001,0010,0100,1000 (DE1、 、行扫描循环输出0001,0010,0100, DE1、 DE2、DE3通过74138实现) DE2、DE3通过74138实现) 4、键盘的列线和高电平Vcc连在一起,一旦没有键被按下时 、键盘的列线和高电平Vcc连在一起,一旦没有键被按下时 列线全部为高电平(X0X1X2=“111”)。当对应的列中有 列线全部为高电平(X0X1X2=“111”)。当对应的列中有 键盘按下则列为低电平。 5、键盘解码电路:根据输入的行信号和列信号就可确定所 按的是哪一个键。根据事先设定的解码方案,解码电路可 以把行码和列码译成键码输出,同时使能信号端输出一个 正脉冲。这个脉冲的作用是通知下一个模块(在七段显示 电路中的移位锁存器)把输出的有效键码锁存起来。
二、设计功能要求
1、根据按键显示对应的数字 2、采用移位显示。最新的数字从右边进入,而最左的一个数 字当有新数字输入时,将消失。
三、键盘工作原理图
四、设计方框图
五、实验硬件验证
宗体仿真通过后,根据实际需要在演示板上进行部分联线, 将程序通过数据电缆由电脑下载到芯片,在演示板上进行 设计功能硬件验证。
六Hale Waihona Puke 实验报告要求1、键盘设计功能和工作原理说明。 2、画出设计框图和原理图。 3、画出设计输入(原理图、VHDL、状态图)。 、画出设计输入(原理图、VHDL、状态图)。 4、记录仿真波形图 。
单片机键盘显示实验报告

单片机的键盘和显示实验报告㈠实验目的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.当键盘采用中断方式时,硬件电路应怎样连接?P1.4~P1.7是键输出线,P1.0~P1.3是扫描输入线。
输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。
2.74LS164移位寄存器的移位速率是多少?实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。
其实这个问题确实不知道怎么回答。
LED 显示用的段码与教科书所提供的不同,本实验采用如下段码:显示数符段码显示数符段码0BBH A DBH109H B F1H2EAH C B2H36BH D E9H459H E F2H573H F D2H否有否P1口置输入读P1口开 始显示“0000”是否有键按下?延迟消抖是否有键按下?是读键码加法运算减法运算除运算6F3H—40H70BH.04H8FBH┗┛A1H97BH┗┛1AH灭00H P DAH实验代码: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 ACC.0,ADD1 ;K1按下转去ADD1JB ACC.1,SUB1 ;K1按下转去SUB1JB ACC.2,MUL1 ;K1按下转去MUL1JB ACC.3,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从上面的结果可以看出,本次实验基本完成了实验要求。
键盘译码电路实验报告(3篇)

第1篇一、实验目的1. 理解键盘译码电路的工作原理。
2. 掌握键盘译码电路的设计方法。
3. 学会使用键盘译码电路实现键盘数据的读取。
二、实验原理键盘译码电路是将键盘上的按键信息转换为计算机可识别的二进制编码的电路。
本实验所采用的键盘译码电路是基于扫描矩阵原理设计的,它由键盘矩阵、扫描线、译码器、驱动器等部分组成。
1. 键盘矩阵:键盘矩阵是由行线和列线交叉组成的阵列,每行和每列分别对应一个按键。
当键盘上有按键按下时,行线和列线就会形成一个闭合回路,从而实现按键的识别。
2. 扫描线:扫描线用于对键盘矩阵进行扫描,通常采用逐行扫描的方式。
在扫描过程中,只有一行的行线被置为低电平,其他行线保持高电平,从而实现对列线的扫描。
3. 译码器:译码器用于将扫描到的按键信息转换为计算机可识别的二进制编码。
译码器通常采用74LS138芯片,它可以将3位二进制输入转换为8位输出,从而实现8个按键的译码。
4. 驱动器:驱动器用于将译码器输出的信号驱动到显示器或其他设备上。
驱动器通常采用74LS244芯片,它可以将译码器输出的8位信号转换为8位并行输出。
三、实验器材1. 计算机一台2. 键盘译码电路实验板一块3. 74LS138芯片一片4. 74LS244芯片一片5. 电阻、电容等电子元件6. 连接线若干四、实验步骤1. 搭建实验电路根据实验原理,搭建键盘译码电路实验板,连接键盘矩阵、扫描线、译码器、驱动器等部分。
2. 连接电路将74LS138芯片、74LS244芯片、电阻、电容等电子元件按照电路图连接到实验板上。
3. 设置扫描线将键盘矩阵的行线和列线分别连接到扫描线上,设置扫描线逐行扫描。
4. 编写程序编写程序,实现键盘数据的读取。
程序流程如下:(1)初始化键盘矩阵和扫描线,设置逐行扫描。
(2)扫描键盘矩阵,读取按键信息。
(3)将按键信息输入译码器,转换为二进制编码。
(4)将译码器输出的信号输入驱动器,驱动显示器或其他设备显示按键信息。
EDA课程设计键盘扫描及显示完整程序

EDA课程设计键盘扫描及显示完整程序第一篇:EDA课程设计键盘扫描及显示完整程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USESTD_LOGIC_ARITH.ALL;USESTD_LOGIC_UNSIGNED.ALL;ENTITYKEYBOARD IS PORT(CLK_1K : IN STD_LOGIC;CLK_40K : IN STD_LOGIC;KEY_LIE : IN STD_LOGIC_VECTOR(3 DOWNTO 0);START :OUT STD_LOGIC;KEY_HANG :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);DATA_P : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);DISP_DATA : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);DISP_SEL : OUT STD_LOGIC_VECTOR(1 downto 0);END;ARCHITECTURE RTL OF KEYBOARD IS SIGNAL INT : STD_LOGIC;SIGNAL CLK_SEL : STD_LOGIC;SIGNAL START_REG:STD_LOGIC;SIGNAL SIGNAL SIGNAL SIGNAL DISP_SEL_REG:STD_LOGIC_VECTOR(1 DOWNTO 0);DATA_L,DATA_H:STD_LOGIC_VECTOR(3 DOWNTO 0);DATA_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);KEY_HANG__TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DISP_DATA_REG:STD_LOGIC_VECROR(3 DOWNTO 0);SIGNAL KEY_CODE:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL DATA_P_REG:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN KEY_CODE<=KEY_HANG_TMP&KEY_LIE;DATA_P<=DATA_P_REG; START<=START_REG;KEY_HANG<=KEY_HANG_TMP;DISP_SEL<=DISP_SEL_REG;CLK_SEL<=CLK_1K AND(NOT INT);PROCESS(CLK_SEL,CLK_40,INT)VARIABLE STATE : INTEGER RANG 0 TO 3;BEGIN IF RISING_EDGE(CLK_40K)THEN INT<= NOT(KEY_LIE(3)AND KEY_LIE(2)AND KEY_LIE(1)AND KEY_LIE(0));END IF;IF RISING_EDGE(CLK_SEL)THEN CASE STATE IS WHEN 0=>KEY_HANG_TMP<=“1110”;STATE :=1;WHEN 1 =>KEY_HANG_TMP<=“1101”;STATE :=2;WHEN 3 =>KEY_HANG_TMP<=“1011”;STATE :=3;WHEN 4=>KEY_HANG_TMP<=“0111”;STATE :=0;END CASE;END IF;END PROCESS;PROCESS(CLK_40K , INT)VARIABLE STATE :INTEGER RANGE 0 TO 3;VARIABLE COUNTER : INTEGER RANGE 0 TO 31;BEGIN IF INT='0' THENSTATE:=0;COUNTER:=0;ELSIF RISING_EDGE(CLK_40K)THEN CASE STATE ISWHEN 0 => DATA_TMP <= DATA_L;STATE:=1;WHEN 1 =>CASE KEY_CODE ISWHEN “01110111” =>DATA_L <=“0001”;DATA_H <=DATA_TMP; STATE:=2;WHEN “01111011” => DATA_L <=“0010”; DATA_H <=DATA_TMP; STATE:=2;WHEN “01111101” => DATA_L <=“0011”; DATA_H <=DATA_TMP; STATE:=2;WHEN “01111110” => DATA_L <=“0100”; DATA_H <=DATA_TMP; STATE:=2;WHEN “10110111” => DATA_L <=“0101”; DATA_H <=DATA_TMP; STATE:=2;WHEN “10111011” => DATA_L <=“0110”; DATA_H <=DATA_TMP; STATE:=2;WHEN “10111101” => DATA_L <=“0111”; DATA_H <=DATA_TMP; STATE:=2;WHEN “10111110” => DATA_L <=“1000”; DATA_H <=DATA_TMP; STATE:=2;WHEN “11010111” => DATA_L <=“1001”;DATA_H <=DATA_TMP; STATE:=2;WHEN “11011011” => DATA_L <=“0000”;DATA_H <=DATA_TMP; STATE:=2;WHEN “11011101” =>IF DATA_H =“1001” THEN IF DATA_L=“1001” THEN DATA_H<=“1001”;DATA_L<=“1001”;ELSE DATA_L<=DATA_L + 1; END IF;ELSIF DATA_L=“1001” THEN DATA_L<=“0000”;DATA_H<=DATA_H+1; ELSEDATA_L<=DATA_L+1;DATA_H<=DATA_H;END IF;STATE:=2;WHEN “11011110” =>IF DATA_H=“1001” THEN DATA_H<=“1001”;ELSE DATA_L<=DATA_L;DATA_H<= DATA_H+1;END IF; STATE:=2;WHEN “11100111” =>IF DATA_L=“0000” AND DATA_H=“0000” THEN DATA_L<=“0000”;DATA_H<=“0000”;ELSIF DATA_L=“0000” THEN DATA_L<=“1001”;DATA_H<= DATA_H-1;ELSEDATA_L <=DATA_L-1;DATA_H<=DATA_H;END IF;STATE:=2;WHEN “11101011”=>IF DATA_H=“0000” THENDATA_H<=“0000”;ELSEDATA_L<=DATA_L;DATA_<=DATA_H-1;END IF;STATE:2;WHEN “11101110” =>DATA_L<=DATA_L;DATA_H<=DATA_H;DATA_P_REG<=DATA_H&DATA_L;START_REG<='1';STATE:=2;WHEN“11101101” =>DATA_L<=“0000”;DATA_H<=“0000”;STATE:=2;WHEN OTHERS =>STATE:=2;END CASE;WHEN 2 =>IF COUNTER=31 THENCOUNTER:=0;STATE:=3;ELSECOUNTER:=COUNTER+1;STSTE:=2;END IF;WHEN 3 =>START_REG<='0';STATE:=3;END CASE;END IF;END PROCESS;PROCESS(CLK_1K,DATA_L,DATA_H)VARIABLE STATE: INTEGER RANGE 0 TO 1;BEGINIF RISING_EDGE(CLK_1K)THENCASE STATE ISWHEN 0 =>DISP_SEL_REG<=“10”;DISP_DATA_REG<=DATA_L;STATE:=1;WHEN 1 =>DISP_SEL_REG<=“01”;DISP_DATA_REG<=DATA_H;STATA:=0;END CASE;END IF;END PROCESS;PROCESS(CLK_1K,DISP_DATA_REG)BEGIN IF RISING_EDGE(CLK_1K)THENCASE DISP_DATA_REG ISWHEN “0000”=>DISP_DATA<=“1111110” WHEN “0001”=>DISP_DATA<=“0110000” WHEN “0010”=>DISP_DATA<=“1101101” WHEN “0011”=>DISP_DATA<=“1111001” WHEN “0100”=>DISP_DATA<=“0110011” WHEN “0101”=>DISP_DATA<=“1011011” WHEN “0110”=>DISP_DATA<=“1011111” WHEN “0111”=>DISP_DATA<=“1110000” WHEN “1000”=>DISP_DATA<=“1111111” WHEN “1001”=>DISP_DATA<=“1111011” WHEN OTHERS =>DISP_DATA<=“0000000” END CASE;END IF;END PROCESS;END;第二篇:EDA课程设计考试序号:28自动打铃系统设计说明书学生姓名:周文江学号:14112502521专业班级:1102报告提交日期:2013.11.26湖南理工学院物电学院目录一、题目及要求简介...............3 1.设计题目.....................3 2.总体要求简介 (3)二、设计方案说明 (3)三、系统采用器件以及模块说明.........3 1.系统框图............4 2.选择的FPGA芯片及配置.........4 3.系统端口和模块说明 (5)四、各部分仿真结果 (5)五、调试及总结 (6)六、参考文献 (7)七、附录 (7)一、题目及要求简介1、设计题目设计一个多功能自动打铃系统2、总体要求简介① 基本计时和显示功能(24小时制显示),包括:1.24小时制显示2.动态扫描显示;3.显示格式:88-88-88 ② 能设置当前时间(含时、分)③ 能实现基本打铃功能,规定:06:00起床铃,打铃5s二、设计方案说明本次设计主要采用Verilog HDL硬件描述性语言、分模块法设计的自动打铃系统。
实验四 键盘显示程序设计

实验四 键盘显示程序设计实验目的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)因为,按键在闭合和断开过程中出现一段抖动期,由于按键的不稳定性引起的,这是会呈现一串脉冲,可能是在松手时没去抖动。
键盘控制显示课程设计

键盘控制显示课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握键盘控制显示的基本原理和编程方法;技能目标要求学生能够独立完成键盘控制显示的实验,并具备一定的创新能力;情感态度价值观目标要求学生在学习过程中培养团队合作意识,增强对计算机科学的兴趣和责任感。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
首先,学生需要理解键盘控制显示的基本概念,包括键盘的工作原理和显示技术的演变。
其次,学生应掌握键盘控制显示的编程方法,包括键盘扫描、按键消抖和显示控制等。
最后,学生需要具备实际操作能力,能够通过编程实现键盘控制显示的功能,并在此基础上进行创新设计。
二、教学内容根据课程目标,我们选择和了以下教学内容。
首先,介绍键盘控制显示的基本原理,包括键盘的工作原理和显示技术的演变。
其次,讲解键盘控制显示的编程方法,包括键盘扫描、按键消抖和显示控制等。
接着,通过实例分析,让学生了解键盘控制显示在实际应用中的重要性。
最后,安排学生进行实验,让他们亲自动手实现键盘控制显示的功能,并鼓励他们进行创新设计。
三、教学方法为了实现课程目标,我们将采用多种教学方法。
首先,通过讲授法,向学生传授键盘控制显示的基本原理和编程方法。
其次,利用讨论法,引导学生思考键盘控制显示在实际应用中的价值和挑战。
接着,采用案例分析法,让学生通过分析实际案例,深入理解键盘控制显示的应用场景。
最后,运用实验法,让学生在动手实践中掌握键盘控制显示的编程技巧,并培养他们的创新能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源。
首先,选用合适的教材,为学生提供系统的学习材料。
其次,提供参考书籍,拓展学生的知识视野。
接着,收集多媒体资料,丰富学生的学习体验。
最后,准备实验设备,确保学生能够顺利进行实验操作。
同时,我们还将利用网络资源,为学生提供更多的学习资料和交流平台。
键盘输入与液晶显示系统设计(最终版)

微机原理与接口技术研究性专题设计报告课程名称:单片机原理与微机接口技术设计题目:键盘输入与液晶显示系统院系:机械与电子控制工程学院班级:机电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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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;读取第一个数
MOV CX,3;设置次数
MOV DI,OFFSET IN_ASC_BUF+2;将第一个数的第一个字符放于目的数据区指针中
2.先输入主程序。输入两个数时,键盘接收的十进制数以ASCII码形式存放在内存单元中,将其转换为十进制数字。数值在-9999至+9999范围内。
3.主程序中,两个二进制数数求和,结果也在16位补码的表示范围内。
4.主程序中,和显示前,首先把二进制转换为十进制数,检查和的符号位,若为负数则求补。
5。子程序中,实现十进制数转换为二进制方法是先将累加和赋0,再用累加和乘10加X得出结果。转换后在16位补码的表示范围内,如果为负数,则需求补。
MOV AH,09H
INT 21H;提示输入二个数
MOV DX,OFFSET IN_ASC_BUF
MOV AH,0AH
INT 21H;读取第二个数
MOV CX,3;设置次数
MOV DI,OFFSET IN_ASC_BUF+2;将第二个数的第一个字符放于目的数据区指针中
MOV SI,OFFSET IN_ASC_BUF1+7;将第二个数的第一个字符放于源数据区指针中
INPUT2DB 0DH,0AH,'PLEASE IUPUT THE SECOND NUMBER FROM -9999 TO 9999!$';输入第二个数,在-9999至+9999范围
OUT_ASC_SUMDB 6 DUP(?),'$';将二个数的和转换为ASCII码后,放于此处,以供9号调用显示
DATAENDS
ห้องสมุดไป่ตู้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
通过调用DOS系统的01H号功能——键入字符并回车来实现,其出口参数为键入字符的ASCII码,存在AL中
详细设计方案:
DATASEGMENT
INPUT1DB 0DH,0AH,'PLEASE IUPUT A FIRST NUMBER FROM -9999 TO 9999!$';输入第一个数,在-9999至+9999范围内
将结果存入数据段中定义的缓冲区OUT_ASC_SUM中,再通过调用DOS系统的09H号功能——显示字符串(串尾字符为$,但不显示)来完成。
ADD AX , BIN_BUF1;计算这二个数之和
CALL BIN_TO_ASCII;将和转换为ASCII码,以供显示用
MOV DX,0AH
MOV AH,02H
6.在输入数据之后,屏幕显示第二个数的输入的值。
7.最后显示器显示“****+****=****”,其中3个****分别是第一个加数,第二个加数,和。
三.总体方案:
1.程序分为主程序和子程序,主程序主要是接收从键盘输入的数,两个数的求和,以及和的显示;子程序分别实现十进制数转换为二进制和将二进制数转换为十进制数。
课程设计报告书
课 程 名 称微机原理及应用B
院(系、部、中心)自动化学院
专业自动化(数控技术)
班 级
姓 名
学 号
起 止 日 期
指 导 教 师
一、设计题目………………………………………2
二、设计任务(要求)……………………………2
三、总体方案………………………………………2
四、原理框图………………………………………3
LP1:MOV AX,[DI]地址内容送入AX
MOV [SI],AX
INC SI
INC SI
INC DI
INC DI
LOOP LP1循环LP1,读取出第一个数
模块二:输入第二个数
模块三.两个二进制数求和并显示和:
显示结果:
MOV AH,09H
MOV DX,OFFSETOUT_ASC_SUM
INT 21H
6.子程序中,实现二进制数转换为十进制前先检查符号位,若为负数则求补,转换方法为将二进制数除以1000,再将余数除以1000,依次类推,求出百,十位数,剩下的为个位数,最后将各个数加上30H,即成为对应字符。
四.原理框图:
五.系统模块详细设计与调试:
一).模块设计
模块一.输入第一个数:
MOV AH,09H
五、系统模块详细设计与调试……………………4
六、设计总结………………………………………9
七、参考文献………………………………………10
八、附件材料………………………………………10
一.设计题目:
键盘录入数据的转换与显示程序设计
二.设计任务:
1.编写一个程序,能从键盘读入两个5位十进制数(1位符号位和4位数值位),并将这两个十进制数分别转换为二进制数,然后求其和,再将和以十进制形式在屏幕上显示。