目录标题
注意:此实例单片机版本为STC 89C52
1. 流水灯 效果,六个LED内嵌灯不停切换(位输出)
//流水灯
#include<reg52.h>
#define uint unsigned int
#define no 0
#define off 1
sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit led6 = P1^5;
sbit led7 = P1^6;
sbit led8 = P1^7;
void delay(uint xms){
//延时xms
uint i,j;
for(i = xms;i>0;i--){
for(j = 112;j>0;j--);
}
}
int main(){
while(1)
{
led1 = no; //
delay(200);//延迟200ms
led1 = off;
led2 = no; //
delay(200);//延迟200ms
led2 = off;
led3 = no; //
delay(200);//延迟200ms
led3 = off;
led4 = no; //
delay(200);//延迟200ms
led4 = off;
led5 = no; //
delay(200);//延迟200ms
led5 = off;
led6 = no; //
delay(200);//延迟200ms
led6 = off;
led7 = no; //
delay(200);//延迟200ms
led7 = off;
led8 = no; //
delay(200);//延迟200ms
led8 = off;
}
return 0;
}
2. 流水灯 效果,六个LED内嵌灯不停切换(循环移位)
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa;
void delayms(uint);
int main() {
aa = 0xfe;
while(1){
P1 = aa;
delayms(500);
aa = _cr ol_(aa,1);
}
return 0;
}
void delayms(uint xms){
uint i,j;
for(i = xms;i > 0;i--){
for(j = 110;j > 0;j--);
}
}
3. 数码管显示内容
#include <reg52.h>
sbit dula = P2^6; //申明U1锁存器的锁存端
sbit wela = P2^7; //申明U2锁存器的锁存端
int main(){
wela = 1; //打开U2锁存端
P0 = 0xFE; //打开入位选信号
wela = 0; //关闭U2锁存端
dula = 1;
P0 =

本文档包含一系列基于STC89C52单片机的编程实验,涉及LED流水灯(位输出与循环移位)、数码管内容显示(静态与动态)、蜂鸣器报警以及结合流水灯的报警功能。实验代码详细展示了如何控制硬件设备,并提供了可能存在的问题与改进点。
最低0.47元/天 解锁文章
6207






