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

合集下载

按键显示电路实验报告(3篇)

按键显示电路实验报告(3篇)

第1篇一、实验目的1. 熟悉按键电路的基本原理和设计方法。

2. 掌握按键电路的搭建和调试方法。

3. 了解按键电路在实际应用中的重要性。

4. 提高动手实践能力和电路分析能力。

二、实验原理按键显示电路是一种将按键输入转换为数字信号,并通过显示设备进行显示的电路。

本实验主要涉及以下原理:1. 按键原理:按键通过机械触点实现电路的通断,当按键被按下时,电路接通,产生一个低电平信号;当按键释放时,电路断开,产生一个高电平信号。

2. 译码电路:将按键输入的信号转换为相应的数字信号,以便后续处理。

3. 显示电路:将数字信号转换为可视化的信息,如LED灯、数码管等。

三、实验器材1. 电路板2. 按键3. 电阻4. LED灯5. 数码管6. 电源7. 基本工具四、实验步骤1. 按键电路搭建(1)根据电路原理图,在电路板上焊接按键、电阻、LED灯等元器件。

(2)连接电源,确保电路板供电正常。

2. 译码电路搭建(1)根据电路原理图,在电路板上焊接译码电路所需的元器件。

(2)连接译码电路与按键电路,确保信号传输正常。

3. 显示电路搭建(1)根据电路原理图,在电路板上焊接显示电路所需的元器件。

(2)连接显示电路与译码电路,确保信号传输正常。

4. 电路调试(1)检查电路连接是否正确,确保无短路、断路等问题。

(2)按下按键,观察LED灯或数码管显示是否正常。

(3)根据需要调整电路参数,如电阻阻值、电源电压等,以达到最佳显示效果。

五、实验结果与分析1. 实验结果通过实验,成功搭建了一个按键显示电路,按下按键后,LED灯或数码管能够正确显示数字信号。

2. 结果分析(1)按键电路能够正常工作,实现电路通断。

(2)译码电路能够将按键输入转换为相应的数字信号。

(3)显示电路能够将数字信号转换为可视化的信息。

六、实验总结1. 通过本次实验,掌握了按键电路的基本原理和设计方法。

2. 提高了动手实践能力和电路分析能力。

3. 了解了按键电路在实际应用中的重要性。

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

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

该数组共有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所示的对应关系。

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

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

《单片机原理及应用》实验报告姓名:学号:班级:应用物理指导教师:日期:实验1 计数显示器一、实验目的熟悉51单片机的基本输入输出应用,掌握Proteus模块的原理图绘图方法及单片机系统仿真运行方法二、实验原理由共阴极数码管LED1和LED2、P0口、P2口,上拉电阻RP1及Vcc组成的输出电路;由按钮开关BUT、P3.7和接地点组成的输入电路,该电路在编程软件的配合下,可实现计数显示功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。

三、实验内容(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能(2)学会选择元件、画导线、修改属性等基本操作(3)学会可执行文件加载及程序仿真运行方法(4)验证计数显示器的功能四、实验要求提交实验报告并包括如下内容:电路原理图、电路原理分析、仿真运行截图及实验小结1.实验原理图2.仿真运行截图3.实验小结通过这次实验让我认识了kell和proteus软件的基本功能,学会了用kell编写程序用proteus仿真运行。

在这次实验中同时也遇到了很多问题。

比如因为第一次使用这两个软件对界面还不太熟悉,浪费了很多的时间也产生了很多错误,但之后与同学们的交流过程中,慢慢的对这两个软件有了更深入的了解,在后期仿真的时候才能得心应手的处理问题。

这个计数显示器的实验让我进一步了解了单片机与数码管的魅力,看到了电子元件的神奇之处,只要按动按键就能让数码管的数字逐次加一,这大大激发了我的学习单片机兴趣,这次实验也会成为我以后学习单片机的奠基石,因为它打开了我认识单片机的大门,让我认识到了单片机的魅力,并让我沉浸其中。

实验2 指示灯开关控制器一、实验目的学习51单片机I/O口基本输入输出功能,掌握汇编语言的编程与调试方法。

二、实验原理输入电路由外接在P1口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。

[知识]按键控制数码管和流水灯设计报告实验报告

[知识]按键控制数码管和流水灯设计报告实验报告

摘要000单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。

本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。

通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。

用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。

在硬件电路的基础上加上软件程序的控制来实现本设计。

其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。

000关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the000 Keywords: SCM, water lights, digital tubes, control system000键盘控制流水灯和数码管实验报告00目录000一设计的目的 (200)二任务描述及方案设计 (300)1. 任务描述 (300)2. 方案设计 (300)三硬件设计方案 (30)001. Msp430f149单片机的功能说明 (30)2. 显示器功能 (40)3. 复位电路 (40)4. 按键的部分 (40)5. 74HC573的特点 (4)0006. 流水灯和数码管电路原理图 (40)007. 元器件清单 (40)四程序设计方案 (50)001. 用IAR Embedded W orkbench软件编程序 (5)002. 仿真电路图 (60)五实物实验 (70)001. 实物图 (7)002. 测试结果与分析 (700)六结论 (11)000八参考文献 (16)000一、设计目的0001、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;0002、培养学生实践动手能力及独立分析和解决工程实践问题能力;003、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。

基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文

基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文

基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文本篇报告将详细介绍基于单片机的按键控制LED数码管共阴极动态显示电路的设计。

一、引言LED数码管是一种常用的数字显示器件,广泛应用于各种计数器、时钟和计时器等电子设备中。

本设计旨在利用单片机实现对LED数码管的动态显示,并通过按键控制显示的数字。

二、设计方案1.系统结构本系统采用基于单片机的数字显示方案,其中包括一个单片机、数码管显示模块和按键模块。

单片机负责接收按键输入信号,并根据输入信号控制数码管显示相应的数字。

2.系统设计(1)数码管显示模块:该模块由共阴极LED数码管组成,共阴极接地,通过接通不同的端口线来控制数码管显示不同的数字。

(2)按键模块:该模块由多个按键组成,用于用户输入指定的数字。

每个按键接一个IO脚,通过按下不同的按键,触发不同的端口输入。

(3)单片机:本设计选用51单片机作为控制核心,通过IO口与数码管显示模块和按键模块连接。

单片机根据按键输入信号的变化,对数码管进行动态显示。

3.设计过程(1)针对单片机的接线设计:将单片机的IO口分别与数码管显示模块和按键模块连接。

将数码管的共阳极接电源正极,数码管的各段(即a、b、c、d、e、f、g)接单片机的IO脚。

(2)针对单片机软件设计:设计单片机程序实现按键输入的检测和数码管动态显示的控制。

首先初始化IO口,设置按键引脚为输入端口,设置数码管引脚为输出端口。

然后循环检测按键的状态。

当检测到按键被按下时,根据按键的不同选择分别显示不同的数字。

4.功能要求(1)按下不同的按键,数码管能够显示相应的数字,实现动态显示。

(2)按键输入具有去抖功能,避免误触发。

(3)程序运行稳定,能够正确响应按键输入,显示正确的数字。

三、实验结果经过实验验证,本设计实现了按键控制LED数码管共阴极动态显示的功能要求。

按下不同的按键,数码管能够正确显示相应的数字,程序运行稳定,无误触发现象。

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

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

单片机原理实验报告实验一计数显示[目的]熟悉Proteus仿真软件,掌握单片机原理图的绘制方法【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何使用ISIS模块,学习设置图纸、选择元件、画线、修改属性等基本操作(3)了解如何加载可执行文件和运行程序仿真(4)了解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制[实验步骤](1)观察Proteus软件的基本结构,如菜单、工具栏、对话框等。

(2)Proteus中绘制电路原理图,并根据表A.1将组件添加到编辑环境中(3)在Proteus中,观察仿真结果,检查电路图绘制的正确性【实验示意图】【实验源程序】#include <reg51.h>位 P3_7=P3^7;无符号字符 x1=0;x2=0 ;无符号字符数=0;无符号字符 idata buf[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};无效延迟(int时间){整数 k,j;for(;time<0;time--)for(k=200;k>0;k--)for(j=500;j<0;j--);}无效初始化(){P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);}无效的主要(){在里面();而(1){x1=计数/10;x2=计数%10;P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);如果(P3_7==0)// {延迟(10);而(!P3_7);如果(计数==99)计数=0;别的计数=计数+1;}}}[实验结果]阐明计数器的作用是按下K1后,数码管LED1和LED2会显示按键的按下次数, LED1代表一位, LED2代表十位。

当计数器达到99时,再次按下K1键,显示值再次从0开始。

实验2指示灯开关控制器[目的]学习如何编程和调试汇编语言【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何用汇编语言编程(3)ISIS 模块中输入、编译和调试汇编程序(4)了解MCU程序控制原理,实现指示灯/开关控制器的预期功能[实验步骤]( 1 ) 在ISIS中画出电路原理图, 并在编辑环境中添加相应的元器件 .( 2 )在ISIS中编写汇编语言程序( 3 ) 利用ISIS 的汇编调试功能检查程序的语法和逻辑错误( 4 )观察仿真结果,检查程序和电路的正确性【实验示意图】【实验源程序】#include <reg51.h> 无效延迟(int时间){整数 k,j;for(;time<0;time--) {for(k=100;k<0;j--) for(j=500;j<0;j--); }}无效初始化(){P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);}无效的主要(){在里面();P1=0x00;延迟(20);P1=0xff;延迟(20);而(1){P1=P2 ;}}[实验结果]阐明点击运行,8个LED 一起闪烁3次。

单片机抢答器实训报告

单片机抢答器实训报告

一、实训背景与目的随着电子技术的飞速发展,单片机作为一种低功耗、高性能的微处理器,被广泛应用于各个领域。

为了提高学生的实践能力和创新意识,本实训课程旨在通过设计和实现单片机抢答器,让学生深入了解单片机的基本原理、接口技术以及编程方法,同时培养学生的团队合作精神和动手能力。

二、实训内容与要求本次实训要求设计并实现一个基于单片机的六路抢答器。

该抢答器应具备以下功能:1. 抢答功能:六位选手通过按下对应的按钮(K0~K5)进行抢答,系统优先识别并锁存第一个按下按钮的选手编号。

2. 显示功能:抢答成功后,在LED数码管上显示该选手的编号。

3. 锁存功能:一旦选手抢答成功,其编号将保持显示,直至主持人手动清除。

4. 提示功能:扬声器发出报警声提示主持人抢答成功。

三、实训过程与实现1. 硬件设计本实训采用AT89C52单片机作为主控芯片,外围电路主要包括以下部分:- 按键模块:六位选手分别通过K0~K5按钮进行抢答。

- 显示模块:使用LED数码管显示选手编号。

- 锁存模块:通过单片机的I/O口实现选手编号的锁存。

- 提示模块:使用扬声器发出报警声。

2. 软件设计软件设计主要涉及单片机编程,主要包括以下部分:- 主程序:初始化单片机,设置I/O口,并进入主循环。

- 抢答程序:检测按键状态,判断是否发生抢答,并执行相应的操作。

- 显示程序:根据锁存的选手编号,更新LED数码管显示。

- 提示程序:抢答成功后,通过扬声器发出报警声。

3. 系统调试在完成硬件和软件设计后,需要进行系统调试。

主要步骤如下:- 硬件调试:检查电路连接是否正确,确保各个模块能够正常工作。

- 软件调试:通过仿真软件或实际硬件进行程序调试,修正错误。

四、实训结果与分析经过一系列的硬件和软件设计、调试,最终成功实现了基于单片机的六路抢答器。

该抢答器能够满足以下要求:1. 抢答功能:能够正确识别并锁存第一个按下按钮的选手编号。

2. 显示功能:能够通过LED数码管显示选手编号。

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

单片机原理及其应用实验报告
硬件连接:
用导线将实验箱中的P1.0~P1.7分别与LED发光二极管L1~L8相连。INT0
与负脉冲相连(硬件在实验箱的具体位置可以参照文档最后面的附图)。
程序:
C语言程序
# include<regx51.h>
unsigned char STATE;
unsigned char s0;
/*---延时子程序(有参函数),t=n*10ms---*/
/*---定时器0中断程序---*/
ET0P:DEC A ;A减1
MOV TH0,#4CH
MOV TL0,#00H
RETI
END
实验现象:
可以看到用P1口所接的8路LED表示的二进制数每隔0.5s加1。
P1=P1<<1;
if(P0_1!=0|P0_0!=0)
break;
}
}
if(P0_1==0&P0_0==1)
{
P1=0x80;
for(i=1;i<=8;i++)
{delay(100);
P1=P1>>1;
if(P0_1!=0|P0_0!=1)
break;
}
}
if(P0_1==1&P0_0==0)
{
P1=0x01;
END
实验现象:
可以看到LED1大致亮1s后灭1s,如此循环。
(2)实验内容:
I/O口做输入口,一个I/O口接一个拨动开关,另一个I/O口接一个LED发光二极管,单片机读取开关的状态并通过LED显示出来。
有关说明:P0口是一组漏极开路型双向I/O口,也即地址/数据总线复用口。
对端口写“1”可作为高阻抗输入端用。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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语言程序实现。
P13= 0xf0;
scan1 = P3;
if (scan1 != 0xf0) //判键是否按下
{
delayms(10);
scan1 = P3;
if (scan1 != 0xf0) //二次判键是否按下
{
P1 = 0x0f;
scan2 = P扫描编码
电子信息学院
实验报告书
课程名:《单片机原理及应用实验》
题目:实验六按键识别数码管显示实验
软件+硬件实验
实验类别:【设计】
班级:电子1313
学号:26
姓名:吴限
1、实验内容或题目
1)题目:按键识别数码管显示实验
2)实验内容:数码管显示矩阵按键号。
2、实验目的与要求
1)实验目的:
掌握按键识别及数码管显示的实现方法。
}
BEEP = 1; //关闭蜂鸣器
delayms(150); //延时
}
/******************键盘扫描子函数*********************/
unsigned char keyscan()
{
unsigned char scan1, scan2, keycode, j;
P1 = 0xf0;
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,
0xb7, 0x7e, 0x7d, 0x7b, 0x77 //键编码数组
};
char code SST516[3] _at_ 0x003b; //保留仿真器
/********************延时子函数***************/
void delayms(unsigned int ms)
{
此外主函数中的P1口也要改为P3口:void main(void)
{
P0 = 0xf7; //数码管初始显示"-"
P2 = 0xfd;//数码管显示在第二位
P3 = 0xff;
while (1)
{
keyscan();
if (key < 16) //有效键值
{
P0 = disp_code[key]; //显示键值
{
for (i = 0; i < 14; i++)
{;
}
}
}
/******************蜂鸣器驱动子函数*****************/
void beep()
{
unsigned char i;
for (i = 0; i < 250; i++)
{
delayus(6);
BEEP = !BEEP; //BEEP取反
void main(void)
{
P0 = 0xf7; //数码管初始显示"-"
P2 = 0xfd;//数码管显示在第二位
P1 = 0xff;
while (1)
{
keyscan();
if (key < 16) //有效键值
for (j = 0; j < 16; j++)
{
if (keycode == key_code[j]) //查表得键值
{
key = j;
return (key); //返回有效键值
}
}
}
}
else
P3 = 0xff;
return (key = 16); //返回无效码
}即P1口换成P3口,而键编码数组是固定的,可以不变;
for ( j = 0; j < 16; j++)
{
if (keycode == key_code[ j]) //查表得键值
{
key = j;
return (key); //返回有效键值
}
}
}
}
else
P1 = 0xff;
return (key = 16); //返回无效码
}
/*************************主函数***********************/
7、实验数据及结果
8、思考题
采用P3口控制矩阵按键输入,程序应该如何修改?
答:本实验的程序中可以不用蜂鸣器驱动线,把以下程序的sbit BEEP = P3 ^ 7;及函数void 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,
2)在proteus中完成电路图设计,并实现仿真。
3)硬件实验部分:
用一条8PIN数据排线,把矩阵按键部份的JP50,接到CPU部份的P1口JP44;接8位数码管的数据线。将数码管部份的数据口JP5接到CPU部份的P0口JP51;接8位数码管的显示位线。将数码管部份的显示位口JP8接到CPU部份的P2口JP52.
unsigned char t;
while (ms--)
{
for (t = 0; t < 114; t++);
}
}
/*************x*0.14MS延时子函数****************/
void delayus(unsigned char x)
{
unsigned char i;
while (x--)
scan1 = P1;
if (scan1 != 0xf0) //判键是否按下
{
delayms(10); //延时10ms
scan1 = P1;
if (scan1 != 0xf0) //二次判键是否按下
{
P1 = 0x0f;
scan2 = P1;
keycode = scan1 | scan2; //组合成键扫描编码
相关文档
最新文档