




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统课程设计报告 (基于arm的交通灯控制系统) 院 系: 机电学院 学生姓名: 专 业: 应用电子教育 班 级: 指导教师: 田丰庆 付广春 完成时间: 2013年3月28日 1引言11.1设计主旨11.2设计原理11.3总体设计方案12 gpio的简介42.1 gpio口的应用42.2 gpio端口的配置42.3 gpio 的功能53 stm32最小系统电路5 3.1 stm32芯片管脚介绍5 3.2 stm32复位和时钟电路设计54总结85参考文献10附录一11附录二12基于arm的交通灯设计摘要:本设计选择stm32为核心控制元件,设计了一款基于arm3的十字路臂交通灯控制系统,实现对行人、非机动车等的指示。关键词:stm32 arm 交通灯1引言近年来,城市人口与流动人口急剧增加,全国大中城市人口普遍存在着交通拥挤,道路阻塞,率速缓慢等现象。如何解决城市交通问题成为全社会关注的焦点。随着嵌入式系统的飞速发展,这一问题已经得到了解决,通过嵌入式的设计解决了交通的拥堵问题。1.1设计主旨 利用arm芯片模拟实现交通灯控制。自行选择所需arm芯片,查阅相关文献资料,熟悉所选arm芯片,了解所选arm芯片各个引脚功能,工作方式,计数/定时,i/o口,中断等相关原理,通过软硬件设计实现利用arm芯片完成交通灯的模拟控制。 本实验的目的是为了通过设计交通灯从而更好的了解关于stm32、flash等芯片的工作作用。并且对嵌入式有深刻的意识。达到了解交通灯工作原理以及时间控制红蓝绿三灯的闪亮的技术问题。1.2设计原理stm32系列微控器是以arm cortex_m3为内核开发生产的32位微控制器,专为高性能,低成本,低功耗的嵌入式应用专门设计。本次实验就是基于arm的十字路口交通灯设计,通过对现实路况交通灯的分析研究,理解交通控制系统的实现方法,并通过本次实习用开发版实现其功能。通过设计,培养自己综合应用所学知识,独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对arm芯片的了解;熟悉arm芯片各个引脚的功能,工作方式,计数/定时,i/o口,中断等相关原理,巩固学习嵌入式的相关内容知识。利用arm芯片模拟实现交通灯控制。1.3总体设计方案 本设计采用stm32为主芯片,形成主控制电路。通过程序控制整个电路的运转一级红黄绿三种信号的转换。stm32系列单片机有包含若干定时器/计数器。其中,tim1和tim8是高级控制定时器,tim2tim5为通用定时器。tim6和tim7为基本定时器。在嵌入式系统中,定时器是依靠时钟源来完成定时功能的。 一个十字路口由东西,南北两干道构成,各有一组红,绿,黄三色指示灯。红灯亮禁止通行,绿灯亮允许通行,黄灯亮警示人们注意红,绿灯即将切换且黄灯亮的时间为东西,南北两干道的公共停车时间。当开发版和电脑连接好以后,将程序下载到开发板中可以看到外接电路的红,绿,黄灯的变化情况。一通上电时南北方向上的直走和右转绿灯亮,延时20s后黄灯亮,黄灯延时5s后左转绿灯亮,(在绿灯亮的时候其余方向上的灯都为红灯),延时40s后黄灯亮,延时5s后都被切换成红灯。延时80s再继续循环。此次实习因为资源有限只演示南北方向上的红绿灯变化情况。具体的工作流程如下。图1 流程图2 gpio的简介2.1 gpio口的应用 函数gpio口的具体实现在库文件“stm32f10x_gpio.c”中,其作用是定义各个通用io端口的模式,对应到外设的输入/输出功能有以下三种情况:(1) 外设对应的引脚为输入:则根据外围电路的配置可以选择浮空输入.带上拉输入或带下拉输入。(2) adc对应的引脚:配置引脚为模拟输入。(3) 外设对应的引脚为输出:需要根据外围电路的配置选择对应的引脚为复用功能的推挽输出或复用功能的开漏输出。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将引脚配置成复用输出功能后,如果外设没有被激活,它的输出将不确定。2.2 gpio端口的配置图2 端口配置电路2.3 gpio 的功能(1)最基本的功能是可以驱动led.产生pwm.驱动蜂鸣器等。(2)具有单独的位设置或位清楚,编程简单。(3)具有外部中断/唤醒能力,端口配置成输入模式时,具有外部中断能力。(4)具有复用功能,复用功能的端口兼有i/o功能等。(5)gpio 口的配置具有锁定机制,当配置好gpio口后,在一个端口位上执行了锁定,可以通过程序锁住配置组合,在下一次复位之前,将不能再更改端口位的配置。3 stm32最小系统电路3.1 stm32芯片管脚介绍stm32f103r6t6管脚示意图,如图3所示。图3 stm32f103r6t6管脚示意图3.2 stm32复位和时钟电路设计 此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图4(右)所示:其中7脚为stm32的复位端。时钟电路如图4(左)所示:晶振采用的是8mhz和32.786khz,8mkz分别接stm32的5脚和6脚,32.786khz分别接stm32的3脚和4脚。图4 stm32复位和时钟电路定时器程序如下。#include time_test.h/* * 函数名:tim2_nvic_configuration * 描述 :tim2中断优先级配置 * 输入 :无 * 输出 :无 */void tim2_nvic_configuration(void) nvic_inittypedef nvic_initstructure; nvic_prioritygroupconfig(nvic_prioritygroup_0); nvic_initstructure.nvic_irqchannel = tim2_irqn; nvic_initstructure.nvic_irqchannelpreemptionpriority = 0; nvic_initstructure.nvic_irqchannelsubpriority = 3; nvic_initstructure.nvic_irqchannelcmd = enable; nvic_init(&nvic_initstructure);/*tim_period-1000 tim_prescaler-71 -中断周期为1ms*/void tim2_configuration(void) tim_timebaseinittypedef tim_timebasestructure; rcc_apb1periphclockcmd(rcc_apb1periph_tim2 , enable); tim_deinit(tim2); tim_timebasestructure.tim_period=1000; /* 自动重装载寄存器周期的值(计数值) */ /* 累计 tim_period个频率后产生一个更新或者中断 */ tim_timebasestructure.tim_prescaler= (72 - 1); /* 时钟预分频数 72m/72 */ tim_timebasestructure.tim_clockdivision=tim_ckd_div1; /* 采样分频 */ tim_timebasestructure.tim_countermode=tim_countermode_up; /* 向上计数模式 */ tim_timebaseinit(tim2, &tim_timebasestructure); tim_clearflag(tim2, tim_flag_update); /* 清除溢出中断标志 */ tim_itconfig(tim2,tim_it_update,enable); tim_cmd(tim2, enable); /* 开启时钟 */ rcc_apb1periphclockcmd(rcc_apb1periph_tim2 , disable);/*先关闭等待使用*/ #include time_test.h/* * 函数名:tim2_nvic_configuration * 描述 :tim2中断优先级配置 * 输入 :无 * 输出 :无 */void tim2_nvic_configuration(void) nvic_inittypedef nvic_initstructure; nvic_prioritygroupconfig(nvic_prioritygroup_0); nvic_initstructure.nvic_irqchannel = tim2_irqn; nvic_initstructure.nvic_irqchannelpreemptionpriority = 0; nvic_initstructure.nvic_irqchannelsubpriority = 3; nvic_initstructure.nvic_irqchannelcmd = enable; nvic_init(&nvic_initstructure);/*tim_period-1000 tim_prescaler-71 -中断周期为1ms*/void tim2_configuration(void) tim_timebaseinittypedef tim_timebasestructure; rcc_apb1periphclockcmd(rcc_apb1periph_tim2 , enable); tim_deinit(tim2); tim_timebasestructure.tim_period=1000; tim_timebasestructure.tim_prescaler= (72 - 1); /* 时钟预分频数 72m/72 */ tim_timebasestructure.tim_clockdivision=tim_ckd_div1; tim_timebasestructure.tim_countermode=tim_countermode_up; tim_timebaseinit(tim2, &tim_timebasestructure); tim_clearflag(tim2, tim_flag_update);/* 清除溢出中断标志 */ tim_itconfig(tim2,tim_it_update,enable); tim_cmd(tim2, enable);/* 开启时钟 */ rcc_apb1periphclockcmd(rcc_apb1periph_tim2 , disable);/*先关闭等待使用*/ 4. 总结 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础 通过这次交通灯设计,本人在多方面都有所提高。通过这次交通灯设计,培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。了解所选择的arm芯片各个引脚功能,工作方式,计数/定时,i/o口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。通过软硬件设计实现利用arm芯片完成交通灯控制功能。首先查阅相关文献资料,熟悉所选arm芯片。第二步总体设计方案规划,设计车辆遇到红灯停绿灯行情况,红绿灯时间均为80s,切换时间为10s,最后5s为黄灯闪烁。接下来 系统硬件设计,熟悉io接口,定时器计数器工作原理。最后系统软件设计,包括交通信号灯的工作流程软件实现,用c语言编程。提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。 在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢。5. 参考文献1 潘松、黄继业等.eda技术实用教程(第一版)m.科学出版社 2002年10月2 陆坤、奚大顺、李之权等.电子设计技术m.四川:电子科技大学出版社.1997年.682-688,838-9413 王永红、徐炜、赫立平.stm32系列arm cortex-m3微控制器原理与实践m.北京航空航天大学出版社,2008.4 arm limited.cortex-m3 technical reference manual(r2p0). arm ddi 0037g. 2008.5 /view/aa526c81d4d8d15abe234e54.html6 谢自美、阎树兰、赵云娣等.电子线路设计实验测试(第二版)m.湖北:华中理工大学出版社.2000年.293-3007 杨邦文.新型实用电路制作200例m.北京:人民邮电出版社.1998年.175-2888 宋春荣、刘芳芳、杨礼成等.通用集成电路速查手册m.山东:山东科学技术出版社.1995年.30-1079 梅遂生、杨家德.光电子技术信息装备的新秀m.北京:国防工业出版社.1999年.88-10210 赵俊超.集成电路设计vhdl教程(第一版)m. 北京:北京希望电子出版社.2002年附录一:总体电路图附录二#include stm32f10x.h#include led.h #include time_test.hvolatile u32 time; / ms 计时变量volatile u32 south_front_r_time;volatile u32 south_front_g_time;volatile u32 south_right_r_time;volatile u32 south_right_g_time;volatile u32 south_light_r_time;volatile u32 south_light_g_time;volatile u32 east_front_r_time;volatile u32 east_front_g_time;volatile u32 east_right_r_time;volatile u32 east_right_g_time;volatile u32 east_light_r_time;volatile u32 east_light_g_time;volatile u32 south_yellow_time;volatile u32 east_yellow_time;/* * 函数名:main * 描述 :主函数 * 输入 :无 * 输出 :无*/int main(void) systeminit(); */ 配置系统时钟为 72m */ led_gpio_config(); */led 端口配置 */ tim2_nvic_configuration(); /* tim2 定时配置 */tim2_configuration(); /* tim2 开始计时 */start_time;while(1)if ( south_front_g_time = 25 ) /南北面直走绿亮gpio_setbits(gpioc, gpio_pin_6); if ( south_front_g_time = 25025 ) /南北面直走绿灭gpio_resetbits(gpioc, gpio_pin_6); if ( south_front_g_time = 80025 )south_front_g_time = 0;if ( south_front_r_time = 25025 ) /南北面直走灯亮gpio_setbits(gpioc, gpio_pin_4); if ( south_front_r_time = 80025 ) /南通灯红灯gpio_resetbits(gpioc, gpio_pin_4);south_front_r_time = 0; if ( south_right_g_time = 25 ) /南北面右拐绿灯gpio_setbits(gpioc, gpio_pin_5); if ( south_right_g_time = 25025 ) /南北面右拐绿灭gpio_resetbits(gpioc, gpio_pin_5); if ( south_right_g_time = 80025 )south_right_g_time = 0; if( south_right_r_time = 28025 ) /南北面右拐红亮gpio_setbits(gpioc, gpio_pin_3); if( south_right_r_time = 80025 ) /南北面右灭gpio_resetbits(gpioc, gpio_pin_3); south_right_r_time = 0; if( south_light_g_time = 28025 ) /南北面左拐交通灯绿灯亮gpio_setbits(gpioc, gpio_pin_2) ; if ( south_light_g_time = 43025 ) /南北面左拐交通灯绿灯灭gpio_resetbits(gpioc, gpio_pin_2); if ( south_light_g_time = 80025 )south_light_g_time = 0; if ( south_light_r_time = 25 ) /南北面左拐交通灯红灯亮gpio_setbits(gpioc, gpio_pin_1) ; if ( south_light_r_time = 28025 ) /南北面左通灯红灯灭gpio_resetbits(gpioc, gpio_pin_1);if ( south_light_r_time = 46025 ) /南北面左拐交通灯红灯亮gpio_setbits(gpioc, gpio_pin_1) ; if ( south_light_r_time = 80025 )south_light_r_time = 0; if ( south_yellow_time = 25025) /南北面黄灯亮gpio_setbits(gpioc, gpio_pin_0) ; if ( south_yellow_time = 28025 ) /南北面黄灯灭gpio_resetbits(gpioc, gpio_pin_0); if ( south_yellow_time = 43025 ) /南北面黄灯亮gpio_setbits(gpioc, gpio_pin_0);if ( south_yellow_time = 46025 ) /南北面黄灯灭gpio_resetbits(gpioc, gpio_pin_0); if ( south_yellow_time = 80025 )south_yellow_time = 0; #define_led_h#include stm32f10x.h/* the macro definition to trigger the led on or off * 1 - off - 0 - on */#define on 0#define off 1#define led1(a) if (a)gpio_setbits(gpioc,gpio_pin_0);elsegpio_resetbits(gpioc,gpio_pin_0)#define led2(a)if (a)gpio_setbits(gpioc,gpio_pin_1);elsegpio_resetbits(gpioc,gpio_pin_1)#define led3(a)if (a)gpio_setbits(gpioc,gpio_pin_2);elsegpio_resetbits(gpioc,gpio_pin_2)#define led4(a)if (a)gpio_setbits(gpioc,gpio_pin_3);elsegpio_resetbits(gpioc,gpio_pin_3)void led_gpio_config(void);#endif /* _led_h */#include
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度健身房租赁合同包含营养咨询及健身课程
- 2025年度瓷砖施工与建筑节能评估合同范本
- 2025年度欧派橱柜品牌授权与运营合同范本
- 2025版区块链技术应用开发合同范本下载
- 2025年度房产买卖定金合同(含房产交易纠纷解决机制)
- 河北省博野县2025年上半年公开招聘城市协管员试题含答案分析
- 2025翻译公司项目合作保密协议范本
- 2025年度展览馆场地租赁服务协议
- 2025版室内软装设计与施工一体化合作协议
- 2025东莞绿色住宅租赁及节能服务合同
- 第二章第二节女性生殖系统生理课件
- 宁波市慈溪市人民法院招聘审判辅助人员笔试真题2024
- 2021-2022学年人教版数学九年级下册相似三角形性质与判定 同步练习卷
- 《高尔夫基础培训》课件
- 沪教版(五四学制)(2024)六年级下册单词表+默写单
- 城市管理辅助队伍服务投标方案
- 第五课+弘扬劳动精神、劳模精神、工匠精神【中职专用】中职思想政治《职业道德与法治》高效课堂(高教版2023·基础模块)
- 储罐及输油管道拆除方案
- 手术室院感防控措施
- 地理2024-2025学年人教版七年级上册地理知识点
- 脐血流异常护理措施
评论
0/150
提交评论