单片机课程设计_交通灯多功能任务设计说明_第1页
单片机课程设计_交通灯多功能任务设计说明_第2页
单片机课程设计_交通灯多功能任务设计说明_第3页
单片机课程设计_交通灯多功能任务设计说明_第4页
免费预览已结束,剩余18页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、下载可编辑单片机原理与接口技术课程设计报告课题:以交通灯为主的多功能任务设计班级 电气 3113学号 1111221108学生志勇指导教师白秋产蓉建工学院电子与电气工程学院2014-12.专业 .整理 .下载可编辑目录一、 设计目的2二、 设计要求21 总体要求22 具体要求23 系统硬件总框图31)AT89C52单片机42)DS1302模块53)数码管显示电路54)LED灯显示65)键盘扫描模块66)蜂鸣器电路7三、 硬件电路的设计及描述71 硬件总框图及原理图72 主程序流程图93 各模块流程图101)时间显示程序流程图102)流水灯程序流程图103)利用蜂鸣器的音乐流程图114)交通灯控

2、制11四、 源程序代码12五、 设计心得18六、 参考文献18.专业 .整理 .下载可编辑一、设计目的单片机原理及应用 课程设计是一项重要的实践性教育环节, 是学生在校期间必须接受的一项工程训练。 在课程设计过程中, 在教师指导下, 应用工程的方法,通过一个简单课题的设计练习, 可使学生初步体验单片机应用系统的设计过程、设计要求、完成的工作容和具体的设计方法, 了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。通过课程设计,应该能加强学生如下能力的培养:(1)独立工作能力和创造力;(2)综合运用专业及基础知识,解决实际工程技术问题的能力;(3)查阅图书资料、产品

3、手册和各种工具书的能力;(4)工程绘图的能力;(5)编写技术报告和编写技术资料的能力。二、设计要求1总体要求(1)独立完成设计任务(2)绘制系统硬件总框图(3)绘制系统原理电路图(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释(5)制定编写调试方案,编写用户操作使用说明书(6)写出设计工作小结。对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价, 对自己整个设计工作中经验教训, 总结收获和今后研究方向。2具体要求本次工程实践的校部分主要以单片机为基础,进行单片机软件编程, 目的是.专业 .整理

4、 .下载可编辑为了提高学生的软件编程和系统设计能力, 整个设计系统包括两个部分, 硬件及软件部分,硬件部分已经制作成功, 学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可, 另外对所焊接的电路还需要进行仔细的检查, 判断是否有焊接错误的地方或者短路的地方, 对出现的异常情况要能够根据现象判别原因, 并具备解决问题的能力, 从而切实提高学生的硬件电子电路的分析、判断能力。软件编程是本次课程设计的重要环节。 在为期两周的工程实践中, 将占据主要时间,完成的软件编程任务主要包括以下几点:1)、熟悉 Keil C51编程平台及相关编程软件2)、编写、调试蜂鸣器、继

5、电器动作、方波程序并进行软硬件联调3)、编写、调试 LED流水灯(循环显示)程序并进行软硬件联调4)、编写、调试键盘扫描子程序并进行软硬件联调5)、编写、调试数码管动态扫描程序并进行软硬件联调6)、基于交通灯的多功能控制设计其中前五个容是后两个容的基础,主要是编制一些子程序, 为后继的整个系统设计打下基础。 交通灯控制是在五个课题中选做的一个设计,是一个简单的单片机编程设计,来实现智能交通灯的多功能作用。3系统硬件总框图图 1 系统设计总框图此次课程设计, AT89C52 是一种带2K 字节闪烁可编程可擦除只读存储器( FPEROMFalsh Programmable and Erasable

6、 Read Only Memory)的低电压,高性能 CMOS 8位微处理器,俗称单片机。.专业 .整理 .下载可编辑1) AT89C52单片机设计中所用的单片机型号为AT89C52 ,其主要功能为:AT89C52是低功耗、高性能的CMOS 8位单片机。片带有8KB 的 Flash 存储器,且允许在系统改写或用编程器编程。另外,AT89C52 的指令系统和引脚与80C52完全兼容,所以,近几年AT89C52单片机应用极为广泛。AT89C52单片机除了含有8KB的 Flash 存储器外,片还有256 B 的 RAM,32条 I/O 口线, 3 个 16 位定时 / 计算器、 6 个中断源、 1

7、个全双工串行口等。同时,与 80C52一样,有空闲和掉电两种节电运行方式。AT89C52引脚如下图所示:图 2 AT89C52 引脚AT89C52单片机为 40 脚双列直插封装的8 位通用微处理器,采用工业标准的 C51核,在部功能及管脚排布上与通用的 8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主 IC 部寄存器、数据 RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR 的接收解码及与主板 CPU通信等。.专业 .整理 .下载可编辑2) DS1302模块DS1302的 RST是复位 / 片选线,通过把 RST输入驱动置高电平来启动所有的数据

8、传送。当 RST为高电平时,所有的数据传送被初始化,允许对 DS1302进行操作。如果在传送过程中 RST置为低电平,则会终止此次数据传送, I/O 引脚变为高阻态。其管脚图如下:图 3 DS1302 管脚图各引脚功能: Vcc1 为后备电源, VCC2为主电源, X1 和 X2 是振荡源, SCLK 为输入端RST输入有两种功能: 首先,RST接通控制逻辑, 允许地址 / 命令序列送入移位寄存器;其次, RST提供终止单字节或多字节数据的传送手段。3)数码管显示电路图 4 数码管显示电路数码显示电路设计中采用四位共阳极扫描型数码管即其公共端接正极, 扫描型是指数码管的段选都是并联的。其位选位

9、控制哪一位的数码管亮, 在设计中由单片机 AT89C52的 P1 口控制其位选,以达到动态显示的效果,再通过P0 口,控制其段选以显示相应的数值。.专业 .整理 .下载可编辑所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。 在轮流点亮扫描过程中, 每位显示器的点亮时间是极为短暂的(约 1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮, 但只要扫描的速度足够快, 给人的印象就是一组稳定的显示数据,不会有闪烁感。4) LED灯显示图 5 LED 显示模块本次课程设计中,“程序语言”通过“翻译”软件“翻译”成单片机所需

10、的二进制代码,单片机可工作。要用外加电源和分压电阻来控制低电平驱动点亮,因为单片机不能直接高电平驱动LED灯。如图 D1-D8和 R1、R2以及 R6-R11连接到单片机 IO 口,当 P1口某脚变低时相应LED发光。实现 LED灯的闪烁, 只需利用编程方法依次从低位到高位逐个变为低电平,等待少许时刻再变高即可。5)键盘扫描模块图 6 按键输入电路本模块四个开关分别用于控制流水灯控制电路, 时间显示电路, 音乐蜂鸣器电路,交通灯四部分功能。当按下其中一个开关时,该部分电路导通,给单片机发出地址信号,实现其中一项功能的运做,如图4 所示。KEYA键:其功能是当该键按下时,蜂鸣器程序工作;.专业

11、.整理 .下载可编辑KEYB键:其功能是当该键按下时,流水灯程序工作;KEYC键:其功能是当该键按下时,数码管动态扫描程序工作;KEYD键:其功能是当该键按下时,交通灯程序工作。6)蜂鸣器电路图7蜂鸣器电路蜂鸣器单元电路是通过一个PNP三极管来放大驱动蜂鸣器, 蜂鸣器的正极接到 5V 电源上面,蜂鸣器的负极接到三极管的发射极,三极管的基极经过限流电阻后由单片机的P3.4 控制。当输出高电平时,三极管截止,蜂鸣器的两引脚间的直流电压接近于0V,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,使蜂鸣器的两个引脚间获得将接近 +5V的直流电压,这样蜂鸣器的电流形成回路, 发出声音。因此,

12、我们可以通过程序控制 IO 口输出的电平来控制蜂鸣器是否发出声音,实现各种可能音响的产生。三、硬件电路的设计及描述1硬件总框图及原理图图 8硬件总框图.专业 .整理 .下载可编辑图 9硬件总原理图.专业 .整理 .下载可编辑2主程序流程图.专业 .整理 .下载可编辑3各模块流程图1)时间显示程序流程图2)流水灯程序流程图.专业 .整理 .下载可编辑3)利用蜂鸣器的音乐流程图4)智能交通灯.专业 .整理 .下载可编辑四、源程序代码/* 文件名: 4 个功能由按键控制.c* 描 述 :按下 A 键,实现蜂鸣器动作。按下 B 键,实现 LED流水灯循环显示。按下 C 键,实现数码管动态扫描显示。按下

13、 D 键,实现交通灯功能。* 创建人 :*/#include<reg52.h>#include<intrins.h>#define uint unsigned int /无符号整形习惯的定义#define uchar unsigned char /无符号字符型习惯的定义void buzz_key(void);/ 子函数声明void led_key(void);void tube_key(void);void traffic(void);unsigned char codeduanma10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0

14、x7f,0x6f;/01234 56789unsigned char code weima6=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/ 选择哪个数码管unsigned char temp6;uchar i=35;uchar k=30;uchar l=5;uchar j;uchar b;/ 定义变量sbit duan=P26;/ 定义管脚sbit wei=P27;sbit key_A=P34;sbit key_B=P35;sbit key_C=P36;sbit key_D=P37;sbit buzz=P23;sbit DIOLA=P25;sbit csda=P32;sbit

15、 red=P10;/ 交通灯管脚定义sbit green=P11;sbit yellow=P12;.专业 .整理 .下载可编辑/* 名称 : Delay_1ms()* 功能 :延时子程序,延时时间为1ms * x* 输入 : x (延时一毫秒的个数)* 输出: 无*/void Delay_1ms(unsigned int t)unsigned char x,y;for(x=t;x>0;x-)for(y=110;y>0;y-);/* 名称 : Main()* 功能 : 实现蜂鸣器,流水灯,数码管,交通灯*/void main()DIOLA=0;/ 流水灯锁存器关流水灯未选通wei=0

16、;/ 位选关duan=1;P0=0;duan=0;csda=0;while(1)if(key_A=0 | key_B=0 | key_C=0| key_D=0)if(key_A=0)/A键按下buzz_key();/调用蜂鸣器子程序else if(key_B=0)/B键按下led_key();/调用流水灯子程序else if(key_C=0)/C键按下时tube_key();/调用数码管显示子程序.专业 .整理 .下载可编辑else/D键按下时traffic();/调用交通灯子程序i=35;k=30;l=5;return;/* 名称 : buzz_key(void)* 功能 : 蜂鸣器子程序*

17、/void buzz_key(void)DIOLA=0;wei=0;buzz=0;/ 蜂鸣器响while(key_B&&key_C&&key_D&&!key_A);buzz=1;/ 关蜂鸣器/* 名称 : led_key(void)* 功能 : 流水灯子程序*/void led_key(void)DIOLA=1;b=0xfe;P1=b;/11111110while(key_B=0)b=_crol_(b,1); /左移 11111101Delay_1ms(500);P1=b;/111111011Delay_1ms(500);while(key_A&

18、amp;&key_B&&key_C&&key_D);P1=0xff;.专业 .整理 .下载可编辑/* 名称 : tube_key(void)* 功能 : 数码管子程序*/void tube_key(void)DIOLA=0;/ 流水灯使能端置0while(key_C=0) unsigned int i;for(i=0;i<6;i+)wei=1;P0=weimai;/ 位选信号wei=0;duan=1;P0=duanmai;/ 段选信号duan=0;Delay_1ms(500);duan=1;P0=0;duan=0;/ 清零/* 名称 : traff

19、ic_key(void)* 功能 : 交通灯子程序*/void traffic(void)DIOLA=0;while(key_D=0)if(i>0)DIOLA=1;b=0xfe;.专业 .整理 .下载可编辑P1=b;/11111110for(j=0;j<40;j+)P0=0;wei=1;/消隐P0 = weima0;wei=0;duan=1;/第 1 位数码管显示P0 = duanma(i / 10)%10;/在这里取i的个位数Delay_1ms(40);/延时 40 毫秒后显示下一个数P0=0;wei=1;/消隐P0 = weima1;wei=0;duan=1;/第 2 位数码管

20、显示P0 = duanmai % 10;/在这里取 i的个位数Delay_1ms(40);/延时 40 毫秒后显示下一个数i-;else if(k>0)DIOLA=1;b=0xfd;P1=b;/11111110for(j=0;j<40;j+)P0= 0;wei=1;/消隐P0= weima0;wei=0;duan=1;/第 1位数码管显示P0= duanma(k / 10)%10;/在这里取 i 的个位数Delay_1ms(40);/延时 3 毫秒后显示下一个数P0= 0;wei=1;/消隐P0= weima1;wei=0;duan=1;/第 2位数码管显示P0= duanmak

21、% 10;/在这里取 i 的个位数Delay_1ms(40);/延时 3 毫秒后显示下一个数k-;.专业 .整理 .下载可编辑else if(l>0)DIOLA=1;b=0xfb;P1=b;/11111110for(j=0;j<40;j+)P0= 0;wei=1;/消隐P0= weima0;wei=0;duan=1;/第 1位数码管显示P0= duanma(l / 10)%10;/在这里取 i 的个位数Delay_1ms(40);/延时 3 毫秒后显示下一个数P0= 0;wei=1;/消隐P0= weima1;wei=0;duan=1;/第 2位数码管显示P0= duanmal % 10;/在这里取 i 的个位数Delay_1ms(40);/延时 3 毫秒后显示下一个数l-;.专业 .整理 .下载可编辑五、设计心得通过两个星期的实验, 我的设计虽然有一些毛病, 但总体上还是成功的。 两周的时间虽然短暂,但我从中受益匪浅

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论