实验三 键盘及LED实验
第三章——独立按键及矩阵键盘控制LED灯(2).讲述
1. 键扫描 键扫描就是要判断有无键按下,当扫描到有键
按下时再进行下一步处理,否则退出键盘处理程序。 独立式键盘扫描只需读取IO口状态,而矩阵式键盘 描通常有两种实现方法:逐行扫描法和线反转法。 (1) 逐行扫描法。依次从第一至最末行线上发
出低电平信号, 如果该行线所连接的键没有按下
的话, 则列线所接的端口得到的是全“1”信号, 如 果有键按下的话, 则得到非全“1”信号。
8个共阴极的数码管,动态显示0-7
ORG 0000H MOV R0,#00H ;给R0赋值0 MOV DPTR,#TAB ; 把TAB 表的首地址给 DPTR MOV R4,#0FEH; ;给R4赋值0FE MOV A,R4; ;A为0FE 也就是1111 1110 PUSH ACC; ;将A入栈 DLO:MOV A,R0 MOVC A,@A+DPTR; ;查TAB表 MOV P0,A ; 把查的值给数码管的8个段 POP ACC; 将之前的A出栈 MOV P1,A; 将A的值给P1 也就是给P1 1111 1110 是那个为0的管亮 LCALL QF; 调用取反子程序 PUSH ACC; 将A入栈 INC R0; R0值加1 LCALL DELAY ; 调用延时程序 CJNE R0,#08H,DLO; 判断是否查完一便 表 没查完再跳到DLO MOV R4,#0FEH; 查完了重新给A赋值 MOV A,R4 PUSH ACC ; 再将A入栈 MOV R0,#00H; 给R0清0 SJMP DLO ;跳到DLO再显示 DELAY:MOV R1,#18 LP1:MOV R2,#200 LP2:MOV R3,#126 DJNZ R3,$ DJNZ R2,LP2 DJNZ R1,LP1 RET TAB:DB 3fH,06H,5bH,4fH,66H,6dH,7dh,07h QF: RL A ; 左移 RET END
单片机实训实验报告总结
一、实验背景与目的随着科技的不断发展,单片机作为一种微小的计算机系统,在工业控制、智能家居、汽车电子等领域得到了广泛的应用。
为了提高学生的实践能力和创新意识,本实训课程旨在通过实际操作,让学生掌握单片机的原理、编程和调试方法,培养学生的动手能力和团队协作精神。
本次实训以51单片机为核心,结合数码管、LED灯、按键等外围电路,设计了多个实验项目,包括LED流水灯、交通灯控制系统、简易计算器、温湿度监控系统等。
通过这些实验,使学生深入了解单片机的硬件结构和软件编程,提高学生的实际操作能力和问题解决能力。
二、实验内容与过程1. 实验一:LED流水灯(1)实验目的:掌握51单片机的I/O口编程,实现LED灯的流水效果。
(2)实验步骤:① 硬件连接:将LED灯连接到P1口;② 编写程序:使用循环语句和延时函数控制LED灯的流水效果;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的流水效果。
2. 实验二:交通灯控制系统(1)实验目的:学习单片机在交通灯控制系统中的应用,实现红黄绿灯的变换及倒计时功能。
(2)实验步骤:① 硬件连接:将LED灯连接到P1口,按键连接到外部中断INT0;② 编写程序:设置定时器中断,实现倒计时功能;编写外部中断程序,实现红黄绿灯的变换;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察交通灯的工作状态和倒计时效果。
3. 实验三:简易计算器(1)实验目的:掌握矩阵键盘扫描原理、LCD1602显示屏控制,实现基本的四则运算。
(2)实验步骤:① 硬件连接:将矩阵键盘和LCD1602显示屏连接到单片机;② 编写程序:实现矩阵键盘扫描、LCD1602显示控制和运算逻辑处理;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察计算器的工作状态和运算结果。
4. 实验四:温湿度监控系统(1)实验目的:学习单片机在温湿度监控系统中的应用,实现温度和湿度的实时显示。
(2)实验步骤:① 硬件连接:将温度传感器和湿度传感器连接到单片机,将LED灯连接到P1口;② 编写程序:实现温度和湿度的实时采集,并根据采集到的数据控制LED灯的亮灭;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的亮灭状态和数码管上的温度、湿度值。
实验三LED指示灯循环控制
实验三LED指示灯循环控制一、实验目的熟悉uVision4编译软件、掌握C51编程与调试方法二、实验原理实验电路原理图如教材219图A.34所示,图中8只LED指示灯接于P0口,切都有上拉电阻。
时钟电路、复位电路、片选电路与前面的实验电路相同。
在编程软件的配合下,要求实现如下功能8只发光二极管做循环点亮控制,且亮灯顺序为D1-D2-D3…-D8-D7…-D1,无限循环,两次亮灯的时间间隔约为0.5s,软件编程原理为首先使P0.0-1,其余端口-0,这样可使D1灯亮,其余灯灭;软件延时0.5s后,使P0口整体左移1位,得到P0.1-1,其余端口-0,这样可使 D2灯亮其余全灭;照此思路P0整体左移7次,再又移7次,如此无限往复即可实现上述功能。
三、实验内容 1、按照教材P219的图A.34,绘制实验三电路原理图;2、根据功能要求,编写C51程序;3、练习μVision4程序动态调试方法,并最终实现8个LED灯依次点亮的功能P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms;4、观察仿真结果,完成实验报告。
四、实验步骤 (1) 在ISIS中绘制电路原理图,按照表A1将元件添加到编译环境中;(2) 在uVision4中编写C51程序;(3) 利用uVision4的编译调试功能检查语法和逻辑错误;(4) 下载可执行文件,在Proteus中观察仿真结果,检查程序的正确性。
五、实验要求提交的实验报告中应包括电路的原理图和实验结果分析。
Category Reference Value Microprocessor ICs U1 80C51 Miscellancous X1 CRYSTAL Capacitors C2~C3 CAP Capacitors C1/22uF CAP--ELEC Resistors R2~R8/200 RES Resistors R10~R17/100 RES Optoelectronics D1~D8 LED--YELLOW 1、电路分析及原理图图1 2、编程思路及C51源程序编程思路 1, P0口赋一初值,使D1灯亮,D2~D8灯灭 2,调用函数delay,传入参数值为50(ms) 3,采用while结构的无限循环体 4,由上向下循环控制(变量i的初值为1,终值小于8,增量为+1) 5,使P0中的数值向左移1位 6,调用函数delay,传入参数值为50(ms) 7,返回第二部继续进行如图2为本次实验源程序图2 调试运行图3 调试运行图4 4、仿真运行效果起始时的情况运行中的情况 5、实验小结 1,通过实验我们实现了最终实现8个LED灯依次点亮的功能P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms;实验六键盘控制LED灯实验1 实验目的(1) 通过实验掌握中断式键盘控制与设计方法;(2) 熟练编写S3C2410中断服务程序。
嵌入式实验三 键盘检测控制实验
2
ቤተ መጻሕፍቲ ባይዱ
嵌入式技术及应用 实验三
实验三 键盘实验
一、 实验目的 掌握单片机系统中矩阵键盘的编程控制方法,学会实时程序的调试技巧。
二、 实验原理 键盘是单片机应用中常用的输入设备,在应用系统中,操作人员可通过键盘
向系统输入指令、地址和数据,实现简单的人机通信。 键盘实际上是一组按键开关的集合,平时总是处于断开状态,当按下键时它
才闭合。按键在闭合和断开时,触点会存在抖动现象,抖动时间一般为 5-10ms, 如下图示:
键盘的处理主要涉及以下 3 个方面的内容: 按键的识别
所接 I/O 口线是高还是低电平(根据连接情况) 抖动的消除
硬件消抖 软件消抖(延时) 判断键值 独立式键盘 矩阵式键盘 实验板电路原理图如下:
1
嵌入式技术及应用 实验三
三、 实验内容 按下 16 个矩阵键盘依次在数码管上显示 1-16 的平方。如按下第一个显示 1,
第二个显示 4...
四、
实验步骤 1、 按实验内容要求在 µ Vision 中创建项目,编辑、调试、编译程序。 2、 将编译生成的目标码文件(后缀为.Hex)下载到实验板上。 3、 观察实验运行结果并记录。
单片机键盘显示实验报告
单片机的键盘和显示实验报告㈠实验目的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从上面的结果可以看出,本次实验基本完成了实验要求。
键盘LED实验(精)
键盘 LED 显示实验一实验目的:通过此次实验让用户进一步了解、熟悉和掌握 CPLD\FPGA开发软件的使用方法及 VERILOG HDL 的编程方法,熟悉以 VERILOG HDL 文件为顶层模块的设计。
学习体会分支条件语句 CASE 的使用方法及 FPGA I\O口的输出控制。
本实验要求在 SMARTSOPC 实验箱上完成对 8个键盘 KEY1— KEY8进行监控,一旦有键输入判断其键值, 并点亮相应个发光二极管, 如若 KEY3按下去, 则点亮 LED1— LED3发光二极管。
二实验原理:根据所学硬件描述语言知及本实验要求,编程如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY keyled isPORT(key:IN STD_LOGIC_VECTOR(7 DOWNTO 0;led: OUT STD_LOGIC_VECTOR(7 DOWNTO 0;end;architecture selected_key of keyled isbeginwith key selectled<="11111110" when "11111110","11111100" when "11111101","11111000" when "11111011","11110000" when "11110111","11100000" when "11101111","11000000" when "11011111","10000000" when "10111111","00000000" when "01111111","11111111" when others;end selected_key;以上程序通过 WHEN 特定并行语句实现 LED 显示灯在按到按键后相继点亮, 整个程序较简单,过程也很清晰。
《微机控制技术》人机交互实验
实验四人机交互实验一、实验目的1、了解键盘、数码显示器与微处理器的接口方法。
2、理解键盘、显示电路的工作方式及原理。
3、掌握键盘、显示系统的编程方法。
二、实验原理注意:当用总线方式驱动八段显示管时,请将八段的驱动方式选择开关拨到“内驱”位置;当用I/O 方式驱动八段显示管时,请将开关拨到“外驱”位置。
本实验仪提供了6位8段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8 位段码、6 位位码是由两片74LS374 输出。
位码经MC1413 或ULN2003 倒相驱动后,选择相应显示位。
本实验仪中 8 位段码输出地址为0X004H,位码输出地址为0X002H。
此处X 是由KEY/LED CS 决定。
做键盘和LED 实验时,需将KEY/LED CS接到相应的地址译码上。
以便用相应的地址来访问。
例如,将KEY/LED CS 接到CS0 上,则段码地址为08004H,位码地址为08002H。
图1-1 6位数码管显示电路另外,本实验仪还提供了一个6×4 的小键盘,如图1-2。
向列扫描码地址(08002H)逐列输出低电平,然后从行码地址(08001H)读回。
如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的延时,防止键盘抖动。
此时列扫描码与LED 的位选通信号是分时用作的。
图1-2矩阵键盘电路1、74HC374 八D锁存器引脚功能及其逻辑功能表CLK(LE)——时钟输入CLR(OE)——输入允许D0-D8——数据输入端Q0-Q8——数据输出端当CLR(OE)为低电平,当有时钟脉冲时,输出信号等于输入信号,即Qn=Dn2、74LS02 或非门(略)。
3、74HC245 八双向总线收发器①74HC245的引脚功能及逻辑功能表:E—信号允许端,低电平有效。
嵌入式系统实验报告
嵌入式系统设计实验报告班级: 20110612学号: ***********名:***成绩:指导教师:武俊鹏、刘书勇1. 实验一1.1 实验名称博创UP-3000实验台基本结构使用方法1.2 实验目的1.熟悉嵌入式系统开发式流程概述。
2.熟悉UP-net3000实验平台的核心硬件电路和外设。
3.熟悉ARM JTAG的安装与使用。
1.3 实验环境硬件:ARM 嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC 机Pentium100以上、串口线。
软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
1.4 实验内容及要求1.熟悉嵌入式系统开发式流程概述。
2.熟悉UP-net3000实验平台的核心硬件电路和外设。
3.熟悉ARM JTAG的安装与使用。
1.5 实验设计与实验步骤1.新建超级终端2.选择ARM 开发实验台串口。
完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置3.保存为一个特定超级终端到桌面上,以备后用。
用串口线将PC机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。
4.启动开发板,按住任意键,使开发板进入BIOS设置状态。
5.在超级终端的界面上,显示BIOS版本信息,以及相应的测试指令。
操作时,要在PC机上输入小写的字母快捷键,进入到相应的功能中去。
6.按照超级终端上的提示信息,进行功能的测试。
1.6 实验过程与分析本次实验操作起来并不困难,因为此次实验属于验证型实验,按照实验资料所给的提示信息,以上面的步骤,即可得到实验的结果。
进入到BIOS界面后,按照超级终端上的提示信息来进行功能1.7 实验结果总结在实验过程中,我们进行的很顺利,没有遇到什么问题,在超级终端界面,按提示的快捷键来测试对应的功能。
如e:测试由ZLG7289 驱动的LED 显示,共分3 步,请看超级终端提示按任意键继续,同时观察LED 的变化,最后返回主菜单。
单片机应用实验报告 2键盘、LED 数码管显示实验
}
int main(){init();来自while(1){
judge();
xianshi();
}
return 0;
}
五、实验步骤
六、附录
sbit LED2=P2^6;
int num=0;
unsigned char code dispcode[]=
{0x30,0xfc,0xa2,0xa4,0x6c,
0x25,0x21,0xbc,0x20,0x24};
void init()
{
key0=1;
key1=1;
key2=1;
}
void delayms(int a)
{int b=0;
for(a;a>0;a--)
for(b=110;b>0;b--);
}
int judge()
{
if(key0==0)
{
delayms(100);
if(key0==0)
{
red=0;
yell=1;
gre=1;
num++;
if(num==10)
num=0;
}
}
if(key1==0)
{
delayms(5);
if(key1==0)
{
red=1;
yell=0;
gre=1;
}
}
if(key2==0)
{
delayms(5);
if(key2==0)
{
red=1;
yell=1;
gre=0;
}
}
return 0;
}
void xianshi()
{
键盘、LED发光实验报告
EDA设计课程实验报告实验题目:键盘、LED发光实验学院名称:专业:班级:姓名:高胜学号小组成员:指导教师:一、实验目的通过实验让同学们进一步了解、熟悉和掌握FPGA开发软件的使用方法及Verilog HDL 的编程方法,并熟悉以Verilog HDL文件为顶层模块的设计;学会和体会分支条件语句case 的使用方法及FPGA I/O口的输出控制。
二、设计任务及要求smartSOPC试验箱上有八个按键KEY1~KEY8和八个发光二极管LED1~LED8。
在smartSOPC试验箱上有KEY1~KEY8通过跳线JP6的KEY1~KEY8分别与芯片的121~124、143、141、158、和156引脚相连(QuickSOPC芯片板上的KEY1~KEY4与SmartSOPC试验箱上KEY1~KEY4是并接的)。
本试验的内容是要求在SmartSOPC试验箱上完成对8个键盘KEY1~KEY8进行监控,一旦有键输入则判断其键值,并点亮相应个发光二极管。
三、系统设计1、整体设计方案FPGA的所有I/O控制块允许每个I/O引脚单独配置为输入口,不过这种配置是系统自动完成的。
当这种I/O口被设置为输入口使用时(如定义key0为输入引脚:input key0;),该I/O控制模块将直接使三态缓冲区的控制端接地,使得该I/O引脚对外呈高阻态,这样该I/O引脚可作为专用输入引脚。
正确分配并锁定引脚后,一旦在KEY1~KEY8中有键输入,即可判断其键值并作出相应的处理。
2、功能模块电路设计(1)输入输出模块框图(见图1)图1(键盘led发光模块图)(2)模块逻辑表达(见表1)表1(按键led发光真值表)(3)算法流程图(见图2)(4)Verilog源代码module ledkey(key,led); //模块名ledkeyinput [7:0]key; //输入按键状态output [7:0]led; //输出led发光状态reg [7:0]k; //定义8位按键状态寄存器k reg [7:0]l; //定义8位led状态寄存器lassign led=l; //输出led发光状态选择always @(key) //定义按键信号变化触发begink=key; //按键状态选择case (k)8'b11111110:l=8'b11111110; //亮一盏led8'b11111101:l=8'b11111100; //亮二盏led8'b11111011:l=8'b11111000; //亮三盏led8'b11110111:l=8'b11110000; //亮四盏led8'b11101111:l=8'b11100000; //亮五盏led8'b11011111:l=8'b11000000; //亮六盏led8'b10111111:l=8'b10000000; //亮七盏led8'b01111111:l=8'b00000000; //亮八盏leddefault:l=8'b11111111; //不亮endcaseendendmodule四、系统调试1、仿真调试(1)仿真代码`timescale 1ns/1nsmodule ledkey_tp;reg [7:0]key;wire [7:0]led;ledkey u1(key,led);initialbegin#100 key=8'b11111110;#100 key=8'b11111101;#100 key=8'b11111011;#100 key=8'b11110111;#100 key=8'b11101111;#100 key=8'b11011111;#100 key=8'b10111111;#100 key=8'b01111111;#100 key=8'b00111111;#100 $finish;endinitial $monitor($time,,,"%b,%b",key,led);endmodulemodule ledkey(key,led);input [7:0]key;output [7:0]led;reg [7:0]k;reg [7:0]l;assign led=l;always @(key)begink=key;case (k)8'b11111110:l=8'b11111110;8'b11111101:l=8'b11111100;8'b11111011:l=8'b11111000;8'b11110111:l=8'b11110000;8'b11101111:l=8'b11100000;8'b11011111:l=8'b11000000;8'b10111111:l=8'b10000000;8'b01111111:l=8'b00000000;default:l=8'b11111111;endcaseendendmodule(2)仿真波形图(见图3)图3(3)波形分析# 0 xxxxxxxx,xxxxxxxx # 100 11111110,11111110 # 200 11111101,11111100# 300 11111011,11111000 # 400 11110111,11110000 # 500 11101111,11100000 # 600 11011111,11000000 # 700 10111111,10000000 # 800 01111111,00000000 # 900 00111111,11111111 (4)引脚图表2-1 引脚锁定方法五、实验感想。
单片机实验3LDE数码管动态显示与按键去抖程序
1、MAIN.ASM;====变量定义段====CS0 BIT P2.0 ;个位位选CS1 BIT P2.1 ;十位位选CS2 BIT P2.2 ;百位位选CS3 BIT P2.3 ;千位位选CS4 BIT P2.4 ;LED灯位选DSW EQU 30H ;位选计数DSB0 EQU 31H ;显示缓冲单元个位DSB1 EQU 32H ;显示缓冲单元十位DSB2 EQU 33H ;显示缓冲单元百位DSB3 EQU 34H ;显示缓冲单元千位DSB4 EQU 20H ;显示缓冲单元指示灯状态LD1 BIT DSB4.0 ;指示灯LD1控制位LD2 BIT DSB4.1 ;指示灯LD2控制位LD3 BIT DSB4.2 ;指示灯LD3控制位LD4 BIT DSB4.3 ;指示灯LD4控制位LD5 BIT DSB4.4 ;指示灯LD5控制位LD6 BIT DSB4.5 ;指示灯LD6控制位LD7 BIT DSB4.6 ;指示灯LD7控制位LD8 BIT DSB4.7 ;指示灯LD8控制位KEY EQU 21H ;键状态字SW1 BIT KEY.6 ;SW1键SW2 BIT KEY.7 ;SW2键EKEY EQU 22H ;键前沿字ESW1 BIT EKEY.6 ;SW1键前沿ESW2 BIT EKEY.7 ;SW2键前沿KTMR EQU 35H ;键去抖延时器AJS1 EQU 40H ;每按一次SW1,(AJS2:AJS1)+1 AJS2 EQU 41H ;每按一次SW2,(AJS2:AJS1)-1 ;====常数定义段====;==================ORG 0000HLJMP MAINORG 0030HMAIN: INCLUDE "INITIAL.INC"MLOOP: LCALL DELAY ;延时5msLCALL RDKEY ;读键LCALL DISPJNB ESW1,M03 ;无SW1键转移MOV R6,#00HMOV R7,#01HSJMP M05M03: JB ESW2,M04 ;有SW2键转移LJMP MLOOPM04: MOV R6,#99HMOV R7,#99HM05: MOV A,AJS1 ;(AJS2:AJS1)十进制±1ADD A,R7DA AMOV AJS1,AMOV A,AJS2ADDC A,R6DA AMOV AJS2,AMOV A,AJS1 ;(AJS2:AJS1)送显示ANL A,#0FHMOV DSB0,AMOV A,AJS1SW AP AANL A,#0FHMOV DSB1,AMOV A,AJS2ANL A,#0FHMOV DSB2,AMOV A,AJS2SW AP AANL A,#0FHMOV DSB3,ALJMP MLOOP;====延时子程序(2*R7+3)*R6+5=5ms====DELAY: MOV R6,#0AHDL01: MOV R7,#0F8HDL02: DJNZ R7,DL02DJNZ R6,DL01RET;====通用子程序段====INCLUDE "RDKEY.ASM";添加读键状态及去抖处理子程序INCLUDE "DISP.ASM" ;添加数码管动态扫描显示子程序END2、INITIAL.INCMOV SP,#5FHMOV R0,#20HMOV R7,#60HCLR AM01: MOV @R0,A ;存储器20H-7FH清零INC R0DJNZ R7,M01MOV DSB0,#03HMOV DSB1,#01HMOV DSB2,#01HMOV DSB3,#07HMOV R4,#0C8HM02: LCALL DELAYLCALL DISP ;显示"7113"1秒DJNZ R4,M02CLR AMOV DSB0,AMOV DSB1,AMOV DSB2,AMOV DSB3,AEND3、RDKEY.ASM;====读独立按键子程序(延时去抖)==== RDKEY: ORL P1,#0C0H ;先置1,后读口MOV A,P1 ;读键ANL A,#0C0H ;接独立键盘的位保留XRL A,#0C0H ;求反转正逻辑MOV R7,A ;新的键状态暂存R7CJNE A,KEY,RDK0 ;键状态变化则转移MOV KTMR,#05H ;去抖延时器加载初值SJMP RDK1RDK0: MOV A,KTMR ;过了延时时间?JZ RDK1DEC KTMR ;延时未结束MOV R7,KEY ;放弃不稳定的键状态RDK1: MOV A,KEY ;键前沿提取XRL A,R7ANL A,R7MOV EKEY,AMOV KEY,R7 ;启用键的新状态RETEND4、DISP.ASM;====5位数码管扫描子程序====DISP: ORL P2,#1FH ;关闭数码显示器MOV A,DSW ;根据扫描循环变量转移ANL A,#07HRL AMOV DPTR,#DSTABJMP @A+DPTRDSTAB: AJMP DIS0AJMP DIS1AJMP DIS2AJMP DIS3AJMP DIS4AJMP DIS0AJMP DIS0AJMP DIS0DIS0: MOV A,DSB0 ;扫描个位数码管ANL A,#0FHMOV DPTR,#LED7 ;查显缓个位值的七段码表MOVC A,@A+DPTRMOV P0,A ;七段码送P0口CLR CS0 ;点亮个位数码管MOV DSW,#01H ;扫描指针指向下十位RETDIS1: MOV A,DSB1 ;扫描十位数码管ANL A,#0FHMOV DPTR,#LED7MOVC A,@A+DPTRMOV P0,ACLR CS1MOV DSW,#02HRETDIS2: MOV A,DSB2 ;扫描百位数码管ANL A,#0FHMOV DPTR,#LED7MOVC A,@A+DPTRMOV P0,ACLR CS2MOV DSW,#03HRETDIS3: MOV A,DSB3 ;扫描千位数码管ANL A,#0FHMOV DPTR,#LED7MOVC A,@A+DPTRMOV P0,ACLR CS3MOV DSW,#04HRETDIS4: MOV A,DSB4 ;扫描指示灯CPL AMOV P0,ACLR CS4MOV DSW,#00HRET;====LED段码表====LED7: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,86H,0A1H,86H,8EHEND。
毕业论文 在智能仪器实验板上开发键盘与LED显示
第一章绪论1.1 选题的背景与意义“工欲善其事,必先利其器。
”,这是中国的一句古话,人们早就知道了工具的重要性。
随着以知识经济为特征的信息时代的到来,人们对仪器仪表作用的认识愈加深入。
作为工业自动化技术工具的自动化仪表与控制装置,在高新技术的推动下,正跨入真正的数字化、智能化、网络化的时代。
其技术发展的主流趋势表现在:测量信息数字化,检测控制仪表智能化,控制管理集成化。
自动化的基础必须是依靠仪器仪表获取应有的、可靠的信息,人们已经认识到仪器仪表已不仅仅是工业时代必不可少的“工具”,而且是当今高科技信息时代的“尖兵”,是信息的源头。
科技要发展,生产要发展,仪器仪表必须先行发展,己成为当今有识之士的共识。
仪器仪表的水平是科学技术现代化的重要标志,没有现代化的仪器仪表,国民经济是无法发展的。
近20年来,世界上工业发达国家都十分重视仪器仪表的发展,其发展速度己远远超过国民经济的其它部门。
我国己将信息产业作为优先发展的产业,因此,作为信息产业重要组成部分的仪器仪表急需并且必将得到加速发展近年来,各种高新技术迅猛发展,特别是微电子、微机械、新材料和新工艺的发展以及计算机、通信技术的广泛应用,正在彻底改变着自动化仪表的结构及其工作原理,进而实现传统仪表不可能完成的全新的功能,制造出新一代传感检测仪表和控制装置。
随着微电子技术的不断发展,微处理器芯片的集成度越来越高,已经可以在一块芯片上同时集成CPU、内存、定时器/计数器、并行和串行接口、A/D转换等。
人们把这种超大规模集成电路芯片称作“单片微控制器”,简称为单片机或微控制器。
单片机的出现,引起了仪器仪表结构的变革。
以单片机为主体取代传统仪器仪表的常规电子线路,可以容易地将计算机技术与测量控制技术结合在一起,组成新一代的“智能化测量控制仪表”。
这种新型的智能仪表在测量过程自动化、测量结果的数据处理以及功能的多样化方面,都取得了巨大的发展。
目前在研制高精度、高性能、多功能的测量控制仪表时,几乎没有不考虑采用微处理器使之成为智能仪表的,而在仪器仪表中使用的最多的微处理器之一就是单片机。
EDA技术及应用实验报告(完整版纯手打)
《EDA技术及应用》实验报告系部:指导教师:学号:姓名:实验一点亮LED设计一、实验目的通过此实验让用户逐步了解、熟悉和掌握FPGA开发软件QuartusII的使用方法及Verilog HDL的编程方法。
本实验力求以详细的步骤和讲解让读者以最快的方式了解EDA技术开发以及软件的使用,从而快速入门并激起读者对EDA技术的兴趣。
二、实验容SmartSOPC实验箱上有8个发光二极管LED1~8,并分别与FPGA的50、53~55、176和47~49引脚相连。
本实验的容是建立可用于控制LED亮/灭的简单硬件电路,要求点亮SmartSOPC实验箱上的4个发光二极管(LED1、LED3、LED5和LED7)。
三、实验原理FPGA器件同单片机一样,为用户提供了许多灵活独立的输入/输出I/O口(单元)。
FPGA每个I/O口可以配置为输入、输出、双向I/O、集电极开路和三态门等各种组态。
作为输出口时,FPGA的I/O口可以吸收最大为24mA的电流,可以直接驱动发光二极管LED等器件。
所以只要正确分配并锁定引脚后,在相应的引脚上输出低电平“0”,就可以实现点亮该发光二级管的功能。
四、实验步骤1、启动Quarters II建立一个空白工程,命名为led_test.qpf。
然后分别建立图形设计文件,命名为led_test.bdf,以及文本编辑文件led1.v,将他们都添加进工程中。
2、对工程进行设计。
在led1.v中输入程序代码,并保存,进行综合编译,若在编译中发现错误,则找出并更正错误,直至编译成功为止。
从设计文件中创建模块,由led1.v生成名为led1.bsf的模块符号文件。
在led_test.bdf中任意空白处双击鼠标左键,将symbol对话框中libraries:project下的led1模块添加到图形文件led_test.bdf中,加入输入、输出引脚,双击各管脚符号,进行管脚命名。
完整的顶层模块原理图如下图所示。
实验三 键盘扫描
实验三键盘扫描&8位7段码管显示实验一实验目的1.进一步熟悉用Quartus II开发SOPC的基本流程。
2.进一步掌握PIO外设的使用方法。
3.熟悉对PIO的更复杂的操作过程。
4.掌握驱动8位七段码管的方法。
二硬件需求1.EDA/SOPC实验箱一台。
三实验原理实验中要用到4×4键盘,系统需要完成4×4键盘的扫描,确定有键按下后需要获取其键值,根据预先存放的键值表,逐个进行对比,从而进行按键的识别,并将相应的按键值进行显示。
键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,首先输出4列中的第一列为低电平,其它列为高电平,然后读取行值;然后再输出4列中的第二列为低电平,读取行值,依此类推,不断循环。
系统在读取行值的时候会自动判断,如果读进来的行值全部为高电平,则说明没有按键按下,否则如果读进来的行值发现不全为高电平,则说明键盘整列中必定有至少一个按键按下,读取此时的行值和当前的列值,即可判断到当前的按键位置。
获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。
8位七段码管的显示是在程序中定时扫描显示的,为了使显示的过程简化,可以在程序中开辟8个存储区,用于存放8个七段码管对应值,然后每按下按键一次,则相应的值出现在最右边的七段码管上,原先的显示的值依次左移。
为了完成键盘的扫描和七段码管的正确显示,必须在原来CPU模块的基础上再加入一个定时器模块,用以产生周期性中断,在中断服务程序中完成键盘的扫描以及七段码管的扫描。
四实验内容本实验要完成的内容是设计一个CPU模块,该CPU需要加入一个定时器模块,用以产生周期性中断进行键盘扫描和七段码管的扫描显示。
实验要求能够在按下按键时获取其键值,然后在8个七段码管上正确显示按下的键值,每按键一次,原先显示的值整体左移,新的键值出现在8个七段码管的最右边。
微机原理键盘控制与显示实验报告
课程名称: __________ 微机原理(实验) _________________ 指导老师: _徐习东 _______________ 成绩: _______________________ 实验名称: _________ 键盘控制与显示 ___________ 实验类型: _______ 软件实验 __________ 同组学生姓名: _______________ 七、讨论、心得【实验目的】1. 通过实验掌握TMS320F2812 通用输入/输出管脚直接控制外围设备的方法2. 了解发光二极管的控制编程方法。
3. 了解SPI 的使用。
4. 了解如何使用GpioA 口进行数据的锁存5. 通过实验掌握TMS320F2812 的扩展端口接收外围设备信息的方法6.了解键盘的使用原理及编程方法【实验内容】1. 按键显示程序,对按键记录次数,以二进制显示在16个LED 上。
2.定时器编程,并用按键控制各位时分秒,使其能完成加减操作【实验仪器】TMS320F2812 数字信号处理器与学生用集成板。
【实验步骤】1. 撰写代码2. 调试代码3.实现功能別f 尹丿占实验报告专业: 姓名:学号: 日期: 地点:电气工程及其自动化 一、实验目的和要求(必填) 三、主要仪器设备(必填) 五、实验数据记录和处理 二、实验内容和原理(必填) 四、操作方法和实验步骤 六、实验结果与分析(必填)【实验代码】 、疋时器① 宏定义和全局变量定义R 犍蛊控制曲钟nclude "DSP281x_De (vic« .h" 卍枝键对应值Uint16 LEEReg;UintlS KeyReg 1:Uitit321 = 0;Uint16Ctrl ; int 16Sec=0;1 Tltl6M IL =0;int 16 Hor-Cl ; UintlSLight[3];秒,按键编码,LED 编码和控制位。
② 共阳字形码O K jOOO.Oxf 900, OxA4OO J .0iBDOO,0x9900,0x5200, OMfl^OD^OxFSOD, O K B000y0x9000.0zBBOO,Oz3300,OxcEDO,Oxa IDO,OxB&OD^OssEciOO , 0x5G (J0,Uxbf DU,Osa7UQ,OzffOa,0x4000,CK79Da,DM240D r Dx^ 000, 0 itl900, O K ISOQ, 0s DEOO,Oz 7000,030000,0x1000);分析:由于这次实验要用到数码管,所以我们要定义一个数码管共阳端字形码,使每一个代码对应一种显 示状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三键盘及LED实验
一、实验目的
1、了解LED动态显示电路结构,掌握LED动态显示方法;
2、了解键盘扫描电路结构,掌握键盘输入处理方法;
二、实验仪器
1、51实验开发板 1块
2、PC机 1台
三、实验内容
1、显示键盘电路
2、参考程序(c语言实验例程见\ckey8x8目录,汇编语言例程见\a按键&显示目录)
3、将程序修改为按键时在LED上循环显示所按键值(按第一个键时,第一个LED显示
对应键值,按第二个键时,第二个LED显示对应键值,。
,按第七个键时,第一个LED显示对应键值,按第八个键时,第二个LED显示对应键值。
)。