《单片机原理及应用》“实验五 按键及显示实验”任务书
《单片机原理及应用》“实验五 按键及显示实验”任务书

单片机原理及应用随堂实验报告实验五按键与显示实验学院计算机与电子信息学院专业电子信息工程班级电信12 -1 班姓名许锐佳学号 12034490129 指导教师左敬龙实验报告评分:_______一、实验原理及电路实验原理:单片机80c51的P2口接一矩阵键盘,P0和P3口接两个数码管,P1口通过接两个3-8译码器控制16个灯。
刚开始时,电路处于扫描按键是否按下的状态,当有某个键按下时,在扫描函数作用下,会有一小段消抖时间,确定没抖动的情况下再次判断是否真的有按键按下,如果真的有按下,通过先检查行,再检查列的方法判断是哪个键按下,判断完后执行对应case后面的语句,即实现相应的功能。
下图为实验原理电路图(此时按下的是第10个按键):二、功能说明16个开关形成矩阵键盘,当按下第一个键时,数码管显示1,第一个led灯亮;当按下第二个键时,数码管显示2,第二个led灯亮;当按下第三个键时,数码管显示3,第三个led灯亮···依次类推,按下第几号键,数码管显示对应号数,对应led灯亮。
三、实验框图:四、实验代码#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 ,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d}; uchar num;void delay(uchar time){uchar i,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}void display1(uchar num){P0=table[0];P3=table[num];}void display2(uchar num){P0=table[1];P3=table[num];}void keyscan(){uchar t,key;P2=0xfe;t=P2;t=t&0xf0;if(t!=0xf0){delay(10);t=P2;t=t&0xf0;if(t!=0xf0){t=P2;switch(t){case0xee:key=1;display1(key);P1=0x80;break;case0xde:key=2;display1(key);P1=0x81;break;case0xbe:key=3;display1(key);P1=0x82;break;case}}}P2=0xfd;t=P2;t=t&0xf0;if(t!=0xf0){delay(10);t=P2;t=t&0xf0;if(t!=0xf0){t=P2;switch(t){case0xed:key=5;display1(key);P1=0x84;break;case0xdd:key=6;display1(key);P1=0x85;break;casecase0x7d:key=8;display1(key);P1=0x87;break;}}}P2=0xfb;t=P2;t=t&0xf0;if(t!=0xf0){delay(10);t=P2;t=t&0xf0;if(t!=0xf0){t=P2;switch(t){case0xeb:key=9;display1(key);P1=0x40;break;casecase0xbb:key=11;display2(key);P1=0x50;break;case0x7b:key=12;display2(key);P1=0x58;break;}}}P2=0xf7;t=P2;t=t&0xf0;if(t!=0xf0){delay(10);t=P2;t=t&0xf0;if(t!=0xf0){t=P2;switch(t){casecase0xd7:key=14;display2(key);P1=0x68;break;case0xb7:key=15;display2(key);P1=0x70;break;case0x77:key=16;display2(key);P1=0x78;break;}}}}void main(){P1=0x00;P0=0x3f;P3=0x3f;while(1){keyscan();}}五、实验过程一开始实验时,16个led灯不知要怎么接,因为每个灯接一个接口太浪费,后来想到可以用3-8译码器,这样就能节省很多接口,只需占用P1六个接口就能实现对16个灯的控制。
2014-5《单片机原理与应用》实验-指导书DOC

《单片机原理与应用》课程实验指导书一、实验目的《单片机原理及应用》课程实验是电子信息工程和电子科学与技术专业的一门专业基础课实验,是学生获得单片机知识的开端。
要求学生通过本课程实验,具备利用单片机技术解决实际控制问题的能力。
培养与提高学生科学实验的能力,动手实践能力、理论联系实际的能力、自学能力、从简单的设计到综合的应用能力和创新能力。
通过实验的训练,使学生掌握《单片机原理与应用》实验的基本方法和基本技能,加深对单片机知识的理解,掌握单片机应用系统设计方法,为今后的工作打下良好的基础。
二、实验设备及器件PC机一台DP-51PROC单片机综合仿真实验仪一台示波器一台电阻若干电容若干导线若干三、实验内容本实验共6个实验内容:实验一仿真实验仪的操作使用练习实验二单片机I/O口控制实验实验三蜂鸣器驱动实验实验四电子琴实验实验五、六直流电机实验(定时器输出PWM实验)实验七 16×16 LED 扫描输出实验*详细指导内容请见附录。
四、实验考核、成绩评定考核方法:设计过程中检查学生实际操作能力,根据课程设计内容要求,设计相关程序, 指导书中所给代码仅供参考,要求学生独立进行整体程序设计,教师要检查学生的运行步骤及结果。
成绩评定:实验成绩根据考勤、实验态度、动手能力、创新能力和实验报告来综合评定,实验成绩计入课程平时成绩,占总成绩的20%。
五、参考资料1、DP-51PROC实验指导书(实验设备配套指导资料),2007年.2、李广第.等单片机基础.北京航空航天大学出版社,2005年.3、胡汉才等. 单片机原理及其接口技术.清华大学出版社,,2009年.六、实验报告格式要求按学院实验报告统一格式报告内容包括:实验目的与要求、实验步骤、程序流程图和实验程序、实验步骤和实验结论。
附录——详细指导内容实验一仿真实验仪的操作使用练习一.实验目的和要求熟悉Keil C51 集成开发环境调试功能的使用和DP-51PROC 单片机综合仿真实验仪的使用。
《单片机原理与应用》实验报告-574hc595实验

leds(255);//全灭
}
4.实验操作说明
第一步:连接电路,上传代码;
第二步:观察数码管的显示情况。
5其他说明
无
6.实验结果
数码管依次循环显示:数字1~9,小数点,全熄灭。
见实验5文件夹下视频:74HC595控制8段数码管。
五、教师评语
签名:
日期:
成绩
《单片机原理与应用》实验报告
实验序号:5实验项目名称:74hc595实验
学 号
1507162233
姓 名
杨舫
专业、班
15计算机
实验地点
指导教师
何一凡
实验时间
2016.10.22
一、实验目的
1.了解74hc595的工作原理
2.掌握74hc595的使用方法
3.熟练掌握Arduino设计的流程、方法
二、实验设备(环境)及要求
delay(1000); //暂停1秒钟让你看到效果
}
void loop()
{
leds(249);//1
leds(164);//2
leds(176);//3
leds(153);//4
leds(146);//5
leds(130);//6
leds(248);//7
leds(128);//8
l
1.原理图
2.实际连接图
3.实验程序代码
int latchPin = 4;
int clockPin = 5;
int dataPin = 2; //这里定义了那三个脚
void setup ()
{
pinMode(latchPin,OUTPUT);
单片机课程设计任务书5(5篇)

单片机课程设计任务书5(5篇)第一篇:单片机课程设计任务书5课程设计任务书学生姓名:石樊专业班级:光信科1102指导老师:陈梦苇工作单位:武汉理工大学理学院题目:定时闹铃的设计初始条件:电脑一台、protel作图软件、keilc51编译器、medwin仿真软件、isp在线编程软件要求完成的主要任务:(包括课程设计工作量及其技术要求以及说明书撰写等具体要求)1、技术要求:以89s51单片机为核心芯片,设计一个定时闹铃,要求如下:A、能够显示定时的时间;B、定时时间到让相应的发光二极管发光;2、主要任务:(1)复习有关课程,如数字电路、单片机等;(2)以89s51为核心,根据设计指标设计电路的框图;(3)根据要求设计出电路逻辑图和装配图;(4)查阅资料,确定所需各元器件型号和参数;(5)自拟调整测试方法,并调试电路使其达到设计指标要求;(6)撰写设计说明书,进行答辩。
3、撰写课程设计说明书:封面:题目,学院,专业,班级,姓名,学号,指导教师,日期任务书目录正文:1、技术指标;2、设计方案及其比较;3、实现方案;4、调试过程及结论;5、心得体会;6、参考文献时间安排:课程设计时间:18周:明确任务,查阅资料,初步设计电路原理图;19~20周:按照电路原理图布线,并调试通过。
按照要求撰写课程设计说明书。
指导教师签名:年月日系主任(或负责老师)签名:年月日第二篇:单片机课程设计任务书“单片机课程设计”任务书一、设计目的通过该课程设计,主要达到以下目的:①使学生增进对单片机系统的感性认识,加深对单片机理论方面的理解,为顺利完成毕业设计打基础。
②使学生掌握对单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口和串行口通讯等。
③进一步深化和巩固所学基础理论、专业知识及实验技能,提高学生的技术应用能力,使学生了解和掌握单片机应用系统的软、硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
《单片机原理与应用》实训指导书

佛山市顺德区郑敬诒职业技术学校《PIC单片机原理与应用》实训指导书制定:审核:审批:制定日期:二00七年九月实训项目一 熟悉实验环境及MPLAB 的使用实验目的:熟悉实验软硬件环境,能够对单片机编程并进行调试。
实验内容:了解实验平台软、硬件的构成,熟悉实验环境,掌握MPLAB 的使用方法;建立工程,编程,调试并运行程序。
基本要求:能够在计算机上使用MPLAB 建立一个工程,应用简单指令编写简单的程序进行编译,并在实验板上调试成功。
扩展要求:1、编写一段程序让PORTD 口输出二进制数‘10101010’。
2、编写跑马灯程序。
电路原理:单片机与LED:RD0RD1 RD2: RD7 程序流程:实现D 口小灯四亮四灭的程流程图单片机PORTD实验步骤:1、打开MPLAB。
双击桌面上名为“MPLAB IDE”的图标,打开MPLAB编译环境。
2、进入工程向导。
点击MPLAB上面菜单中的Project(工程),选择ProjectWizard(工程向导),通过工程向导来建立工程。
3、选择单片机。
进入欢迎界面(下图),点击下一步,在Device(设备)中选择PIC16F877A,如果该项为PIC16F877A则直接点下一步。
4、选择编译语言。
选择MPASM汇编语言编译器,如果该项为MicrochipMPASM Toolsuite,则直接点下一步。
5、创建工程文件。
请在D盘下建立一个存放工程的文件夹,文件名可以用英文、数字或英文数字混合,注意:不要用中文或标点符号,文件夹名和工程名长度不要超过8个字符。
下面以建立文件夹名为abcd , 工程名为LED 为例。
此处写入工程名字,可以和实验内容相关,如LED此处写入存放工程的路径,如D:\abcd,建议通过点击右边Browse(浏览)来选择建立好的文件夹6、添好工程名和路径后点击下一步,下图表示可以添加程序文件到工程中,如果是初次编程或没有编好的程序文件,可直接点击下一步。
单片机实验五按键及七段数码管实验

单片机实验五按键及七段数码管实验第一篇:单片机实验五按键及七段数码管实验实验五按键及七段数码管实验一、实验目的1、熟悉keil软件;2、掌握矩阵式按键的原理;3、掌握七段数码管显示的原理;4、掌握STC单片机的按键及数码管程序编写及下载;二、实验要求1、编写矩阵式按键的读取程序、七段数码管的动态显示程序,并将程序结合在一起,产生某一按键按下,显示对应键值的程序。
2、编写串行通信的发送及接收程序,实现串行口跟PC及的通信,并在PC机上用串口调试工具观察实验结果;3、利用keil软件调试程序,并产生.hex文件;4、将.hex文件利用STC单片机下载工具下载到单片机最小系统中,并观察LED灯的显示状态;5、提交实验报告,报告包含程序及LED的显示结果。
三、实验内容1、打开keil软件,熟悉软件的菜单、工作界面及工具。
然后按照keil的编程步骤编写程序(创建工程----选择单片机AT89C51----新建源文件----保存为C程序----编写完整的C51程序----将文件添加到工程----编译并修改错误----连接产生.hex文件)。
2、打开STC下载软件,将keil生成的.hex文件打开,下载到最小系统板,测试程序并观察实验结果。
3、按键及七段LED的程序,实现更多的LED与按键结合的效果。
四、实验说明1、程序中使用的按键及LED灯的IO端口要与自己的单片机最小系统板对应;2、按键程序注意抗消抖;3、思考计算器程序如何实现;第二篇:单片机数码管显示实验实验一数码管实验一、实验目的1.了解数码管的显示原理;2.掌握JXARM9-2440 中数码管显示编程方法二、实验仪器JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE集成开发环境、串口连接线、PC机。
三、实验原理7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
LED显示器的接口一般有静态显示与动态显示接口两种方式。
《单片机原理与应用》实验指导书1

《单片机原理与应用》实验指导书目录实验一无符号双字节乘法运算子程序实验二 BCD码与ASCII码转换实验三 P1口实验实验四定时器实验—循环彩灯实验实验五数码显示实验实验六 A/D转换实验实验一无符号双字节乘法运算子程序一、实验目的:熟悉MCS-51指令系统,学会使用Keil C编程软件。
熟悉汇编语言编程。
二、实验设备:EL-8051-III型单片机实验箱。
三、实验内容:(1)在(R2R3)和(R6R7)中输入双字节无符号整数。
(2)将(R2R3)和(R6R7)中双字节无符号整数相乘,积存入R2R3R4R5中。
(3)连续或单步运行所编程序。
检查R2R3R4R5中的内容是正确。
四、实验原理:R6 R7R2 R3R4 R5B AB AB A(B)R2 (B+B+A) R3 (R4+A+A) R4 R5五、实验调试1、打开Keil,新建Keil项目;2、选择CPU类型为ATMEL中的AT89C52单片机;3、根据流程图新建汇编源程序(*.asm),并保存;4、在项目管理器窗口(project windows)中,将新建的ASM源程序添加到“source group 1”中;5、在Keil中选择“project”->“build target”菜单,编译汇编源程序,如有错,修改后重新编译;6、选择“debug”->“start/stop debug session”菜单,进入程序调试环境;7、按“F11”键,单步运行程序,观察“project windows”中,寄存器R0~R7的变化情况,最后验证R2R3R4R5无符号双字节相差的结果是否正确(可和程序/附件计算器的相乘结果对比)。
六、参考程序实验二 BCD码与ASCII码转换程序一、实验目的:熟悉MCS-51指令系统,学会使用Keil C编程软件。
熟悉汇编语言编程。
二、实验设备:EL-8051-III型单片机实验箱。
三、实验内容:将本人的班号学号以压缩的BCD码的形式由低到高存放在50H开始的单元中,如10050941班,学号为01的同学,将1050H、0551H、0952H、4153H、0154H。
单片机实验五 按键实验

实验五:按键实验一、实验要求实验目的:熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程方法;熟悉和掌握矩阵式减半的行扫描法和行反转法两种键盘扫描识别方法;掌握键盘延时抖动的消除方法,掌握LED静态扫描显示方式。
实验内容:4*4键盘矩阵的横线连接单片机的P1.0~P1.3端口,列线连接P1.4~P1.7端口,1位LED数码管连接单片机的P0口,编程实现:当按下任意一个按键时,LED数码管显示它在4*4键盘矩阵上的序号0~F二、实验原理线反转法的原理线反转法与行扫描法相比更加简练,无论被按键是处于第一行还是最后一行,均经过两步便可获得该键值所在的行列值。
线反转法的工作原理如图1所示,图1中采用8位I/O端口构成一个4*4的矩阵键盘,P1.0~P1.3作为行线,P1.4~P1.7做列线,采用查询方式进行工作。
下面介绍线反转法的具体操作步骤。
第一步:将列线便成为输入线,将行线便成为输出线,并使输出线的输出为全零电平,则列线中的电平由高到低发生变化的列为按键所在列。
第二步:将第一步中的传送方向反过来,即将行线编程位输入线,列线编程位输出线,并输出第一步中的输入列值,则行线中电平由高到低发生变化的行即为按键所在的行。
综合一、二两步的结果,可确定按键所在的行和列,从而识别出按键所在的键。
例如“键9”被按下,第一步在P1.0~P1.3行线输出全零,然后读入列线值位P1.7~P1.4=1101B,即P1.5=0,与P1.5相连的列线有键被按下。
第二步从列线输出刚才得到的值,再读取行线的输入值,则在闭合键所在的行线上值必定为“0”,即从行线读出的值为P1.3~P1.0=1101B。
于是行值和列值合起来得到唯一的一对行列值:11011101B即0DDH,这个值对应“键9”。
可见先反转法非常简单实用。
三、程序设计1、程序流程图图 1 程序流程图2、程序代码ORG 0000HLJMP STARTORG 0100HSTART: MOV SP, #60HKEY0: MOV P1, #0EFHJNB P1.0, K0JNB P1.1, K4JNB P1.2, K8JB P1.3, E1LJMP K12E1: MOV P1, #0DFHJNB P1.0, K1JNB P1.1, K5JNB P1.2, K9JB P1.3, E2LJMP K12E2: MOV P1, #0BFHJNB P1.0, K2JNB P1.1, K6JNB P1.2, K10JB P1.3, E3LJMP K14E3: MOV P1, #07FHJNB P1.0, K3JNB P1.1, K7JNB P1.2, K11JNB P1.3, K15LJMP KEY0K0: MOV P0, #0C0HLCALL DELAYJMP KEY0K1: MOV P0, #0F9HLCALL DELAYJMP KEY0K2: MOV P0, #0A4HLCALL DELAYJMP KEY0K3: MOV P0, #0B0HLCALL DELAYJMP KEY0K4: MOV P0, #99HLCALL DELAYJMP KEY0K5: MOV P0, #92HLCALL DELAYJMP KEY0K6: MOV P0, #082HLCALL DELAYJMP KEY0K7: MOV P0, #0F8HLCALL DELAYJMP KEY0K8: MOV P0, #80HLCALL DELAYJMP KEY0K9: MOV P0, #090HLCALL DELAYJMP KEY0K10: MOV P0, #88HLCALL DELAYJMP KEY0K11: MOV P0, #083HLCALL DELAYJMP KEY0K12: MOV P0, #0C6HLCALL DELAYJMP KEY0K13: MOV P0, #0A1HLCALL DELAYJMP KEY0K14: MOV P0, #086HLCALL DELAYJMP KEY0K15: MOV P0, #08EHLCALL DELAYJMP KEY0DELAY: M OV R3, #60HLP: MOV R4, #0A8HLP1: MOV R5, #0A8HLP2: DJNZ R5, LP2DJNZ R4, LP1DJNZ R3, LPRETEND设计说明:单片机不断查询各列电平,当某列中有某行的电平被置零,则跳转到改行所在语句,在数码管上显示被按键的数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及应用
随堂实验报告
实验五按键与显示实验
学院计算机与电子信息学院
专业电子信息工程班级电信12 -1 班
姓名许锐佳学号
指导教师左敬龙
实验报告评分:_______
一、实验原理及电路
实验原理:单片机80c51的P2口接一矩阵键盘,P0和P3口接两个数码管,P1口通过接两个3-8译码器控制16个灯。
刚开始时,电路处于扫描按键是否按下的状态,当有某个键按下时,在扫描函数作用下,会有一小段消抖时间,确定没抖动的情况下再次判断是否真的有按键按下,如果真的有按下,通过先检查行,再检查列的方法判断是哪个键按下,判断完后执行对应case后面的语句,即实现相应的功能。
下图为实验原理电路图
(此时按下的是第10个按键):
二、功能说明
16个开关形成矩阵键盘,当按下第一个键时,数码管显示1,第一个led灯亮;当按下第二个键时,数码管显示2,第二个led灯亮;当按下第三个键时,数码管显
示3,第三个led灯亮···依次类推,按下第几号键,数码管显示对应号数,对应led灯亮。
三、实验框图:
四、实验代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 ,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d}; uchar num;
void delay(uchar time)
{
uchar i,j;
for(i=0;i<time;i++)
for(j=0;j<110;j++);
}
void display1(uchar num)
{
P0=table[0];
P3=table[num];
}
void display2(uchar num)
{
P0=table[1];
P3=table[num];
}
void keyscan()
{
uchar t,key;
P2=0xfe;
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
delay(10);
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
t=P2;
switch(t)
{
case
0xee:key=1;display1(key);P1=0x80;break;
case
0xde:key=2;display1(key);P1=0x81;break;
case
0xbe:key=3;display1(key);P1=0x82;break;
case
}
}
}
P2=0xfd;
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
delay(10);
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
t=P2;
switch(t)
{
case
0xed:key=5;display1(key);P1=0x84;break;
case
0xdd:key=6;display1(key);P1=0x85;break;
case
case
0x7d:key=8;display1(key);P1=0x87;break;
}
}
}
P2=0xfb;
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
delay(10);
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
t=P2;
switch(t)
{
case
0xeb:key=9;display1(key);P1=0x40;break;
case
case
0xbb:key=11;display2(key);P1=0x50;break;
case
0x7b:key=12;display2(key);P1=0x58;break;
}
}
}
P2=0xf7;
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
delay(10);
t=P2;
t=t&0xf0;
if(t!=0xf0)
{
t=P2;
switch(t)
{
case
case
0xd7:key=14;display2(key);P1=0x68;break;
case
0xb7:key=15;display2(key);P1=0x70;break;
case
0x77:key=16;display2(key);P1=0x78;break;
}
}
}
}
void main()
{
P1=0x00;
P0=0x3f;
P3=0x3f;
while(1)
{
keyscan();
}
}
五、实验过程
一开始实验时,16个led灯不知要怎么接,因为每个灯接一个接口太浪费,后来想到可以用3-8译码器,这样就能节省很多接口,只需占用P1六个接口就能实现对16个灯的控制。
但是后来又发现,译码器E1给高电平,E2非、E3非给低电平虽然能实现译码,但是没法独立控制16个灯,只能控制一排8个灯,另一排的显示结果与前一排相似,于是,再次查看3-8译码器各引脚功能,发现E1给低电平时能保持原有结果,而且P1口剩两个接口,因此我立马将两个译码器的E1口接到P1口剩下的两个接口,通过给E1高低电平实现对第一排8个led灯和第二排8个led灯的独立控制。
六、实验小结
本次按键与显示实验难度适中,虽然成功完成实验,但是个人感觉自己做的这个功能比较简单,而且程序也编的比较繁琐,不够简洁,编程方面还得多练,自己也得尝试做一些功能更为复杂的,不能满足于现状。