单片机原理与应用实验六_按键识别数码管显示实验

合集下载

单片机数码管实验报告

单片机数码管实验报告

单片机数码管实验报告单片机数码管实验报告引言:单片机作为一种重要的嵌入式系统,被广泛应用于各个领域。

在本次实验中,我们将探索单片机与数码管的结合,通过编程控制数码管的显示,实现不同的功能。

本文将详细介绍实验的背景、目的、方法和结果,并对实验过程中遇到的问题进行讨论和总结。

一、实验背景数码管是一种常见的输出设备,用于显示数字和字母等信息。

而单片机则是一种集成了微处理器、存储器和输入输出接口等功能的芯片,具有高度集成、灵活性强的特点。

将单片机与数码管结合起来,可以实现对数字的显示和控制,为实际应用提供了很大的便利。

二、实验目的本次实验的目的是通过编程控制单片机,实现对数码管的显示和控制。

具体包括以下几个方面:1. 学习单片机的基本原理和编程方法;2. 掌握数码管的工作原理和接口电路;3. 理解数码管的编码方式和显示原理;4. 实现基本的数码管显示功能,如显示数字、字母、符号等;5. 探索数码管的扩展应用,如时钟、计时器等。

三、实验方法1. 实验器材准备:本次实验所需的器材包括单片机开发板、数码管、连接线等。

2. 实验步骤:(1)搭建实验电路:将数码管与单片机开发板连接,并根据实验要求进行接线。

(2)编写程序:使用C语言编写程序,通过单片机的GPIO口控制数码管的显示。

(3)下载程序:将编写好的程序下载到单片机开发板上。

(4)实验验证:通过观察数码管的显示情况,验证程序的正确性。

四、实验结果经过实验验证,我们成功实现了对数码管的显示和控制。

通过编写不同的程序,我们可以实现以下几种功能:1. 显示数字:通过控制数码管的不同段点亮,可以显示0-9的数字。

2. 显示字母:通过控制数码管的不同段点亮,可以显示A-Z的字母。

3. 显示符号:通过控制数码管的不同段点亮,可以显示一些常见的符号,如"+"、"-"、"*"等。

4. 显示动画:通过快速切换数码管的显示内容,可以实现简单的动画效果,如闪烁、滚动等。

单片机控制装置与调试任务六 数码管显示应用

单片机控制装置与调试任务六 数码管显示应用

该数组共有5个元素,每个元素由不同的下标表示,分别为buffer[0],buffer[1],buffer[2],buffer[3]和buffer[4]。
为了稳定发光,再延时一段时间,之后加人熄灭数码管进行消隐,主要防止显示有拖尾现象。
{ cs1=0;cs2=1;
//选中段码锁存IC
for(i=0;i<9;i++)
效,然后送数据,先送段选,然后再送位选,最后CP脉冲高电平使的
数据输出。
2.动态扫描的基本流程 以从高位到低位扫描显示为例, 动态扫描的基本流
程是: (1)送段码
①送最高位的段码到总线。
②拉低cs1,置位cs2。 ③用wr线发送锁存脉冲。 (2)送位码 ①送第七个通道(Q8)位选数据到总线。 ②拉低cs2,置位cs1。 ③同样用wr线发送锁存脉冲。第七个通道(Q8)导通, 第一位数码管点亮。
/例* 8如位,数一码个管3从位左数到字右变依量次tem显p示要“D在n0高L,阻ED1态,七2段,数3码,管4,显×↑,示5其,“6,百7、”十八HH、个个数”字各的个C语位××言上程的序数字*/ 。无无输输出出
port=tab[disbuf[i]];wr=1;wr=0;
//送段码,锁存数据
图5-1所示为常见的各种数码管的外形。
{ while(1)
//while循环
disbuf[1]=tab[1];
//分别为"0、1、2、3、4、5、6、7"
(2) 定义共阳极字形编码表(数字0~9)
在建立数组的时候,注意字型码的排列次序,段码对表头的偏移位置就是该数值的段码,这种排列方法很便于显示数据
因此可将LED各段码与数据位建立如表4-1所示的对应关系。

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

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

单片机实验报告信息处理实验实验二矩阵键盘专业:电气工程及其自动化指导老师:***组员:明洪开张鸿伟张谦赵智奇学号: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单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。

单片机原理及应用A实验报告-数码管、键盘动态扫描

单片机原理及应用A实验报告-数码管、键盘动态扫描
TH0 = 0xff;
TF0 = 0x8f;
ge = cnt%10;
shi = cnt%100/10;
bai = cnt%1000/100;
qian = cnt%10000/1000;
/*数码管的扫描,显示四位数值*/
P1 = 0xff;
P2 = wei[0];
P1 = num[ge];
delay(1);
{
delay(1);
if(P35 == 0)
{
cnt = cnt*10 + 9;
if(WEI <= 1000)
WEI = WEI*10;
else
{
WEI = 1;
cnt = 0;
}
}
}
else if(P36 == 0)//加法
{
delay(1);
if(P36 == 0)
{
dat = cnt;
cnt = 0;
数码管、键盘动态扫描
一、实验目的
1、学习实验系统的基本操作,了解在实验系统中进行程序设计、仿真和调试的操作方法和步骤;
2、熟悉Proteus的基本仿真功能;
3、熟悉动态扫描的思想以及矩阵键盘的扫描方法。
二、实验原理
1、数码管的动态扫描利用的是人的视觉暂留效应也称“余辉效应”(人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”)。本来在同一时间里只能控制一个数码管显示,却让人产生几个数码管是同时显示的错觉。实现方法为在很短的时间内切换不同的数码管显示对应的数字。
图(3)实物连接图
图(4)实物工作图
五、体会

单片机实验报告——LED数码管显示实验

单片机实验报告——LED数码管显示实验

单⽚机实验报告——LED数码管显⽰实验(此⽂档为word格式,下载后您可任意编辑修改!)《微机实验》报告LED数码管显⽰实验指导教师:专业班级:姓名:学号:联系⽅式:⼀、任务要求实验⽬的:理解LED七段数码管的显⽰控制原理,掌握数码管与MCU的接⼝技术,能够编写数码管显⽰驱动程序;熟悉接⼝程序调试⽅法。

实验内容:利⽤C8051F310单⽚机控制数码管显⽰器基本要求:利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。

提⾼要求:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:yyyy (年份)mm.dd(⽉份.⽇).asm;Description: 利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。

;Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000H ;复位⼊⼝AJMP MAINORG 000BH ;定时器0中断⼊⼝AJMP TIME0MAIN: ACALL Init_Device ;初始化配置MOV P0,#00H ;位选中第⼀个数码管MOV R0,#00H ;偏移指针初值CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#06HMOV TL0,#0C6H ;赋初值,定时1sLOOP: MOV A,R0ADD A,#0BH ;加偏移量MOVC +PC ;查表取,段码MOV P1,A ;段码给P1显⽰SETB TR0 ;开定时LOOP1: JNB PSW.1,LOOP1 ;等待中断CLR PSW.1INC R0 ;偏移指针加⼀CJNE R0,#0AH,LOOP3MOV R0,#00H ;偏移指针满10清零AJMP LOOP ;返回DB 0FCH,60H,0DAH,0F2H,66H ;段码数据表:0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H; 5、6、7、8、9 ;***************************************************************** ; 定时器0中断;***************************************************************** TIME0: SETB PSW.1 ;标志位置⼀MOV TH0,#06H ;定时器重新赋值MOV TL0,#0C6HLOOP3: CLR TR0 ;关定时RETI;***************************************************************** ;初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 -Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 -Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend提⾼部分:;*********************************************************;Filename: shumaguan2.asm;Description:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:; 2012 (年份); 12.07(⽉份.⽇); 12.34(⼩时.分钟);Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000HAJMP MAINORG 000BHAJMP TIME0MAIN: ACALL Init_DeviceMOV R0,#00H ;⽤于位选MOV R1,#00H ;⽤于段选MOV R2,#22H ;置偏移量,⽤于控制模式MOV R4,#8MOV R5,#250CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#0FFHMOV TL0,#0C0H ;定时器赋初值1msBACK: MOV P0,R0 ;位选MOV A,R0ADD A,#40H ;选下⼀位MOV R0,AMOV A,R1ADD A,R2 ;加偏移量MOVC +PC ;查表取段码MOV P1,A ;段码给P1显⽰LOOP: SETB TR0 ;开定时HERE: JNB PSW.1,HERE ;等待中断CLR PSW.1DJNZ R5,BACKMOV R5,#250DJNZ R4,BACKMOV R4,#8 ;循环2000次(2s)MOV A,R2ADD A,#04H ;偏移量加04H,到下⼀模式段码初值地址 MOV R2,ACJNE R2,#2EH,LOOP2MOV R2,#22H ;加三次后偏移量回到初值LOOP2: AJMP BACK ;返回进⼊下⼀模式;段码数据表:DB 0DAH,60H,0FCH,0DAH ; 2102DB 0E0H,0FCH,61H,60H ; 701. 1DB 66H,0F2H,0DBH,60H ; 432. 1;*****************************************************************; 定时器0中断;***************************************************************** TIME0: MOV TH0,#0FFH MOV TL0,#0C0HCLR TR0SETB PSW.1INC R1 ;偏移指针加⼀CJNE R1,#04H,LOOPMOV R1,#00H ;偏移指针满04H清零RETI;***************************************************************** ; 初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Open-Drain, Digital; P0.3 - Unassigned, Open-Drain, Digital; P0.4 - Unassigned, Open-Drain, Digital; P0.5 - Unassigned, Open-Drain, Digital; P0.6 - Unassigned, Open-Drain, Digital; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Open-Drain, Digital; P1.1 - Unassigned, Open-Drain, Digital; P1.2 - Unassigned, Open-Drain, Digital; P1.3 - Unassigned, Open-Drain, Digital; P1.4 - Unassigned, Open-Drain, Digital; P1.5 - Unassigned, Open-Drain, Digital; P1.6 - Unassigned, Open-Drain, Digital; P1.7 - Unassigned, Open-Drain, Digital; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital; P2.2 - Unassigned, Open-Drain, Digital; P2.3 - Unassigned, Open-Drain, Digitalmov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend六、程序测试⽅法与结果、软件性能分析软件调试总体截图:基础部分:软件运⾏时,我们发现P0端⼝为00H,P1端⼝以依次为FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H。

独立按键识别-单片机原理-实验报告

独立按键识别-单片机原理-实验报告

宁德师范学院计算机系
实验报告
(2014—2015学年第 2学期)
课程名称单片机原理
实验名称独立按键识别
专业计算机科学与技术(软工)年级 2012级
学号 B2012103145 姓名冯武
指导教师杨烈君
实验日期 2015.5.27
实验步骤、实验结果及分析:
1 实验步骤:
1、使用Proteus ISIS 7 Professional
应用程序,建立一个.DSN文件
2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。

3、构建仿真电路
图1 按键识别1、2
图2 按键识别3
图3按一下暂停
图4归零
图5时钟调整
电路图
注:1、报告内的项目或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日内。

单片机数码管显示实验报告

单片机数码管显示实验报告

单片机数码管显示实验报告篇一:单片机应用实验报告 2键盘、LED 数码管显示实验西华大学实验报告(理工类)开课学院及实验室:机械工程与自动化学院计算机机房实验时间 : 2014年 5月20 日一、实验目的二、实验内容三、实验电路四、实验程序#includereg52.hsbit key0=P2 ;sbit key1=P2 ;sbit key2=P2 ;sbit red=P1 ;sbit yell=P1 ;sbit gre=P1 ;sbit LED1=P2 ;sbit LED2=P2 ;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;a0;a--)for(b=110;b0;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(){delayms(5);P0=dispcode[num];LED1=0;LED2=1;delayms(5);}int main(){init();while(1){judge();xianshi();}return 0;}五、实验步骤六、附录篇二:单片机实验两位数码管显示报告一、实验目的1、在之前单键实验和中断控制数码管“静态”显示实验的基础上,把单键判断、数码管显示和中断结合起来编写中断程序实现单键控制一位数码管;2、在实现控制一位数码管显示的基础上用单键控(转载于: 池锝网:单片机数码管显示实验报告)制两位数码管显示。

单片机原理及应用实验报告

单片机原理及应用实验报告

单片机原理及应用实验报告一、引言单片机(Microcontroller Unit,简称MCU)是一种集成电路芯片,内部集成了微处理器、存储器、输入输出接口和定时器等功能模块,广泛应用于各种电子设备和控制系统中。

本实验报告将介绍单片机的基本原理以及其在实际应用中的实验。

二、单片机的基本原理单片机的核心是微处理器,它负责执行程序指令。

单片机的存储器包括程序存储器(Program Memory)和数据存储器(Data Memory)。

程序存储器用于存储程序指令,数据存储器用于存储数据和中间结果。

单片机通过输入输出接口与外部设备进行通信,通过定时器来控制程序的执行时间。

三、单片机的应用实验1. LED闪烁实验LED闪烁实验是单片机入门实验的经典案例。

通过控制单片机的输出口,周期性地改变LED的状态,从而实现LED的闪烁效果。

这个实验可以帮助初学者了解单片机编程的基本概念和操作。

2. 温度测量实验温度测量实验可以通过连接温度传感器和单片机的输入口,实时地获取环境温度,并通过数码管或LCD显示器来显示温度数值。

这个实验可以帮助学生掌握单片机输入输出口的使用方法,以及模拟信号的处理和显示。

3. 蜂鸣器控制实验蜂鸣器控制实验可以通过连接蜂鸣器和单片机的输出口,实现对蜂鸣器的控制。

通过编写程序,可以使蜂鸣器发出不同的声音,如单调的蜂鸣声、警报声等。

这个实验可以帮助学生学习单片机的数字输出和PWM(脉冲宽度调制)技术。

4. 电机控制实验电机控制实验可以通过连接电机和单片机的输出口,实现对电机的控制。

通过编写程序,可以控制电机的转动方向和速度。

这个实验可以帮助学生理解单片机输出口的电流和电压特性,以及电机的控制原理。

5. 红外遥控实验红外遥控实验可以通过连接红外接收器和单片机的输入口,实现对红外遥控信号的解码和处理。

通过编写程序,可以实现对各种红外遥控器的解码和按键处理。

这个实验可以帮助学生学习单片机输入口的中断处理和红外通信原理。

控制数码管显示实训报告

控制数码管显示实训报告

一、实训目的通过本次实训,使学生了解数码管的工作原理,掌握数码管驱动电路的设计方法,学会使用单片机或PLC等微控制器实现对数码管的控制,提高学生的实际动手能力和电子技术综合应用能力。

二、实训内容1. 数码管的结构与工作原理数码管是一种用来显示数字和字母的电子显示器件,通常由多个LED灯组成。

根据LED灯的连接方式,数码管分为共阴极和共阳极两种类型。

(1)共阴极数码管:LED灯的阴极相连,阳极分别独立引出,当给阳极加上高电平时,相应的LED灯点亮。

(2)共阳极数码管:LED灯的阳极相连,阴极分别独立引出,当给阴极加上低电平时,相应的LED灯点亮。

2. 数码管驱动电路设计(1)共阴极数码管驱动电路:使用译码器、驱动器和位选信号进行驱动。

(2)共阳极数码管驱动电路:使用译码器、驱动器和位选信号进行驱动。

3. 单片机控制数码管显示(1)51单片机控制数码管显示:编写程序,通过P1口输出位选信号,通过P2口输出段选信号,实现数码管显示数字0-9。

(2)PLC控制数码管显示:编写梯形图程序,通过输入/输出模块控制数码管显示。

三、实训步骤1. 准备实验器材:数码管、单片机或PLC、电源、导线等。

2. 设计数码管驱动电路,连接电路。

3. 编写单片机或PLC程序,实现数码管显示数字0-9。

4. 调试程序,观察数码管显示效果。

5. 改进程序,实现更多功能,如显示字母、动态扫描等。

四、实训结果与分析1. 数码管驱动电路设计成功,数码管显示正常。

2. 使用51单片机控制数码管显示数字0-9,程序运行正常。

3. 使用PLC控制数码管显示数字0-9,程序运行正常。

4. 通过实训,掌握了数码管的工作原理、驱动电路设计方法以及单片机或PLC控制数码管显示的基本技能。

五、实训心得1. 在本次实训中,我对数码管的结构和工作原理有了更深入的了解,掌握了数码管驱动电路的设计方法。

2. 通过编写单片机或PLC程序,实现了数码管显示数字0-9,提高了自己的编程能力。

单片机按键与显示实验报告

单片机按键与显示实验报告

单片机原理及应用随堂实验报告学院计算机与电子信息学院专业电子信息工程班级电信11 -1班姓名温石坚学号 11034030132 指导教师左敬龙实验报告评分:_______一、实验原理及电路实验原理:在电路图中,单片机AT89C51的P1口接有一按键矩阵,P0和P2口接15个灯,P3口接一个led数码显示管。

刚开始时,电路处于扫描按键是否被按下的状态。

当有某个按键被按下时,在键盘扫描函数的作用下,会有一小段消抖动的时间。

当确定没抖动情况下,程序就会查找出是哪个按键被按下了。

之后就会执行按键功能函数。

以下是按键扫描函数(包括消抖动程序)和按键功能函数:按键扫描函数按键功能函数uchar rdkey() uchar i;{ void k(uchar n)uchar scan1,scan2,keycode,j; {P3=tab[n];P1=0x0f; if(n>=8)scan1=P1; {if((scan1&0x0f)!=0x0f) for(i=0;i<=8;i++){ {P2=led[i]; P0=0x00;delayms(30); delayms(100);scan1=P1; }}if((scan1&0x0f)!=0x0f) else{{ for(i=0;i<=n;i++)P1=0xf0; {scan2=P1; P0=led[i];P2=0xff;delayms(100); keycode=scan1|scan2; }for(j=0;j<=15;j++) }{ }if(keycode= = key_code[j]){key=j;return(key);}}}}else P1=0xff;return (16);}按键扫描函数是通过首先检查行(给P1赋值为0x0f,再将P1赋给变量scan1,用0x0f与scan1相与,可检查出第几行的按键被按下),再检查列的方法(将P1赋值为0xf0,再将P1赋给scan2,此时被按下键的那一列的值会变为0),然后再将两次检查的数按位或,最后将按位或后的那个数与组合键编码对比组合键编码,找出被按下的按键数,返回按键值。

独立按键识别-单片机原理-实验报告

独立按键识别-单片机原理-实验报告

师学院计算机系
实验报告
(2014—2015学年第 2学期)
课程名称单片机原理
实验名称独立按键识别
专业计算机科学与技术(软工)年级 2012级
学号 B2012103145 武
指导教师烈君
实验日期 2015.5.27
实验步骤、实验结果及分析:
1 实验步骤:
1、使用
Proteus ISIS 7 Professional应用程序,建立一个.DSN文件
2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。

3、构建仿真电路
图1 按键识别1、2
图2 按键识别3
图3按一下暂停
图4归零
图5时钟调整
电路图
注:1、报告的项目或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日。

单片机原理-独立按键识别-单片机原理-实验报告

单片机原理-独立按键识别-单片机原理-实验报告
宁德师范学院计算机系
实验报告
(2014—2015学年 第2学期)
课程名称单片机原理
实验名称独立按键识别
专 业计算机科学与技术(非师)
年 级12级
学号B2012102147姓名王 秋
指导教师杨烈君
实验日期2015.5.27
实验目的:
1.掌握查询式按键的原理和编程方法
2.理解按键防抖技术
实验要求:一
1.在Proteus软件中画好51单片机最小核心 电路,包括复位电路和晶振电路
应的代码
if(Key==O)
{ delay(IOOO); if(Key==0) {
Mode=(Mode+1)%2; while(Key==O);
}}if(Mo来自e==0) Led 1=0;if(Mode==1)
{
Led仁〜Led1; delay(IOOO);
}
}
void mai n()
while⑴button_Cotrol();

2.
#i nclude"reg51.h"
#defi ne uchar un sig ned char
sbit Led仁P1A0;sbit Led2=P1A1;
sbit Led3=P1A2;sbit Led4=P1A3;
sbit Key=P3A2;
uchar Mode=0;
void delay(i nt x)II定义时间间隔
7.扩展要求:通过3个按键实现时钟的调整
(KEY1模式,KEY2+,KEY3-)
实验设备(环境):
计算机、Proteus ISIS7Professio nal应用程序、Keil应用程序
实验内容:

《单片机原理及应用》实验报告

《单片机原理及应用》实验报告

本科生实验报告实验课程XXXXX学院名称XXXXXXXXXXXXXXX专业名称XXXXXXXXX学生姓名XXXX学生学号XXXXXXXXXXXX指导教师XXXXXX实验地点XXXXXX实验成绩二〇一六年四月二〇一六年六月《单片机原理及应用》实验报告摘要《单片机原理及应用》是电子科学与技术、电子信息工程、计算机科学与技术、自动控制等专业工程应用能力和创新能力培养的一门重要专业基础课。

课程重点讲授:单片机存储器体系结构、指令系统与编程技术、中断系统及应用、定时器及应用、外围设备与单片机的接口技术,单片机应用系统设计。

因为单片机这门课是一门实践性很强的课程,单纯学习课本不能掌握这门知识,必须要经过试验课程才能更加具体和深入地学会这门课。

通过试验课的学习,使学生掌握单片机技术及其在工业控制、经济建设和日常生活中的应用,培养学生实践能力、创新能力和新产品设计开发能力,为将来从事电子电器新产品设计开发,电子产品的检测和维护等工作奠定坚实的基础。

本实验板可以实现的实验内容:(1)单片机开发软件及仿真器的使用和P1口实验(2)I/O口实验(交通灯实验,温度传感器,蜂鸣器、I2C)(3)定时器实验(流水灯、交通灯、数码管等)(4)总线实验(流水灯LED、外部RAM)(5)系统扩展(包括:LCD、ADC、DAC、RAM等)(6)通信实验(RS232与计算机之间的串口实验)(7)传感器实验(1-Wire温度实验)(8)键盘实验(扫描接口)(9)电机实验(四相六线式步进电机)(10)时钟实验(RTC—PCF8563)(11)软件实验(多个数求和、排序等)(12)中断实验(外部中断、定时器、UART)本实验设计主要完成了数码管、流水灯、键盘、蜂鸣器等实验,与实验指导书结果符合,了解了部分功能的使用。

关键词:单片机 LED数码显示键盘串口第一章单片机集成开发环境应用一实验目的1.熟悉单片机集成开发软件(Keil);2.掌握单片机实验板的使用;3.掌握单片机P1口使用;二实验内容1、集成开发环境Keil介绍及开发流程Keil μVision4集成开发环境(Integrated Development Environment,IDE)是一个基于Windows的开发平台,它包含高效的源代码编辑器、项目(Project)管理器和程序生成(MAKE)工具。

单片机实验报告二-数码管显示实验

单片机实验报告二-数码管显示实验

单片机实验报告二-数码管显示实验摘要:本实验使用单片机控制数码管的显示,在实验过程中通过学习单片机的GPIO口的编程,调试程序、调节电路来达到正确的显示效果。

最终按照要求实现了单片机控制数码管的计数器。

关键词:单片机、数码管、GPIO口、计数器一、实验介绍数码管是一种介于机械仪表和液晶显示器之间的电子显示器件,广泛应用于计时器、计数器、仪表等电子产品中。

本实验旨在通过单片机控制数码管的显示来加深对GPIO口的使用和调试程序的理解,同时了解数码管的原理。

本实验主要分为两部分:数码管显示基础实验和数码管控制开关实验。

通过这两部分的实验可以了解数码管的工作原理和单片机的基本控制方式。

二、实验原理2.1 数码管的基本原理数码管显示器将数字显示为一组符号,例如“0”到“9”。

表示不同数字的符号被编码成一个数字码。

七段数码管用一个七段数码字母来表示数字,如下表所示:| 数字 | a | b | c | d | e | f | g || ---- | - | - | - | - | - | - | - || 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 || 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 || 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 || 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 || 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 || 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 || 6 | 0 | 0 | 1 | 1 | 1 | 1 | 1 || 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 || 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 || 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |通过控制数码管的七个LED灯的亮灭,可以实现不同符号显示。

数码管显示数字实训报告

数码管显示数字实训报告

一、实验目的本次实训的主要目的是让学生通过实际操作,掌握数码管的基本原理、连接方式、驱动方法以及编程技巧,能够利用数码管实现数字的显示。

通过本次实训,学生将能够:1. 理解数码管的工作原理和分类。

2. 掌握数码管的驱动电路和连接方法。

3. 学会使用编程语言控制数码管显示数字。

4. 培养动手能力和解决问题的能力。

二、实验原理数码管是一种常用的显示器件,用于显示数字、字母或其他符号。

根据发光段数的不同,数码管可以分为七段数码管和十六段数码管。

七段数码管由七个发光段组成,可以显示0-9的数字和部分字母;十六段数码管由十六个发光段组成,可以显示更多的字符。

数码管的显示原理是:通过控制各个发光段的亮与灭,来组成不同的字符。

在七段数码管中,通常将七个发光段分别命名为a、b、c、d、e、f、g,其中g段为小数点。

当某个发光段接收到高电平时,该段发光;当接收到低电平时,该段不发光。

数码管的驱动方法主要有以下几种:1. 静态驱动:每个数码管都连接到独立的驱动器上,优点是显示稳定,但需要较多的引脚和布线通道。

2. 动态驱动:多个数码管共用一组驱动器,通过轮流点亮各个数码管,实现多位数码管的显示。

优点是引脚和布线通道较少,但显示效果不如静态驱动。

三、实验器材1. 数码管(七段或十六段)2. 驱动芯片(如74HC595)3. 电阻、电容等电子元件4. 开发板(如Arduino、51单片机等)5. 编程软件(如Arduino IDE、Keil等)四、实验步骤1. 数码管识别:观察数码管的引脚排列,确定各个发光段的连接方式。

2. 驱动电路搭建:根据数码管的类型和驱动方法,搭建相应的驱动电路。

例如,使用74HC595芯片作为驱动器,连接数码管和驱动芯片。

3. 编程控制:使用编程软件编写程序,控制数码管显示数字。

程序主要包括以下内容:- 初始化驱动器;- 设置数码管的显示模式(静态或动态);- 根据需要显示的数字,计算并输出对应的段码;- 控制数码管显示。

单片机原理(按键识别 )实验报告

单片机原理(按键识别 )实验报告
while(x--); } void main() {
教育资料
.
while (1) {
if(key==0) {
delay(1000); if(key==0) {
led=~led; while(key==0); }
} } } (2)按键识别 ( 按下灭,再按闪) #include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit led=P2^6; sbit key=P2^7;
.
switch(j) { case 0 : led=0;break; case 1 : led=~led;delay(100);break; default:break; }
}
}
(3)按键识别 ( 按下数码管数值加 1) #include<reg51.h> #define uint unsigned int #define uchar unsigned char uchar code LedCode[]={ 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00}; uchar DispBuf[8]; sbit led=P2^6;
教育资料
.
if(hour>=24) {
hour=0; }
}
void main() {
uint i=2; while (1) {
if(key==0) {
delay(1000); if(key==0) {
i++; while(key==0); i=i%3;
教育资料
.
} } switch(i)

《单片机原理及应用》实验报告

《单片机原理及应用》实验报告

《单片机原理及应用》实验报告2017/2018学年第 1 学期系别计算机学院专业软件工程班级17软件工程班姓名XXXXXX学号8888888888授课老师******实验一:流水灯实验1.实验目的(1)学习编译和仿真环境使用(2)学习P3口的使用方法(3)学习延时子程序的编写2实验内容(1)通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的接口;(2)通过改变并行口输出电平控制LED灯的点亮与否,通过延时程序控制亮灯时间。

3.实验运行结果图4.源代码//流水灯实验#include<reg51.h>//包含单片机寄存器的头文件sfr x=0xb0; //P3口在存储器中的地址是b0H, 通过sfr可定义8051内核单片机//的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作/****************************************函数功能:延时一段时间*****************************************/void delay(void){unsigned char i,j;ﻩ for(i=0;i<255i++)ﻩfor(j=0;j<255j++) ﻩﻩﻩ ; //利用循环等待若干机器周期,从而延时一段时间}/***************************************** 函数功能:主函数******************************************/ void main(void){while(1){x=0xfe; //第一个灯亮ﻩﻩdelay(); //调用延时函数x=0xfd; //第二个灯亮ﻩﻩdelay(); //调用延时函数x=0xfb; //第三个灯亮delay(); //调用延时函数ﻩx=0xf7; //第四个灯亮ﻩdelay();//调用延时函数ﻩx=0xef; //第五个灯亮delay(); //调用延时函数ﻩﻩx=0xdf; //第六个灯亮ﻩdelay(); //调用延时函数ﻩx=0xbf; //第七个灯亮ﻩﻩdelay(); //调用延时函数x=0x7f;//第八个灯亮delay(); //调用延时函数}}实验二:中断实验1.实验目的(1)熟悉51单片机中断初始化编程方法。

单片机实训报告键盘和数码管显示(WORD档)

单片机实训报告键盘和数码管显示(WORD档)

单片机实训报告(一)班级:测控 9 0 1学号:姓名实验名称:键盘和数码管显示实验目的:熟悉掌握ZLG7289的功能和特性,ZLG7289芯片各引脚名称及功能和ZLG7289与微控制器的接口,ZLG7289的SPI接口和控制指令。

同时进一步熟悉掌握keil软件的操作和编程。

实验原理:ZLG7289是一款数码显示驱动和键盘扫描管理的芯片。

主要有如下的特性:1.直接驱动8位共阴式数码管或64只独立的LED;2.管理多达64只按键,自动消除抖动;3.段电流可达15mA以上,位电流可达100mA;4.具有左移、右移、闪烁、消隐、段点亮等多种功能;5.与微控制器之间采用三线SPI总线接口,占用I/O资源少。

电路主要由芯片ZLG7289、8位共阴极数码管、64键的键盘矩阵以及单片机构成。

ZLG7289的控制电路图:电路的工作原理:当ZLG7289接收到单片机发出的指令(包括纯指令)后,经过读取、分析和处理,将会在数码管上显示相对应的操作指令。

当ZLG7289检测到有效的按键时,KEY脚将从高电平变为低电平,并一直保持到按键结束。

在此期间,如果ZLG7289接收到“读键盘数据指令”,则输出当前按键的键盘代码。

ZLG7289芯片各引脚名称及功能:引脚名称说明1、2 RTCC、Vcc 接电源3、5 NC 悬空4 Vss 接地6 /CS 片选输入端,低电平时,可向其发指令或读键盘。

ZLG7289使用SPI串行总线与微控制器接口。

SPI接口SPI串行总线是Motorola公司推出的一种同步串行接口。

通常它需要四条线,就可与微控制器之间实现全双工的同步串行通讯。

SPI串行总线主要有如下的特性:1.采用主从模式(Master Slave)架构,支持多Slave模式,一般只支持单Master,Master 控制时钟。

2.采用四线,实现全双工通信。

图1 SPI接口连线示意图SPI的数据传输时序模式SPI接口定义了四种数据传输的时序模式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子信息学院
实验报告书
课程名:《单片机原理及应用实验》
题目:实验六按键识别数码管显示实验
软件+硬件实验
实验类别:【设计】
班级:电子1313
学号:26
姓名:吴限
1、实验容或题目
1)题目:按键识别数码管显示实验
2)实验容:数码管显示矩阵按键号。
2、实验目的与要求
1)实验目的:
掌握按键识别及数码管显示的实现方法。
{
for (i = 0; i < 14; i++)
{;
}
}
}
/******************蜂鸣器驱动子函数*****************/
void beep()
{
unsigned char i;
for (i = 0; i < 250; i++)
{
delayus(6);
BEEP = !BEEP; //BEEP取反
}
BEEP = 1; //关闭蜂鸣器
delayms(150); //延时
}
/******************键盘扫描子函数*********************/
unsigned char keyscan()
{
unsigned char scan1, scan2, keycode, j;
P1 = 0xf0;
2)实验要求:
通过XL2000的16位矩阵按键,在数码管上分别显示0~9,A,B,C,D,E,F。用Keil编译、Proteus仿真,代码下载到单片机实验箱上验证。
3、实验仪器
(1)PC微机1台
(2)实验箱1台
4、实验程序流程图
5、实验程序
(实验程序清单作为附件放在最后)
6、实验步骤
1)keil中C语言程序实现。
scan1 = P1;
if (scan1 != 0xf0) //判键是否按下
{
delayms(10); //延时10ms
scan1 = P1;
if (scan1 != 0xf0) //二次判键是否按下
{
P1 = 0x0f;
scan2 = P1;
keycode = scan1 | scan2; //组合成键扫描编码
unsigned char t;
while (ms--)
{
for (t = 0; t < 114; t++);
}
}
/*************x*0.14MS 延时子函数****************/
void delayus(unsigned char x)
{
unsigned char i;
while (x--)
0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,
0xc0,0x86,0x8e,0xc0};
unsigned char code key_code[] =
{
0xee, 0xed, 0xeb, 0xe7, 0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb,
for ( j = 0; j < 16; j++)
{
if (keycode == key_code[ j]) //查表得键值
{
key = j;
return (key); //返回有效键值
}
}
}
}
else
P1 = 0xff;
return (key = 16); //返回无效码
}
/*************************主函数***********************/
P13= 0xf0;
scan1 = P3;
if (scan1 != 0xf0) //判键是否按下
{
delayms(10);
scan1 = P3;
if (scan1 != 0xf0) //二次判键是否按下
{
P1 = 0x0f;
scan2 = P3;
keycode = scan1 | scan2; //组合成键扫描编码
此外主函数中的P1口也要改为P3口:void main(void)
{
P0 = 0xf7; //数码管初始显示"-"
P2 = 0xfd;//数码管显示在第二位
P3 = 0xff;
while (1)
{
keyscan();
if (key < 16) //有效键值
{
P0 = disp_code[key]; //显示键值
for (j = 0; j < 16; j++)
{
if (keycode == key_code[j]) //查表得键值
{
key = j;
return (key); //返回有效键值
}
}
}
}
else
P3 = 0xff;
return (key = 16); //返回无效码
} 即P1口换成P3口,而键编码数组是固定的,可以不变;
7、实验数据及结果
8、思考题
采用P3口控制矩阵按键输入,程序应该如何修改?
答:本实验的程序中可以不用蜂鸣器驱动线,把以下程序的sbit BEEP 要把扫描键值的函数改一下:unsigned char keyscan()
{
unsigned char scan1, scan2, keycode,j;
}
}
}
<附件>实验程序清单
#include <reg52.h>
#include <intrins.h>
sbit BEEP = P3 ^ 7; //蜂鸣器驱动线
unsigned char key;
unsigned char code disp_code[] =
{
0xf9,0xa4,0xb0,0x99,
void main(void)
{
P0 = 0xf7; //数码管初始显示"-"
P2 = 0xfd;//数码管显示在第二位
P1 = 0xff;
2)在proteus中完成电路图设计,并实现仿真。
3)硬件实验部分:
用一条8PIN数据排线,把矩阵按键部份的JP50,接到CPU部份的P1口JP44;接8位数码管的数据线。将数码管部份的数据口JP5接到CPU部份的P0口JP51;接8位数码管的显示位线。将数码管部份的显示位口JP8接到CPU部份的P2口JP52.
0xb7, 0x7e, 0x7d, 0x7b, 0x77 //键编码数组
};
char code SST516[3] _at_ 0x003b; //保留仿真器
/********************延时子函数***************/
void delayms(unsigned int ms)
{
相关文档
最新文档