第一范文网 - 专业文章范例文档资料分享平台

2014年山东大学第十届“兴源通杯”科技创新大赛

来源:用户分享 时间:2025/5/17 22:54:32 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

基于单片机的交通灯控制系统

开始

AT89C51初始化 按键 南北左拐通行 按键 特殊模式全红灯 N 通行15秒 Y 南北黄灯闪烁 东西左拐通行

N N N 闪烁5秒 Y 南北直行通行 N 通行15秒 Y 东西黄灯闪烁 通行35秒 Y 南北黄灯闪烁 N 闪烁5秒 Y 东西直行通行 闪烁5秒 Y N 通行35秒 Y 东西黄灯闪烁 N 闪烁5秒 Y 4.2程序模块功能及代码 4.2.1 数码管动态显示模块

(1)动态显示实际是利用人眼的“视觉暂留”效应。方法是将所有数码管的 8 个笔画段a~h 的各同名端分别并接在一起,并把他们接在单片机

- 12 -

基于单片机的交通灯控制系统

的字段输出口上。为了防止各个数 码管同时显示相同的数字,各个数码管的公共端 COM 还要受到另一组信号的控制,即它们接 到位输出口上。这样,对于一组数码管显示器需要由两组信号来控制:一组是字段输出口输 出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来 选择第几个显示器工作,称为位码。因此,所谓动态,就是利用循环扫描的方式,分时轮流 选通各个数码管的公共端,使各个数码管轮流导通,在导通的同时送上不同的段码。当扫描 速度达到一定程度时,人眼就分辨不出来了,认为各个数码管在同时显示。

(2)C程序代码:

uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0-9

段选码

void Display(void)

- 13 -

基于单片机的交通灯控制系统

{ }

uchar h,l;

h=Time_EW/10; l=Time_EW;

P0=table[l];

EW_LED2=1; //点亮EW_LED2 Delay(2);

EW_LED2=0; //熄灭EW_LED2 P0=table[h];

EW_LED1=1; //点亮EW_LED1 Delay(2); EW_LED1=0;

h=Time_SN/10; l=Time_SN; P0=table[l];

SN_LED2=1; //点亮SN_LED2 Delay(2); SN_LED2=0; P0=table[h]; SN_LED1=1; //点亮SN_LED1 Delay(2); SN_LED1=0;

4.2.2 外部中断服务模块

(1)MCS-51单片机有多个中断源,以8051为例,有5个中断源,两个外中断、两个定时中断和一个串行中断。

外中断是由外部原因引起的中断,有两个中断源。即外中断0(INT0)和外中断1(INT1),中断请求信号由引脚P3.2(INT0)和P3.3(INT1)输入。 外中断请求信号有两种方式,一是电平方式,二是脉冲方式。可通过有关控制位的定义进行规定。

电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请求输入端采样到有效的低电平时,就会激活外部中断。

脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低即为有效中断请求。这就要求在这种中断方式,中断请求信号的脉冲宽度必须大于一个机器周期,以保证电平变化能被单片机采样到。

- 14 -

基于单片机的交通灯控制系统

定时器控制寄存器 (TCON)

外中断请求方式的控制位在定时控制寄存器TCON(地址为88H)中的位88(IT0)和位8A(IT1)两个位,当IT0(IT1)=0为电平方式,IT0(IT1)=1为脉冲方式。同时在此寄存器中的位89(IE0)和位8B(IE1)为外中断请求标志位,当CPU采样到INT0(INT1)端出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。

定时器控制寄存器 (TCON) 位地址 位符号

中断允许控制寄存器 (IE) 中断允许控制寄存器 (IE) 位地址 位符号 AF EA AE / AD / AC ES AB ET1 AA EX1 A9 ET0 A8 EX0 8F TF1 8E TR1 8D TF0 8C TR0 8B IE1 8A IT1 89 IE0 88 IT0 (2)C程序代码: <1>void INT0_srv(void)interrupt 0 using 1 {

EX0=0; //关中断

if(Nomor_Button==0) //测试按键是否按下,按下为正常状态 {

EW1=60; SN1=20; EWL1=39; SNL1=39; Busy_LED=0; //关繁忙信号灯 Kongxian_LED =0; //关特殊信号灯 }

if(Busy_Button==0) //测试按键是否按下,按下为繁忙状态 { EW1=45; SN1=15; EWL1=29; SNL1=29; Kongxian_LED=0; //关特殊信号灯 Busy_LED=1; //开繁忙信号灯 }

if(Kongxian_Button==0)//测试按键是否按下,按下为特殊状态

- 15 -

2014年山东大学第十届“兴源通杯”科技创新大赛.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9fc0f4soop6trx116691_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top