完整word版,C51单片机实行流水灯程序_第1页
完整word版,C51单片机实行流水灯程序_第2页
完整word版,C51单片机实行流水灯程序_第3页
完整word版,C51单片机实行流水灯程序_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、#include<reg51.h>#define LEDPort P1unsigned char LED01_9=0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,;/方式 0,方式 1 灯开关数组。unsigned char LED23_5=0xFF,0x7E,0xBD,0xDB,0xE7;/方式 2,方式 3 灯开关数组。unsigned char LED4_16=0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00,0X01,0X03,0X07,0X0f,0X1 f,0X3f,0X7f; / 方式 4

2、unsigned char LED56_8=0XFF,0X3F,0X9F,0XCF,0XE7,0XF3,0XF9,0XFC;unsigned char LED7_=0X0F,0XF0,0X33,0XCC,0X3C,0XC3,0XFF;unsigned char TAB9=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80;/定义断码表。unsigned char i=0,j=9;/数据选择计数。unsigned char Mode=0;/ 模式选择,默认为模式0。unsigned char Count=1;/ 定时器中断计数。unsigned char D

3、elay=1;/ 延迟计数,通过改变改数值改变灯状态延迟时间。/ 灯延迟时间=uc_Dalay*定时器溢出时间。void main()P2=0X3F;TMOD=0x01;/定时器0 模式一。TH0=0x3C;TL0=0xB0;TR0=1;/溢出时间: 50ms。/定时器 0 开启。IT0=1;IT1=1;/外部中断/外部中断0 下降沿触发。1 下降沿触发。EX0=1;/外部中断0 开。EX1=1;/外部中断1 开。ET0=1;/定时器 0中断开。EA=1;/总中断开。while(1);/*/*/* * *定时*器0中断函数/*/*< 函数功能>:当定时器0 溢出时执行此函数,首先执

4、行2 个判断:*/*(1) if判断是否改变灯的状态,可用于改变延时时间;*/*(2) switch判断闪烁模式,根据不同模式对灯进行不同的通断。*/*最后对定时器TH0,TL0 重新赋值,溢出时间为50ms。*/*/*void vTimer0(void) interrupt 1if(Count%Delay=0)/通过此判断语句来改变延时。,例如:当 uc_Delay=6时,定时器/溢出5次时灯状态改变1 次。同时uc_Count 重新赋值1.否则, uc_Count+Count=1;/ 等待下一次溢出。因此可以改变延时。switch(Mode)/<<<<<<

5、;<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式0,灯从上往下依次点亮,不断循环。 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>case 0:if(i>=8)i=0;else i+;LEDPo

6、rt=LED01_i;break;/<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式1,灯从下往上依次点亮,不断循环。 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g

7、t;>>case 1:if(i<=0)i=8;else i-;LEDPort=LED01_i;break;/<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 模式 2 ,灯从两边往中间依次点亮,不断循环。 >>>>>>>>>>>>>>>>>>>>

8、>>>>>>>>>>>>case 2:if(i>=4)i=0;else i+;LEDPort=LED23_i;break;/<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 模式 3 ,灯从中间往两边依次点亮,不断循环。 >>>>>>>>>>&g

9、t;>>>>>>>>>>>>>>>>>>>>>case 3:if(i<=0)i=4;else i-;LEDPort=LED23_i;break;case 4:if(i<16)i+;else i=0;LEDPort=LED4_i;break;case 5:if(i<7)i=i+2;else i=0;LEDPort=LED56_i;break;case 6:if(i<7)i+;else i=0;LEDPort=LED56_i;break;case 7

10、:if(i>=7)i=0;else i+;LEDPort=LED7_i;break;/<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<所有等以一定时间间隔同时闪烁。 >>>>>>>>>>>>>>>>>>>>>>&g

11、t;>>>>>>>>>>>>>>>>case 8:if(LEDPort=0xFF)LEDPort=0x00;else LEDPort=0xFF;/<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

12、;<<<<<其他>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>default:break;else Count+;TH0=0x3C;/重新给定时器赋值。TL0=0xB0;/定时时间: 50ms。/*/*/*外部中断0中断函数*/*/* <函数功能 >:当外部中断0 产生下降沿信号时执行此函数,将闪灯模式从模式0 到 4循环切换。*/*/*void vModeChange(void) interrupt 0if(Mode>7)Mode=0

温馨提示

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

评论

0/150

提交评论