




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录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个方向的交通灯(红黄绿)并用数码管显示其时间。 3. 实验现象:状态一:主干道、支干道均亮红灯5秒;状态二:主干道亮绿灯30秒、支干道亮红灯;状态三:主干道绿灯闪3次转亮黄灯、支干道亮红灯3秒;状态四:主干道亮红灯、支干道亮绿灯25秒;状态五:主干道亮红灯、支干道绿灯闪3次转亮黄灯3秒;返回到第二个状态。4.设计相关知识4.1 硬件设计1. AT89C51简介:AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。它是一种带2K字节闪存可编程可擦除只读存储器的单片机。AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2. 2位8段数码管工作原理: 2位8段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。如图4-3所示:段码和位码,段码即段选信号 SEG,它负责数码管显示的内容,图中 ag、dp组成的数据(a 为最低位,dp 为最高位)就是段码。位码即位选信号 DIG,它决定哪个数码管工作,哪个数码管不工作。当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。4.2 软件应用1. Proteus7.5简介:Proteus软件不仅具有EDA工具软件的仿真功能,还能仿真单片机及外围器件Proteus从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了将电路仿真软件、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.主程序设计/*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=0x3f,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()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工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(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=1Saa=0;/定时完成一次后清0temp-;/变量自增/delay(10);if(temp250)/定时100Stemp=6;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi); void init2()/第二个状态:主干道亮绿灯30S、支干道亮红灯uint temp;temp=31;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(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=1Saa=0;/定时完成一次后清0temp-;/变量自增if(temp=3)/定时100Stemp=30;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位display(ge,shi);void init3() /第三个状态:主干道绿灯闪3次转亮黄灯、支干道亮红灯3S uint temp;temp=4;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_ZHI=0;GREEN_ZHU=1;/YELLOW_ZHU=YELLOW_ZHU;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增YELLOW_ZHU=YELLOW_ZHU;if(temp200)/定时100Stemp=4;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);void init4()/第四个状态:主干道亮红灯、支干道亮绿灯25S uint temp;temp=26;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_ZHU=0; RED_ZHI=1;YELLOW_ZHU=1;/第一个状态主干道、支干道均亮红灯5S GREEN_ZHI=0;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增if(temp=3)/定时100Stemp=25;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);void init5()/第五个状态:主干道亮红灯、支干道绿灯闪3次转亮黄灯3S uint temp;temp=4;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)aa=0;/定时完成一次后清0temp-;/变量自增 YELLOW_ZHI=YELLOW_ZHI;if(temp200)/定时100Stemp=4;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 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的优先级为0LED_ON();void LED_ON()/外部中断0显示子程序RED_ZHI=0;RED_ZHU=0;GREEN_ZHI=1;GREEN_ZHU=1; YELLOW_ZHI=1;YELLOW_ZHU=1;delay0(1000);return ;/*定时中断子函数*/void xtimer0() interrupt 1TH0=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单片机选择“编辑属性”,在Program File中载入之前的“.hex”文件,再点击“调试”中的“开始”或点击软件左下角的“”,即仿真开始运行;4. 观察运行现象是否与设计结果相符;5. 确定设计后,按图焊接硬件电路;6. 测试硬件电路。7.仿真运行8.设计心得用单片机实现交通灯控制,可以使我们的生活方便快捷。这项看起来不需要多少技术的工作却是非常需要耐心和精力,几天的设计对我们来说的意义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年精神科心理评估与干预技术考核答案及解析
- 实践对新质生产力的重要性
- 2025年放射肿瘤科学科放射肿瘤治疗计划考核答案及解析
- 2025年内分泌代谢疾病诊断与治疗方案考核测试卷答案及解析
- 2025年肾脏疾病患者营养支持方案设计考试卷答案及解析
- 2025年口腔颌面外科手术规范操作实践答案及解析
- 2025年全科医生对高血压病患者的常规检查简述答案及解析
- 2025年职业病防治学职业健康检测实操考核答案及解析
- 县域新质生产力:发展路径与研究课题
- 工会推动新质生产力实践
- 2025年监理工程师继续教育试卷及答案
- 2020-2025年注册土木工程师(水利水电)之专业基础知识通关考试题库带答案解析
- 2025年物流师(初级)物流企业物流信息化信息安全认证员培训鉴定试卷
- 2.1人的社会化 教案 2025-2026学年统编版道德与法治八年级上册
- 2025入团考试题库(完整版)附答案详解
- 2025年北京市中考物理真题(含答案)
- 外科手术抗生素使用原则
- 2025年环卫清扫职称考试题及答案
- 《酒店营销与数字化实务》课件5模块五课件
- 2025年秋期新课标人教版六年级上册数学全册教案(核心素养教案)
- 《“忆峥嵘岁月传红色抗战精神”党课教育主题活动》课件
评论
0/150
提交评论