使用开发板为普中51-实验板 普中-2
时钟频率:11.001081MHZ
演示视频:
【51单片机演奏兰亭序】 https://www.bilibili.com/video/BV12G411D7uK/?share_source=copy_web&vd_source=0f48f7cc0fef720b95e067122ac83437
源码如下:
数组较大,请在数组前加上code
关键字
delay.h
#ifndef __DELAY_H__
#define __DELAY_H__
void Delayxms(unsigned int xms); //@11.0592MHz
#endif
delay.c
#include <INTRINS.H>
void Delayxms(unsigned int xms) //@11.0592MHz
{
while (xms--)
{
unsigned char i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j)
;
} while (--i);
}
}
Timer0.h
#ifndef __TIMER0_H__
#define __TIMER0_H__
void Timer0_Init();
#endif
Timer0.c
#include <REGX52.H>
/**
* @brief 计时器0初始化
*/
void Timer0_Init() // 1毫秒@11.0592MHz
{
TMOD &= 0xF0; // 设置定时器模式
TMOD |= 0x01; // 设置定时器模式
TL0 = 0x66; // 设置定时初值
TH0 = 0xFC; // 设置定时初值
TF0 = 0; // 清除TF0标志
TR0 = 1; // 定时器0开始计时
// 配置中断
ET0 = 1;
EA = 1;
PT0 = 0;
}
main.c
#include <REGX52.H>
#include "delay.h"
#include "Timer0.h"
// 蜂鸣器端口
sbit Buzzer = P2 ^ 5;
#define SPEED 500 // 速度