嵌入式控制系统实验-第2讲 实验二ARM键盘与数码管显示

合集下载

嵌入式实验报告数码管显示实验

嵌入式实验报告数码管显示实验

实验报告课程名称嵌入式系统编程实践实验仪器清华同方辰源嵌入式系统实验箱实验名称实验四:数码管显示实验系别__计算机学院_专业 _班级/学号学生姓名实验日期 2013年10月11日成绩___________________指导教师实验四:数码管显示实验一、实验问题回答(1)如何设置功能3,4中的循环速度?答:利用系统SysTick Handler中断,控制循环速度void SysTick_Handler (void){Event = 1;}(2)若是想实现类似实验(三)通过键盘动态控制循环速度,考虑一下应该如何设计?答:SysTickPeriodSet(SysCtlClockGet() / X)//设置x的大小就可以控制循环的速度。

void Reset_Counter_Speed(int x){SysTickIntDisable();SysTickDisable();SysTickPeriodSet(SysCtlClockGet() / x);// 设置x,控制计数频率,值与频率成正比SysTickEnable();SysTickIntEnable();},达到预期的效果。

二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)学习、了解和掌握数码管工作原理和使用方法实验结果及检查(1)默认在在OLED屏幕上分行显示自己的学号、姓名、项目序号、时间,如“2010011001”、“zhangsan”、“work4”、“2012-11-”(2)首先在屏幕上显示四个功能选单,通过键盘A-F键选择不同功能,选择后屏幕显示相关功能提示,接受键盘输入的数字键0-9并在数码管上显示。

如:开始显示:“please choose the function:”“A: …”“B: …”“C: …”“D: …”按下“A”键后,显示”now you choose function A”(3)按下键盘后,根据不同功能在数码管上显示按键字符。

键盘与数码管静态显示实验-单片机-程序

键盘与数码管静态显示实验-单片机-程序

键盘与数码管静态显示实验实验内容:1、根据电路图图1和图2编写按键程序,左侧第一位数码管显示独立式按键编号“1”、“2”、“3”、“4”,哪一个按下,对应的编号显示在左侧第一位数码管(左侧第二个数码管为全灭状态),右侧二位数码管显示“00--15”的十进制键值,无键按下时数码管为全灭状态。

图1 动态显示电路图图2 键盘接口电路图评分表unsigned char code led_code[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09 ,0x11,0xc1,0x63,0x85,0x61,0x71,0xff}; unsigned char dis_buf[4];unsigned char i;unsigned char aa,bb,cc,lie;sbit key1=P2^0;sbit key2=P2^1;sbit key3=P2^2;sbit key4=P2^3;sbit led_clk= P1^6 ;sbit led_data = P1^7 ;void delay_ms(unsigned int i){unsigned char j;for(i;i>0;i--){for(j=110;j>0; j-- );}}void key_scan(void){P3=0Xf0;if((P3&0xf0)!=0xf0){aa=0xfe;for(lie=0;lie<4;lie++){P3=aa;aa=(aa<<1)|0x01;if((P3&0xf0)!=0xf0){bb=P3&0Xf0;switch(bb){case 0xe0:cc=lie;break;case 0xd0:cc=lie+4;break;case 0xb0:cc=lie+8;break;case 0x70:cc=lie+12;break;default :cc=16;break;}}}}else cc=16;}void led_display ( ){unsigned char t,i;unsigned char input_code;for(i=0;i<4;i++){input_code=led_code[dis_buf[i]];for (t=0;t<8;t++){if( input_code & 0x01 ){led_data=1;}else{led_data=0;}led_clk=0;input_code>>=1;led_clk=1;}}}void main (){unsigned char num;while(1){key_scan();if(key1==0){delay_ms(10);if(key1==0){num=1;}}else if(key2==0){delay_ms(10);if(key2==0){num=2;}}else if(key3==0){delay_ms(10);if(key3==0){num=3;}}else if(key4==0){delay_ms(10);if(key4==0){num=4;}}else {num=16;}dis_buf[2]=16;dis_buf[3]=num;if(cc!=16){dis_buf[1]=cc/10;dis_buf[0]=cc%10;}else{dis_buf[1]=16;dis_buf[0]=16;}led_display ();delay_ms(300);}}[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]。

《嵌入式系统原理与应用》实验报告02-汇编指令实验2

《嵌入式系统原理与应用》实验报告02-汇编指令实验2

《嵌入式系统原理与应用》实验报告实验序号:02 实验项目名称:汇编指令实验21学号1207012117 姓名黄明专业、班实验地点实验楼1#318 指导教师黄鹏程实验时间4-18 一、实验目的1.了解ADS 1.2 集成开发环境及ARMulator 软件仿真;2.掌握ARM7TDMI 汇编指令的用法,并能编写简单的汇编程序;3. 通过实验了解如何使用 ARM 汇编指令实现结构化程序编程。

二、实验设备(环境)及要求硬件:PC机;软件:PC机操作系统windows XP,ADS1.2集成开发环境。

三、实验内容与步骤实验内容:使用 ARM 汇编指令实现 if条件执行;使用 ARM 汇编指令实现 for循环结构;使用 ARM 汇编指令实现 while 循环结构;使用 ARM 汇编指令实现 do…while 循环结构;使用 ARM 汇编指令实现 switch 开关结构。

实验步骤:1. 思考如何使用 ARM 汇编指令实现结构化编程,具体的条件自己设定。

比如if条件执行,if(x>y) z=0,设 x 为 R0,y为 R1,z 为 R2,汇编代码如何编写。

2. 启动 ADS 1.2,使用 ARM Executable Image 工程模板建立一个工程Instruction5。

3. 建立汇编源文件 TEST2.S,编写实验程序,然后添加到工程中。

4. 编译连接工程,选择【Project】->【Debug】,启动 AXD进行软件仿真调试。

5. 打开寄存器窗口(Processor Registers),选择 Current 项监视各寄存器的值。

6. 单步运行程序,判断程序是否按设计的程序逻辑执行。

四、实验结果与数据处理(1)if(x>y) z=100;else z=50;源程序:MOV R0,#101 ; 初始化x的值MOV R1,#250 ; 初始化y的值CMP R0,R1MOVHI R2,#100MOVLS R2,#50(2)for(i=0; i<10; i++){x++;}设x为R0,i为R2 (i、x均为无符号整数) 源程序:MOV R0,#0MOV R2,#0FOR_L1 CMP R2,#10BHS FOR_ENDADD R0,R0,#1ADD R2,R2,#1 ; i++B FOR_L1FOR_END NOP(3)while(x<=y) {x*=2;R0,y 为R1 (x、y 均为无符号整数)源程序:MOV R0,#1 ; 初始化x的值MOV R1,#10 ; 初始化y的值B WHILE_L2WHILE_L1 MOV R0,R0,LSL #1WHILE_L2 CMP R0,R1BLS WHILE_L1WHILE_END NOP(4)do{x--;} while(x>0);设x为R0 (x为无符号整数)源程序MOV R0,#5 ; 初始化x的值DOWHILE_L1 ADD R0,R0,#-1 ; 循环体,x--DOWHILE_L2 MOVS R0,R0 ; R0 ←R0,并影响条件码标志BNE DOWHILE_L1 ; 若R0不为0(即x不为0),则继续循环DOWHILE_END NOP(5); switch(key&0x0F); { case 0:; case 2:; case 3: x = key + y;; break;; case 5: x = key - y;; break;; case 7: x = key * y;; break;; default: x = 168;; break;; }; 设x为R0,y 为R1,key 为R2 (x、y、key 均为无符号整数)源程序MOV R1,#3 ; 初始化y的值MOV R2,#2 ; 初始化key的值SWITCH AND R2,R2,#0x0F ; switch(key&0x0F) CASE_0 CMP R2,#0 ; case 0:CASE_2 CMPNE R2,#2 ; case 2:CASE_3 CMPNE R2,#3 ; case 3:BNE CASE_5ADD R0,R2,R1 ; x = key + yB SWITCH_END ; breakCASE_5 CMP R2,#5 ; case 5:BNE CASE_7SUB R0,R2,R1 ; x = key - yB SWITCH_END ; breakCASE_7 CMP R2,#7 ; case 7:BNE DEFAULTMUL R0,R2,R1 ;x = key * yB SWITCH_END ; breakDEFAULT MOV R0,#168 ; default: x = 168 SWITCH_END NOPHALT B HALTEND五、分析与讨论六、教师评语成绩签名:日期:。

嵌入式实验报告2

嵌入式实验报告2

嵌入式系统设计实验报告1 问题描述在Linux操作系统和ARM嵌入式实验系统环境下,分析linux下的键盘、数码管驱动程序,编写一个应用程序,实现以下功能:在ARM开发板上按下数字键1、2、3、4时,对应启动模拟量开发板上的模拟量输入端AIN0、AIN1、AIN2、AIN3采样,并把模数转换的结果从终端输出和数码管显示。

数码管显示格式:通道号转换的电压值;例如:2灭灭3.251.1设计目标在ARM开发板上按下数字键1、2、3、4时,对应启动模拟量AIN0、AIN1、AIN2、AIN3采样,并把A/D转换的结果从终端输出和LED显示。

显示格式:通道号转换的电压值。

1.2设计思路根据设计目标,该问题可分为六个模块进行设计,分别为驱动程序加载、打开设备、键盘扫描、A/D转换、数码管显示,总体设计方案如图1所示。

图1 总体设计方案(1)驱动程序加载用户的应用程序以设备文件方式访问驱动程序,即Linux把设备当文件,通过文件系统对设备进行访问。

针对这个实验,需要用到ADC0809芯片,LED显示数码管,小键盘。

为此,用lsmod命令加载这三个对应的驱动程序adc0809.c、led.c和keybd.c,再以insmod的方式加入内核。

驱动程序主要是设置一些寄存器的内容来确定端口的引脚输入输出方式以及键盘的扫描部分代码,LED控制显示函数等。

(2)打开各个设备在Linux系统下,各个设备都是通过文件来进行描述的,因此用open函数打开需要用到的LED、键盘、ADC0809芯片。

并且要有对应的出错处理。

(3)键盘扫描驱动程序加载进去以后,运行可执行文件,代码就进入到了按键按下等待的代码中了。

对于用户而言,只是在键盘中按下了某个键,在计算机里,通过驱动得到按下的键值并通过read(fd_kb,&result_kb,1)函数把值赋给变量result_kb中(其中fd_kb为键盘的文件描述符)。

(4)A/D转换启动ADC0809芯片对应的通道进行数据转换,这里主要通过iotcl和read 这两个函数实现,并把转化后的结果赋给result_ad这个变量。

嵌入式软件开发基础实验报告 数码管显示

嵌入式软件开发基础实验报告 数码管显示

上海电力学院嵌入式软件开发基础实验报告题目:ARM 【实验4.6】数码管显示实验专业:电子科学与技术年级:姓名:学号:一、实验目的(1)通过实验掌握 LED 的显示控制方法;(2)巩固实验 4.1 中所掌握的对存储区进行访问的方法;二、实验设备硬件:Embest EduKit-III 实验平台,Embest ARM 标准/增强型仿真器套件,PC 机软件:Embest IDE Pro ARM 集成开发环境,Windows 98/2000/NT/XP三、实验内容编写程序使实验板上八段数码管循环显示 0 到 9 字符四、实验原理嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

(1)结构八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母(2)工作原理以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。

电平信号按照dp,g,e…a 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表(3)显示方式八段数码管的显示方式有两种,分别是静态显示和动态显示。

静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。

动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。

五、实验步骤1. 准备实验环境使用 Embest 仿真器连接目标板,使用 Embest EduKit-III 实验板附带的串口线,连接实验板上的 UART0 和 PC 机的串口。

ARM嵌入式教学实验二

ARM嵌入式教学实验二

实验二 ARM汇编语言编程实验一实验目的1. 掌握基本的ARM汇编语言编程方法。

二实验内容1. 用汇编语言编写一个程序实现如下目的:从源地址拷贝num个字(num*4个字节)的数据到目的地址dst中。

三预备知识1. ARM汇编语言基础知识;2. CVT-PXA270中编译和调试程序的方法。

四实验设备1. 硬件:CVT-PXA270教学实验箱、PC机;2. 软件:PC机操作系统 Windows 98(2000、XP) + ADS开发环境。

五基础知识ADS/SDT IDE使用了CodeWarrior公司的编译器。

在ADS中编写的程序必须符合CodeWarrior的语法规则。

下面介绍一些基本的CodeWarrior汇编知识以及本实验用到的ARM汇编指令。

1. GNU汇编语言语法及规则1) _start_start为程序默认入口点,代码段默认起始地址为0x800,如果需要修改可以在“ARM Linker”选项卡“Output”页“RO Base”中指定。

2)标号语法:symbolsymbol为定义的符号。

说明:上述代码定义一个标号,它表示程序中当前的指令或数据地址。

如果在程序中出现两个相同的标号,汇编器将会产生一个警告,且只有第一个标号有效。

示例:ResetHandler:2. GNU汇编语言伪操作1) EQU伪操作符语法:Symbol EQU exprexpr为基于寄存器的地址值、程序中的标号、32位的地址常量或位的常量。

symbol为EQU伪操作为expr定义的字符名称。

说明:该操作符为数字常量、基于寄存器的值和程序中的标号定义一个字符名称,相当于C语言中的宏定义。

示例:USERMODE EQU 0x102) EXPORT伪操作符语法:EXPORT symbolEXPORT为声明的符号的名称。

它是区分大小写的。

说明:该操作符声明一个可以被其它文件引用的全局符号,相当于C语言中的全局变量。

示例:EXPORT Main3) AREA伪操作符语法:AREA 段名属性 1 ,属性 2 ,……说明:AREA 伪指令用于定义一个代码段或数据段。

单片机实验报告——矩阵键盘数码管显示

单片机实验报告——矩阵键盘数码管显示

单片机实验报告信息处理实验实验二矩阵键盘专业:电气工程及其自动化指导老师:***组员:明洪开张鸿伟张谦赵智奇学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日矩阵键盘一、实验内容1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。

按其它键没有结果。

二、实验目的1、学习独立式按键的查询识别方法。

2、非编码矩阵键盘的行反转法识别方法。

3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。

4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。

5、掌握利用Keil51软件对程序进行编译。

6、会根据实际功能,正确选择单片机功能接线,编制正确程序。

对实验结果能做出分析和解释,能写出符合规格的实验报告。

三、实验原理1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。

2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。

3、识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。

这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。

由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。

键盘与数码管显示实验

键盘与数码管显示实验

R72 10K
S14 SW-PB S18 SW-PB S22 SW-PB S26 SW-PB
R73 10K
S15 SW-PB S19 SW-PB S23 SW-PB S27 SW-PB
D2 Diode
D3 Diode
D4 Diode
D5 Diode
J33 1 2 3 4 5 6 7 8
Header 8
R94
R95
Res1
Res1
Res1
Res1
Res1
Res1
Res1
Res1
330R
330R
330R
330R
330R
330R
330R
330R
DS1
11 7 4 2 1 10 5 3
a b DIG1 c d e f g DP
HDSP-B09G
DIG2 DIG3
DP3
DP2
K1 DIG4 K2
K3 K4
9 GND COM D 10
ULN2803A GND
VCC
Pad_DS_K1 Pad_DS_K2 Pad_DS_K3 Pad_DS_K4
Pad_DS_K5
Pad_DS_K6
Pad_DS_K7
Pad_DS_K8 J37
S8550
R80 Res1 10K Q20
S8550
R81 Res1 10K Q21
键盘与数码管显示
一、4X4键盘 二、LED显示器的基本结构 三、实验箱原理图 四、STC15 I/O口 工作模式配置 五、实验要求
一、4X4键盘
5V
行线(输出)
•键特征值的判断
列线(输入)
•键盘控制方式:扫描、中断
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验原理
⑴ 八段数码管
共阳极八段数码管 共阴极八段数码管
g f GND a b a a f e d g b c dp b c d e f g dp a b c d e f g dp
+5V
·
e d GND c dp
(a)
(b)
常用字符的段码表如下:
字符 共阴极 共阳极 字符
0 3FH C0H 8
1 06H F9H 9
实验二 键盘及LED驱动实验
实验类型:设计
实验目的
⑴ 掌握LED的显示控制方法; ⑵ 掌握键盘控制方法。
实验设备
硬件:Embest EduKit-III实验平台,仿真器,PC机。 软件:Embest IDE集成开发环境,Windows 98/2000/NT/XP。
实验内容
按下实验台上键盘上4×5按键,编写程序接收键盘中 断,在超级终端串口通信程序显示键值,对于0-F键,同 时在八段数码管显示键值。
2 5BH A4H A
3 4FH B0H B

4 66H 99H C
5 6DH 92H D
6 7DH 82H E
7 07H F8H F
共阴极
共阳极
7FH
80H
6FH
90H
77H
88H
7CH
83H
39H
C6H
5EH
A1H
79H
86H
71H
8EH
LED显示器工作方式有两种:
静态显示方式和动态显示方式。
静态显示的特点是每个数码管的段选必须接一个8位数据线来 保持显示的字形码。当送入一次字形码后,显示字形可一直保持, 直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示 便于监测和控制。缺点是硬件电路比较复杂,成本较高。 动态显示的特点是将所有位数码管的段选线并联在一起,由位 选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码 管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动 态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和 相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉 好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一 些,所以在选择限流电阻时应略小于静态显示电路中的。
实验操作步骤
⑴ 串口接收设置。在PC机上运行windows自带的超级终端串口 通信程序(波特率115200、1位停止位、无校验位、无硬件流控 制);或者使用其它串口通信程序。 ⑵ 调试实验例程。打开实验例程目录8led_test目录下例程, 编译链接工程→Remote Connect进行连接软件仿真器→Download 下载程序→Debug工具条Go命令(F5快捷键)→按动键盘后观察显 示结果→Disconnect退出调试状态。 ⑶ 观察实验结果 在PC机上观察超级终端程序主窗口,可以看到如下界面: boot success... 8-segment Digit LED Test Example (Please look at LED) Keyboard Test Example 用户可以按下实验系统的4x5键盘,在超级终端上和LED上观察 结果。
实验内容 通过键盘控制数码管以不 同的动态方式显示16进制数。 思考题 按下0~F中任一键N,在8个 数码管上显示N,N+1,…,N+7, 若显示到F值,接着顺序显示 1,2,…。
实验操作步骤
⑴ 串口接收设置。在PC机上运行windows自带的超级终端串口 通信程序(波特率115200、1位停止位、无校验位、无硬件流控 制);或者使用其它串口通信程序。 ⑵ 调试实验例程。打开实验例程目录8led_test目录下例程, 编译链接工程→Remote Connect进行连接软件仿真器→Download 下载程序→Debug工具条Go命令(F5快捷键)→按动键盘后观察显 示结果→Disconnect退出调试状态。 ⑶ 观察实验结果 在PC机上观察超级终端程序主窗口,可以看到如下界面: boot success... 8-segment Digit LED Test Example (Please look at LED) Keyboard Test Example 用户可以按下实验系统的4x5键盘,在超级终端上和LED上观察 结果。
⑵ 行列键盘
行列键盘一般常采用三种方法读取键值。一 种是中断式,另两种是扫描法和反转法。 中断式在键盘按下时产生一个外部中断通知 CPU,并由中断处理程序通过不同的地址读取数 据线上的状态,判断哪个按键被按下。本实验采 用中断式实现用户键盘接口。������
⑶ 电路原理������
������
EMBEST EduKit-III教学电路中,通过芯片ZLG7290控制共 阳极八段数码管。键盘动作由ZLG7290检测,当键盘按下时,芯 片检测到后在INT引脚产生中断触发电平通知处理器。
相关文档
最新文档