搜档网
当前位置:搜档网 › 嵌入式技术课程设计-红绿灯控制系统

嵌入式技术课程设计-红绿灯控制系统

嵌入式技术课程设计-红绿灯控制系统
嵌入式技术课程设计-红绿灯控制系统

《嵌入式技术》课程报告

课题名称:嵌入式技术

课题负责人名(学号):

同组成员名单(角色):

指导教师:

评阅成绩:

评阅意见:

提交报告时间:年月日

基于μC/OS-II红绿灯控制模拟系统的设计和

实现

学生指导老师

[摘要]红绿灯控制系统是当今现代社会必不可少的一种电子控制设备,属于最常见的实时嵌入式控制系统之一。μC/OS-II是目前最流行的实时嵌入式操作系统之一,有便于移植、易于裁减、使用方便等特点,在各种工业和交通控制系统中得到了广泛的应用。本文设计和实现了一个μC/OS-II的红绿灯控制系统,经过在PC平台上的仿真模拟,提高了最基本的交通控制功能。

关键词:μC/OS-II,红绿灯控制系统,模拟仿真

1. 系统需求

本系统需要实现两个方向的红绿灯控制。在屏幕上用绿色的字母‘G’表示绿灯,红色的字母‘S’表示红灯。

在相应信号灯字母的下方,用数字表示该信号灯切换的剩余时间。该时间每秒钟减一,减为零时,切换信号灯。信号灯切换时间缺省为60秒。

某方向由红灯切换为绿灯时,应有3秒钟的缓冲时间,以确保另一方向的车辆安全通过。即在切换信号灯时,有3秒钟的时间两个方向的信号灯都是红灯。不能出现两个方向都是绿灯的情况。

用户可通过键盘输入信号灯切换时间,切换时间范围为20秒~120秒。用户输入的数字以回车键结束。对于错误的输入,系统可不作任何响应。对于正确的输入,下次信号灯切换后,采用新输入的切换时间。

用户键入ESC键后,退出该模拟程序。

2. 系统设计

采用μC/OS-II作为操作系统内核的原因。

μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化.

μC /OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。至今,从8位到6 4位,μC/OS-II已在超过40种不同架构上的微处理器上

运行。μC/OS-II已经在世界范围内得到广泛应用,包括很多领域,如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。实际上,μC/OS-II已经通过了非常严格的测试,并且得到了美国航空管理局(Federal Aviation Administration)的认证,可以用在飞行器上。这说明μC/OS-II是稳定可靠的,可用于与人性命攸关的安全紧要(safety critical)系统。更重要的是,μC/OS-II 的源码公开,便于移植和维护。

在这个系统中设计了两个任务Task1和Task2。其中Task1的任务是接收键盘的输入,判断是否是回车,回车后结束,如果接收到字母的话不做任何响应,如果是数字的话要判断是不是在20到120之间,要不在此区间内则清空缓冲区,接受下一次输入,如果在区间内的话,则传递给Task2,同时在屏幕上显示下一次循环的时间。如果是ESC 的话则任务退出。Task2用来设置交通灯的残留时间,初始值为60秒改变一次,当接收到Task1传来的值后,下一次循环按此值计数。

3. 系统实现3.1 main函数说明

流程图

3.2 各个任务的实现说明

Task1流程图

Task2流程图

4. 程序源码

#include "includes.h"

/*

******************************************************* 定义常量

**************************************************

*/

#define TASK_STK_SIZE 512 // 任务堆栈长度

#define TASK_START_ID 0 // 任务的标示ID

#define TASK_CLK_ID 1

#define TASK_1_ID 2

#define TASK_2_ID 3

#define TASK_START_PRIO 10 // 任务优先级

#define TASK_CLK_PRIO 11

#define TASK_1_PRIO 13

#define TASK_2_PRIO 12

/*

******************************************************* 变量

**************************************************

*/

OS_STK TaskStartStk[TASK_STK_SIZE]; // 定义任务堆栈区

OS_STK TaskClkStk[TASK_STK_SIZE];

OS_STK Task1Stk[TASK_STK_SIZE];

OS_STK Task2Stk[TASK_STK_SIZE];

int LightTime; // 定义了交通

灯剩余的时间

int waitTime;

int SetTime; // 定义了交通灯的最大值

/*

******************************************************* 函数原形

**************************************************

*/

void TaskStart(void *data);

static void TaskStartCreateTasks(void);

static void TaskStartDispInit(void);

static void TaskStartDisp(void);

void TaskClk(void *data);

void Task1(void *data);

void Task2(void *data);

void DisplayLight(int sem);

void DisplayLightS(void);

void DisplayLightG(void);

void DisplayLightBS(void);

/*

******************************************************* 程序入口

**************************************************

*/

void main (void)

{

OS_STK *ptos;

OS_STK *pbos;

INT32U size;

PC_DispClrScr(DISP_FGND_WHITE);

// 清屏

OSInit();

// 初始化uCOS_II

PC_DOSSaveReturn();

// 保存Dos环境

PC_VectSet(uCOS, OSCtxSw); // 安装uCOS_II中断

PC_ElapsedInit();

// 初始化共用时间变量

ptos = &TaskStartStk[TASK_STK_SIZE - 1]; // TaskStart使用浮点数

pbos = &TaskStartStk[0];

size = TASK_STK_SIZE;

SetTime = 60; //初始化了信号灯切换时间

OSTaskStkInit_FPE_x86(&ptos, &pbos, &size);

OSTaskCreateExt(TaskStart, //创建任务StartTask

(void *)0, //给任务传递参数

ptos,

TASK_START_PRIO,

//使任务的优先级别为0

TASK_START_ID,

pbos,

size,

(void *)0,

OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

OSStart();

//启动多任务管理

}

/*

******************************************************* 开始任务

**************************************************

*/

void TaskStart (void *pdata)

{

#if OS_CRITICAL_METHOD == 3 // 分配储存CPU状态的寄存器

OS_CPU_SR cpu_sr;

#endif

INT16S key;

pdata = pdata;

TaskStartDispInit();

// 调用显示初始化函数

OS_ENTER_CRITICAL();

// 安装时钟tick

PC_VectSet(0x08, OSTickISR); //

安装时钟中断向量

PC_SetTickRate(OS_TICKS_PER_SEC);

// 设置uCOS_II时钟频率

OS_EXIT_CRITICAL();

OSStatInit();

//初始化统计任务

TaskStartCreateTasks();

// 调用函数创建各种任务

for (;;) {

TaskStartDisp();

// 更新显示(用于更新设置的参数)

if (PC_GetKey(&key)) { // 处理键盘响应

if (key == 0x1B) { // 如果按下Esc键则退出uCOS_II

PC_DOSReturn();

}

if (key == 0x31) { // 如果按下数字'1'键则将SetTime的全局变量加一

SetTime++;

if (SetTime > 120)

SetTime = 120;

}

if (key == 0x32) { // 如果按下数字'1'键则将SetTime的全局变量减一

SetTime--;

if (SetTime < 20)

SetTime = 20;

}

}

OSCtxSwCtr = 0;

OSTimeDly(OS_TICKS_PER_SEC);

// 设置1秒钟的时延

}

}

/*

******************************************************* 界面显示函数

**************************************************

*/

static void TaskStartDispInit (void)

{

PC_DispStr( 0, 0, " Traffic Lights System ", DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);

PC_DispStr( 0, 1, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 2, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 3, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 4, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 5, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 6, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 7, " | | N-S Light : [ ] ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 8, " | | TimeRemain: (s) ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 9, " ____________________| |______________________ ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 10, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 11, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 12, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 13, " ____________________ _______________________ ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 14, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 15, " W-E Light : [ ] | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 16, " TimeRemain: (s)| | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 17, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 18, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 19, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 20, " | | ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 21, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 22, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 23, " ", DISP_BGND_BLACK+DISP_FGND_WHITE);

PC_DispStr( 0, 24, " <-PRESS 'ESC' TO QUIT-> ", DISP_BGND_BLACK+DISP_FGND_WHITE);

}

/*

******************************************************* 初始化显示

**************************************************

*/

static void TaskStartDisp (void)

{

char *arr;

int arrow[2] = {49,50};

sprintf(arr,"SetTime: %d ( %c Add, %c Reduce)", SetTime,arrow[0],arrow[1]);

PC_DispStr( 0, 23, arr, DISP_BGND_BLACK+DISP_FGND_WHITE);

}

/*

******************************************************* 创建任务

**************************************************

*/

static void TaskStartCreateTasks (void)

{

OSTaskCreateExt(TaskClk,

(void *)0,

&TaskClkStk[TASK_STK_SIZE - 1],

TASK_CLK_PRIO,

TASK_CLK_ID,

&TaskClkStk[0],

TASK_STK_SIZE,

(void *)0,

OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

OSTaskCreateExt(Task1,

(void *)0,

&Task1Stk[TASK_STK_SIZE - 1],

TASK_1_PRIO,

TASK_1_ID,

&Task1Stk[0],

TASK_STK_SIZE,

(void *)0,

OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

OSTaskCreateExt(Task2,

(void *)0,

&Task2Stk[TASK_STK_SIZE - 1],

TASK_2_PRIO,

TASK_2_ID,

&Task2Stk[0],

TASK_STK_SIZE,

(void *)0,

OS_TASK_OPT_STK_CHK |

OS_TASK_OPT_STK_CLR);

}

/*

******************************************************* 交通灯显示任务

**************************************************

*/

void Task1 (void *pdata)

{

int sem = 0;

int change = 0;

INT8U err;

OS_STK_DATA data;

INT16U time;

INT8U i;

char *ss = NULL;

char s[80];

INT32U T;

pdata = pdata;

for (;;) {

sprintf(ss,"%d",LightTime);

// 将当前剩余时间转换成为字符串

PC_DispStr(56, 8, ss , DISP_FGND_LIGHT_RED + DISP_BGND_BLACK); // 打印剩余时间

PC_DispStr(23, 16, ss , DISP_FGND_LIGHT_RED + DISP_BGND_BLACK);

if (LightTime < 10) {

// 处理个位显示

PC_DispStr(57, 8, " " , DISP_FGND_LIGHT_RED + DISP_BGND_BLACK);

PC_DispStr(24, 16, " " , DISP_FGND_LIGHT_RED + DISP_BGND_BLACK);

}

if (LightTime < 4) {

// 通过信号和change变量控制信号灯的逻辑

sem = 1;

if (change && LightTime == 0)

change = 0;

else if (!change && LightTime == 0)

change = 1;

}

if (sem == 1 && LightTime == 0 && change == 0) {

sem = 0;

}

else if (sem == 1 && LightTime == 0 && change == 1) {

sem = 2;

}

DisplayLight(sem);

OSTimeDlyHMSM(0, 0, 1, 0);

}

}

/*

******************************************************* 显示交通灯状态

**************************************************

*/

void DisplayLight(int sem)

{

if (sem == 0) // 按照传入信号量的不同设置显示的状态.

{

DisplayLightS();

}

else if (sem == 1)

{

DisplayLightBS();

}

else if (sem == 2)

{

DisplayLightG();

}

}

/*

******************************************************* 交通灯显示红绿

**************************************************

*/

void DisplayLightS(void)

{

PC_DispStr(57, 7, "S", DISP_FGND_LIGHT_RED + DISP_BGND_BLACK);

PC_DispStr(24, 15, "G", DISP_FGND_LIGHT_GREEN + DISP_BGND_BLACK);

}

/*

******************************************************* 交通灯显示绿红

十字路口红绿灯控制系统讲解

课 程 设 计 2015 年 7 月 30 日 设计题目 学 号 专业班级 学生姓名指导教师 十字路口自动红绿灯指挥系统

目录 一、主要指标及要求 (1) 二、方案选择 (1) 三、工作原理分析 (1) 四、单元模块设计及分析 (2) 4.1时钟信号脉冲发生器设计 (2) 4.2定时器设计 (4) 4.3 延时电路设计 (5) 4.4状态转换电路设计 (6) 4.5置数组合逻辑设计 (7) 五、总电路图 (9) 六、设计心得 (9) 七、参考文献 (10)

十字路口自动红绿灯指挥系统 班级:指导老师: 学生: 学号: 一、主要指标及要求 1.自动完成绿-黄-红-绿-……工作循环; 2.每种信号灯亮的时间不等,如:绿灯亮20秒-黄灯亮5秒-红灯亮15秒,如此循环; 3.用倒计时的方法,数字显示当前信号的剩余时间,提醒行人和司机; 4.(*) 信号灯的时间分别可调,以适应不同路口,不同路段交通流量的需求。 二、方案选择 三、工作原理分析 本电路分为五个模块,即时钟信号脉冲发生器、定时器、延时电路、状态转换电路、置数组合逻辑电路。其中由555定时器组成的时钟信号脉冲发生器为由两片74LS192计数器组成的定时器电路提供1Hz的脉冲信号,使计时器能够正常计数。由三片双四选一数据选择器组成的置数组合逻辑电路分别为计数器置

19s、4s、14s和0s等不同的数。当计数归零时,计数器的溢出信号使双D触发器的状态发生跳转,同时控制着绿黄红灯的亮灭,使得绿黄红灯亮时,定时器分别置19s、4s、14s。延时电路起到延时作用,当计数器计数归零时,溢出信号通过延时电路先使触发器状态发生翻转,再加载LD信号,使计数器置一个新数。 四、单元模块设计及分析 4.1时钟信号脉冲发生器 时钟信号脉冲发生器选用555定时器主要用来产生秒脉冲信号。脉冲信号的频率可调,所以可以采用555组成多谐振荡器,其输出脉冲作为下一级的时钟信号。555定时器是一种模拟和数字功能相结合的中规模集成器件。555定时器的电源电压范围宽,可在5~16V工作,最大负载电流可达200mA。555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。 555定时器构成多谐振荡器,组成信号产生电路接通电源后,VCC通过电阻R1、R2给电容C充电,充电时间常数为(R1+R2),电容上的电压vC按指数规律上升,当上升到VREF1=2VCC/3时,比较器C1输出高电平,C2输出低电平,RS=10,触发器被复位,放电管T28导通,此时v0输出低电平,电容C开始通过R2放电,放电时间常数约为R2C,vC下降,当下降到VREF2=VCC/3时,比较器C1输出低电平,C2输出高电平,RS=01,触发器被置位,放电管T28截止,v0输出高电平,电容C又开始充电,当vC上升到时VREF1=2VCC/3,触发器又开始翻转。如此周而复始,输出矩形脉冲。其电路原理图如下:

北京科技大学 嵌入式课程设计报告

《嵌入式控制系统》课程设计报告 学院 专业班级 姓名 学号 指导教师 _

目录 摘要 (4)

Abstract (4) 引言 (5) 带中断LED数码管驱动程序设计 (6) 1.设计内容 (6) 1.1 基本功能 (6) 1.2 扩展功能 (6) 1.3创新功能 (6) 2.实验设备 (6) 3.设计功能块说明 (6) 4.设计原理 (7) 4.1 LED发光原理 (7) 4.2 八位LED显示器 (8) 5. 实验步骤 (8) 5.1 驱动程序加载 (8) 5.2 添加控件 (8) 5.3基本功能的实现 (9) 5.4 使用指南 (10) 6. 实验结果 (10) 6.1 基本功能实现结果 (10) 6.2 LED数码管清零功能实现结果 (11) 6.3 中断计数功能实现结果 (12) 6.4 频率设置功能实现结果 (13) 7. 心得体会 (14) 附录 (16)

摘要 通过嵌入式控制系统课程的学习并结合本次课程设计,了解嵌入式系统的开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉Windows CE嵌入式系统的基本原理、概念。能针对Intel XScale硬件平台、应用需求自行定制、优化WinCE操作系统,并独立编写可在Intel XScale嵌入式设备上运行的应用程序。 本课程设计主要实现了LED数码管的驱动程序,中断计数功能、LED显示清零功能、LED 数字显示频率设置的功能。 关键字:WINCE 中断数码管驱动 Abstract Learning Embedded Control Systems and combining the curriculum design can help us understand the Embedded Control Sy stems’ development methods and processes, and be familiar with Intel XScale Hardware platform and its usage. Know well the basic principles and concepts about WINCE. Design and optimize Windows Embedded Compact and compose Application software program that can operate on the Intel XScale Hardware platform. The main achievement of the curriculum design are drivers for LED, Interrupt Count, clean the results of the LED and set up the display frequency of the LED. Key words: WINCE Interrupt Digital Driving

嵌入式控制系统综合实验

《嵌入式控制系统综合实验》课程 实验报告 项目名称 基于STM32的手机输入法 南京理工大学 2017年6 月

目录 1 设计背景 (2) 2 系统总体方案 (3) 3 系统具体设计 (4) 3.1 手写识别原理 (4) 3.2手写识别程序设计 (6) 3.3手写识别硬件设计 (10) 3.4拼音九键输入原理 (10) 3.5拼音九键软件设计 (11) 3.6拼音九键硬件设计 (13) 4 编译调试 (14) 4.1 手写识别、拼音输入法单项调试 (14) 4.2 手写识别、拼音输入法组合调试 (18) 5总结 (19)

1 设计背景 随着计算机技术和微电子技术的迅速发展,嵌入式系统应用领域越来越广泛。随着IC设计的发展,出现了工业化ARM芯片,ARM微处理器及技术已经深入到各大领域,并取得了很大成功,如无线通信领域、蓝牙技术、网络应用领域、消费类电子产品领域、信息家电领域等。 目前几乎所有带触摸屏的手机都能实现拼音输入和手写识别输入。 Cortex-M3采用ARM V7构架,不仅支持Thumb-2指令集,而且拥有很多新特征。较之ARM7 TDMI,Cortex-M3拥有更强劲的性能、更高的代码密度、位带操作、可嵌套中断、低成本、低功耗等众多优势。 本次嵌入式实验,我们采用基于STM32F103带4.3寸触摸屏的嵌入式开发板来模拟一个手机输入法,该输入法功能主要有手写识别跟拼音九键。嵌入式开发平台如图1所示。 图1 STM32F103嵌入式开发平台

2 系统总体方案 本次嵌入式实验设计了“手机输入法”功能,该输入法功能主要包括两种输入方式——拼音九键+手写识别。下面首先介绍一下本设计的软、硬件基础,然后介绍本设计的总体方案。 软件基础:本次嵌入式综合实验,我们利用MDK软件来开发STM32。MDK 源自德国的KEIL公司,是RealView MDK的简称。在全球MDK被超过10万的嵌入式开发工程师使用。MDK5向后兼容MDK4和MDK3等,以前的项目同样可以在MDK5上进行开发(但是头文件方面得全部自己添加),MDK5同时加强了针对Cortex-M微控制器开发的支持,并且对传统的开发模式和界面进行升级,MDK5由两个部分组成:MDK Core和Software Packs。其中,Software Packs可以独立于工具链进行新芯片支持和中间库的升级。 硬件基础:本次嵌入式综合实验所使用的STM32开发板选择的是STM32F103ZETT6作为MCU,该芯片是STM32F103里面配置非常强大的了,它拥有的资源包括:64KB SRAM、512KB FLASH、2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(共12个通道)、3 个SPI、2个IIC、5 个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO 接口、1个FSMC接口以及112个通用IO口。该芯片的配置十分强悍,并且还带外部总线(FSMC)可以用来外扩SRAM和连接LCD等,通过FSMC驱动LCD,可以显著提高LCD的刷屏速度, 本设计要完成输入法的界面设计、功能实现以及不同输入方式之间的来回切换,还必须与键盘、LCD等硬件设备结合。总体方案如下: (1)设计输入法的总体要实现的功能,画出功能块图; (2)将整个输入法设计分成两大模块,一是手写识别,二是拼音输入,分别对他们进行程序设计; (3)画出手写识别与拼音输入的程序流程图,并编写相应的程序; (4)最后,将设计好的两个输入法模块整合起来,并编写相应的程序,使之可以完美地进行来回切换。 系统总体设计框图如图2:

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设计报告

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设 计报告 NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告 学生姓名: 学号: 学院: 专业班级: 指导教师: 同组成员: 2016年 12 月 26 日 嵌入式系统课程设计报告 一、课程设计目的 本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一 次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。 二、设计题目及要求 2.1 设计题目: 基于STM32和uC/OS-II的多任务设计 2.2 功能实现:

使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。 2.3 设计要求: 理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。 四个任务分别为: (1)驱动1个LED指示灯闪烁、 (2)由3个LED指示灯组成流水灯 (3)驱动蜂鸣器发出响声。 (4)利用swd方式进行printf输出。 三、设计原理说明 3.1 硬件说明 本次课程设计主要使用的是STM32 神舟 IV 号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。 (1)开发板资源图 - 1 - 嵌入式系统课程设计报告

单片机控制红绿灯系统

关键词:AT89C51;7448,LED 2方案论证 2.1设计任务 设计基于单片机的智能交通红绿灯控制系统,要求能通过按键或遥控器设置系统参数,系统运行时,“倒计时等信息”能通过数码管或点阵发光管显示,设计时应考虑交通红绿灯控制的易操作性及智能性。以单片机的最小系统为基础设计硬件,用汇编语言、或C语言设计软件。通过本设计可以培养学生分析问题和解决问题的能力,掌握Mcs51单片机的硬件与软件设计方法,从而将学到的理论知识应用于实践中,为将来走向社会奠定良好的基础。 东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行,黄灯亮时车辆及行人小心通过。红灯的设计时间为45秒,绿灯为40秒,黄灯为5秒。 2.2 方案介绍 方案1设计思想: 采用分模块设计的思想,程序设计实现的基本思想是一个计数器,选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状 态的转换,由于每一个模块的计数多不是相同,这里的各模块是以预置数和计数器计 数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输 入要产生相应状态的下一个状态的预置数,如图中A道和B道,分别为次干道的置数选 择和主干道的置数选择。 方案2 设计思想: 由两个传感器监视南北方向即A道与东西方向即B道的车辆来往情况,设开关K=1 为有车通过,K=0为没有车通过。则有以下四种情况: Ka=1时:Kb=0,表示A有车B没有车,则仅通行B道: Kb=1,表示A有车B有车,则优先通行A道; Ka=0时:Kb=0表示A没有车B也没有车,同样优先通行A道; Kb=1表示A没有车B有车,则仅通行B道。 方案比较: 方案1用了模块设计,而方案2采用逻辑设计,相比之下1有较强的可读性和较强 的可修改性,而2则在设计上显得较简单,设计纯朴,便于测试,它的优势则在于提供

嵌入式课程设计报告

嵌入式课程设计报告设计题目:电子密码锁

、 摘要 随着科技和人们的生活水平的提高,实现防盗的问题也变得尤为突出,传统机械锁构造简单,电子锁的保密性高,使用灵活性好。根据需要设计运用W90P170开发板,制作一款电子密码锁,密码锁通过键盘输入密码,通过在LCD的文字和图片显示当前密码锁的状态。实现设置密码,密码验证,错误密码自锁、图片显示的功能。 目录

一、选题意义及系统功能 (3) 二、硬件设计及描述 (4) 三、软件设计及描述 (5) 四、程序代码 (6) 五、课程设计体会 (11) 六、运行结果 (12) 七、心得体会 (12) 八、参考文献 (13) 九、附录 (13) 一、选题意义及功能描述 1、选题意义 电子密码锁是通过密码输入来控制电路或是芯片工作,从而控制机械的开关闭合、开锁的电子产品。随着科技提高和人们生活水平的提高,对电子密码锁的需求增加。电子密码做较传统的机械锁安全性能更高。 特点如下: (1)保密性好,编程量大,随机开锁的成功率几乎为零。

(2)密码可变,用户可以随时改变密码,防止密码被盗,同时也可以避免人员的更替而使锁的密级下降。 (3)误码输入保护,输入密码多次错误是,系统进行自锁。 (4)无活动零件,不会磨损,寿命长。 (5)使用灵活性好,无需佩戴钥匙,操作简单。 2、功能描述 基本功能: (1)从键盘输入任意6位数字作为密码,将这六位数字经过USI总线存储到Flash芯片中,设置密码完成。 (2)从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。 (3)如果密码正确,则LED灯点亮;如果密码不正确,则LED灯闪烁,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码。 扩展功能: (1)首先显示“请输入密码:”,显示密码锁背景图片1。 (2)如果密码正确则显示“密码正确”,显示成功进入系统的背景图片2。 (3)如果密码不正确则显示“密码不正确,请重新输入:” (4)如果连续三次输入密码错误则显示“对不起,您已经连续三次输入密码错误,系统锁定”,显示图片1。

嵌入式系统设计课设报告分析解析

福州大学 《嵌入式系统设计课设》 报告书 题目:基于28027的虚拟系统 姓名: 学号: 学院:电气工程与自动化学院 专业:电气工程与自动化 年级: 起讫日期: 指导教师:

目录 1、课程设计目的 (1) 2、课程设计题目和实现目标 (1) 3、设计方案 (1) 4、程序流程图 (1) 5、程序代码 (1) 6、调试总结 (1) 7、设计心得体会 (1) 8、参考文献 (1)

1、课程设计目的 《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节。《嵌入式系统设计》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。培养大胆发明创造的设计理念,为今后就业打下良好的基础。 通过课程设计,掌握以下知识和技能: 1.嵌入式应用系统的总体方案的设计; 2.嵌入式应用系统的硬件设计; 3.嵌入式应用系统的软件程序设计; 4.嵌入式开发系统的应用和调试能力 2、课程设计题目和实现目标 课程设计题目:基于28027的虚拟系统 任务要求: A、利用28027的片上温度传感器,检测当前温度; B、通过PWM过零中断作为温度检测A/D的触发,在PWM中断时 完成温度采样和下一周期PWM占空比的修正;PWM频率为1K; C、利用按键作为温度给定;温度给定变化从10度到40度。 D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设 定);当检测温度小于给定时,PWM占空比增大(增大幅度自己 设定); E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比; F、把E测量的PWM占空比通过串口通信发送给上位机; 3、设计方案-----介绍系统实现方案和系统原理图 ①系统实现方案: 任务A:利用ADC模块通道A5获取当前环境温度。 任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度和按键设定温度进行比较,并按照任务D的要求修订PWM占空比。

交通灯控制系统

1选题背景 今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。 关键词:AT89C51;7448,LED 2方案论证 2.1设计任务 设计基于单片机的智能交通红绿灯控制系统,要求能通过按键或遥控器设置系统参数,系统运行时,“倒计时等信息”能通过数码管或点阵发光管显示,设计时应考虑交通红绿灯控制的易操作性及智能性。以单片机的最小系统为基础设计硬件,用汇编语言、或C语言设计软件。通过本设计可以培养学生分析问题和解决问题的能力,掌握Mcs51单片机的硬件与软件设计方法,从而将学到的理论知识应用于实践中,为将来走向社会奠定良好的基础。 东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行,黄灯亮时车辆及行人小心通过。红灯的设计时间为45秒,绿灯为40秒,黄灯为5秒。 2.2 方案介绍 方案1设计思想: 采用分模块设计的思想,程序设计实现的基本思想是一个计数器,选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状 态的转换,由于每一个模块的计数多不是相同,这里的各模块是以预置数和计数器计 数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输 入要产生相应状态的下一个状态的预置数,如图中A道和B道,分别为次干道的置数选 择和主干道的置数选择。 方案2 设计思想: 由两个传感器监视南北方向即A道与东西方向即B道的车辆来往情况,设开关K=1 为有车通过,K=0为没有车通过。则有以下四种情况: Ka=1时:Kb=0,表示A有车B没有车,则仅通行B道:

十字路口红绿灯控制系统

课 程 设 计 2015 年 7 月 30 日 设计题目 学 号 专业班级 学生姓名指导教师

目录 一、主要指标及要求 (1) 二、方案选择 (1) 三、工作原理分析 (1) 四、单元模块设计及分析 (2) 4.1时钟信号脉冲发生器设计 (2) 4.2定时器设计 (4) 4.3 延时电路设计 (5) 4.4状态转换电路设计 (6) 4.5置数组合逻辑设计 (7) 五、总电路图 (9) 六、设计心得 (9) 七、参考文献 (10)

十字路口自动红绿灯指挥系统 班级:指导老师: 学生: 学号: 一、主要指标及要求 1.自动完成绿-黄-红-绿-……工作循环; 2.每种信号灯亮的时间不等,如:绿灯亮20秒-黄灯亮5秒-红灯亮15秒,如此循环; 3.用倒计时的方法,数字显示当前信号的剩余时间,提醒行人和司机; 4.(*) 信号灯的时间分别可调,以适应不同路口,不同路段交通流量的需求。 二、方案选择 三、工作原理分析 本电路分为五个模块,即时钟信号脉冲发生器、定时器、延时电路、状态转换电路、置数组合逻辑电路。其中由555定时器组成的时钟信号脉冲发生器为由两片74LS192计数器组成的定时器电路提供1Hz的脉冲信号,使计时器能够正常计数。由三片双四选一数据选择器组成的置数组合逻辑电路分别为计数器置19s、4s、14s和0s等不同的数。当计数归零时,计数器的溢出信号使双D触发器的状态发生跳转,同时控制着绿黄红灯的亮灭,使得绿黄红灯亮时,定时器分别置19s、4s、14s。延时电路起到延时作用,当计数器计数归零时,溢出信号通过延时电路先使触发器状态发生翻转,再加载LD信号,使计数器置一个新数。 四、单元模块设计及分析 4.1时钟信号脉冲发生器 时钟信号脉冲发生器选用555定时器主要用来产生秒脉冲信号。脉冲信号的频率可调,所以可以采用555组成多谐振荡器,其输出脉冲作为下一级的时钟信号。555定时器是一种模拟和数字功能相结合的中规模集成器件。555定时器的电源电压范围宽,可在5~16V工作,最大负载电流可达200mA。555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。 555定时器构成多谐振荡器,组成信号产生电路接通电源后,VCC通过电阻R1、R2给电容C充电,充电时间常数为(R1+R2),电容上的电压vC按指数规律上升,当上升到VREF1=2VCC/3时,比较器C1输出高电平,C2输出低电平,RS=10,

嵌入式系统课程设计

嵌入式系统课程设计 学号:1070410014030 班级:通信10 姓名:刘豆

嵌入式系统在智能交通中的应用摘要:介绍了嵌入式系统及其操作系统,并将其系统和通用计算机系统作了比较,总结了嵌入式系统产品在ITS(Intelligent Traffic system ),智能交通系统应用中的工作稳定性高,环境适应能力强和设备独立性三个特点,且结合嵌入式产品在ITS中应用的这几个特点,探讨了嵌入式系统在智能交通系统中应用研究。最后,展望嵌入式系统在ITS(智能交通系统)中的广泛应用。 关键词:嵌入式系统;嵌入式操作系;ITS;数字信号 中图分类号: Application of Embedded System in ITS Abstract: This article mainly introduce embedded system and its operation system , the embedded system are compared with general computer system. And this article summarizes three characteristics about embedded systems’ production applied to ITS: the high working stabilities, the strong ability for environment and the independency of equipments .Combining with the application research of embedded systems in ITS。At last, the author prospects that embedded systems are used widely in ITS in the whole nation. Keywords; embedded system; embedded operational systems ; ITS ; digital signal 嵌入式系统如今在实际生活中有巨大应用,观察身边不难发现电子产品、智能家居等大多用嵌入式系统来实现。这篇论文举一个应用实例,即智能交通系统。一个智能交通系统(ITS)主要由交通信息采集、交通状况监视、交通控制、信息发布和通信5大子系统组成。各种信息都是ITS的运行基础,而以嵌入式为主的交通管理系统就像人体内的神经系统一样在ITS 中起至关重要的作用。嵌入式系统应用在测速雷达、(返回数字式速度值)运输车队遥控指挥系统、车辆导航系统等方面,在这些应用系统中能对交通数据进行获取、存储、管理、传输、分析和显示,以提供交通管理者或决策者对交通状况现状进行决策和研究。 1.嵌入式系统与嵌入式操作系统 1.1嵌入式系统 通俗来讲,嵌入式系统是带有操作系统的单片机系统;主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组。他的框架可分为5个部分:处理器、内存、输入/输出、操作系统与应用软件(如图1所示)。嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等。总体看来,嵌入式系统具有便利灵活、性能价格比高、嵌入性强等特点,可以嵌入到现有任何信息家电和工业控制系统中。软件角度来看,嵌入式系统具有不可修改性,系统所需配置要求较低&系统专业性和实时性较强等特点。 1.2 嵌入式操作系统 对于目前发展迅速的信息产品来说,其最关键的核心技术就是嵌入式操作系统。嵌入式操作系统EOS(Embedded Operating System)是一种支持嵌入式系统应用的操作系统软件。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序;另外,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于A RM的数字式万年历 课程:嵌入式系统课程设计 专业:电子信息科学与技术 班级: 03114411 学号: 031441119 学生姓名:田紫龙 指导教师:易金桥 2017年6 月20 日

信息工程学院课程设计任务书 学号031441119学生姓名田紫龙专业(班级)0314411 设计题目基于 ARM 的数字式万年历 1.能测量温度并且实时显示; 2.具有时间显示功能,能够显示年月日,时分秒,并且可以手动调节时间。 设 3. 具有 12 小时制和 24 小时制切换功能。 计 技 术 参 数 对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集 选用 DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602 液晶显 示模块,可以在LCD1602 上同时显示年、月、日、周日、时、分、秒,还具有 设 时间校准整点灯光提醒等功能。制作仿真和实物。 计 要 求 [1]苏平 . 单片机的原理与接口技术 [M]. 北京 : 电子工业出版社, 2006,1-113. [2]王忠民 . 微型计算机原理 [M]. 西安 : 西安科技大学出版社, 2003,15-55. [3]左金生 . 电子与模拟电子技术 [M]. 北京 : 电子工业出版社, 2004,105-131. [4]新编单片机原理与应用(第二版). 西安电子科技大学出版社, 2007.2 [5]张萌 . 单片机应用系统开发综合实例 [M]. 北京:清华大学出版社, 2007.7 [6] 朱思荣. 51 单片机实现公历与农历、星期的转换[Z].当当电子网 [7]李广弟 . 单片机原理及应用 [M] 北京航空航天大学出版社 ,2004 年 参[8] 王越明 . 电子万年历的设计 [J]. 黑龙江科技信息, 2004 年 考 资 料 2017年 6 月 20 日

课程设计-基于PLC控制的交通红绿灯系统设计

《机电一体化》课程设计交通红绿灯PLC控制系统 班级:工学院机电1003班 指导老师: _________ 小组成员: __________________________ __________________________ __________________________ 日期: 2013年6月28日

【摘要】随着社会经济的快速发展和人们消费水平的不断提高,私家车不断增加,城市人多、车多道路少的交通状况越来越引起人们的关注。为了实现交通道路的管理,在各个道口安装红路灯已经成为了疏导交通车辆最为常见和最有效的手段。PLC控制系统可以实现了按车流量规模给定绿灯时长,达到最大限度的车辆放行,减少十字路口的车辆滞流,缓解交通拥挤以实现最优控制,从而提高交通控制系统的效率。 PLC具有结构简单、编程方便、可靠性高等优点,并广泛用于工业过程的自动控制中。由于PLC具有对使用环境适应性强的特性,同时其内部的定时器资源十分丰富,可对目前较为普遍使用的“渐进式”信号灯进行精确控制,能够方便实现对多岔路口红绿灯的控制,因此PLC被越来越多地应用于交通灯系统中。 PLC还具有通讯联网功能,可将同一条道路上的信号灯连成一局域网进行统一调度管理,缩短车辆通行等候时间,实现科学化管理。在实时检测和自动控制PLC应用系统中,PLC大都是作为一个核心部件来设计使用的。 【关键词】 PLC;交通灯;控制系统

目录 第一章绪论 (1) 1.1 PLC及WinCC介绍 (1) 1.1.1 PLC简单概述 (1) 1.1.2 WinCC介绍 (2) 1.2 十字路口交通灯控制任务 (3) 1.3 研究目的和意义 (4) 1.4 方案设计 (4) 第二章交通信号控制系统实况 (5) 2.1十字路口交通灯控制实际情况描述 (5) 2.1.1 控制任务要求 (5) 2.2 结合十字路口交通灯的路况画出模拟图 (5) 2.3交通灯控制流程图 (6) 第三章可编程控制器程序设计 (7) 3.1可编程控制器I/O端口分配 (7) 3.2 PLC的外部接线图 (7) 3.2.1输入/输出接线列表 (7) 3.2.2 PLC外部接线原理图 (7) 3.3程序梯形图及其说明 (8) 第四章十字路口交通灯的组态控制过程 (12) 4.1工程的建立和变量定义 (12) 4.1.1 工程的建立 (12) 4.1.2 变量的定义 (12) 4.2组态画面的建立 (12) 4.3 MOVEX1~MOVEY2的脚本编辑 (13) 第五章小组总结 (15) 参考文献 (15) 附表:PLC梯形图指令表 (16) 附图:交通红绿灯PLC控制系统实验相片 (18)

嵌入式控制系统随堂练习

1.最早的单片机是Intel公司的(),它出现在1976年。 A.8088 B.8048 C.8058 D.8068 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 2.下面哪种操作系统不属于商用操作系统。() A. Windows 7 B. Linux C. VxWorks D. WinCE 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 3.下面哪点不是嵌入式操作系统的特点。() A. 内核精简 B. 专用性强 C. 功能强大 D. 高实时性 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 4.迄今为止,()系列的单片机仍然是最为成功的单片机芯片之一,在各种产品中有着非常广泛的应用。A.8088 B.8048 C.8058 D.8051 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 5.嵌入式系统的核心是()和嵌入式操作系统。 A.嵌入式微处理器B.存储器C.单片机D.内部总线 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 6.下面哪种嵌入式系统是属于软实时系统。() A.WinCE B.VxWorks C.Nucleus D.eCOS 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 7.下面哪种嵌入式系统是属于硬实时系统。() A.WinCE B.RTLinux C.Windows XP D.eCOS 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 8.Embedded Visual Studio是()

参考答案:B 问题解析: 9.下面哪些不属于嵌入式控制系统的典型应用。() A.智能家居 B. 智能手机 C. 智能控制 D. 智能数据挖掘 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 10.下面哪个系统属于嵌入式系统()。 A.“天河一号”计算机系统B.IBMX200笔记本电脑 C.联想S10上网本D.Iphone手机 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 当前页有10题,你已做10题,已提交10题,其中答对10题。 11.一个完整的嵌入式系统由()两大部分组成。 A.系统软件和应用软件B.硬件系统和软件系统 C.通用机和专用机D.基本缓存和硬盘 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 12.HAL是指() Α.嵌入式微控制器B.硬件抽象层 C.嵌入式数字信号处理器D.嵌入式片上系统 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 13.BSP是指() Α.嵌入式操作系统B.板级支持包 C.嵌入式微处理D.应用软件包 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 14.EMPU是指() Α.嵌入式微控制器B.嵌入式微处理器 C.嵌入式数字信号处理器D.嵌入式片上系统 答题: A. B. C. D. (已提交) 参考答案:B

嵌入式系统课程设计

《嵌入式系统设计与应用》课程设计 题目嵌入式系统的实践教学探讨 1.嵌入式系统设计与应用课程的内容概述 1.1 内容概述 本课程适用于计算机类专业,是一门重要的专业课程。它的任务是掌握嵌入式系统的基本概念;掌握嵌入式处理器 ARM 体系结构,包括ARM总体结构、存储器组织、系统控制模块和I/O外围控制模块;掌握ARM指令集和Thumb指令集;掌握ARM汇编语言和C语言编程方法;了解基于ARM 的开发调试方法。它的目的是了解和掌握嵌入式处理器的原理及其应用方法。 1)介绍嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应 用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入 式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基 本内容,使学生系统地建立起的嵌入式系统整体概念。 2)对ARM技术进行全面论述,使学生对ARM技术有个全面的了解和掌握,建立起以ARM技术为基础的嵌入式系统应用和以ARM核为基础 的嵌入式芯片设计的技术基础。 3)ARM指令系统特点,ARM 指令系统,Thumb 指令系统,ARM 宏汇编,ARM 汇编语言程序设计,嵌入式 C 语言程序设计。 1.2实践教学探讨 在IEEE 计算机协会2004年6月发布的Computing Curricula Computer Engineering Report, Ironman Draf t 报告中把嵌入式系统课程列为计算机工程学科的领域之一,把软硬件协同设计列为高层次的选修课程。美国科罗拉多州立大学“嵌入式系统认证”课程目录包括实时嵌入式系统导论、嵌入式系统设计和嵌入式系统工程训练课程。美国华盛顿大学嵌入式系统课程名称是嵌入式系统

十字路口交通灯控制系统(终)

安徽三联学院 学年论文 十字路口交通灯控制系统Crossroads traffic lights control system 专业:电气工程及其自动化 姓名: 学号: 指导老师: 2010年12 月15 日 信息与通信技术系

【摘要】根据8051单片机的特点及交通灯在实际控制中的特点,本文提出一种用单片机自动控制交通灯及时间显示的方法。同时给出了软硬件设计方法,设计过程包括硬件电路设计和程序设计两大步骤,对在单片机应用中可能遇到的重要技术问题都有涉足。本文对十字路口状态预设为两种,一种是正常状态,另一种是故障或紧急状态,通过按键来实现。通过按键可以调节时间的显示;以及红绿灯亮的时间;还可以设置交通忙碌时间;当时间达到忙碌的时间,程序则进入忙碌时间。在此设计中用LCD1602来作为人机相联的显示屏,数码管作倒计时,双色LED作为红绿黄三种交通控制灯,四个按键当为设置和急停用。 【关键词】单片机;交通灯;时间显示器;数码管。 【Abstract】8051 features and characteristics of traffic lights in the actual control, this paper proposes a single-chip automatic control of traffic lights and time display. Given hardware and software design methods, the two steps of the design process including the hardware circuit design and programming have to get involved on important technical issues that may be encountered in the SCM application. Crossroads state default two, one is the normal state, another is a failure or emergency button. Button can adjust the time display; and traffic lights bright; can also set the traffic busy time; time to reach a busy time, the program is to enter a busy time. In this design, using LCD1602 as a display of human-computer linked digital tube to make countdown, the two-color LED as red, green and yellow three traffic control lights, four buttons to use for the set and emergency stop. 【Key words】SCM; traffic lights; time display; digital tube.

广东海洋大学嵌入式系统课程设计

《嵌入式系统》设计报告学生姓名 Adao (学号) 所在学院数学与计算机学院 所在班级计科1141 指导教师 成绩

目录 1.课程设计目的 (2) 2.系统分析与设计 (2) 3.系统结构图 (2) 4.实现过程 (3) 5.实验效果 (5) 6.代码分析 (6) 7.系统测试出现的问题和解决的方案 (7) 8.系统优缺点 (7) 9.心得体会 (8) 参考文献 (8)

双按键控制流水灯系统开发 1.课程设计目的: 本次课程设计目的主要是对之前所学习的STM32的某个实验进行更深入的学习与了解,弄懂引脚,端口等相关的配置,对实验原理和具体实现有一定的理解,能做到自己通过原理图和使用库函数等把功能实现出来。我选择的是EXTI-外部中断实验并加以整合,具有一定实用功能的系统,可以对外提供服务。 2.系统分析与设计: 本课程设计所定义的系统主要功能为,通过两个按键KEY1(PA0)、KEY2(PC13)可以实现对流水灯进行同步控制,即一个开关控制产生的灯的状态可以被另一个开关去改变,按键控制需要对两个按键的端口,引脚等进行相关配置,并在两个引脚的中断服务程序中完成对流水灯状态同步控制的操作。本还想通过使用SysTick(系统滴答定时器)功能对流水灯进行精确定时,但由于时间比较匆促,最终没有实现。 3.系统结构图: 图3-1

4.实现过程: 1、GPIO的输入模式有上拉输入模式、下拉输入模式、浮空输入模式和模拟输入模式。GPIO 中的每个引脚可以通过配置端口配置寄存器来配置它的模式。每个引脚的模式由寄存器的4个位控制。 上拉/下拉输入模式:1000 浮空输入模式:0100 模拟输入模式:0000 2、STM32的所有GPIO都可以用作外部中断源的输入端。STM32的中断由中断控制器NVIC 处理。STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表面它的优先级别越高。抢占属性会出现嵌套中断。 3、编写NVIC_Configuration()函数配置NVIC控制器的函数。 static void NVIC_Configuration(uint8_t IRQ) { NVIC_InitTypeDef NVIC_InitStructure; //将NVIC中断优先级分组设置为第1组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* 配置中断源 */ NVIC_InitStructure.NVIC_IRQChannel = IRQ;//设置中断线 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//设置响应优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //对NVIC中断控制器进行初始化 } 4、调用GPIO_EXTILineConfig()函数把GPIOA、Pin0和GDIOC、PIN13设置为EXTI输入线。 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); 5、填写EXTI的初始化结构体,然后调用EXTI_Init()把EXTI初始化结构体的参数写入寄存器。编写EXTI_PA0_Config()函数完成各种需要的初始化。 void EXTI_Pxy_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* config the extiline clock and AFIO clock */

相关主题