《单片机控制技术项目式教程》项目6 交通信号灯的设计.ppt

《单片机控制技术项目式教程》项目6 交通信号灯的设计.ppt

  1. 1、本文档共101页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
概述:《单片机控制技术项目式教程》项目6介绍了交通信号灯的设计流程,包括硬件原理图设计和软件程序设计。核心功能:该教程包括了硬件接口的设计,如P2口控制8个发光二极管,并模拟流水灯的效果。通过这些步骤,用户可以学习到如何使用单片机进行交通信号灯的设计。技术背景:该项目应用在城市交通管理中,帮助交通管理者实时监控交通流量,提高道路的安全性。同时,也可以作为一种创新的技术,推动智能交通的发展。目标读者:对于喜欢科技感兴趣的读者来说,《单片机控制技术项目式教程》项目提供了丰富的实用

(2)硬件原理图设计 //宏定义 #includereg51.h #define uchar unsigned char #define uint unsigned int //定义端口 sbit LED = P0_0; //主程序 void main( ) { LED = 1; EA = 1; //开中断 EX0 = 1; //允许INT0中断,可用IE=0x81代替上两行 TCON = 0x01; //即IT0 = 1 while(1); } //中断子程序 void External_Interrupt_0( ) interrupt 0 { LED = !LED; } (3)软件程序设计 源程序: 注意:开启的中断源一定要与中断子程序中的中断编号一致。在主程序中无需调用中断子程序,只要中断被触发,CPU会自动进入中断子程序工作。 将编写的程序在Keil C51中编译成*.hex后调入Proteus硬件电路图的AT89C51中运行,第一次按下K1键D1点亮,第二次按下K1键D1熄灭,如此反复。 (4)软硬件联合调试 用AT89C51的定时/计数器中断法设计一个流水灯控制电路。具体要求如下: (1)系统时钟频率为12MHZ。 (2)利用P2口控制8个发光二极管,以1s时间间隔从左到右依次点亮,模拟流水灯效果。 1. 任务要求 6.2.3 中断控制流水灯 2.任务分析 (1)定时1s 由于系统时钟频率为12MHZ,则机器周期为1us,定时/计数器T0工作在方式1,最长定时只有65ms左右。为了实现1s的长定时,本任务采用“软件法”,先定时50ms,然后用变量count累计定时中断的次数,当中断的次数达到20次时,即实现了1s定时。 (2)初始化程序设计 本任务采用定时器中断方式工作。初始化程序包括定时器初始化和中断系统初始化,主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确的设置,并将计数初值送入定时器中。具体如下: TMOD=0x01; //T0工作在方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; //50000*1us =50ms EA=1; //CPU允许中断 ET0=1; //允许T0中断 TR0=1; //开启T0 3.任务设计 (1)器件的选择 器件名称 数量(只) AT89C51 1 12MHz晶体 1 22pF瓷片电容 2 10uF电解电容 1 10kΩ电阻 1 220Ω电阻 8 发光二极管LED 8 (2)硬件原理图设计 (3)软件程序设计 源程序: //宏定义 #includereg51.h #includeintrins.h #define uchar unsigned char //定义端口 uchar count=0; //主程序 void main( ) { TMOD=0x01; //T0工作在方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; //50000*1us =50ms EA=1; //CPU允许中断 ET0=1; //允许T0中断 TR0=1; //开启T0 P2=0x01; //点亮D1 while(1); } //中断子程序 void Time_0( ) interrupt 1 { TH0=(65536-50000)/256; //重装初值 TL0=(65536-50000)%256; count++; if(count ==20) //50 ms *20 =1s { count =0; P2=_crol_(P2,1); //将P2循环左移1位后再赋给P2,循环点亮D1~D8 } } 将编写的程序在Keil C51中编译成*.hex后调入Proteus硬件电路图的AT89C51中运行,首先D1点亮,1s后D2点亮……循环点亮D1~D8形成流水灯。 (4)软硬件联合调试 (3)软件程序设计 //宏定义 #includereg51.h #define uchar unsigned char //定

文档评论(0)

凉州牧 + 关注
实名认证
内容提供者

资料收集自互联网,若有侵权请联系删除,谢谢~

版权声明书
用户编号:8036120077000004

1亿VIP精品文档

相关文档