单片机开发板基础实验例程——STC89C52

1. 点亮第一个LED

#include "reg52.h" // 此文件中定义了单片机的一些特殊功能寄存器

sbit led = P2^0; // 将单片机的P2.0端口定义为led

void main()
{
    while(1)
    {
        led = 0; // 将端口置为低电平
    }
}

2. 使LED闪烁

#inclued "reg52.h"

typedef unsigned int u16; // 对数据类型进行重定义
sbit led = P2^0;

void delay(u16 i) // 暴力循环延时函数,i=1时约延时10us 
{
    while(i--);
}

void main()
{
    while(1)
    {
        led = 0;
        delay(50000); // 大约延时450ms
        led = 1;
        delay(50000);
    }
}

3. 利用LED实现流水灯

#include "reg52.h"
#include "intrins.h" // 包含左、右移函数:_crol_(),_cror_()

typedef unsigned int u16;
#define led P2 // 将P2定义为led

void delay(u16 i)
{
    while(i--);
}

void main()
{
    u16 i;
    led = ~0x01; // 1111 1110
    delay(50000);
    while(1)
    {
        for(i = 0; i < 7; i++)
        {
            led = _crol_(led,1); // 将led的值左移一位,1111 1101
            delay(50000);
        }
    }
}

4. 蜂鸣器发声

#include "reg52.h"

typedef unsigned int u16;
sbit beep = P1^5; // 将P1.5口定义为beep

void delay(u16 i)
{
    while(i--);
}

void main()
{
    while(1)
    {
        beep = ~beep; // 产生正负交替脉冲以驱动无源蜂鸣器
        delay(100); // 延时约1ms,通过修改此延时时间达到不同的发声效果
    }
}

5. 静态数码管显示0~7

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
// 显示0~F的值

void delay(u16 i)
{
	while(i--);	
}

void DigDisplay()
{
	u8 i;
	for(i=0;i<8;i++)
	{
		switch(i) // 位选,选择点亮的数码管
		{
            case(0):
				LSA=1;LSB=1;LSC=1; // 显示第0位
                break;
			case(1):
				LSA=0;LSB=1;LSC=1; // 显示第1位
                break; 
			case(2):
				LSA=1;LSB=0;LSC=1; // 显示第2位
                break; 
			case(3):	
				LSA=0;LSB=0;LSC=1; // 显示第3位
                break; 
			case(4):
				LSA=1;LSB=1;LSC=0; // 显示第4位
                break; 
			case(5):
				LSA=0;LSB=1;LSC=0; // 显示第5位
                break; 
			case(6):
				LSA=1;LSB=0;LSC=0; // 显示第6位
                break; 
			case(7):
				LSA=0;LSB=0;LSC=0; // 显示第7位	
                break; 
		}
		P0=smgduan[i]; // 发送段码
		delay(100); // 间隔一段时间扫描
		P0=0x00; // 消隐
	}
} 

你可能感兴趣的:(单片机,stm32,c语言)