




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子与信息工程学院课 程 设 计 报 告2021 2021学年 第 2 学期课程名称: 单片机课程设计 班 级: 学 号: 姓 名: 指导教师: 2021年 03月1、 目的实习是在教师指导下,学生运用所学理论知识及实验方法解决实际问题的一种实践活动,通过这些活动培养学生分析问题和解决问题的能力。具体表现在构造一个控制系统框架的能力;检索和阅读文献资料的能力;综合运用所学专业知识使之对所设计系统具有独立调试的能力和故障处理的能力;绘图能力;计算机运用能力;逻辑思维能力与形象思维能力;文字及口头表达的能力;撰写实习报告的能力2、 内容和要求任务1:交通灯(1)根本要求:以单片机为核心设计一个完整
2、的交通灯模拟系统。所谓模拟就是以每组有绿,红,黄色3支共两组发光二极管表示交通信号灯,数码管2只共两组以递减的方式表示各色信号灯的时间。在双干线路口上,交通信号灯的变化是定时的。假定: 放行线,绿灯亮放行25秒,黄灯亮警告5秒,然后红灯亮禁止。 禁止线,红灯亮禁止30 秒,然后绿灯亮放行。使两条路线交替地成为放行线和禁止线,就可以实现定时交通控制。假定以P1口线接6支发光二极管即交通信号灯,因为电路中有反相器的关系,所以口线输出高电平那么“信号灯熄灭,口线输出低电平那么“信号灯“亮。(2)进阶要求一:在根本要求的根底上,要求红绿灯时间可通过按键设置,例如红灯60秒,绿灯52秒,黄灯8秒。提示:
3、时间设置一定是要遵循以下规律:红灯时间绿灯时间黄灯时间;任务2:秒表3过程如实际程序开发、电子制作,详细说明有关原理、开发过程、调试过程、结果一交通灯芯片介绍SST89E58RD:是8位FLASH FLEX51系列单片机。FLASH FLEX51是在高级FLASH CMOS半导体工艺下设计和生产出来的单片机产品之一。单片机有40K片内FLASH EEPROM程序存储器,它利用SST的超级FLASH专利技术,这些都是SST的领先技术。超级FLASH存储器被分为两个独立的程序存储器块,根本FLASH Block0占用32K字节片内程序存储空间,二级FLASH Block1占用8K字节的片内程序存储
4、器空间;8K字节的二级FLASH块能被映射到32K字节低地址空间它也能从程序计数器中被隐藏掉而用做一个独立的类似EEPROM的数据存储器。其具有以下特点:兼容80C51系列,内置超级FLASH存储器的单片机;工作电压Vdd=4.55.5;1K*8的内部RAM256Bytes+768Bytes,可以放心使用C语言编程等。8155:Intel8155是可编程RAM/IO芯片,为40脚双列直插式封装。有256*8位静态RAM,2个8位和1个6位可编程并行I/O接口,以及1个14位可编程定时器/计数器。可直与MCS-51单片机相接,是MCS-51单片机应用系统中应用最多的芯片之一其内部结构图和引脚图如
5、图1所示图1在交通灯系统中,四位数码管是用来显示交通灯倒计时时间的,一路显示放行线时间,一路显示禁止线时间四位数码管的电路如图2:图2四位八段数码管,属共阴逆序,高电平有效,所以不带小数点的0-f的段码如下:0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH;PROTEUS 仿真图如图3:图3四位数码管的显示使用了并行扩展芯片8155,8155与单片机SST89E58RD的接口如图4图48155的高8位数据地址线与单片机的P0口相连,CE与AD15相连,IO/M与AD8相连数码管的八位段选与PB口相连
6、,四位位选与PA口相连。用C语言初始化8155和显示程序如下:#define PA8155 XBYTE0x7101#define PB8155 XBYTE0x7102#define COM8155 XBYTE0x7100COM8155=0x03;2发光二极管模块用两组分别为红黄绿共六盏LED灯来模拟实际的交通信号灯,时间上遵循红灯时间等于绿灯时间加黄灯时间。LED灯是低电平有效,硬件电路图如图5所示:图5LED的控制是在定时器0的中断中实现的,每一秒时间到后,会根据实时时间current_time与红黄绿时间比拟,来确定相应的两盏灯亮,程序如下所示: if(current_time<gr
7、een)/主绿灯和从红灯时间 Allocate(green-current_time)*100+green+yellow-current_time); P1=0xf3; else if(current_time<green+yellow)/主黄从红 Allocate(green+yellow-current_time)*100+green+yellow-current_time); P1=0xf5; else if(current_time<green*2+yellow)/主红从绿 Allocate(2*green+2*yellow-current_time)*100+green*
8、2+yellow-current_time); P1=0xde; else / 主红从黄 Allocate(2*green+2*yellow-current_time)*100+2*green+2*yellow-current_time); P1=0xee;3.进阶一的实现即实现交通灯时间的自由修改在程序运行的过程中,要实现绿灯和黄灯时间的修改,我们需要使用一个外部中断,在中断中实现要修改的灯的颜色,选定颜色后,再扫描两个IO口来实现时间的加减具体是扫描硬件电路如图6所示:图6中断程序如下所示:void Ex0() interrupt 0 EA=0;if(!inte0)delay(500);i
9、f(!inte0)traffic_mode+;if(traffic_mode>2) traffic_mode=0;EA=1;4.程序流程图如下:开始初始化1S到?进入定时器中断0LED及数码管显示Traffic_mode=1?状态1按键处理按键是否按下状态2Traffic_mode=2?主流程图K1按下进入修改选择状态进入加状态K3按下进入减状态K4按下返回按键流程图二秒表秒表的要求是数码管显示模块见一中“数码管显示模块,此处略;程序主流程图如下:开始初始化复位键?暂停暂停键?显示时间结束 秒表主流程图三将两个程序合并将两个程序合并需要用一个变量来判断,我们选择扫描P1.7口来设定变量的
10、值,然后在中断和主函数中用变量的值来选择执行的程序段程序流程图如下:开始初始化执行交通灯功能Mode=2?执行秒表功能Mode =1?四合并后的程序如下:#include<reg51.h> /头文件#include<absacc.h>#include <intrins.h>#include<math.h>#define PA8155 XBYTE0x7101 /数码管位选地址#define PB8155 XBYTE0x7102 /数码管段选地址#define COM8155 XBYTE0x7100unsignedcharcode Table16=0
11、X0FC,0X60,0X0DA,0X0F2,0X66,0X0B6,0X0BE,0X0E0,0X0FE,0X0F6;unsigned char Buf4=0,0,0,0;/数据缓冲区sbit BTN=P17;sbit inte0=P32;sbit add=P34;sbit minus=P35;unsigned int mode=1; unsigned int traffic_count=0; /交通灯变量unsigned int traffic_mode=0;unsigned int current_time=0;unsigned int green=25;unsigned int yellow
12、=5;unsigned int time_count=0; /秒表变量unsigned int time=0;unsigned int reset; /复位标志位bit i=0; /启停标志位void delay(unsigned int t)/延迟函数 while(t-);void DISP_LED(unsigned char *Bufptr)/ 数码管显示 unsigned char disi;unsigned char BitCT=0X10; for(disi=0;disi<4;disi+) PA8155=BitCT; PB8155=Table*Bufptr+(disi=1 &am
13、p;& mode=2); BitCT=BitCT<<1;/左移一位delay(500); void Allocate(unsigned int a)/ 数据分配 Buf3=a/1000; Buf2=a%1000/100; Buf1=a%100/10; Buf0=a%10;unsigned char ChKey(bit Key)/ 键值扫描函数 if(Key=0) delay(20000); if(Key=0) return 1; void Testmode()/键值扫描函数 if(ChKey(BTN)=1) mode+; if(mode=3) mode=1; Allocat
14、e(mode*10); unsigned char scankey (unsigned char sec)/加减实现函数 if(!add) delay(20000); sec+; if(!minus) delay(20000); sec-; return sec;void Ex0() interrupt 0 /外部中断0if(mode=1) /EA=0; if(!inte0) delay(2500); if(!inte0) traffic_mode+; if(traffic_mode=3) traffic_mode=0; /EA=1; else if(mode=2) reset=1;void
15、timer0() interrupt 1 /定时器0中断 if(mode=1) traffic_count+; if(traffic_count=20) traffic_count=0; current_time=(current_time+1)%(2*yellow+2*green); if(current_time<green) Allocate(green-current_time)*100+green+yellow-current_time); P1=0xf3; else if(current_time<green+yellow) Allocate(green+yellow-
16、current_time)*100+green+yellow-current_time); P1=0xf5; else if(current_time<green*2+yellow) Allocate(2*green+2*yellow-current_time)*100+green*2+yellow-current_time); P1=0xde; else Allocate(2*green+2*yellow-current_time)*100+2*green+2*yellow-current_time); P1=0xee; else if(mode=2) time_count+; if(
17、time_count=2) time_count=0; time+; Allocate(time); TH0=0x4b; TL0=0x40;void Ex1() interrupt 2 /外部中断1 if(mode=2) i=i;void main() TMOD=0x01; TH0=0x4b; TL0=0x40; IP=0x01; EA=1; ET0=1; EX0=1; IT0=1; EX1=1; IT1=1; COM8155=0x03; TR0=1; Allocate(green*100+green+yellow);while(1) while(mode=1)/交通灯 Testmode();
18、 switch(traffic_mode) case 1: yellow=scankey(yellow); Allocate(yellow*100); break; case 2: green=scankey(green); Allocate(green); break; DISP_LED(Buf); while(mode=2) /秒表 Testmode(); if(i=1) TR0=1; else TR0=0; if(reset=1) /当接收到复位信号后令各缓冲区清零,同时停止计时 time=0; reset=0; i=0; TR0=0; Allocate(0); DISP_LED(Buf);五完整的硬件电路图图7秒表的实现是在上图的根本上去掉LED局部,在独立按键控制模块换成下面的图8图81.通过这次实现我熟悉了51单片机C语言程序的编写和单片机设计仿真工具PROTEUS的使用。用C编写程序比汇编更符合人们的思考习惯,开发者可以摆脱与硬件无必要的接触,更专心的考虑功能和算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。C语言具有良好的程序结构,适用于模块化程序设计,因此采用C语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,将功能模块化,由不同的模块完成不同的功能;PROTEUS不仅是模拟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租聘合同免责协议书模板
- 土地及厂房买卖合同协议
- 疫情器材租赁合同协议
- 画师聘请合同协议模板
- 土建协议合同协议
- 社区美食合伙人合同协议
- 租赁生产经营合同协议
- 租房免租金协议合同
- 租借电玩设备合同协议
- 信号校正算法创新-全面剖析
- 电力工程钢网架安装工程检验批质量验收记录表
- 小学三年级音乐《马兰谣》课件
- “当代文化参与”学习任务群相关单元的设计思路与教学建议课件(共51张PPT)
- 提高卧床患者踝泵运动的执行率品管圈汇报书模板课件
- 同理心的应用教学教材课件
- DB4102-T 025-2021海绵城市建设施工与质量验收规范-(高清现行)
- 城市轨道交通安全管理隐患清单
- 锡膏使用记录表
- 儿童保健学课件:绪论
- 中小学校园安全稳定工作岗位责任清单
- 校园安全存在问题及对策
评论
0/150
提交评论