单片机项目实例 - 嵌入式开发 - C语言版 - 基础篇

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


注意:此实例单片机版本为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 = 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值