STC15系列-流水灯和数码管

更新时间:2024-01-05 02:18:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

#include #include \#include \#include \

#define uchar unsigned char #define uint unsigned int

sbit LED1 = P0^0;

sbit LEDLE = P2^5; //设置U4锁存器

sbit SEGLE = P2^7; //设置U6锁存器,数码管位选

void LED1_Light(); void Run_LED();

sbit DIGLE = P2^6; //设置U7锁存器,进行数码管的段选

void delay(uint a) { uint i,j; for(i = 0;i < 999;i++) { for(j = 0;j < a;j++) { } } }

void LED1_Light() {

LEDLE = 1; //关闭U4锁存器,对数据透明(即输出同步),从而控制LED灯 SEGLE = 0; //使能U6锁存器,关闭七段码数码管 while(1) { LED1 = 0; } }

void Run_LED() { LEDLE = 1; //关闭U4锁存器,控制LED灯 SEGLE = 0; //使能U6锁存器,禁止七段码数码管显示 P0 = 0xFE; while(1) {

delay(300); P0 = P0 << 1; P0 |= 0x01; if(P0 == 0xFF) P0 = 0xFE; } }

uchar const dig[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数字0~9的段选 uchar code seg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //六位位选

void Digital_Tube() { uint i,j; i = 0; j = 0;

P0 = 0xFF; //关闭LED灯 LEDLE = 0; //使能U4锁存器,不让LED灯显示 while(1) { P0 = seg[i]; SEGLE = 1; //U6锁存器失能,对数据是透明的 SEGLE = 0; //U6锁存器使能,锁存住位选内容 P0 = dig[j]; DIGLE = 1; DIGLE = 0; i++; j++; if(i == 6) i = 0; if(j == 10) j = 0; delay(300); } }

void main(void) {

// LED1_Light(); //一个LED灯亮

// Run_LED(); //流水灯 Digital_Tube(); //数码管 }

本文来源:https://www.bwwdw.com/article/bs8x.html

Top