收藏 分销(赏)

C51单片机实行流水灯程序.doc

上传人:w****g 文档编号:10820160 上传时间:2025-06-18 格式:DOC 页数:6 大小:38.51KB 下载积分:6 金币
下载 相关
C51单片机实行流水灯程序.doc_第1页
第1页 / 共6页
C51单片机实行流水灯程序.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
#include<reg51.h> #define LEDPort P1 unsigned 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,0X1f,0X3f,0X7f}; //方式4 unsigned char LED56_[8]={0XFF,0X3F,0X9F,0XCF,0XE7,0XF3,0XF9,0XFC}; unsigned char LED7_[]={0X0F,0XF0,0X33,0XCC,0X3C,0XC3,0XFF}; unsigned char TAB[9]={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 Delay=1; //延迟计数,通过改变改数值改变灯状态延迟时间。 //灯延迟时间=uc_Dalay*定时器溢出时间。 void main() { P2=0X3F; TMOD=0x01; //定时器0模式一。 TH0=0x3C; TL0=0xB0; //溢出时间:50ms。 TR0=1; //定时器0开启。 IT0=1; //外部中断0下降沿触发。 IT1=1; //外部中断1下降沿触发。 EX0=1; //外部中断0开。 EX1=1; //外部中断1开。 ET0=1; //定时器0中断开。 EA=1; //总中断开。 while(1); } //********************************************************************************************************* //* * //* ************************************定时器0中断函数************************************ * //* * //*<函数功能>:当定时器0溢出时执行此函数,首先执行2个判断: * //* (1)if判断是否改变灯的状态,可用于改变延时时间; * //* (2)switch判断闪烁模式,根据不同模式对灯进行不同的通断。 * //* 最后对定时器TH0,TL0重新赋值,溢出时间为50ms。 * //* * //********************************************************************************************************* void vTimer0(void) interrupt 1 { if(Count%Delay==0) //通过此判断语句来改变延时。,例如:当uc_Delay=6时,定时器 { //溢出5次时灯状态改变1次。同时uc_Count重新赋值1.否则,uc_Count++ Count=1; //等待下一次溢出。因此可以改变延时。 switch(Mode) { //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式0,灯从上往下依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> case 0: if(i>=8) i=0; else i++; LEDPort=LED01_[i]; break; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式1,灯从下往上依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> case 1: if(i<=0) i=8; else i--; LEDPort=LED01_[i]; break; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式2,灯从两边往中间依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> case 2: if(i>=4) i=0; else i++; LEDPort=LED23_[i]; break; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式3,灯从中间往两边依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 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: if(i>=7) i=0; else i++; LEDPort=LED7_[i]; break; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<所有等以一定时间间隔同时闪烁。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> case 8: if(LEDPort==0xFF) LEDPort=0x00; else LEDPort=0xFF; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<其他>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> default: break; } } else Count++; TH0=0x3C; //重新给定时器赋值。 TL0=0xB0; //定时时间:50ms。 } //********************************************************************************************************* //* * //* ************************************外部中断0中断函数************************************ * //* * //* <函数功能>:当外部中断0产生下降沿信号时执行此函数,将闪灯模式从模式0到4循环切换。 * //* * //********************************************************************************************************* void vModeChange(void) interrupt 0 { if(Mode>7) Mode=0; else Mode++; P2=TAB[Mode]; } //********************************************************************************************************* //* * //* ************************************外部中断1中断函数************************************ * //* * //*<函数功能>:当外部中断1产生下降沿信号时执行此函数,将闪灯时间从50ms,250ms,500ms,750ms循环切换。 * //* * //********************************************************************************************************* void vDelayChange(void) interrupt 2 { if(Delay>=16) Delay=1; else Delay+=5; }
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服