第一篇:单片机第四章9_一键多功能按键识别技术
AT89S51单片机实验及实践教程
9.1. 实验任务 一键多功能按键识别技术
如图4.9.1所示,开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。
2. 电路原理图
图4.9.1 3. 系统板上硬件连线(1. 把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上;
(2. 把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上。
3AT89S51单片机实验及实践教程
6. 汇编源程序 ID
EQU 30H SP1
BIT P3.7 L1
BIT P1.0 L2
BIT P1.1 L3
BIT P1.2 L4
BIT P1.3
ORG 0
MOV ID,#00H START:
JB K1,REL
LCALL DELAY10MS
JB K1,REL
INC ID
MOV A,ID
CJNE A,#04,REL
MOV ID,#00H REL: JNB K1,$
MOV A,ID
CJNE A,#00H,IS0
CPL L1
LCALL DELAY
SJMP START IS0:
CJNE A,#01H,IS1
CPL L2
LCALL DELAY
SJMP START IS1:
CJNE A,#02H,IS2
CPL L3
LCALL DELAY
SJMP START IS2:
CJNE A,#03H,IS3
CPL L4
LCALL DELAY
SJMP START IS3:
LJMP START DELAY10MS: MOV R6,#20 LOOP1:
MOV R7,#248
DJNZ R7,$
DJNZ R6,LOOP1
RET DELAY:
MOV R5,#20 LOOP2:
LCALL DELAY10MS
DJNZ R5,LOOP2
RET
END 7. C语言源程序 #include
5AT89S51单片机实验及实践教程
开动脑筋,运用多种方法,不断优化自己的程序。想想用各种不同方法来实现同一功能。这是一个练习和提高的过程,一个问题,你解决了,那么你再想想,能不能换种写法,也可以实现同一功能,或者说,你写出来的代码,能不能再精简一点,让程序执行效率更高,这个过程,就是一个进步的过程。很多知识和经验的获得,并不是直接写在书让你看就可以得到的,需要自己去实践,开动脑筋,经验才能得到积累,编程水平才能有所提高。看别人的代码,学习人家的思路。这个在学习初期是很有用,通过看别人的代码,特别是有多年编程经验的人写出的具有一定水平的代码,可以使自己编程水平得到迅速的提高,同时,也可以结合别人的编程手法,与自己的想法融合在一起,写出更高水平的代码,从中得到进步。但要注意,切忌将学习变成抄袭,更不是抄袭完了就认为自己学会了,这样做只会使你退步。...第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。
再次感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。课程设计时间虽然很短,但我学习了很多的东西,使我眼界打开,感受颇深。
第二篇:单片机按键扫描实验报告
键盘扫描
一.实验目的(1)掌握矩阵键盘接口电路和键盘扫描编程方法。
(2)掌握按键值处理与显示电路设计。
二.实验任务
(1)设计 4*4 键盘,编写各个键的特征码和对应的键值(0~F);(2)编程扫描按键,将按键对应的数字值使用数码管显示出来。
三.实验电路及连线方法
1.采用动态显示
连线方法:电路由2 片74LS573,1 个六字一体的共阴数码管组成。由U15 输出段选码,U16 做位选码,与单片机的采用I/O 口连接方式,短路片J22 连接P2.0,J23 连接P2.3,做输出信号锁存。
(实际电路连接是 d7-d6-d5-d4-d3-d2-d1-d0 h-c-d-e-g-b-a-f)。PW12 是电源端。
2.键盘电路
连线方法:电路由16 个按键组成,用P1 口扩展4×4 行列式键盘。
J20 是键盘连接端,连接到P1 口。J21 是行列键盘、独立键盘选择端,当J21 的短路片连接2-3 脚时,构成4×4 行列式键盘;当J21 的短路片连接2-1 脚时,可形成3×4 行列式键盘,4 个独立式 按键S4、S8、S12、S16,这4 个独立按键分别连接P1.4~P1.7;其他12 个键3×4 行列式键盘。
PW15 是电源端。
四.编程思路
1.采用反转法识别按键的闭合。
2.采用动态显示将键值显示出来。
五.算法流程图
六 .资源分配 1.用 P1 口进行查找按键 2.用 R3 做键值指针 3.用 R1 做动态显示为选码指针。
4.R5 为延时指针。
七.程序设计
ORG
0000H KPIN: MOV
P1,#0F0H
MOV
A,P1
ANL
A,#0F0H
MOV
B,A
MOV
P1,#0FH
MOV
A,P1
ANL
A,#0FH
ORL
A,B
CJNE
A,#0FFH,KPIN1
AJMP
EXIT KPIN1: MOV
B,A
MOV
DPTR,#TABKP
MOV
R3,#0 KPIN2: MOV
A,R3
MOVC
A,@A+DPTR
CJNE
A,B,KPIN3
MOV
A,R3
LOOP: MOV
R1,#0FEH;键盘动态显示 LOOP1: MOV
A,R3
ANL
A,#0FH
MOV
DPTR,#TAB
MOVC
A,@A+DPTR
CLR
P2.0
CLR
P2.1
MOV
P0,A
SETB
P2.0
NOP
CLR
P2.0 LOOP2: MOV
A,R1;位选码
MOV
P0,A
SETB
P2.1
MOV
R5,#250 LOOP3: DJNZ
R5,LOOP3
CLR
P2.1
SJMP
LOOP
KPIN3: INC
R3
CJNE
A,#0FFH,KPIN2 EXIT: RET TABKP: DB
0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH
DB
0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFH TAB: DB
77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FH
DB
79H,33H,7CH,3BH,1BH
END 八. 调试出现的问题及解决
问题 1:程序正常运行,但按键显示出现乱码
解决:动态显示笔形码错误,并改正。
问题 2:发现有些按键按下时不出现键值
解决:发现按键坏了,换机器再实验,并且成功。
总结:与硬件想结合的实验要有足够的耐心,并且不仅要懂得如何编程,还要有足够多的电路知识,这样才能够保证实验成功。
第三篇:单片机实验五 按键及七段数码管实验
实验五 按键及七段数码管实验
一、实验目的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、思考计算器程序如何实现;
第四篇:单片机课程设计报告多功能秒表
青岛理工大学琴岛学院
课程设计报告
课题名称:单片机原理课程设计 学院:机电工程系
专业班级:电气工程及其自动化103班 学号:201002
学生:
指导老师:
青岛理工大学琴岛学院教务处2012年 12月21 日
第五篇:基于AT89S51单片机多功能交通灯控制系统设计下载
交通灯控制系统设计
摘要:本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。关键词:AT89S51,交通规则
一、方案比较、设计与论证 1 电源提供方案
为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案
方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案。2 显示界面方案
该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案:
方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。
方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。3 输入方案:
题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案: 方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。
方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
二、理论分析与计算
1.交通灯显示时序的理论分析与计算
对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量= 车流 / 时间 来表示。
先设定一些标号如图2-1 所示。
说明:此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西 路口灯。
图2-2 所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四 的状态为一个周期,循环执行(见图2-3)。
请注意图2-1b和图2-1d,它们在一个时间段中四个方向都可以通车,这种状态能在 一定的时间内达到较大的车流量,效率特别高。
依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态图 是一样的,所以只需写出相邻路口的灯的逻辑表;根据图2-3 可以看出,相邻路口的灯它 们的状态在相位上相差180°。因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。
如表2-1 所示。
表中的“×”代表是红灯亮(也代表逻辑上的0),“√”是代表绿灯亮(也代表逻辑上 的1),依上表,就可以向相应的端口送逻辑值。2.交通灯显示时间的理论分析与计算
东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且 S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示。T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分 为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参 考。
三、电路图及设计文件 1.灯控制电路设计
由于32个LED 来实现红绿灯状态,若直接接在单片机的口线,路口倒计时的显示就不 能实现,所以本次设计中采用一种新型的电路如图3-1 所示。
图中74LS04的作用是倒相和驱动,它输出的电流大约48mA,实际测试发现足以满足要 求,而且发光管也能达到足够的亮度。
观察图可以看出:两组发光管(一组红、一组绿)由于反相器的作用,其逻辑状态恰恰 相反。
图中和电阻串联的二极管的作用是为了分压,防止因上下两组发光管分压不同导致逻辑 的错误。
共四组和上述相同的电路分别代表东西南北四个方向的红绿灯,使用两片74LS04 作为 驱动。
2.倒计时显示电路设计
前面已经分析过相向的灯的状态和倒计时都是相同的,所以为了节省,采用两组四个数码管 作为倒计时的显示;同时为了节省口资源,采用串口显示的方式驱动数码管。见图3-2 所 示。
四、程序设计思路与流程图 1.主程序流程图
主程序中主要是一个死循环,不停的循环四个状态,如图4-1 所示。
2.按键子程序流程图
它包含倒计时调整和紧急状态两个状态。
主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子 程序处理。当检测到K2键按下的时候就自动返回到主程序。
当出现紧急的情况的时候,按下K3或者K4 就切换到紧急状态,当紧急事件处理完毕 的时候,按下K2,就可以返回正常状态。
五、测试、数据及结果分析 1.状态灯显示测试
当电路连接完毕后,将写好的测试程序刷写到芯片内,K1 和K2分别给端口送高电平和 低电平,通电即可检测。2.数码管的测试
将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。3.整体电路测试
系统上电,刷写好程序即可开始测试,观测一个周期(共计S1~S4四个状态,默认140 秒)灯的显示状态是否正常,同时观察倒计的计数是否正常。
六、总结
由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。
但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅 速,红绿灯规则不效率还不是很高等等,这需要在实践中进一步完善。参考文献
[1] 李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版社,1998 [2] 李广弟.单片机基础.北京:北京航空航天大学出版社,1992 [3] 何立民.单片机应用技术大全.北京:北京航空航天大学出版社,1994 [4] 张毅刚.单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990 [5] 谭浩强.单片机课程设计.北京:清华大学出版社,1989 Abstract This system is made up of single-chip microcomputer ,keyboard,lcd displaying module and Traffic lights system.The system includes pavement,left truning,right truning,and the basic traffic lights function.Excepting the basic traffic lights function,italso includes couting,time installing,emergency disposaling,speech cluing,lcd information displaying,adjusting the lighting time of lights based on different time and controlling with hand in accordance with circumstances and so on.附录 系统总体电路图