ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:104.97KB ,
资源ID:12468994      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12468994.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的交通灯设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的交通灯设计.docx

1、基于51单片机的交通灯设计目 录1. 课设题目 12. 设计环境 13. 设计要求 14. 设计相关知识 14.1 硬件设计 14.2 软件应用 25. 主程序设计 36. 系统实现 147. 仿真运行 148. 设计心得 169. 参考文献 161.设计题目: 基于51单片机的交通灯设计2.设计环境1.装有 Windows 系统、keil C 51 v6.12中文完全版和proteus7.5仿真环境的PC 机一台。2.AT89C51单片机最小实现电路及配套发光二极管电路。3.设计要求1.编程要求:主程序利用 C 语言编写。 2.实现功能:使用AT89C51单片机控制 4个方向的交通灯(红黄绿

2、)并用数码管显示其时间。 3. 实验现象:状态一:主干道、支干道均亮红灯5秒;状态二:主干道亮绿灯30秒、支干道亮红灯;状态三:主干道绿灯闪3次转亮黄灯、支干道亮红灯3秒;状态四:主干道亮红灯、支干道亮绿灯25秒;状态五:主干道亮红灯、支干道绿灯闪3次转亮黄灯3秒;返回到第二个状态。4.设计相关知识4.1 硬件设计1. AT89C51简介:AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。它是一种带2K字节闪存可编程可擦除只读存储器的单片机。AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2. 2位8段数码管工

3、作原理: 2位8段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。如图4-3所示:段码和位码,段码即段选信号 SEG,它负责数码管显示的内容,图中 ag、dp组成的数据(a 为最低位,dp 为最高位)就是段码。位码即位选信号 DIG,它决定哪个数码管工作,哪个数码管不工作。当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。4.2 软件应用1. Proteus7.5简介:Proteus软件不仅具有EDA工具软件的仿真功能,还能仿真单片机及外围器件Proteus从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了将电路仿真

4、软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。在编译方面,它支持IAR、Keil和MPLAB等多种编译器。2. Keil C51开发系统简介:Keil C51是51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,生成的目标代码效率非常之高,多数语句生成的汇编代码紧凑,容易理解。在开发大型软件时更

5、能体现其高级语言的优势。5.主程序设计/*11.0952M晶振*/#include/头文件#include/头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sbit RED_ZHU = P10;sbit YELLOW_ZHU = P11;sbit GREEN_ZHU = P12;sbit RED_ZHI = P13;sbit YELLOW_ZHI = P14;sbit GREEN_ZHI = P15; uint aa, bai,shi,ge,bb; /定义变量/*数码管显示0-9*/uint code table=0

6、x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*子函数声明*/void delay(uint z);void delay0(uint z);/void init(uint a);void display(uint ge,uint shi);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();/*主函数*/void main()

7、 P0=0XFF; P1=0xFF; P2=0xFF; EA=1;/打开外部中断 EX1=1;/允许外部中断1中断 IT1=0;/INT0为沿触发方式 init1(); while(1) init2();/第2个状态 init3(); /第3个状态 init4(); /第4个状态 init5();/第5个状态 void init1()/第一个状态:主干道、支干道均亮红灯5S uint temp; temp=6;/变量赋初值 TMOD=0x01;/定时器0工作于方式1 TH0=0x4c; TL0=0x00;/定时器赋初值 EA=1;/开外部中断 ET0=1;/开定时中断 TR0=1;/开定时器0

8、 while(1) RED_ZHU=0; /第一个状态主干道、支干道均亮红灯5S RED_ZHI=0; GREEN_ZHU=1; GREEN_ZHI=1; YELLOW_ZHU=1; YELLOW_ZHI=1; if(aa=20)/定时20*50MS=1S aa=0;/定时完成一次后清0 temp-;/变量自增 /delay(10); if(temp250)/定时100S temp=6;/变量清0 break; shi=temp%100/10;/显示十位 ge=temp%10;/显示个位 display(ge,shi); void init2()/第二个状态:主干道亮绿灯30S、支干道亮红灯

9、uint temp; temp=31;/变量赋初值 TMOD=0x01;/定时器0工作于方式1 TH0=0x4c; TL0=0x00;/定时器赋初值 EA=1;/开外部中断 ET0=1;/开定时中断 TR0=1;/开定时器0 while(1) RED_ZHU=1; RED_ZHI=0; GREEN_ZHU=0; GREEN_ZHI=1; YELLOW_ZHU=1;/第二个状态:主干道亮绿灯30S、支干道亮红灯 YELLOW_ZHI=1; if(aa=20)/定时20*50MS=1S aa=0;/定时完成一次后清0 temp-;/变量自增 if(temp=3)/定时100S temp=30;/变

10、量清0 break; shi=temp%100/10;/显示十位 ge=temp%10;/显示个位 display(ge,shi); void init3() /第三个状态:主干道绿灯闪3次转亮黄灯、支干道亮红灯3S uint temp; temp=4;/变量赋初值 TMOD=0x01;/定时器0工作于方式1 TH0=0x4c; TL0=0x00;/定时器赋初值 EA=1;/开外部中断 ET0=1;/开定时中断 TR0=1;/开定时器0 while(1) RED_ZHI=0; GREEN_ZHU=1; /YELLOW_ZHU=YELLOW_ZHU; if(aa=20)/定时20*50MS=1S

11、 aa=0;/定时完成一次后清0 temp-;/变量自增 YELLOW_ZHU=YELLOW_ZHU; if(temp200)/定时100S temp=4;/变量清0 break; shi=temp%100/10;/显示十位 ge=temp%10;/显示个位 display(ge,shi); void init4()/第四个状态:主干道亮红灯、支干道亮绿灯25S uint temp; temp=26;/变量赋初值 TMOD=0x01;/定时器0工作于方式1 TH0=0x4c; TL0=0x00;/定时器赋初值 EA=1;/开外部中断 ET0=1;/开定时中断 TR0=1;/开定时器0 whil

12、e(1) RED_ZHU=0; RED_ZHI=1; YELLOW_ZHU=1;/第一个状态主干道、支干道均亮红灯5S GREEN_ZHI=0; if(aa=20)/定时20*50MS=1S aa=0;/定时完成一次后清0 temp-;/变量自增 if(temp=3)/定时100S temp=25;/变量清0 break; shi=temp%100/10;/显示十位 ge=temp%10;/显示个位 display(ge,shi); void init5()/第五个状态:主干道亮红灯、支干道绿灯闪3次转亮黄灯3S uint temp; temp=4;/变量赋初值 TMOD=0x01;/定时器0

13、工作于方式1 TH0=0x4c; TL0=0x00;/定时器赋初值 EA=1;/开外部中断 ET0=1;/开定时中断 TR0=1;/开定时器0 while(1) RED_ZHI=1; RED_ZHU=0; GREEN_ZHU=1; GREEN_ZHI=1; /YELLOW_ZHI=YELLOW_ZHI; if(aa=20)/定时20*50MS=1S aa=0;/定时完成一次后清0 temp-;/变量自增 YELLOW_ZHI=YELLOW_ZHI; if(temp200)/定时100S temp=4;/变量清0 break; shi=temp%100/10;/显示十位 ge=temp%10;/

14、显示个位 display(ge,shi); /*显示子函数*/void display(uint ge,uint shi) P0=0xfd; P2=tableshi;/显示十位 delay0(5); P0=0xfe; P2=tablege;/显示个位 delay0(5);void xint0() interrupt 2 /外部中断1,这里用2是INT1的优先级为0 LED_ON();void LED_ON()/外部中断0显示子程序 RED_ZHI=0; RED_ZHU=0; GREEN_ZHI=1; GREEN_ZHU=1; YELLOW_ZHI=1; YELLOW_ZHU=1; delay0

15、(1000); return ;/*定时中断子函数*/void xtimer0() interrupt 1 TH0=0x4c; TL0=0x00; aa+;/*延时子函数*/void delay0(uint z) uint i,j; for(i=0;iz;i+) for(j=0;j0;j-) for(i=1250;i0;i-) for(k=180;k0;k-); 6.系统实现1. 使用keil C 51编写程序;2. 将编好的程序“.C”文件用Keil C 51转换成“.hex”文件;3. 画出设计系统仿真图;3. 打开proteus7.5,将画好的仿真图载入,鼠标右击图中的51单片机选择“编

16、辑属性”,在Program File中载入之前的“.hex”文件,再点击“调试”中的“开始”或点击软件左下角的“”,即仿真开始运行;4. 观察运行现象是否与设计结果相符;5. 确定设计后,按图焊接硬件电路;6. 测试硬件电路。7.仿真运行8.设计心得用单片机实现交通灯控制,可以使我们的生活方便快捷。这项看起来不需要多少技术的工作却是非常需要耐心和精力,几天的设计对我们来说的意义,不仅仅是让我们把所学的理论知识与实践相结合起来,还提高了我们的实际动手能力和独立思考的能力,更重要的是团队合作,虽然我们这次设计仓促,制作有些简单,但我们得到了很多远大于设计的东西!9.参考文献单片机原理及应用51单片机原理及应用-基于Keil C与ProteusProteus 7.5 Professional 51单片机入门教程XX文库:AT89C51中文资料Proteus仿真论坛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1