嵌入式控制系统实验-第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 实验项目名称:汇编指令实验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
嵌入式系统设计实验报告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汇编语言编程实验一实验目的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. 掌握嵌入式系统的基本原理和开发流程。
2. 熟悉嵌入式开发工具和环境。
3. 熟练使用C语言进行嵌入式编程。
4. 学会调试和优化嵌入式程序。
三、实验内容本次实训课程共安排了五个实验,以下是每个实验的具体内容和实验步骤:实验一:使用NeoPixel库控制RGB LED灯带1. 实验目的:学习使用NeoPixel库控制RGB LED灯带,实现循环显示不同颜色。
2. 实验步骤:(1)搭建实验平台,连接NeoPixel LED灯带。
(2)编写程序,初始化NeoPixel库,设置LED灯带模式。
(3)通过循环,控制LED灯带显示不同的颜色。
实验二:使用tm1637库控制数码管显示器1. 实验目的:学习使用tm1637库控制数码管显示器,显示数字、十六进制数、温度值以及字符串,并实现字符串滚动显示和倒计时功能。
2. 实验步骤:(1)搭建实验平台,连接tm1637数码管显示器。
(2)编写程序,初始化tm1637库,设置显示模式。
(3)编写函数,实现数字、十六进制数、温度值的显示。
(4)编写函数,实现字符串滚动显示和倒计时功能。
实验三:使用ds18x20库和onewire库读取DS18B20温度传感器的数据1. 实验目的:学习使用ds18x20库和onewire库读取DS18B20温度传感器的数据,并输出温度值。
2. 实验步骤:(1)搭建实验平台,连接DS18B20温度传感器。
(2)编写程序,初始化ds18x20库和onewire库。
(3)编写函数,读取温度传感器的数据,并输出温度值。
实验四:使用ESP32开发板连接手机热点,并实现LED1作为连接指示灯1. 实验目的:学习使用ESP32开发板连接手机热点,并通过LED1指示灯显示连接状态。
嵌入式ARM键盘接口和七段数码管的控制实验
实验三键盘接口和七段数码管的控制实验一、实验目的1. 学习4X4键盘的与CPU的接口原理2. 掌握键盘芯片HD7279的使用,及8位数码管的显示方法;二、实验内容1. 通过4X4按键完成在数码管上的各种显示功能,以及LCD上显示。
三、实验设备1.EL-ARM-830+教学实验箱,PentiumII以上的PC机,仿真调试电缆。
2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。
四、实验原理键盘和7段数码管的控制实验,是通过键盘的控制芯片HD7279A来完成的。
它的信号线及控制线连接到S3C2410上,驱动线直接连到8位共阴的7段数码管上。
由于其芯片的接口电压是5V的,而S3C2410的接口电压是3.3V,所以,HD7279A的信号、控制线经过CPLD 把电压转换到3.3V,然后送入CPU中。
HD7279是一片具有串行接口的可同时驱动8位共阴式数码管或独立的LED的智能显示驱动芯片。
该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示键盘接口的全部功能。
内部含有译码器可直接接受BCD码或16进制码并同时具有两种译码方式。
此外还具有多种控制指令如消隐、闪烁、左移、右移、段寻址等,具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。
HD7279在与S3C2410接口中,它使用了4根接口线。
片选信号#CS(低电平有效),时钟信号CLK,数据收发信号DATA,中断信号#KEY(低电平送出),EL-ARM-830+实验箱与其的接口中,使用了三个通用I/O接口,和一个外部中断,实现了与HD7279A的连接,S3C2410的外部中断接HD7279的中断#KEY,三个I/O口分别与HD7279A的其他控制、数据信号线相连。
HD7279的其他管脚分别接4X4按键和8位数码管。
当程序运行时,按下按键,平时为高电平的HD7279A的#KEY就会产生一个低电平,送给S3C2410的外部中断5请求脚,在CPU中断请求位打开的状态下,CPU会立即响应外部中断5的请求,PC指针就跳入中断异常向量地址处,进而跳入中断服务子程序中,由于外部中断4/5/6/7使用同一个中断控制器,所以,还必须判断一个状态寄存器,判断是否是外部中断5的中断请求,当判断出是外部中断5的中断请求,则程序继续执行,CPU 这时,通过发送#CS片选信号选中HD7279A,再发送时钟CLK信号和通过DATA线发送控制指令信号给HD7279A,HD7279A得到CPU发送的命令后,识别出该命令,然后,扫描按键,把得到键值回送给CPU,同时,在8位数码管上显示相关的指令内容,CPU在得到按键后,有时,程序还会给此键值一定的意义,然后再通过识别此按键的意义,进而进行相应的程序处理。
成都理工嵌入式实验报告
int data[10];
fd =open(DEVICE_NAME ,O_RDWR);
if(fd==-1)
{
printf("err");
}
else{
buf[0]=0x22;
while(1)
{
read(fd,buf,1);
if(buf[0]!=pre_scancode)
{
if(buf[0]!=0xff)
{
printf("key=%x\n",buf[0]);
fd2 = open(DEVICE_NAME2, O_RDWR);
printf("fd = %d\n", fd2);
if(fd2 == -1)
{
}
else
{
data[0]=0x00;
write(fd2,data, 1);
printf("close keypad_driver test\n");
}
}
实验三 网络数据传输实验
1.实验题目及要求
1.1实验题及目的
实验题目:嵌入式linux网络编程
实验目的:
熟悉linux的TCP/IP操作函数;
掌握linux的编程方法;
1.2 实验要求
要求:实现上位机(PC,ubuntu)串口2与实验板(ARM,嵌入式linux)的TCP数据通信。该程序包括服务器端程序(sever)和客户端程序(client)。Ubuntu上运行服务器端程序(sever),ARM实验板上运行客户端程序(client)。传输模拟转数字信号并存入文件。
perror("accept");
arm嵌入式实验报告范文嵌入式系统实验报告范文[共19页]
arm嵌入式实验报告范文嵌入式系统实验报告范文[共19页]实验一系统认识实验一、实验目的学习Dais软件的操作,熟悉程序编写的操作步骤及调试方法。
二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套。
三、实验内容编写程序,将80h~8Fh共16个数写入单片机内部RAM的30h~3Fh空间。
四、实验步骤运行Dais软件,进入集成开发环境,软件弹出设置通信端口对话框(如图2-1-1),请确保实验装置与PC正确连接,并已打开实验装置电源,使其进入在待命状态。
这里选择与实验装置实际相连的通信端口,并单击“确定”。
如通信正确则进入Dais软件主界面,否则弹出“通信出错”的信息框(如图2-1-2),请检查后重试。
图2-1-1 设置通信端口对话框图2-1-2 通信错误信息框通信成功后,单击菜单栏“设置”→“仿真模式”项打开对话框,选择需要设置型号、程序/数据空间。
这里我们将型号设置为“MCS-51实验系统”,外部数据区设置为“系统RAM”,用户程序区设置为“片外(EA=0)”,如图2-1-3所示,最后单击“确定”按钮保存设置。
图2-1-3 设置工作方式对话框工作方式设置完毕后,单击菜单栏“文件”→“新建”项或按Ctrl+N组合键(建议单击工具栏“”按钮)来新建一个文件,软件会出现一个空白的文件编辑窗口。
在新窗口中输入程序代码(A51\2_1.ASM):ORG0000HLJMPMAINORG0100HMAIN:MOVR1,#30H;片内RAM首地址MOVA,#80H;写入数据初值MOVR7,#16;循环变量INCR1;地址增量INCA;数据+1DJNZR7,LOOP1;循环变量-1,不为0继续SJMP$;结束END单击菜单栏“文件”→“保存”项(建议单击工具栏“”按钮)保存文件。
若是新建的文件尚未命名,系统会弹出文件保存对话框(如图2-1-4),提示用户选择文件保存的路径和文件名,再单击“保存”按钮。
嵌入式系统实验二-LED控制实验
《嵌入式系统》课程实验报告学生姓名:指导教师:记分及评价:一、实验名称LED控制实验二、实验目的掌握利用S3C2410X芯片地址总线扩展到I/O来驱动LED显示;了解ARM芯片中利用总线扩展I/O口的使用方法。
三、实验内容编写程序,控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:LED1亮->LED2亮->LED3亮->LED4亮>LED1灭>LED2灭->LED3灭>LED4灭->全亮->全灭,如此反复。
四、实验原理片选信号在接入74HC573前经过了如下处理:LE信号的产生:向LED写入数据LED连接图五、实验结果超级终端上显示一下信息:六、练习自己编写程序使数码管以不同的显示方式显示。
显示方式:用LED1、LED2、LED3、LED4依次显示00F9~00F6-00F6~00F9,然后依次显示00FE~00F0-00F0~00FE。
#include "2410lib.h"#define rCPLDLEDADDR (*(volatile unsigned char*)0x21180000)void led_on(void){int i,nOut;nOut = 0xFF;rCPLDLEDADDR = nOut & 0xF9;for(i = 0; i < 500000; i++);rCPLDLEDADDR = nOut & 0xF6;for(i = 0; i < 500000; i++);rCPLDLEDADDR = nOut & 0xF6;for(i = 0; i < 500000; i++);rCPLDLEDADDR = nOut & 0xF9;for(i = 0; i < 500000; i++);}void led_off(void){int i,nOut;nOut = 0xF0;rCPLDLEDADDR = nOut | 0xFE;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xFC;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF8;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF0;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF0;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF8;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xFC;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xFE;for(i = 0; i < 100000; i++); }void led_on_off(void){int i;rCPLDLEDADDR = 0xF0;for(i = 0; i < 500000; i++);rCPLDLEDADDR = 0xFF;for(i = 0; i < 500000; i++);void led_test(void){uart_printf("\n Expand I/O (Diode Led) Test Example\n");uart_printf(" Please Look At The LEDS \n");led_on();led_off();led_on_off();delay(20000);uart_printf(" End.\n");}。
单片机应用实验报告 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()
{
嵌入式微机系统数码管显示实验报告
码管显示程序设计1.实验目的(1)了解数码管的显示原理;(2)掌握JX44B0中数码显示的编程方法。
2.实验内容设计LED数码管显示程序,要求六位LED数码管滚动显示0~9数字字符以及两至三个固定的英文单词。
3.实验设备(1)硬件:JX44B0教学实验箱、PC机;(2)软件:PC机操作系统Windows 98(2000\XP)+ADT IDE集成开发环境。
4.实验原理(1)LED显示原理发光二极管数码显示器简称LED显示器。
LED显示器具有耗电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点,目前广泛应用于嵌入式系统中。
7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
一般共阴极可以不需外接电阻,但共阳极接法中发光二极管必须外接电阻。
LED的结构及连接图见图1.1。
图1.1 LED结构及连接图当选用共阴极的LED显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。
因此要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制LED的显示,此数据称为字符的段码。
字符0、1、2…F与LED码段A、B、C…F以及DP(小数点)的关系如表5-1所示:表1.1 LED字符与码段对应表字符DP G F E D C B A 段码(共阴)段码(共阳)0 0 0 1 1 1 1 1 1 3FH C0H1 0 0 0 0 0 1 1 0 06H F9H2 0 1 0 1 1 0 1 1 5BH A4H3 0 1 0 0 1 1 1 1 4FH B0H4 0 1 1 0 0 1 1 0 66H 99H共阳的LED,被选中时的段为低电平有效.熄灭的段码为FFH。
本次试验系统中采用的是共阳极接法。
(2)LED显示接口LED显示器的接口一般有静态显示与动态显示接口两种方式1)静态显示LED数码管采用静态接口时,共阴极或共阳极点连接在一起接地或接高电平。
数码管和按键ppt课件
1.数码管及其编程 2.按键及其编程
1
1.数码管
1.1 数码管介绍
数码管其实就是按一定顺序排列光二极管,有规律的点亮就可以显示出来特定的符号。一般使 用数码管显示0~9和A~F。共阴极的数码管码表如下图。
3
1.2 学习数码管实验电路
8
编写第三个程序(动态显示) 程序参考实验讲义。
9
2 按键学习
开发板上的独立按键电路
10
矩阵键盘
本实验中,仅介绍独立按键,矩阵键盘需要下来自己学习。
11
按键的去抖
当我们按下按键时,并不是一下子就从打开 变成了闭合状态,而是会产生抖动,如下图 所示。
12
13
此课件下载可自行编辑修改,供参考! 感谢您的支持,我们努力做得更好!
4
可以看到,开发板上的数码管电路结合了两个锁存器,这样做的目的是为 了节省I/O口。如果单纯做数码管显示电路,是可以去掉锁存器的,但是因为开 发板上的元器件太多,所以有必要使用锁存器来拓展I/O口。
该电路使用单片机的P0口以及P2.6和P2.7来驱动数码管,P2.6和P2.7分别 控制两个锁存器的锁存端,定义P2.6为DULA,连接在左边的锁存器上,这个锁 存器主要用来控制数码管的每个段即a~g和dp。而P2.7定义为WELA,连接在右 面的锁存器上,这个锁存器的功能是选择是哪个数码管显示。因为使用的是共阴 极数码管所以哪位为低时那个数码管就显示。例如首先给P0输出0xff并使左边的 锁存器所存,然后给P0输出0xfe,并使右边的锁存器所存此时第一个数码管就 会全亮,而其他的数码管不亮。
5
1.3 编写数码管程序
首先,新建一个工程,编写第一个程序如下图。
6
数码管显示按键键号实验 单片机实验报告
数码管显示按键键号实验单片机实验报告数码管显示按键键号实验一.实验目的1.熟悉数码管的功能和使用。
2.熟悉延时子程序的编写和使用。
3.熟悉独立按键的使用和编程方法。
二.实验仪器计算机、Keil 编程环境、普中下载软件、单片机开发实验仪。
三.实验原理与内容P0 口做输出口,接一个共阳极数码管,要求循环显示。
共阳极数码管字形表同上一实验。
独立按键为 K1;K8 接 P2 口。
四 .实验线路及原理五五 .注意事项 1.安装实验仪时,先接通讯串口线,再开电源开关。
2.实验过程中,在进行接插线操作时,必须先关闭电源。
六 .实验步骤1、主机连线说明:JP10单片机 0 P0 口(8 8 位)JP3共阳极数码管JP11单片机 2 P2 口(8 8 位)JP58 8 个独立按键七 .实验步骤1.打开 Keil 编程软件编写程序,并进行汇编产生 HE_ 文件。
(1)流程图(2)源程序ORG 0000HLJMP MAIN; 初始地址 0000H 跳转 MAI 程序 ORG 0030HMAIN:MOV SP,#60H; 赋值 SP=60H MOV A,P2;A=P2 CJNE A,#0FFH,LP3 ;ane;FFH 跳转 LP3LJMP LP1; 跳转 LP1 LP2:LCALL DEY10; 调用 DEY10 延时子程序MOV A,P2; 赋值 A=P2 CJNE A,#0FFH,LP3 ;Ane;FFH 时跳转 LP3 LJMP LP1; 跳转 LP1 LP3:MOV R3,#1;R3=1MOV R2,#8;R2=8 LP4:RRC A;A 带进位循环右移JNC LP5; 无进位跳转 LP5 INC R3;R3 加一 DJNZ R2,LP4;R2 减一ne;0 转跳转 LP4 LJMP LP1; 跳转 LP1 LP5:MOV A,P2;A=P2CJNE A,#0FFH,LP5 ;Ane;FFH 跳转 LCALL DISPLAY ; 调用LP1:LJMP MAIN; 跳转 DISPLAY:MOV A,R3 MOV DPTR,#500H ; 将数组首地址赋给数据指针寄存器 MOVC A,@A+DPTR ; 根据 R3 的值取第几个数据 MOV P0,A ;P0=A RET DEY10: MOV R6,#20__MOV R7,#0 DEY11: DJNZR7,DEY11DJNZR6,DEY11; 执行256 _____20__次后返回调用处RETdey1: MOV R5,#40DEYY1:LCALL DEY10; 调用延时子程序 DEY10DJNZ R5,DEYY1;256 _____20__ _____40RET; 返回调用处ORG 500H; 数组从 500H 开始存储 TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH END 2.点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。
嵌入式键盘控制实验
嵌入式系统键盘控制实验日期:报告分:一、实验目的1.学习键盘及LED 驱动原理。
2.掌握ZLG7289 芯片的使用方法。
二、实验内容通过ZLG7289 芯片驱动17 键的键盘和8 个共阴极LED,将按键值在LED 上显示出来。
三、实验步骤1.新建工程2.定义ZLG7289 寄存器(ZLG7289.h)#define ZLG7289_CS (0x20) //GPB5#define ZLG7289_KEY (0x10) //GPG43.编写ZLG7289 驱动函数图2-2 ZLG7289 复位图2-3 读取键值4.定义键盘映射表unsigned char KeyBoard_Map[]={4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//64 键值映射表,通过查找键盘映射表来确定键盘扫描码对应的按键值5.定义键值读取函数,流程图如图2-4 所示图2-4 键值读取函数6.编写主函数,将按键值在数码管上显示,流程图如图2-5 所示。
图2-5 主函数四、实验主要过程截图:添加LCD320.H和lcd320.c文件实验结果拍照:五、实验关键代码(有注释,最好有流程图)#include"uhal.h"#include"keyboard.h"#include"zlg7289.h"#include"44b.h"#include"LCD320.H"#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihostingextern int Zlg7289SIOBand;extern int Zlg7289SIOCtrl;int main(void){U32 key;ARMTargetInit(); //开发版初始化LCD_Init();LCD_ChangeMode(DspTxtMode);//转换LCD显示模式为文本显示模式Uart_Printf("\nArm Target Init OK.");Zlg7289_Reset();//zlg7289复位while(1){ key=GetKey();//得到按键值if(key==1) LCD_printf("/ \n");if(key==2) LCD_printf("* \n");if(key==3) LCD_printf("- \n");if(key==4) LCD_printf("7 \n");if(key==5) LCD_printf("8 \n");if(key==6) LCD_printf("9 \n");if(key==7) LCD_printf("+ \n");if(key==8) LCD_printf("4 \n");if(key==9) LCD_printf("5 \n");if(key==10) LCD_printf("6 \n");if(key==11) LCD_printf("1 \n");if(key==12) LCD_printf("2 \n");if(key==13) LCD_printf("3 \n");if(key==14) LCD_printf("Enter \n");if(key==15) LCD_printf("0 \n");if(key==0) LCD_printf("NumLock \n");Delay(1);ZLG7289_ENABLE();//使zlg7289占有同步串口Delay(10);//延时WriteSDIO(ZLG7289_CMD_DATA0|0);//数码管以方式0译码,第一个数码管亮WriteSDIO(key%10);//显示个位Delay(3000);//延时if(key>9){//键值大于9显示十位WriteSDIO(ZLG7289_CMD_DATA0|1);//发送十位数据WriteSDIO((unsigned char)(key/10));Delay(1);WriteSDIO(ZLG7289_CMD_HIDE);//使一、二两位数码管显示WriteSDIO(3);}else{//键值小于10不显示十位WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示WriteSDIO(1);}ZLG7289_DISABLE();//zlg7289放弃同步串口控制权}return 0;}六、遇到的问题及解决方法每次做实验都是要改代码。
嵌入式控制系统综合实验
嵌入式数码管实验报告
一、实验目的1. 了解数码管的工作原理和特性;2. 掌握嵌入式系统控制数码管显示的方法;3. 培养实际操作能力和团队协作精神。
二、实验原理数码管是一种常见的显示器件,由若干个发光二极管(LED)组成。
根据LED的连接方式,数码管可分为共阴极和共阳极两种类型。
共阴极数码管的阴极连接在一起,阳极分别连接到各个LED;共阳极数码管则相反。
在嵌入式系统中,通常使用单片机(如51单片机、STM32等)控制数码管显示。
通过向数码管发送相应的段码和位选码,可以控制数码管显示不同的字符和数字。
三、实验环境1. 单片机开发板(如STC89C52RC、STM32F103等);2. 数码管(共阴极或共阳极);3. 连接线;4. 下载器(如STC-ISP、JTAG等);5. 仿真软件(如Proteus、Keil等)。
四、实验内容1. 硬件连接将数码管与单片机开发板相连,具体连接方式如下:(1)共阴极数码管:将数码管的阴极连接到单片机的地(GND);(2)共阳极数码管:将数码管的阳极连接到单片机的电源(VCC);(3)数码管的各个段(a-g)分别连接到单片机的I/O口;(4)数码管的位选(DP、COM1、COM2等)分别连接到单片机的I/O口。
2. 软件编程编写C语言程序,实现数码管显示功能。
以下为共阴极数码管显示数字0-9的示例代码:```c#include <reg51.h>#define DATAPORT P0 // 数据端口#define BITSELECT P2 // 位选端口void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 120; j++);}void display(unsigned char code num) {switch (num) {case 0: DATAPORT = 0x3F; break; // 显示数字0case 1: DATAPORT = 0x06; break; // 显示数字1// ...(其他数字的显示)case 9: DATAPORT = 0x5B; break; // 显示数字9default: DATAPORT = 0xFF; break; // 无效数字,显示全灭}}void main() {BITSELECT = 0x01; // 选择第一个数码管display(0); // 显示数字0delay(1000);BITSELECT = 0x02; // 选择第二个数码管display(1); // 显示数字1delay(1000);// ...(其他数码管的显示)}```3. 仿真与调试使用仿真软件(如Proteus、Keil等)对程序进行仿真和调试,观察数码管显示效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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引脚产生中断触发电平通知处理器。