当前位置:文档之家› 基于单片机的按键模拟要点

基于单片机的按键模拟要点

基于单片机的按键模拟要点
基于单片机的按键模拟要点

目录

1.引言 (1)

1.1作品简介 (1)

1.2作品设计思路及方案 (1)

1.2.1总述 (1)

1.2.2主程序流程图 (2)

1.2.3中断子程序流程图 (3)

1.3知识点应用 (3)

2.硬件应用 (4)

2.1AT89C51单片机 (4)

2.2独立式键盘 (5)

2.3数码管 (6)

2.4串口通信 (6)

2.5外部中断 (7)

3.软件应用 (7)

3.1程序初始化 (7)

3.2主程序及其说明 (8)

3.3中断程序及子程序 (10)

4.调试 (11)

4.1问题1 (11)

4.2问题2 (11)

5.结语 (11)

6.参考文献 (12)

7.附录程序 (13)

1.引言

1.1作品简介

电视、空调等现代的电器产品都需要一个小小的遥控器来控制,而许多如手机的电子产品都能进行改装而达到控制其他电器的目的,可见,遥控器已经在我们的生活中占了很重要的地位。由此我产生了基于51单片机的基础上设计一个按键显示输出装置的想法。该作品具有按下一个键后,在数码管上显示相应数字并发送数字到pc机上的功能。如果能够继续加深单片机的其他应用,该作品会更完美,有效。

1.2作品设计思路及方案

1.2.1总述

本作品的大致思路是:按下按键,数码管显示数字,同时pc机输出相应数字,并还有一个中断功能,如图1.2.1所示。

1.2.2主程序流程图

本作品主程序:判断按键是否按下,如果按下,执行相应的程序,之后返回。如果没按下,则判断下一个按键是否按下,如此反复。如图1.2.2

图1.2.2

1.2.3中断子程序流程图

本作品使用了外部中断0,当中断按下时,当前数码管上显示入栈保护,数码管上全部显示“A”,按键弹起后,数码管恢复原来状态。如图1.2.3

1.3知识点应用

本作品运用了51单片机的独立式键盘(I/o口)、数码管显示、串口同信、外部中断四个知识点。

2.硬件应用

本作品使用了单片机上的一些硬件:独立式键盘、数码管、中断0开关、串口助手等。

2.1AT89C51单片机

本作品是基于51单片机基础上扩展的应用,选用AT89C51芯片,如图2.1.1所示:

图2.1.1

2.2独立式键盘

在P1口上接按钮,作为独立式键盘,如图2.2.1所示:

图2.2.1

由于只用到了四个键,所以只安装了四个开关,从上往下依次为S1、S2、S3、S4

2.3数码管

数码管作为显示输出,装有两片74HC573芯片作为P3.6与P3.7开关来控制段码与位码的输入,如图2.3.1

图2.3.1

2.4串口通信

串口通信应用串口中断,在PC机上输出信号,这里只放出仿真用的端口,如图2.4.1

图2.4.1

2.5外部中断

外部中断使用的是外部中断0,按钮为P2.7,如图2.5.1所示:

图2.5.1

另外,本作品使用的是实验室中的试验箱,在此不再给出实物图。

3.软件应用

本作品功能简单,按键按下,数码管上显示相应数字并输出到PC机上,可同时按下多个按键并同时显示,但只输出到PC上一次,外部中断时有保留当前数字的功能并使得数码管全部显示“A”,当外部中断结束,数字会恢复原来的样子。

3.1程序初始化

设置外部中断,串口通信等初始参数。

ORG 0000H

LJMP MAIN

ORG 0003H ;外部中断0入口

LJMP EINT0

ORG 0030H

MAIN: MOV SCON,#50H ;设置串口工作方式

MOV PCON,#80H ;波特率加倍

MOV TMOD,#20H ;设置计数器工作方式

MOV TH1,#0FAH ;设置波特率

MOV TL1,#0FAH

SETB EX0 ;打开中断0

SETB EA ;中断总开关打开

SETB TR1 ;计数器工作

CLR TI ;TI清零

CLR IT0 ;中断0为跳沿触发方式

3.2主程序及其说明

主程序运行时查验是否有按键按下,如果按下,则接通相应子程序向数码管发送数据并向PC机发送数值。

LP: JB P1.0,L2 ;如果按键1没有按下,则跳转到L2

LCALL DM ;载入子程序DM

MOV P0,#06H ;送段码

LCALL WM ;载入子程序WM

MOV P0,#0FEH ;送位码

LCALL DELAY ;延时

MOV A,#31H ;送31H到A

MOV SBUF,A ;发送数据

JNB TI,$

CLR TI

L2: JB P1.1,L3

LCALL DM

MOV P0,#5BH LCALL WM

MOV P0,#0FDH

LCALL DELAY

MOV A,#32H

MOV SBUF,A

JNB TI,$

CLR TI

L3: JB P1.2,L4

LCALL DM

MOV P0,#4FH

LCALL WM

MOV P0,#0FBH

LCALL DELAY

MOV A,#33H

MOV SBUF,A

JNB TI,$

CLR TI

L4: JB P1.3,LP LCALL DM

MOV P0,#66H

LCALL WM

MOV P0,#0F7H

LCALL DELAY

MOV A,#34H

MOV SBUF,A

JNB TI,$

CLR TI

LJMP LP

RET

3.3中断程序及子程序

外部中断0开启时,保护当前数码管数值入栈,并使数码管全部显示“A”,之后外部中断0断开,数值出栈,数码管恢复原先数值。

EINT0: PUSH 80H ;入栈保护

LCALL DM ;调用DM

MOV P0,#77H ;送段码

LCALL WM ;调用WM

MOV P0,#00H ;送位码

LCALL DELAY ;延时

POP 80H ;出栈

RETI

DM: SETB P3.6 ;P3.6开

CLR P3.7 ;P3.7关

RET

WM: SETB P3.7 ;P3.7开

CLR P3.6 ;P3.6关

RET

DELAY: MOV R7,#10 ;延时40ms

DE1: MOV R6,#100

DE2: MOV R5,#20

DJNZ R5,$

DJNZ R6,DE2

DJNZ R7,DE1

RET

4.调试

本作品经过仿真和实物调试,发现一些问题。

4.1问题1

仿真与实物有一些差距,延时过大的话,当按键超过两个一直按下时,实物与仿真上的数码管显示数值时都是轮流闪动,无法达到同时亮起的效果,而当延时过小时,实物显示无问题,但仿真显示都是乱码或者无法显示。

4.2问题2

实物运用时,按下一个键经常显示几个相同数字,并且显示的数字个数并不相同,毫无规律。

5.结语

经过了一番努力,在老师和同学的帮助下,我顺利结束了此次的作品设计,在这个过程中,我了解了许多,感悟了许多。

实践是检验真理的唯一标准,经过这次作品设计,我深深理解了这句话,在经过了仿真与实物的运用后,单片机各个部分的功能显得明确而具体。这在作品设计之前只知道概念的我看来简直不可思议,所以说,只有将理论与实际结合起来,才能让人映像深刻并真正理解。

通过这次设计,我深刻理解到要做好一件事情,必须有系统的思维方式和方法,要有耐心和恒心去钻研努力,要善于运用资源丰富充实自己,要有整体的目光来看待事物,再从局部到整体慢慢实现,这样才会有效率。

6.参考文献

【1】张毅刚、彭喜元、彭宇. 单片机原理及应用【M】.第二版. 北京:高等教育出版社,

2010.5,119-133

【2】bzxy_lyz.基于AT89C51的串口通信程序设计【ol】.

https://www.doczj.com/doc/ca12735929.html,/view/45d19623482fb4daa58d4b8e.html, 010.5.23

【3】G.Edward Suh, Charles W.O’Donnell, Srinivas Devadas, Aegis:a single-chip secure processor, IEEE Design and Test of Computers.2008,24(6)570-580.【4】彭为.《单片机典型系统设计实例精讲》,北京:电子工业出版社,2006

【5】潘永雄.《新编单片机原理与应用》,西安:西安电子科技大学出版社,2003

单片机交通灯实训报告

机电工程学院课程设计报告 课程名称:单片机课程设计 专业班级: 13电本2班 学号: 2013041632 学生:罗炜 指导教师:王清辉、何文丰 完成时间: 报告成绩:

交通灯设计 一、设计任务与要求 设计基本要求: (1)车辆通行繁忙的十字交叉路口,设计一交通灯控制器,设东西方向通行时间为30秒,当剩余3秒时黄灯亮,南北方向通行时间为20秒,当剩余3秒时黄灯亮。(2)东西、南北方向各用三个(绿、黄、红)LED表示,并用数码管显示东西、南北方向的剩余时间。 (3)可利用按键修改时间参数,可以利用按键切换东西南北交通灯的当前状态(即立刻东西由红变绿,南北有绿变红,并按设定的时间工作)。 二、方案设计与论证 表2-1:交通灯的工作状态表 根据表2-1所示可将交通灯的工作状态设为以下几个步骤: 1、初始状态时即为东西方向绿灯通行27秒+3秒黄灯,此时南北红灯亮。 2、随后是南北方向绿灯通行17秒+3秒黄灯,此时东西红灯亮。 3、通过按模式选择键一次来切换东西南北交通灯的当前状态。(通过设置定时计时器T1实现交通灯的计时) 4、通过按模式选择键第二次切换至南北方向红绿灯的计时设置,通过加减按键来确定南北方向红绿灯的计时数。 5、确定南北方向计数值后,通过按模式选择键第三次切换至东西方向红绿灯的计

时设置,通过加减按键来确定东西方向红绿灯的计时数。 6、确定交通灯计时数后再按下模式选择键后,交通灯便进入工作状态。 时间计时的实现:采用定时中断实现秒的精确计时(详细方案入下列程序设计所示)。 按键输入的实现:通过编写按键读取函数,来实现交通灯的状态以及时间值得设定(详细方案入下列程序设计所示)。

单片机实验三(急救车与交通灯)

单片机技术与应用 实验报告 实验名称:外部中断实验(急救车与交通灯)班级:11062811 学号:11061118 姓名:吕琳涛 指导老师:谷雨 2013年5月20日

1. 实验要求 由以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理,并允许急救车优先通过的要求。有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。本实验以按键为中断申请,表示有急救车通过。 2. 实验目的 1.学习外部中断技术的基本使用方法。 2.学习中断处理程序的编程方法。 3. 程序说明: 在本次实验中,我们可以确定外部中断的作用是用于有救护车行驶过来时对程序的进行的简单的控制。对于正常的红绿灯的亮灭我们可以参考第一个实验中流水灯的设计理念。综上所述我们这一次的实验就是流水灯与外部中断的结合。 通过对七种情况的罗列 1 0 0 1 0 1 1 0 南北绿,东西红 0 1 1 0 1 0 0 1 南北红,东西绿 1 0 0 1 1 1 1 1 只亮东西红 0 1 1 0 1 1 1 1 只亮南北红 0 0 0 0 0 1 1 0 南北黄,东西红 0 0 0 0 1 0 0 1 南北红,东西黄 0 0 0 0 1 1 1 1 全红 我们可以利用XBYTE[0xf200]这个函数对这几种情况进行读取与显

示,在不同情况进行显示的过程中我们用以前的delay函数进行时间上的规划从而达到依次显示的效果。 0x0f 全红XBYTE[0xf200]=0x0f; 0x96 南北绿,东西红XBYTE[0xf200]=0x96; 0x9f 只亮东西红XBYTE[0xf200]=0x9f; 0x06 南北黄,东西红XBYTE[0xf200]=0x06; 0x69 南北红,东西绿XBYTE[0xf200]=0x69; 0x6f 只亮南北红XBYTE[0xf200]=0x6f; 0x09 南北红,东西黄XBYTE[0xf200]=0x09; 在具体的实验代码编写过程中,我们会用到EA=1;EX0=1;IT0=1;用于设定外部中断0为跳变沿触发方式,默认为电平触发方式。interrupt 0函数是处理有救护车驶过时的情况。 至此,程序编写完成,放入软件中进行编译和下载。

单片机按键的解决方法

单片机按键的解决解决方案 1、单片机上的按键控制一般采用两种控制方法:中断和查询。中断必须借助中断引脚,而 查询按键可用任何IO端口。按键较少时,一个按键占用一个端口,而按键较多时,多采用矩阵形式(如:经常用4个端口作为输出,4个端口作为输入的4X4矩阵来获得16个按键);还可以用单片机的AD转换功能一个引脚接多个按键,根据电阻分压原理判断是哪个按键按下。 2、中断形式 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但是STM32中只使用4位,高4位有效),每4个通道的8位中断优先级控制字构成一个32位的优先级寄存器。68个通道的优先级控制字至少构成17个32位的优先级寄存器. 4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组 第0组:所有4bit用于指定响应优先级; 第1组:最高1位用于指定抢占式优先级,后面3位用于指定响应优先级; 第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级; 第3组:最高3位用于指定抢占式优先级,后面1位用于指定响应优先级; 第4组:所有4位用于指定抢占式优先级。 所谓抢占式优先级和响应优先级,他们之间的关系是:具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。每一个中断源都必须定义2个优先级。 有几点需要注意的是: 1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果; 2)抢占式优先级别相同的中断源之间没有嵌套关系; 3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。 GPIO外部中断: STM32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间智能使用一个,如:PA0,PB0,PC0,PD0,PE0,PF0这些为1组,如果我们使用PA0作为外部中断源,那么别的就不能使用了,在此情况下我们使用类似于PB1,PC2这种末端序号不同的外部中断源,每一组使用一个中断标志EXTI x.EXTI0~EXTI4这5个外部中断有着自己单独的中断响应函数。EXTI5~EXTI9共用一个中断响应函数,EXTI10~EXTI15共使用一个中断响应函数。 对于中断的控制,STM32有一个专用的管理机构NVIC.中断的使能,挂起,优先级,活动等等都是由NVIC在管理的。 编写IO口外部中断步骤及其注意事项:

单片机交通灯课程设计(LED显示倒计时)

单片机交通灯课程设计(LED显示倒计时).txt27信念的力量在于即使身处逆境,亦能帮助你鼓起前进的船帆;信念的魅力在于即使遇到险运,亦能召唤你鼓起生活的勇气;信念的伟大在于即使遭遇不幸,亦能促使你保持崇高的心灵。本文由ID很难想啊贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,日常的交通堵塞成为人们司空见惯而又不得不忍受的问题。在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。对交叉口实行科学的管理与控制是交通控制工程的重要研究课题,是保障交叉口的交通安全和充分发挥交叉口的通行能力的重要措施,是解决城市交通问题的有效途径。交通灯控制系统由 80C51 单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、 LED 信息显示功能,市交通实现有效控制。 目录 一序言...... 3 1.1 交通灯的形成...... 4 1.2 单片机的发展历程...... 4 1.3 芯片简介...... 5 1.4 技术指标及设计要求...... 7 二硬件电路的设计及描述...... 9 2.1MCS-51 单片机内部结构...... 9 2.2 MCS-51 单片机芯片引脚位置及功能符号......12 2.3 51 系列单片机运行的硬件条件......13 2.4 单片机的特点与应用......14 三软件设计流程及描述......15 3.1 软件设计......15 3.2 电路连接分配......16 3.3 主程序流程图......17 四源程序代码......18 体会总结......22 体会总结参考文献 (23) 2 一序言 1.1 交通灯的形成 当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在 19 世纪就已出现了。 1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914 年始安装于纽约市 5 号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 1 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968 年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告 3 信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。我们设计的单片机控制交通灯就是基于信号灯。 1.2 单片机的发展历程单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。在 MCS-51 系列单片机中,有两个子系列:51 子系列和 52 子系列。每个子系列有诺干中型号。51 系列有 8051、8751 和 8031 三个型号,后来经过改进产生了 80c51、87c51、80c31 三个型号; 52 系列有 5021、8752、 8032 三个型号,改进后的型号是 80c52/87c52、 80c32。改进后的型号更加省电。

单片机按键控制蜂鸣器发声程序

#include typedef unsigned char uint8; typedef unsigned int uint16; uint8 Count,i; sbit Speak =P1A2; //蜂鸣器器控制脚 sbit keyl =卩3人2;〃按键控制引脚 sbit key2 =P3A3; sbit key3 =P3A4; /* 以下数组是音符编码 */ uint8 code SONG[] ={ 0xff,0x39,0x30,0x33,0x30,0xff,0x30,0x30,0x00,}; void Time0_Init()// 定时器 T0 方式 1 ,定时 10ms { TMOD = 0x01; IE = 0x82; TH0 = 0xDC; TL0 = 0x00; void Time0_Int() interrupt 1 { TH0 = 0xDC; TL0 = 0x00; Count++; } void delay (uint8 k)// 按键防抖延时 { uint8 j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } void Delay_xMs(uint8 x)// 发声延时 { uint8 i,j; for(i=0; i

Count = 0; // 中断计数器清 0 Addr = i *3; while(1) { Temp1 = SONG[Addr++]; if (Temp1 == 0xFF) //休止符 { TR0 = 0; Delay_xMs(100); } else if (Temp1 == 0x00) //歌曲结束符 { return; } else { Temp2 = SONG[Addr++]; TR0 = 1; while(1) { Speak = ~Speak; Delay_xMs(Temp1); if(Temp2 == Count) { Count = 0; break; } } } } }void keyscan (void)// 按键切换声音函数{ if(key1==0) { delay(10); if(key1==0) {

基于AT89C51单片机的交通灯实验报告

/* * 实现基于C51的交通信号灯的控制操作 * 使用器件->> * 1.74HC138用于控制LED的位选码的设定 * 2.T0->>实现一个时间的定时操作(设置为10ms) * 3.P0->>作为LED现实的断码输出端 * 4.P1->>作为LED交通灯的信号灯的控制端 * 5.P2->>作为74HC138的为选码的控制端 * 6.P3.2->>作为一个复位的中断信号处理(与K1相连用于控制复位交通信号灯) * 需要考虑的一个问题是-》这个难道南北方向和东西方向的时间控制长短是一样的?#include //LED显示的字符段码 static char[] LED_TABLE = {0x3f , 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /* * SN_IFGREEN:用于控制南北方向的灯的显示操作 * EW_IFGREEN:用于控制东西方向的灯的显示操作 * 0:红灯 * 1:绿灯 */ int SN_IFGREEN = 0; int EW_IFGREEN = 1; /* 用于控制定时时间为1s */ int TIME1S = 100; /* 用于控制时间为60s */ int LEDTIME = 60; /* LED交通灯的设置*/ sbit SN_RED = P1^0; sbit SN_YELLOW = P1^1; sbit SN_GREEN = P1^2; sbit EW_RED = P1^3; sbit EW_YELLOW = P1^4; sbit EW_GREEN = P1^5; /* 设置74HC138的位选码*/ sbit PA = P2^2; sbit PB = P2^3; sbit PC = P2^4; //初始化系统信息 void init_SYS(); //每当时间运行1s时进行操作处理 void time_SUB();

单片机的交通灯显示系统

单片机课程设计 基于单片机的交通灯显示系统 交通灯是日常生活中常见的自动控制产品,人们的日常出行及人身安全等都与交通灯有着密切的联系。本文提出一种基于单片机的交通灯设计,系统包含三个功能模块: (1)交通灯LED显示模块,实时显示东西、南北两个路口红、黄、绿三种灯的状态; (2)定时器模块,中断计算绿灯剩余时间; (3)独立按键模块,分为紧急制动按钮和夜间模式按钮两个按钮; (4)LCD液晶显示模块,显示绿灯亮的剩余时间 系统结构如下图所示: 关键词:定时器;液晶显示;独立按键

山东经济学院课程设计 目录 摘要...................................................................................................... 错误!未定义书签。引言. (1) 1.交通灯的概述 (2) 1.1交通灯的结构 (2) 1.2 工作原理 (3) 1.3功能应用 (3) 1.4工作流程 (4) 2 交通灯显示系统组成 (5) 2.1 定时器TR1模块的选择与设计 (5) 2.2 LCD液晶显示模块的选择与设计 (5) 2.3独立按键模块的选择与设计 (7) 2.4LED模块的选择与设计 (8) 3 实验结果演示 (9) 结论 (10) 参考文献.................................................................................................. 错误!未定义书签。附录.. (11) 1.原件明细表 (11) 2.源程序清单 (11) 致谢 (17)

用51单片机中断编写的4x4键盘程序

用51单片机中断编写的4x4键盘程序 应用查询扫描编写键盘程序,由于要给按键去抖动,程序变得比较复杂和冗长(详见2013年9月29日博文《MSP430和 AT89C51单片机4x4键盘C程序》),如果用中断编写,设置中断响应在下降沿时执行中断,则程序编写不用去抖动判断,所以相比较要简单很多!下面用汇编和C语言两种方式编写4X4键盘程序! 一、汇编程序 ORG 0000H LJMP MAIN ORG 0003h Ljmp ZD0

ORG 000Bh LJMP TZD0 ORG 0013h Ljmp ZD1 ORG 001Bh LJMP TZD1 ORG 0040H MAIN: Mov TMOD,#66h MOV TH0,#0ffh MOV TL0,#0ffh MOV TH1,#0ffh MOV TL1,#0ffh SETB EA SETB ET0 SETB TR0 SETB ET1 SETB TR1 SETB IT0 SETB IT1 SETB EX0 SETB EX1 xh: mov P1,#0feh

Lcall Delay mov P1,#0fdh Lcall Delay mov P1,#0fbh Lcall Delay mov P1,#0f7h Lcall Delay SJMP xh ZD0: JNB P1.0,dat1 JNB P1.1,dat2 JNB P1.2,dat3 JNB P1.3,dat4 dat1: mov P2,#06h ;1 sjmp ZD0R dat2: mov P2,#5bh ;2 sjmp ZD0R dat3: mov P2,#4fh ;3 sjmp ZD0R dat4: mov P2,#66h ;4 ZD0R: reti ZD1: JNB P1.0,dat5

单片机按键连接方法

单片机按键连接方法总结(五种按键扩展方案详细介绍) 单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种。不同的设计方法,有着不同的优缺点。而又由于单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研究的问题。接下来我给大家展示几种自己觉得比较好的按键扩展方案,大家可以在以后的单片机电路设计中灵活运用。 1)、第一种是最为常见的,也就是一个I/O口对应一个按钮开关。 这种方案是一对一的,一个I/O口对应一个按键。这里P00到P04,都外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。这种方案优点是电路简单可靠,程序设计也很简单。缺点是占用I/O资源多。如果单片机资源够多,不紧缺,推荐使用这种方案。 2)、第二种方案也比较常见,但是比第一种的资源利用率要高,硬件电路也不复杂。 这是一种矩阵式键盘,用8个I/O控制了16个按钮开关,优点显而易见。当然这种电路的程序设计相对也还是很简单的。由P00到P03循环输出低电平,然后检测P04到P07的状态。比方说这里P00到P03口输出1000,然后检测P04到P07,如果P04为1则说明按下的键为s1,如果P05为1则说明按下的是s2等等。为了电路的可靠,也可以和第一种方案一样加上上拉电阻。 3)、第三种是我自己搞的一种方案,可以使用4个I/O控制8个按键,电路多了一些二极管,稍微复杂了一点。 这个电路的原理很简单,就是利用二极管的单向导电性。也是和上面的方案一样,程序需要采用轮训的方法。比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查询P02和P03的状态,如果P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,同样检测P02和P03的状态。接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断。这种方案的程序其实也不难。 4)这是我在一本书上看到的,感觉设计的非常巧妙,同样它也用到了二极管,不过比我的上一种方案的I/O利用率更高,他用4个I/O口控制了12个按键。我相信你了解了之后也会惊奇的。 首先好好品味一下这个方案吧,想想怎么来识别按键呢!

单片机仿真交通灯实验

实验报告实验名称:交通灯实验 姓名 班级 日期

实验要求: 1. 请使用单片机系统主机板和单片机系统键盘、显示板设计一个硬件系统,最终实 现一个交通路口红绿灯的控制。用两个数码管显示秒,8个LED灯分成四组,分别作为十字交叉路口的红绿灯。 2. 相对双向绿灯的最后几秒时,绿灯要闪烁,即亮灭交替,亮灭时间均为0.5秒, 然后变成红灯。 3. 每组同学可自行设计进行连接,形成一个单片机硬件系统。 4. 模拟调试完成后,用STC-ISP下载编程软件将生成的*。HEX文件在线下载到单片 机中。 5.下载后,按复位键执行程序,检验程序运行结果。 硬件连线方案:

程序流程图:

源代码: #include //51单片机头文件声明 unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //定义无符号数组,定义的数据要放在ROM(程序存储区)里面 sbit dula=P1^3; //特殊功能位定义,数码管段码控制信号 sbit G1=P1^4; //数码管位选控制信号 sbit c=P1^5; //c表示P1.0口,地址最高位 sbit b=P1^6; //地址次高位 sbit a=P1^7; //地址最低位 sbit xl=P2^0; //特殊功能位声明,xl表示P2.0口 sbit xh=P2^1; // sbit yl=P2^2; sbit yh=P2^3; sbit sl=P2^4; sbit sh=P2^5; sbit zl=P2^7; sbit zh=P2^6; char count=100; //定时时间取10ms,循环100次即为1s unsigned char ssx=14; //秒上下,为上下绿灯亮时倒计数 unsigned char szy=10; //秒左右,为左右绿灯亮时倒计数 char sx=1; //方向标志,上下绿灯亮 void delay(char x) //延时函数,通过for循环进行延时 { char a,b;

单片机按键识别方法之一

单片机按键识别方法之一 1.实验任务 每按下一次开关SP1,计数值加1,通过AT89S51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。 2.电路原理图 图4.8.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上。 4.程序设计方法 (1.其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说, 当我们按下一个按键 时,总希望某个命令只 执行一次,而在按键按 下的过程中,不要有干 扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。 因此在按键按下的时候,图4.8.2 要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况 下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及 硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可 以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候, 总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状 态。具体的一个按键从按下到释放的全过程的信号图如上图所示: 从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。

51单片机系统实验报告--计数器、交通灯

系统实验报告 学院XXXXXXXXX 专业XXXXXX 姓名XXXXX 学号XXXXXXX

一、本设计拟实现的功能 1.时钟:四只数码管低二位0~59计数后给高二位0~59计数(即分秒计时),一只按键控制开始、结束; 2.交通灯:灯和数码管结合,模拟十字路口的交通灯的点亮与熄 灭,数码管倒计时显示时间。 二、所用器件的功能、引脚图 1.所用器件:AT89S51、74LS47、LM7085 2.所用器件功能、引脚图 a)AT89S51 AT89S51引脚图 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash

只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。 主要性能特点 1、4k Bytes Flash片内程序存储器; 2、128 bytes的随机存取数据存储器(RAM); 3、32个外部双向输入/输出(I/O)口; 4、5个中断优先级、2层中断嵌套中断; 5、6个中断源; 6、2个16位可编程定时器/计数器; 7、2个全双工串行通信口; 8、看门狗(WDT)电路; 9、片内振荡器和时钟电路; 10、与MCS-51兼容; 11、全静态工作:0Hz-33MHz; 12、三级程序存储器保密锁定; 13、可编程串行通道; 14、低功耗的闲置和掉电模式。

单片机交通灯实验报告(汇编语言)

实验四单片机交通灯实验 1、实验要求 本实验分两部分,第一部分是普通交通灯的模拟:初始状态0为东西红灯,南北红灯.然后转状态1南北绿灯通车,东西红灯.过一段时间转状态,南北绿灯闪几次转两黄灯,延时几秒,东西仍然红灯,再转状态3,东西绿灯通车,南北红灯.过一段时间转状态4.东西绿灯山几次转黄灯,延时几秒,南北仍然红灯,,最后循环至状态1。 第二部分在以上的基础上当有急救车到达时,两项交通信号为全红,以便让急救车通过.假定急救车通过路口时间为10秒,急救车通过后,交通恢复中断前状态.被实验已按键为终端申请,表示有急救车通过. 2、实验电路图 (1)十二端口控制 (2)六端口控制

3、实验程序如下 (1) 十二位控制ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV P1,#0F0H MOV P0,#0FFH MOV A,#00H MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB ET0 SETB EA SETB TR0 HERE: SJMP HERE IT0P: MOV TL0,#0B0H MOV TH0,#3CH INC A CJNE A,#50,L1 MOV P1,#0FCH MOV P0,#0F3H RETI L1: CJNE A,#100,L2 MOV P1,#03CH MOV P0,#0FFH RETI L2: CJNE A,#110,L3

MOV P1,#0FCH MOV P0,#0FFH RETI L3: CJNE A,#120,L4 MOV P1,#03CH MOV P0,#0FFH RETI L4: CJNE A,#130,L5 MOV P1,#0F3H MOV P0,#0FCH RETI L5: CJNE A,#180,L6 MOV P1,#0C3H MOV P0,#0FFH L6: CJNE A,#190,L7 MOV P1,#0F3H MOV P0,#0FFH RETI L7: CJNE A,#200,L8 MOV P1,#0C3H MOV P0,#0FFH L8: CJNE A,#210,BUTTON MOV P1,#0F0H MOV P0,#0FFH CLR A RETI BUTTON:RETI END (2) 六位控制ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P ORG 0013H LJMP IT1P MAIN: MOV P0,#09H MOV A,#00H MOV TL0,#0B0H MOV TMOD,#61H MOV TL0,#0FFH MOV TH0,#0FFH SETB ET0 SETB EA SETB TR0 SETB PX1

按键控制单片机PWM输出设计

学号1322010110 天津城建大学 单片机原理及应用A课程 设计说明书 按键控制单片机PWM输出设计起止日期:2016年05月30日至2016年6月10日 学生姓名 班级 成绩 指导教师(签字) 控制与机械工程学院 2016年6月10日

目录 第一章系统方案设计 (1) 1.1 PWM (1) 1.2 STC12C5A60S2简介 (1) 1.3 仿真工具介绍 (2) 1.3.1 Protues简介 (2) 1.3.2 Keil uVision3简介 (4) 第二章硬件电路设计 (5) 2.1 复位电路 (5) 2.2 时钟电路 (5) 2.3 按键中断 (5) 2.4 显示电路 (6) 第三章程序设计流程图 (7) 第四章系统仿真 (8) 4.1 仿真图 (8) 4.2 程序 (8) 4.3 PCB............................................................................................................... 错误!未定义书签。参考资料 .................................................................................................................... 错误!未定义书签。

第一章系统方案设计 1.1 PWM PWM的全称是Pulse Width Modulation(脉冲宽度调制),它是通过改变输出方波的占空比来改变等效的输出电压。 1.2 STC12C5A60S2简介 STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。 1)管脚说明: 1、P0.0~P0.7 P0:P0口既可以作为输入/输出口,也可以作为地址/数据复用总线使用。当P0口 作为输入/输出口时,P0是一个8位准双向口,内部有弱上拉电阻,无需外接上拉电阻。当P0作为地址/数据复用总线使用时,是低8位地址线A0~A7,数据线D0~D7 2、P1.0/ADC0/CLKOUT2 标准IO口、ADC输入通道0、独立波特率发生器的时钟输出 3、P1.1/ADC1 4、P1.2/ADC2/ECI/RxD2 标准IO口、ADC输入通道2、PCA计数器的外部脉冲输入脚,第二串口数据接收端 5、P1.3/ADC3/CCP0/TxD2 外部信号捕获,高速脉冲输出及脉宽调制输出、第二串口数据发送端 6、P1.4/ADC4/CCP1/SS非 SPI同步串行接口的从机选择信号 7、P1.5/ADC5/MOSI SPI同步串行接口的主出从入(主器件的输入和从器件的输出) 8、P1.6/ADC7/SCLK SPI同步串行接口的主入从出 9、P2.0~P2.7 10、P2口内部有上拉电阻,既可作为输入输出口(8位准双向口),也可作为高8位地址总线使用。 11、P3.0/RxD 标准IO口、串口1数据接收端 12、P3.1/INT0非 外部中断0,下降沿中断或低电平中断 13、P3.3/INT1 14、P3.4/T0/INT非/CLKOUT0 定时器计数器0外部输入、定时器0下降沿中断、定时计数器0的时钟输出 2)A/D转换器的结构: STC12C5A60AD/S2系列带A/D转换的单片机的A/D转换口在P1口,有8路10位高速A/D转换器,速度可达到250KHz(25万次/秒)。8路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型IO口,用户可以通过软件设置将8路中的任何一路设置为A/D 转换,不须作为A/D使用的口可继续作为IO口使用。 单片机ADC由多路开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器以及ADC_CONTER

基于单片机的交通灯设计实训报告

重庆三峡学院 课程设计报告书题目:基于单片机的交通灯设计 学院(系): 学号: 学生姓名: 指导教师: 教师职称: 制作日期2011年12月25日 目录

1.设计要求---------------------------------------------------- 01 2.系统设计方案---------------------------------------------- 01 3.硬件电路设计---------------------------------------------- 02 4.软件系统设计---------------------------------------------- 06 5.仿真与调试------------------------------------------------- 08 6.实训体会---------------------------------------------------- 13 7.附录---------------------------------------------------------- 14 摘要

单片微型计算机简称单片机,即把组成微型计算机的各个功能部件,如中央处理器(CPU )、随机存储器(RAM )、只读存储器(ROM )、I/O 接口电路、定时器/计数器以及串行接口等集成在一块芯片中构成一个完整的微型计算机。设计一个基于单片机的交通灯设计。主要包括AT89c51单片机、复位电路、驱动控制芯片74LS240和74LS07及外中断等。实现控制各个路口的交通灯变化,通过外中断起 到紧急开关作用,加上复位电路,使其恢复成初始状态。 本设计主控芯片采用AT89C51单片机,配合其他基本设备完成设计。采用C51语言进行编程,编程后利用KEIL C51进行编译,生成对应用的HEX 文件,采用PROETUS 软件进行系统硬件的仿真模拟,检验功能。模拟试验成功后,焊接硬件电路,通过ISP 下载线将HEX 文件载入单片机内,完成整个设计进行实际操作,并实际记录单片机工作情况。 设计一个基于单片机的交通灯设计。主要包括AT89c51单片机、复位电路、驱动控制芯片74LS240和74LS07及外中断等。实现控制各个路口的交通灯变化,通过外中断起到紧急开关作用,加上复位电路,使其恢复成初始状态。 1. 设计要求 设计一个基本十字路口交通灯管理系统。初始化4个路口红灯全亮,2秒后切换为东西 路口红灯亮,南北绿灯亮,持续60秒,红绿灯切换过渡时红灯依旧亮,绿灯亮转变为黄灯闪烁5次,过程时间为5秒,然后切换为南北路口红灯亮,东西路口绿灯亮,持续时间60秒,过渡过程切换方式同上,5秒后,再次切换为东西路口红灯亮,南北绿灯亮。如此周而复始。 2.系统设计图 利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支 干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮 南 东

基于单片机8255交通灯

8255控制交通灯 一、实验目的 了解8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。 二、实验内容 用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。 三、实验说明 1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化情况和规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态 4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。 四、实验程序框图 五、实验接线图

六、实验步骤 ①8255 PA0—PA7、PB0—PB3依次接发光二极管L1—L12。 ②以连续方式从0BB0H开始执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。延时一段时间后东西路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,再切换到东西路口方向,之后重复以上过程。 一摘要: 本系统采用单片机、键盘、LED显示、交通灯演示系统组成。设计一个用于十字路口的车辆及行人的交通管理,系统包括左拐、右拐、及行基本的交通灯的功能,计时牌显示路口通行转换剩余时间,在出现紧急情况时可由交通手动实现全路口车辆禁行而行人通行状态。另外,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行的状态,15s后系统自动恢复正常管理。其他还有 84s与60s通行管理转换等功能。采用数码管与点阵LED相结合的显示方法,既要求倒计时数字输出,又要求有状态灯输出等。 关键字: 单片机系统(AT89C51)控制8255、交通规则、LED显示、动态扫描、按键输入、分时段调整 参考文献:《单片机课程设计指导》北京航天航空大学出版社《基于MCS-51系列的单片机原理的应用设计》国防工业出版社 《单片机实训教程》北京大学出版社 《单片机系统原理及应用》 《微机原理及应用》

单片机交通灯综合实验报告

河北工业大学实验报告 学院: 专业: 班级: 姓名: 学号: 实验课程:单片机应用系统设计开发入门指导教师: 实验名称:交通信号灯控制实验 实验时间: 2019 年 5 月 23日 2019 年 5月 23 日

一实验要求 1 实验目的及实验内容要求 实验目的:1.熟悉外部中断源的扩展方法。 2.初步掌握单片机综合应用系统设计。 3.掌握用Proteus调试汇编源程序的方法。 实验内容要求: 用发光二极管模拟交通信号灯,用逻辑电平开关模拟控制开关,设计一个交通信号灯控制系统。设计要求如下: (1) A 车道与B 车道交叉组成十字路口,A 是主道,B 是支道;正常情况下,A、 B 两车道轮流放行。具体放行时间和要求如下: (2) A 车道放行50s,其中绿灯常亮44s,绿灯闪烁3s(用于警告),黄灯常亮3s(用 于警告)。 (3) B 车道放行30s,其中绿灯常亮24s,绿灯闪烁3s(用于警告),黄灯常亮3s(用 于警告)。 在交通繁忙时,交通信号灯控制系统应有手控开关,可人为地改变信号灯的状态,以缓解交通拥挤状况。控制要求如下: (1)在B 车道放行期间,若 A 车道有车而B 车道无车,按下开关使 A 车道放 行15s。 (2)在A 车道放行期间,若 B 车道有车而A 车道无车,按下开关使 B 车道放 行15s。 (3)有紧急车辆通过时,按下开关使A、B 车道均为红灯,禁行15s。 2 实验设备或运行软件平台 完成本实验需要使用到单片机仿真软件Proteus8,该软件是英国Lab Center Electronics公 司出版的EDA工具软件,是目前比较好的仿真单片机及外围器件的工具。从原理图布图、代 码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完 整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计 平台。在编译方面,它也支持IAR、Keil、MATLAB等多种编译器。其具有的基本功能特点为: 1.原理布图。 2.PCB自动或人工布线。 3.SPICE电路仿真。革命性的特点是1.互动的电路仿真。 2.仿真处理器及其外围电路。 二实验内容及过程 1 实验设计及分析(或者实验程序) 实验原理图如下所示:

用计数器中断实现100以内的按键计数[1]

3.33 用计数器中断实现100以内的按键计数 一. 单片机系统功能简介: 本例利用计数器中断实现按键计数,这与此前的按键计数程序看起来比较相似,但是用方法完全不同。 本例用T0计数器中断实现按键计数,由于计数寄存器初值为1,因此P3.4引脚的每次负跳变都会触发T0中断,实现计数值累加。 二.单片机系统硬件电路设计: 2.1 proteus原理图: 2.2 原件清单:

三.软件设计: 3.1 主程序流程图: 3.2 程序清单: #include #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00 }; uchar Count=100; void main() { P0=0x00; P2=0x00; TMOD=0X06; TH0=TL0=256-1; ET0=1; EX0=1; EA=1; IP=0X02; IT0=1; TR0=1; while (1)

{ P0=DSY_CODE[Count/10]; P2=DSY_CODE[Count%10]; } } void Clear_Counter()interrupt 0 { Count=0; } void Key_Counter() interrupt 1 { Count=(Count-1)%100; } 四.系统调试 4.1 在PROTEUS7.5仿真步骤 1将程序在KEIL中编译,直到达到要求的功能为止; 2在PROTEUS中绘制硬件图(在PROTEUS仿真时可以不添加最小系统电路;实际电路中需要); 3将KEIL C中编译好的HEX文档加载到PROTEUS中; 4按下K1开始计数,按下K2可以清零。

相关主题
文本预览
相关文档 最新文档