两个十字路口红绿灯程序.pdf_第1页
两个十字路口红绿灯程序.pdf_第2页
两个十字路口红绿灯程序.pdf_第3页
两个十字路口红绿灯程序.pdf_第4页
两个十字路口红绿灯程序.pdf_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

两个十字路口十字路口红绿灯程序两个十字路口十字路口红绿灯程序 include include include include 程序主函数程序主函数 void main IO Init timer0init for 灭灯功能功能灭灯功能功能 程序开始之前 所有的灯处于熄灭状态程序开始之前 所有的灯处于熄灭状态 void IO Init EWG1 LIGHTOFF EWY1 LIGHTOFF EWR1 LIGHTOFF NSG1 LIGHTOFF NSY1 LIGHTOFF EW1 LED1OFF EW1 LED2OFF NS1 LED1OFF NS1 LED2OFF NSR1 LIGHTOFF EWG2 LIGHTOFF EWY2 LIGHTOFF EWR2 LIGHTOFF NSG2 LIGHTOFF NSY2 LIGHTOFF NSR2 LIGHTOFF EW2 LED1OFF EW2 LED2OFF NS2 LED1OFF NS2 LED2OFF 定时器定时器 0 初始化函数初始化函数 初始化定时器初始化定时器 0 的值 以及开中断 初始化各方向的计数值的值 以及开中断 初始化各方向的计数值 void timer0init void TH0 0 TL0 0 TMOD 0 x01 TCON 0X10 IE 0X82 count 1000 nsr count nsr ini nsg count nsg ini nsy count nsy ini ewr count ewr ini ewg count ewg ini ewy count ewy ini ns2r count ns2r ini ns2g count ns2g ini ns2y count ns2y ini ew2r count ew2r ini ew2g count ew2g ini ew2y count ew2y ini 定时器中断功能定时器中断功能 定时一秒 但下面的初值只能定时定时一秒 但下面的初值只能定时 1ms 在 在 traficc display 中中 count 计数一千次 即计数一千次 即 1s 每隔每隔 1ms 会定时刷新数码管的值这样就不会出现闪烁现象会定时刷新数码管的值这样就不会出现闪烁现象 void delay 1s interrupt 1 TH0 0 xfb TL0 0 x18 traficc display count void traficc display if count 0 count 1000 traficc1 calculate traficc2 calculate traficc1 display traficc2 display 延时函数延时函数 如果数码管有闪烁现象 可以稍微调节一下这个函数如果数码管有闪烁现象 可以稍微调节一下这个函数 void delay ms int count while count ifndef TRAFICCLIGHT H define TRAFICCLIGHT H 开关值设定开关值设定 主要是有些硬件共阴极和共阳极不同 可以通过修改这里的值主要是有些硬件共阴极和共阳极不同 可以通过修改这里的值 define LIGHT ON 0 define LIGHT OFF 1 define LED ON 0 define LED OFF 1 初始值设定初始值设定 定义数码管上面的初始时间值 这里要注意初始时间要比想要显示的时间值大定义数码管上面的初始时间值 这里要注意初始时间要比想要显示的时间值大 1 因为 因为 显示之前我们已经做了减一操作显示之前我们已经做了减一操作 define nsr ini 21 define nsg ini 18 define nsy ini 3 define ewr ini 21 define ewg ini 18 define ewy ini 3 define ns2r ini 31 define ns2g ini 28 define ns2y ini 3 define ew2r ini 31 define ew2g ini 28 define ew2y ini 3 程序中所有函数的申明程序中所有函数的申明 函数申明中的树状结构 表示了程序中的函数包含关系 这样主要是为了函数的清晰函数申明中的树状结构 表示了程序中的函数包含关系 这样主要是为了函数的清晰 display 显示函数 显示函数 calculate 计算各个数码管的剩余时间函数计算各个数码管的剩余时间函数 void delay ms int void IO Init void timer0init void void traficc display void traficc1 calculate void NS1 calculate void EW1 calculate void traficc1 display void NS1 display void NSR1 display void NSG1 display void NSY1 display void EW1 display void EWR1 display void EWG1 display void EWY1 display void traficc2 calculate void NS2 calculate void EW2 calculate void traficc2 display void NS2 display void NSR2 display void NSG2 display void NSY2 display void EW2 display void EWG2 display void EWY2 display void EWR2 display 定义引脚功能定义引脚功能 其中其中EW1表示第一个十字路口的东西方向 其中表示第一个十字路口的东西方向 其中EW2表示第二个十字路口的东西方向 表示第二个十字路口的东西方向 NS 代表南北方向 代表南北方向 LED 代表代表 8 段段 LED 数码管数码管 P1 口为位选信号 口为位选信号 P3 口为数据信号口为数据信号 G 代表绿灯代表绿灯 Y 代表黄灯 代表黄灯 R 代表红灯代表红灯 P0 口为第二个十字路口红绿黄灯的控制信号 口为第二个十字路口红绿黄灯的控制信号 P2 口为第一个十字路口的黄绿黄灯的控口为第一个十字路口的黄绿黄灯的控 制信号制信号 sbit EWG2 P0 0 sbit EWY2 P0 1 sbit EWR2 P0 2 sbit NSG2 P0 3 sbit NSY2 P0 4 sbit NSR2 P0 5 sbit EW1 LED1 P1 0 sbit EW1 LED2 P1 1 sbit NS1 LED1 P1 2 sbit NS1 LED2 P1 3 sbit EW2 LED1 P1 4 sbit EW2 LED2 P1 5 sbit NS2 LED1 P1 6 sbit NS2 LED2 P1 7 sbit EWG1 P2 0 sbit EWY1 P2 1 sbit EWR1 P2 2 sbit NSG1 P2 3 sbit NSY1 P2 4 sbit NSR1 P2 5 define LED P3 定义灯及数码管的开关功能定义灯及数码管的开关功能 EW NS G Y R 1 2 LIGHT ON OFF 表示东西表示东西 南北方向南北方向 绿绿 黄黄 红灯红灯 第一第一 二个十字路二个十字路 口口 开开 关 关 EW NS 1 2 LED1 LED2 ON OFF 表示东西表示东西 南北方向南北方向 第一第一 二个十字路口二个十字路口 数码管数码管 1 2 开开 关 关 define EWG1 LIGHTON EWG1 LIGHT ON define EWG1 LIGHTOFF EWG1 LIGHT OFF define EWY1 LIGHTON EWY1 LIGHT ON define EWY1 LIGHTOFF EWY1 LIGHT OFF define EWR1 LIGHTON EWR1 LIGHT ON define EWR1 LIGHTOFF EWR1 LIGHT OFF define NSG1 LIGHTON NSG1 LIGHT ON define NSG1 LIGHTOFF NSG1 LIGHT OFF define NSY1 LIGHTON NSY1 LIGHT ON define NSY1 LIGHTOFF NSY1 LIGHT OFF define NSR1 LIGHTON NSR1 LIGHT ON define NSR1 LIGHTOFF NSR1 LIGHT OFF define EWG2 LIGHTON EWG2 LIGHT ON define EWG2 LIGHTOFF EWG2 LIGHT OFF define EWY2 LIGHTON EWY2 LIGHT ON define EWY2 LIGHTOFF EWY2 LIGHT OFF define EWR2 LIGHTON EWR2 LIGHT ON define EWR2 LIGHTOFF EWR2 LIGHT OFF define NSG2 LIGHTON NSG2 LIGHT ON define NSG2 LIGHTOFF NSG2 LIGHT OFF define NSY2 LIGHTON NSY2 LIGHT ON define NSY2 LIGHTOFF NSY2 LIGHT OFF define NSR2 LIGHTON NSR2 LIGHT ON define NSR2 LIGHTOFF NSR2 LIGHT OFF define EW1 LED1ON EW1 LED1 LED ON define EW1 LED1OFF EW1 LED1 LED OFF define EW1 LED2ON EW1 LED2 LED ON define EW1 LED2OFF EW1 LED2 LED OFF define NS1 LED1ON NS1 LED1 LED ON define NS1 LED1OFF NS1 LED1 LED OFF define NS1 LED2ON NS1 LED2 LED ON define NS1 LED2OFF NS1 LED2 LED OFF define EW2 LED1ON EW2 LED1 LED ON define EW2 LED1OFF EW2 LED1 LED OFF define EW2 LED2ON EW2 LED2 LED ON define EW2 LED2OFF EW2 LED2 LED OFF define NS2 LED1ON NS2 LED1 LED ON define NS2 LED1OFF NS2 LED1 LED OFF define NS2 LED2ON NS2 LED2 LED ON define NS2 LED2OFF NS2 LED2 LED OFF 定义数码管译码数组定义数码管译码数组 定义译码数组以及程序中要求使用的变量定义译码数组以及程序中要求使用的变量 int LED INDEX 0 xfc 0 x60 0 xda 0 xf2 0 x66 0 xb6 0 xae 0 xe0 0 xfe 0 xf6 int LED INDEX 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f char nsrhight bit nsrlow bit nsghight bit nsglow bit nsyhight bit nsylow bit nsr count nsg count nsy count ewrhight bit ewrlow bit ewghight bit ewglow bit ewyhight bit ewylow bit ewr count ewg count ewy count ns2rhight bit ns2rlow bit ns2ghight bit ns2glow bit ns2yhight bit ns2ylow bit ns2r count ns 2g count ns2y count ew2rhight bit ew2rlow bit ew2ghight bit ew2glow bit ew2yhight bit ew2ylow bit ew2r cou nt ew2g count ew2y count 计数的高地位计数的高地位 红绿黄灯初值变量红绿黄灯初值变量 int count 用于用于 1000 次计数 每次延时次计数 每次延时 1ms endif include 第一个十字路口的计算剩余时间函数第一个十字路口的计算剩余时间函数 包含了南北方向剩余时间计算和东西方向剩余时间计算包含了南北方向剩余时间计算和东西方向剩余时间计算 void traficc1 calculate NS1 calculate EW1 calculate 第一个十字路口显示函数第一个十字路口显示函数 包含了南北方向显示函数和东西方向显示函数包含了南北方向显示函数和东西方向显示函数 void traficc1 display NS1 display EW1 display 第一个十字路口南北方向计算函数第一个十字路口南北方向计算函数 包含了剩余时间值的计算 调用一次该函数 南北方向的红包含了剩余时间值的计算 调用一次该函数 南北方向的红 绿绿 黄灯的剩余时间减一黄灯的剩余时间减一 然后分为高地位显示时间值 同时该函数也包含了红然后分为高地位显示时间值 同时该函数也包含了红 绿绿 黄灯的亮灭控制 初始时间黄灯的亮灭控制 初始时间 的赋值的赋值 void NS1 calculate if nsr count nsr ini 获得初始值的时候灭灯 这样是为了循环进入第二次是 获得初始值的时候灭灯 这样是为了循环进入第二次是 中间灭灯没有间隔中间灭灯没有间隔 NSY1 LIGHTOFF if nsr count 0 NSR1 LIGHTON nsrhight bit nsr count 10 nsrlow bit nsr count 10 else if nsg count 0 NSR1 LIGHTOFF NSG1 LIGHTON nsghight bit nsg count 10 nsglow bit nsg count 10 else if nsy count 0 NSG1 LIGHTOFF NSY1 LIGHTON nsyhight bit nsy count 10 nsylow bit nsy count 10 if nsy count 0 nsr count nsr ini nsg count nsg ini nsy count nsy ini 第一个十字路口南北方向显示函数第一个十字路口南北方向显示函数 包含了南北方向的红绿黄灯对应的数码管剩余时间的显示包含了南北方向的红绿黄灯对应的数码管剩余时间的显示 void NS1 display if nsr count 0 else if nsg count 0 else NSY1 display 南北方向红灯数码管显示函数南北方向红灯数码管显示函数 void NSR1 display LED LED INDEX nsrhight bit NS1 LED1ON delay ms 3 NS1 LED1OFF LED LED INDEX nsrlow bit NS1 LED2ON delay ms 3 NS1 LED2OFF 南北方向绿灯数码管显示函数南北方向绿灯数码管显示函数 void NSG1 display if nsg count 500 NS1 LED1OFF NS1 LED2OFF NSG1 LIGHTOFF else NSG1 LIGHTON LED LED INDEX nsghight bit NS1 LED1ON delay ms 3 NS1 LED1OFF LED LED INDEX nsglow bit NS1 LED2ON delay ms 3 NS1 LED2OFF 南北方向黄灯数码管显示函数南北方向黄灯数码管显示函数 void NSY1 display LED LED INDEX nsyhight bit NS1 LED1ON delay ms 3 NS1 LED1OFF LED LED INDEX nsylow bit NS1 LED2ON delay ms 3 NS1 LED2OFF void EW1 calculate if ewg count ewg ini 获得初始值的时候灭灯 这样是为了循环进入第二次是 获得初始值的时候灭灯 这样是为了循环进入第二次是 中间灭灯没有间隔中间灭灯没有间隔 EWR1 LIGHTOFF if ewg count 0 EWG1 LIGHTON ewghight bit ewg count 10 ewglow bit ewg count 10 else if ewy count 0 EWG1 LIGHTOFF EWY1 LIGHTON ewyhight bit ewy count 10 ewylow bit ewy count 10 else if ewr count 0 EWY1 LIGHTOFF EWR1 LIGHTON ewrhight bit ewr count 10 ewrlow bit ewr count 10 if ewr count 0 ewr count ewr ini ewg count ewg ini ewy count ewy ini 申明申明 东西方向的显示以及第二个十字路口的东西方向显示同南北方向的函数类同 这里就不东西方向的显示以及第二个十字路口的东西方向显示同南北方向的函数类同 这里就不 再注释再注释 void EW1 display if ewg count 0 else if ewy count 0 else EWR1 display void EWG1 display if ewg count 500 EW1 LED1OFF EW1 LED2OFF EWG1 LIGHTOFF else EWG1 LIGHTON LED LED INDEX ewghight bit EW1 LED1ON delay ms 3 EW1 LED1OFF LED LED INDEX ewglow bit EW1 LED2ON delay ms 3 EW1 LED2OFF void EWY1 display LED LED INDEX ewyhight bit EW1 LED1ON delay ms 3 EW1 LED1OFF LED LED INDEX ewylow bit EW1 LED2ON delay ms 3 EW1 LED2OFF void EWR1 display LED LED INDEX ewrhight bit EW1 LED1ON delay ms 3 EW1 LED1OFF LED LED INDEX ewrlow bit EW1 LED2ON delay ms 3 EW1 LED2OFF include 第二个十字路口的计算剩余时间函数第二个十字路口的计算剩余时间函数 包含了南北方向剩余时间计算和东西方向剩余时间计算包含了南北方向剩余时间计算和东西方向剩余时间计算 void traficc2 calculate NS2 calculate EW2 calculate 第二个十字路口显示函数第二个十字路口显示函数 包含了南北方向显示函数和东西方向显示函数包含了南北方向显示函数和东西方向显示函数 void traficc2 display NS2 display EW2 display 第二个十字路口南北方向计算函数第二个十字路口南北方向计算函数 包含了剩余时间值的计算 调用一次该函数 南北方向的红包含了剩余时间值的计算 调用一次该函数 南北方向的红 绿绿 黄灯的剩余时间减一黄灯的剩余时间减一 然后分为高地位显示时间值 同时该函数也包含了红然后分为高地位显示时间值 同时该函数也包含了红 绿绿 黄灯的亮灭控制 初始时间黄灯的亮灭控制 初始时间 的赋值的赋值 void NS2 calculate if ns2g count ns2g ini NSR2 LIGHTOFF if ns2g count 0 NSG2 LIGHTON ns2ghight bit ns2g count 10 ns2glow bit ns2g count 10 else if ns2y count 0 NSG2 LIGHTOFF NSY2 LIGHTON ns2yhight bit ns2y count 10 ns2ylow bit ns2y count 10 else if ns2r count 0 NSY2 LIGHTOFF NSR2 LIGHTON ns2rhight bit ns2r count 10 ns2rlow bit ns2r count 10 if ns2r count 0 ns2r count ns2r ini ns2g count ns2g ini ns2y count ns2y ini 第二个十字路口南北方向显示函数第二个十字路口南北方向显示函数 包含了南北方向的红绿黄灯对应的数码管剩余时间的显示包含了南北方向的红绿黄灯对应的数码管剩余时间的显示 void NS2 display if ns2g count 0 else if ns2y count 0 else NSR2 display 南北方向绿灯数码管显示函数南北方向绿灯数码管显示函数 void NSG2 display if ns2g count 500 NS2 LED1OFF NS2 LED2OFF NSG2 LIGHTOFF else NSG2 LIGHTON LED LED INDEX ns2ghight bit NS2 LED1ON delay ms 3 NS2 LED1OFF LED LED INDEX ns2glow bit NS2 LED2ON delay ms 3 NS2 LED2OFF 南北方向黄灯数码管显示函数南北方向黄灯数码管显示函数 void NSY2 display LED LED INDEX ns2yhight bit NS2 LED1ON delay ms 3 NS2 LED1OFF LED LED INDEX ns2ylow bit NS2 LED2ON delay ms 3 NS2 LED2OFF 南北方向红灯数码管显示函数南北方向红灯数码管显示函数 void NSR2 display LED LED INDEX ns2rhight bit NS2 LED1ON delay ms 3 NS2 LED1OFF LED LED INDEX ns2rlow bit NS2 LED2ON delay ms 3 NS2 LED2OFF 东西方向剩余时间计算函数东西方向剩余时间计算函数 void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论