单片机跑马灯源程序如下:
- /*编译环境**************************************
- 功能:跑马灯实验,依靠程序延时控制跑马灯
- CPU: STC12C5A系列
- IDE: KEIL uVission2 V2.4a
- ************************************************/
- /*资源分配**************************************
- P0: 跑马灯
- P33:跑马灯整体控制
- P24-P27:数码管控制
- ************************************************/
- #include "stc12c5a.h"
- #define Dtube_SEG3 P27 //每一位的数码管总控IO定义
- #define Dtube_SEG2 P26
- #define Dtube_SEG1 P25
- #define Dtube_SEG0 P24
- #define LED_SEG P33 //跑马灯总控IO定义
- #define HORSE_BUS P0 //跑马灯定义
- void Delay_Time(unsigned int time) //延时函数
- {
- while(time>0)
- time--;
- }
- void main(void)
- {
- unsigned char horse_led;
- P2M1&=~0xf0; //P2口 7 6 5 4 3 2 1 0
- // O O O O :数码管总控IO为强推挽输出
- //P2M1 0 0 0 0
- P2M0|=0xf0; //P2M0 1 1 1 1
- P3M1&=~0x08; //P3口 7 6 5 4 3 2 1 0
- // O :跑马灯总控IO为强推挽输出
- //P3M1 0
- P3M0|=0x08; //P3M0 1
- Dtube_SEG0=0; //关闭数码管显示
- Dtube_SEG1=0;
- Dtube_SEG2=0;
- Dtube_SEG3=0;
- LED_SEG=1; //打开跑马灯显示
- horse_led=1; //跑马灯初始值
- for(;;)
- {
- HORSE_BUS=horse_led; //把跑马灯的值送出,点亮一个灯
- horse_led<<=1; //把跑马灯的值左移,准备点亮下一个灯.更改此处可以改变方向
- if(horse_led==0) //直到点亮最后一个灯,
- {
- horse_led=1; //再回到第一个灯
- }
- Delay_Time(50000); //延时,更改此处可以改变周期
- }
- }
复制代码
所有资料51hei提供下载:
跑马灯1.zip
(19.19 KB, 下载次数: 8)
|