51单片机实现c语言字母滚动,我的单片机跑马灯c语言源程序

本文介绍了一个基于STC12C5A系列单片机的跑马灯实验项目。通过使用Keil uVision2 V2.4a IDE进行编程,实现了跑马灯的效果,并利用P0口控制跑马灯,P2口控制数码管,P3口的P33脚作为跑马灯的整体控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*编译环境**************************************

功能:跑马灯实验,依靠程序延时控制跑马灯

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);                                                //延时,更改此处可以改变周期

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值