当前位置:文档之家› 用51单片机实现电脑音频信号的频谱显示(在LCD上显示)

用51单片机实现电脑音频信号的频谱显示(在LCD上显示)

用51单片机实现电脑音频信号的频谱显示(在LCD上显示)
用51单片机实现电脑音频信号的频谱显示(在LCD上显示)

如何用51单片机实现音频信号的频谱显示(在LCD上显示)

思路:外来音频信号经过51单片机,在单片机中进行频谱分析,并将结果显示在LCD(12864或1602)上

要求:频谱显示如同千千静听播放音乐时的频谱显示

希望各位高手能给出详细的解决方案,感激。。。。。。

51做FFT有些困难,可以使用增强型(RAM)的51机子进行

参考程序:

#include

#define uchar unsigned char

#define uint unsigned int

#define channel 0x01 //设置AD通道为 P1.1

//---------------------------------------------------------------------

sbit SDA_R=P1^2;

sbit SDA_R_TOP=P1^3;

sbit SDA_G=P1^4;

sbit SDA_G_TOP=P1^5;

sbit STCP=P1^6;

sbit SHCP=P1^7;

//---------------------------------------------------------------------

//----------------------------------------------------------------------------------------------------------------------

//放大128倍后的sin整数表(128)

code char SIN_TAB[128] = { 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70, 75, 80, 85, 89, 94, 98, 102,

105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126, 126, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112,

108, 105, 102, 98, 94, 89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30,

-36, -42, -48, -54, -59, -65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121,

-123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102,

-98, -94, -89, -85, -80, -75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6 };

//放大128倍后的cos整数表(128)

code char COS_TAB[128] = { 127, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112, 108, 105, 102, 98, 94,

89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30, -36, -42, -48, -54, -59,

-65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121, -123, -124, -125, -126, -

126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102, -98, -94, -89, -85, -80,

-75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70,

75, 80, 85, 89, 94, 98, 102, 105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126 };

//采样存储序列表

code char LIST_TAB[128] = { 0, 64, 32, 96, 16, 80, 48, 112,

8, 72, 40, 104, 24, 88, 56, 120,

4, 68, 36, 100, 20, 84, 52, 116,

12, 76, 44, 108, 28, 92, 60, 124,

2, 66, 34, 98, 18, 82, 50, 114,

10, 74, 42, 106, 26, 90, 58, 122,

6, 70, 38, 102, 22, 86, 54, 118,

14, 78, 46, 110, 30, 94, 62, 126,

1, 65, 33, 97, 17, 81, 49, 113,

9, 73, 41, 105, 25, 89, 57, 121,

5, 69, 37, 101, 21, 85, 53, 117,

13, 77, 45, 109, 29, 93, 61, 125,

3, 67, 35, 99, 19, 83, 51, 115,

11, 75, 43, 107, 27, 91, 59, 123,

7, 71, 39, 103, 23, 87, 55, 119,

15, 79, 47, 111, 31, 95, 63, 127

};

uchar COUNT=0,COUNT1=0,ADC_Count=0,LINE=15,G,T;

uchar i,j,k,b,p;

int Temp_Real,Temp_Imag,temp; // 中间临时变量

uint TEMP1;

int xdata Fft_Real[128];

int xdata Fft_Image[128]; // fft的虚部

uchar xdata LED_TAB2[64]; //记录漂浮物是否需要停顿一下

uchar xdata LED_TAB[64]; //记录红色柱状

uchar xdata LED_TAB1[64]; //记录漂浮点

void Delay(uint a)

{

while(a--);

}

void FFT()

{ //uchar X;

for( i=1; i<=7; i++) /* for(1) */

{

b=1;

b <<=(i-1); //碟式运算,用于计算隔多少行计算例如第一极 1和2行计算,,第二级

for( j=0; j<=b-1; j++) /* for (2) */

{

p=1;

p <<= (7-i);

p = p*j;

for( k=j; k<128; k=k+2*b) /* for (3) 基二

fft */

{

Temp_Real = Fft_Real[k]; Temp_Imag = Fft_Image[k]; temp = Fft_Real[k+b];

Fft_Real[k] = Fft_Real[k] +

((Fft_Real[k+b]*COS_TAB[p])>>7) + ((Fft_Image[k+b]*SIN_TAB[p])>>7);

Fft_Image[k] = Fft_Image[k] -

((Fft_Real[k+b]*SIN_TAB[p])>>7) + ((Fft_Image[k+b]*COS_TAB[p])>>7);

Fft_Real[k+b] = Temp_Real -

((Fft_Real[k+b]*COS_TAB[p])>>7) - ((Fft_Image[k+b]*SIN_TAB[p])>>7);

Fft_Image[k+b] = Temp_Imag + ((temp*SIN_TAB[p])>>7) - ((Fft_Image[k+b]*COS_TAB[p])>>7);

// 移位.防止溢出. 结果已经是本值的 1/64

Fft_Real[k] >>= 1;

Fft_Image[k] >>= 1;

Fft_Real[k+b] >>= 1;

Fft_Image[k+b] >>= 1;

}

}

}

// X=((((Fft_Real[1]*

Fft_Real[1]))+((Fft_Image[1]*Fft_Image[1])))>>7);

Fft_Real[0]=Fft_Image[0]=0; //去掉直流分量

// Fft_Real[63]=Fft_Image[63]=0;

for(j=0;j<64;j++)

{

TEMP1=((((Fft_Real[j]*

Fft_Real[j]))+((Fft_Image[j]*Fft_Image[j])))>>1);//求功率

if(TEMP1>1)TEMP1--;

else TEMP1=0;

if(TEMP1>31)TEMP1=31;

if(TEMP1>(LED_TAB[j]))LED_TAB[j]=TEMP1;

if(TEMP1>(LED_TAB1[j]))

{ LED_TAB1[j]=TEMP1;

LED_TAB2[j]=18; //提顿速度=12

}

}

}

void Init()

{

//-----------------------------------------------------------------------------------

P1ASF = 0x02; //0000,0010, 将 P1.1 置成模拟口

AUXR1 &=0xFB; //1111,1011, 令 ADRJ=0

EADC=1; //AD中断打开

ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | channel;

//1110 1001 1打开 A/D (ADC_POWER)转换电源;11速度为70周期一次;

//0中断标志清零;1启动adc(ADC_START);001AD通道打开(这里为P1.1);

//-----------------------------------------------------------------------------------

P2M0=1;

P0M0=1;

TMOD=0X12;

TH0=0x30; //大约20K的采样率(要完整频段需40K以上。但音频中10k 以下居多,故本人选择20K采样,美观些)

TL0=0x30;

TH1=0xEE;

TL1=0XC0;

ET0=1; //定时器0 打开

TR0=0; //关闭定时器

ET1=1;

TR1=1;

PT1=0;

PT0=1;

IPH=PADCH;

IP=PADC; //中断优先级

EA=1; //总中断打开

}

void ADC_Finish() interrupt 5

{ ADC_CONTR &= !ADC_FLAG;

Fft_Real[LIST_TAB[ADC_Count]]=(int)((ADC_RES)<<1)+(ADC_RESL>>1)-256;//-512; //按LIST_TAB表里的顺序,进行存储采样值,,

// ADC_CONTR = ADC_POWER | ADC_SPEEDHH| ADC_START | channel; // 为了采集负电压,采用偏置采集。电压提高到1/2 vcc,,所以要减去256

if(ADC_Count<=127)ADC_Count++;

else {EADC=0;TR0=0;}

}

void LED_Display() interrupt 3 //中断一次显示一行。。。

{

TH1=0xF3;

TL1=0X00;

for (G=0;G<64;G++) //往点阵屏填充一行的数据

{

if(LED_TAB[G]<=LINE+16)SDA_R_TOP=1;

else SDA_R_TOP=0;

if(LED_TAB[G]<=LINE)SDA_R=1;

else SDA_R=0;

if(LED_TAB1[G]==LINE){SDA_G_TOP=1;SDA_G=0;}

else if(LED_TAB1[G]==(LINE+16)){SDA_G_TOP=0;SDA_G=1;}

else SDA_G=SDA_G_TOP=1;

SHCP=1;SHCP=0;

}

STCP=1;STCP=0;

P2=15-LINE;

if(LINE>0)LINE--;

else LINE=15;

//////////////////////////

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--; //柱状递减,

COUNT++;

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--;

COUNT++;

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--;

COUNT++;

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--;

COUNT++;

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--; //柱状递减,

COUNT++;

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--;

COUNT++;

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--;

COUNT++;

if(LED_TAB[COUNT]>0)LED_TAB[COUNT]--;

COUNT++;

if(COUNT>=64)COUNT=0;

//漂浮物递减

if(LED_TAB2[COUNT1]==0) //判断是否需要停顿

{

if(LED_TAB1[COUNT1]>LED_TAB[COUNT1])LED_TAB1[COUNT1]--;//大于柱状则递减(保持漂浮物在柱状之上)

}

else LED_TAB2[COUNT1]--;

COUNT1++;

if(LED_TAB2[COUNT1]==0)

{

if(LED_TAB1[COUNT1]>LED_TAB[COUNT1])LED_TAB1[COUNT1]--;

}

else LED_TAB2[COUNT1]--;

COUNT1++;

if(LED_TAB2[COUNT1]==0) //判断是否需要停顿

{

if(LED_TAB1[COUNT1]>LED_TAB[COUNT1])LED_TAB1[COUNT1]--;//大于柱状则递减(保持漂浮物在柱状之上)

}

else LED_TAB2[COUNT1]--;

COUNT1++;

if(LED_TAB2[COUNT1]==0)

{

if(LED_TAB1[COUNT1]>LED_TAB[COUNT1])LED_TAB1[COUNT1]--;

}

else LED_TAB2[COUNT1]--;

COUNT1++;

if(COUNT1>=64)COUNT1=0;

}

void Ad_Control() interrupt 1 //控制采样率

{

ADC_CONTR = ADC_POWER | ADC_SPEEDHH| ADC_START | channel; //开始AD 采集

}

//================================================================= =============================================

// ******************* main() *********************** **********

//================================================================== =============================================

void main()

{

Init();

while(1)

{

ADC_Count=0;

TR0=1;

EADC=1; //开启定时器中断0,,开启ADC

while(ADC_Count<128);

FFT();

//FFT运算。并转换为功率值。。。

// TR1=1;

}

}

基于51单片机的音乐播放器

基于51单片机的音乐播放器 余子健、刘胤、宋亮 摘要:本大作业是基于sst89e52rd2单片机制作的wav音乐播放器。该播放器可以播放存在sd卡中的音乐,通过对sd卡的读取并将数字信号送入单片机中,借助8位DA转换器TLC5620 变成模拟信号,经过放大器TDA2822放大交给扬声器发出最初读取的音频信号,实现音乐播放的功能。 关键词:SD卡,WAV文件,DA,音频放大 1背景 音乐随身听产品经过几年的发展,已经变得相当成熟。市场上可以购买到各类不同的音乐播放器,产品线涵盖了高中低不同档次。作为学习与研究,本作品尝试利用STI51开发板板载资源以及外搭的功率放大电路制作一台音乐播放器,能够播放通过计算机拷贝在SD卡(或MMC卡、TF卡)的根目录中的某一个WAV 文件。 2硬件设计 该音乐播放器硬件组成如下 本音乐播放器使用容量为2G的SD作为外部存储器 主控制器采用SST公司生产的SST89E58RDA,其40引脚封装的芯片功能模块如图1所示。芯片主要特想如下: ?兼容80C51系列,内置超级FLASH存储器的单片机 ?工作电压VDD=4.5~5V,5V工作电压时0-40MHz频率范围 ?1KB的内部RAM ?两块超级FLASH EEPROM,32KB的基本存储卡和8KB的二级存储块(扇区大小为128字节),二级存储块可用于存放掉电后要保存的数据,放在内部具有极强的抗干扰性?最大片外程序/数据地址空间为64KB ?全双工增强型UART,帧错误检测,自动地址识别 ?9个中断源,4个中端优先级 ?降低EMI模式(通过AUXR SFR不允许ALE输出时钟),确保了单片机的高抗干扰性?双DPTR指针(查表,寻址更方便)

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接

图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致 (8) 参考文献 (8) 1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路 的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目 的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述

2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。 3 系统分析 3.1 STC 89C52单片机引脚图及引脚功能介绍 本次设计的目的在于加深STC89C52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示: 图3.1 STC89C52

51单片机控制4个数码管显示

. //使用AT89c51单片机控制四个数码管动态显示0-9999 ,12MHz #include void jiayi();//加1函数 void chufa();//除法函数 void xianshi();//显示函数 void delay();//延时函数 sbit P2_0=P2^0;//个位位码 sbit P2_1=P2^1;//十位位码 sbit P2_2=P2^2;//百位位码 sbit P2_3=P2^3;//千位位码 unsigned char qianwei,baiwei,shiwei,gewei; unsigned int count=0; unsigned char code dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极0-9 void main() { while(1) { jiayi(); chufa(); xianshi(); } } void chufa()//将数字的各个位拆开 { qianwei=count/1000;//千位数 baiwei=count%1000/100; //百位数 shiwei=count%100/10; //十位数 gewei=count%10; //个位数 } void jiayi() { count=count+1; if(count==10000) count=0; } void delay()//延时 { unsigned int i,j; for(i=0;i<10;i++) { for(j=0;j<200;j++); } }

基于51单片机的交通信号灯系统本科毕设论文

毕业设计 基于单片机的交通信号的灯控制系统 一. 综合实训的主要内容 1.设计任务 设计一单片机控制的交通信号灯系统,模拟城市十字路口交通信号灯功能。 2.基本功能要求 2.1 交通信号控制 直行车道红黄绿灯控制、左行车道绿灯控制、人行横道红绿灯控制。 2.2 通行时间显示 数码管倒计时显示通行时间。 2.3 时间参数设置存储 按键实现通行时间的设置,并存储到EEPROM (24C02)芯片中。 二. 硬件方案设计与论证 1. 显示模块设计 1.1倒计时时间显示 设计思想:由于该系统要求完成倒计时显示通行时间的功能,且考虑到实际的交通系统中车辆及行人通行时间不会超过一分钟,基于以上原因,我们考虑完全采用数码管显示,四个路口分别采用一个二位共阴极数码管进行显示。(其实物图见附录1图5.3) 图2.1 数码管原理图 原理图分析: 为了显示数字或字符,必须对数字或字符进行编码。七段数码管(a,b,c,d,e,f,g )加上一个小数点(dp),共计8段,构成一个字节,通过对这八段给予高低平使二极管 GND a b c d e f g dp g f e d c b a (a)

导通或截止,从而显示不同的数字或字符。系统中所使用的是2位共阴数码管(实物图见附录),其管脚从左上方起顺时针依次为1,a,b,e,d,2,g,f,dp,c。 1.2 状态灯显示 设计思想:由于该系统要求完成状态灯显示的功能,我们把各个路口的红灯和黄灯设成直行和左拐两个通行方式所共有,也就是说,一个路口只需四个状态灯,一个直行通行的绿灯,一个左拐通行的绿灯,一个共有的红灯,一个共有的黄灯,人行横道采用红绿灯控制,综上所述,我们共使用16个LED绿灯,12个LED红灯,4个LED黄灯来完成状态灯显示功能。 2.控制模块设计 2.1 设计思想 由于本系统结构简单,实现较容易,不需要大量的外围扩展,所以我们采用STC89C51单片机作为主控制器,STC89C51单片机具有体积小,功耗低,控制能力强,价格低、扩展灵活,使用方便等特点,其最小系统由振荡电路、复位电路构成。 2.2 最小系统原理图 图2.2 单片机最小系统原理图 原理图分析:51单片机最小系统由复位电路,振荡电路组成。振荡电路使用11.0592MHz高精度晶振,振荡电容选择30pF瓷片电容;复位电路采用RC电路。 3.存储模块 3.1 设计思想:系统掉电存储模块采用串行E2PROM,它是基于IIC总线的存储器件,遵循二线制协议,其具有接口方便,体积小,数据掉电不丢失等特点。 3.2 24C02芯片原理图

51单片机蜂鸣器播放音乐代码

/*生日快乐歌曲*/ #include <> #define uint unsigned int #define uchar unsigned char sbit beep = P1^5; uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0}; uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<120;t++); } void PlayMusic() { uint i=0,j,k; while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { //播放各个音符,SONG_LONG 为拍子长度 for(j=0;j // 这是单片机音乐代码生成器生成的代码 #define uchar unsigned char sbit beepIO=P1^5; // 输出为可以修改成其它 IO 口uchar m,n;

基于单片机的心形流水灯毕业设计论文

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称:讲师 2012年12 月1日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件.矚慫润厲钐瘗睞枥庑赖。 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software.聞創沟燴鐺險爱氇谴净。Key words:micro-computer;light water ;C programming language残骛楼諍锩瀨濟溆塹籟。

51单片机模拟交通信号灯

《单片机实验》设计报告交通信号灯模拟系统设计

交通信号灯模拟系统设计 摘要: 本系统以单片机为核心,主要应用单片机中定时器计数器,IO接口,中断系统等,结合8279键盘控制电路,数码管显示以及LED灯实现对十字路口交通信号灯的智能控制。成功实现了利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,通过按键对红绿灯点亮和熄灭时间进行调整及设置以及对红绿灯点亮和熄灭时间进行倒计时时间显示等基本功能。并在此基础上进一步扩展,实现了对某些特殊功能的操作,如:突发紧急情况,所有路线全部红灯,或南北向(主干道)强制绿灯通行,以及东西向(次干道)强制绿灯等,并且可在交通高峰期(系统默认上午7:00-8:00,下午17:00-18:00)自动修改绿灯时间。系统功能完善,可操控性好,代码通俗易懂。 关键字: 51单片机交通信号灯智能控制 8279 主要功能: 分析题目可知,有两种方案设计的方法,也即两条不同的主干分别对应不同的方案,方案一以键盘控制为主干,穿插对系统时钟的检测,倒计时的检测等,系统主干为循环检测键盘是否被按下并作出相应操作。方案二以交通信号灯不同的点亮与熄灭状态为主干,即系统的主干是交通灯状态的循环,在循环中检测按键并作出相应调整。此次试验选择的是方案二,因为对方案一的代码实现比较复杂。信号灯的状态依次为:南北绿灯,东西红灯->南北黄灯,东西红灯->南北红灯,东西绿灯->南北红灯,东西黄灯。解决这部分问题的关键在于8279键盘扫描和相应的数码管显示,在实验帮助里有详细代码,另一个难点在于内置时钟和倒计时显示,这一部分内容通过使用单片机内的定时器能很好的解决,实验帮助五有详细的代码,通过定时器T1产生中断来定时,从而完成一秒的时间。具体详见附录代码。 设计的主要内容: 第一部分,系统开机界面,设置及人机互动的按键控制,流程图如下: (相应的功能流程图中已给出)

51单片机-八段数码管显示

实验一八段数码管显示 1、实验目的: (1)了解数码管动态显示的原理。 (2)了解74LS164扩展端口的方法。 2、实验要求: 利用实验仪提供的显示电路,动态显示一行数据. 3、实验电路图 LED1LED2LED3LED4LED5LED6 4、实验器材: (1)超想-3000TB综合实验仪 1 台 (2)超想3000仿真器 1 台 (3)计算机 1 台

5、实验连线 无 6、实验说明: (1)本实验仪提供了8段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。6位位码由8155的PA0口输出,经Ua2003反向驱动后,选择相应显示位。 74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,并且实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。 本实验仪中数据位输出地址为0e102H ,时钟位输出地址为0e102H ,位选通输出地址为 0e101H 。本实验涉及到了8155 I0/RAM 扩展芯片的工作原理以及74LS164器件的工作原理。 (2)七段数码管的字型代码表 显示字形 g f e d c b a 段码 0 0 1 1 1 1 1 1 3fh 1 0 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 6bh 3 1 0 0 1 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 0 1 6dh 6 1 1 1 1 1 0 1 7dh 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7fh 9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h B 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h D 1 0 1 1 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 1 71h a b c d e f g dp

(完整版)基于51单片机的自动音乐播放器设计毕业设计

本科毕业论文(设计) 题目: 基于51单片机的自动音乐播放 器设计 院系:电子与通信工程学院 专业:通信工程 姓名:张志顺 指导教师:陈冬云 教师职称:助教

填写日期:2014年4月20日 摘要 为了人们在快节奏的日常生活,优化工厂、事业单位、公司等的计时系统,采用了依靠单片机为基础设计了一种的自动音乐播放器。本设计利用单片机89C58RD+的计数和定时功能,来完成对时间的定时和显示功能。并且,通过对定时器初值的设定来产生不同频率的声音,利用定时器中断来对音乐节拍长度的控制。通过LM386N1音频功率放大器的音频放大功能,将单片机控制输出的信号放大,然后通过扩音器播放乐曲。通过MAX232型芯片,可以转换PC机上的电压和单片机的电源电压,再通过相应串口接入PC机,这样就能从PC机上将用C语言编写的程序代码下载到单片机上。最后可以在数码管上显示时间,当到达之前设定的时间之后,

扩音系统就会自动播放一段连续而美妙动听的音乐。此设计规避了传统闹钟的难听并且刺耳声音,而变成的是美妙动听的音乐,能给处于当前快节奏生活的人们的日常生活提供精确的计时,且因为成本较低,值得推广。 关键词:单片机;自动音乐播放;音频转换;时间显示;LM386N1音频功率放大器。 Abstract

To people in the fast pace of daily life, optimization of factories, institutions, companies such as timing system, based on microcomputer was adopted to design a kind of automatic music player. This design using the single chip microcomputer 89 c58rd + count and timing functions, to complete the regular and display function of time. And, through to the setting of the initial value of timer to generate different frequencies of sound, using a timer interrupt to control of the beat of the music length. Through the audio amplifier function LM386N1 audio power amplifier, the single-chip microcomputer control output signal amplification, and then through loudspeakers. Through MAX232 chip, can convert the voltage of power supply voltage of PC and microcontroller, again through the corresponding access PC serial port, so you can from the PC to download program code written in C language to the single chip microcomputer. Last time can be displayed on the digital tube, when, after arriving in setting the time before the public address system will automatically play a continuous and delightful music. This design to avoid the traditional alarm clock ugly and give in the fast-paced life of the People's Daily life to provide accurate timing, and because of lower cost, is worth promoting. Key words: single chip microcomputer; Automatic music playback; Audio conversion; Time display; LM386N1 audio power amplifier.

基于51单片机心形流水灯C语言源程序

基于51单片机心形流水灯C语言源程序

#include unsigned int x,y; void delayms(unsigned int z) //延时 { unsigned int i,j; for(i=z;i>0;i--) for(j=150;j>0;j--); } void On_all() //开启所有灯 { P0=0x00; P1=0x00; P2=0x00; P3=0x00; } void Off_all()//关闭所有灯 { P0=0xff; P1=0xff; P2=0xff; P3=0xff; } void ls()//正向流水灯 { P0=0x00; delayms(400); P2=0x00; delayms(400); P3=0x00; delayms(400); P1=0x00; delayms(400); P0=0x01; delayms(50);

P0=0x04; delayms(50); P0=0x08; delayms(50); P0=0x10; delayms(50); P0=0x20; delayms(50); P0=0x40; delayms(50); P0=0x80; delayms(50); P0=0x00; P2=0x01; delayms(50); P2=0x02; delayms(50); P2=0x04; delayms(50); P2=0x08; delayms(50); P2=0x10; delayms(50); P2=0x20; delayms(50); P2=0x40; delayms(50); P2=0x80; delayms(50); P2=0x00; P3=0x80; delayms(50); P3=0x40; delayms(50); P3=0x20; delayms(50); P3=0x10; delayms(50); P3=0x08; delayms(50); P3=0x04; delayms(50);

51单片机音乐播放器程序

#include //包含51单片机寄存器定义的头文件 sbit sound=P3^6; //将sound位定义为P3.6 unsigned int C; //储存定时器的定时常数 //以下是C调低音的音频宏定义 #define l_dao 262 //将"l_dao"宏定义为低音"1"的频率262Hz #define l_re 286 //将"l_re"宏定义为低音"2"的频率286Hz #define l_mi 311 //将"l_mi"宏定义为低音"3"的频率311Hz #define l_fa 349 //将"l_fa"宏定义为低音"4"的频率349Hz #define l_sao 392 //将"l_sao"宏定义为低音"5"的频率392Hz #define l_la 440 //将"l_a"宏定义为低音"6"的频率440Hz #define l_xi 494 //将"l_xi"宏定义为低音"7"的频率494Hz //以下是C调中音的音频宏定义 #define dao 523 //将"dao"宏定义为中音"1"的频率523Hz #define re 587 //将"re"宏定义为中音"2"的频率587Hz #define mi 659 //将"mi"宏定义为中音"3"的频率659Hz #define fa 698 //将"fa"宏定义为中音"4"的频率698Hz #define sao 784 //将"sao"宏定义为中音"5"的频率784Hz #define la 880 //将"la"宏定义为中音"6"的频率880Hz #define xi 987 //将"xi"宏定义为中音"7"的频率523H //以下是C调高音的音频宏定义 #define h_dao 1046 //将"h_dao"宏定义为高音"1"的频率1046Hz #define h_re 1174 //将"h_re"宏定义为高音"2"的频率1174Hz #define h_mi 1318 //将"h_mi"宏定义为高音"3"的频率1318Hz #define h_fa 1396 //将"h_fa"宏定义为高音"4"的频率1396Hz #define h_sao 1567 //将"h_sao"宏定义为高音"5"的频率1567Hz #define h_la 1760 //将"h_la"宏定义为高音"6"的频率1760Hz #define h_xi 1975 //将"h_xi"宏定义为高音"7"的频率1975Hz /******************************************* 函数功能:1个延时单位,延时300ms ******************************************/ void delay() { unsigned char i,j; for(i=0;i<300;i++) for(j=0;j<300;j++) ; } /******************************************* 函数功能:主函数 ******************************************/ void main(void) { unsigned char i,j; //以下是《知足》的一段简谱

基于51单片机的LED数码管动态显示

基于51单片机的LED数码管动态显示 LED数码管动态显示就是一位一位地轮流点亮各位数码管,对于每一位LED数码管来说,每隔一段时间点亮一次,利用人眼的“视觉暂留"效应,采用循环扫描的方式,分时轮流选通各数码管的公共端,使数码管轮流导通显示。当扫描速度达到一定程度时,人眼就分辨不出来了。尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,认为各数码管是同时发光的。若数码管的位数不大于8位时,只需两个8位I/O口。 1 硬件设计 利用51单片机的P0口输出段码,P2口输出位码,其电路原理图如下所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“DT.DSN”。在器件选择按钮中单击

“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。 51单片机AT89C51 一片 晶体CRYSTAL 12MHz 一只 瓷片电容CAP 22pF 二只 电解电容CAP-ELEC 10uF 一只 电阻RES 10K 一只 电阻RES 4.7K 四只 双列电阻网络Rx8 300R(Ω) 一只 四位七段数码管7SEG-MPX4-CA 一只 三极管PNP 四只 若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER 和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 LED数码管动态显示是一位一位地轮流点亮各位数码管的,因此要考虑每一位点亮的保持时间和间隔时间。保持时间太短,则发光太弱而人眼无法看清;时间太长,则间隔时间也将太长(假设N位,则间隔时间=保持时间X(N-1)),使人眼看到的数字闪烁。在程序中要合理的选择合适的保持时间和间隔时间。而循环次数则正比于显示的变化速度。 LED数码管动态显示的流程如下所示。

at89c51单片机_交通灯控制系统(含源码及仿真图).

模拟交通灯设计报告 题目交通信号灯控制系统 团队研发区第二组 完成时间2011-11-31 贵州民族学院开放实验室

` 目录 一、项目名称 (1) 二、选题背景 (1) 2.1 课题背景 (1) 2.2 交通灯的历史 (1) 三、单片机简介 (2) 3.1 单片机的发展历程 (2) 3.2 单片机的特点: (3) 3.3 AT89C52单片机简介 (4) 四、设计基本要求和步骤 (5) 4.1 基本要求 (5) 4.2 设计步骤 (6) 五、硬件和软件设计 (6) 5.1 硬件电路图 (6) 5.2 程序流程图 (8) 主程序 (8) 运行过程 (9) LED显示程序 (10) T0中断 (11) INT0中断 (11) 5.3 P0、P1口显示状态编码表 (12) 5.4 程序源代码 (12) 5.5 程序运行效果图 (21) 六、心得体会 (22) 七、参考文献.............................................................................. 错误!未定义书签。

模拟交通灯设计报告 一、项目名称 十字路口交通信号灯控制系统 二、选题背景 2.1 课题背景 由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。 2.2 交通灯的历史 1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯--煤气交通信号灯,这是城市街

基于51单片机交通信号灯控制毕业设计

第一章绪论 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。 交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。随着中国加入WTO,我们不但要在经济、文化等各方面与国际接轨,在交通控制方面也应与国际接轨。如果交通控不好道路还是无法保障畅通安全。作为交通控制的重要组成部份单片机。因此,本人选择制作交通灯作为课题加以研究。 我国大中城市交通系统压力沉重。交通管制当以人性化、智能化为目的,做出相应的改善。以此为出发点,本系统采用的单片机控制的交通信号灯。该系统分为单片机主控电路、键盘控制电路和显示电路三部分组成。并在软硬件方面采取一些改进措施,实现了根据十字路口车流量、进行对交通信号灯的智能控制,使交通信号灯现场控制灵活、有效从一定程度上解决了交通路口堵塞车辆停车等待时间不合理等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广阔的应用前景。 1.1 课题背景 随着我国国民经济的迅速发展,城市街道车辆大幅度增长,给城市交通带来巨大压力,交通拥堵已成为影响城市可持续发展的一个全局性问题。而街道各十字路口,又是车辆通行的瓶颈所在。已有的许多建立在精确模型基础上的交通系统控制方案都存在着一定的局限性。研究车辆通行规律,找出提高十字路口车辆通行效率的有效方法,对缓解交通堵塞,提高畅通率具有十分现实的意义。地面道路是一个庞大的网络,交通状况十分复杂,使目前交通控制器的单一时段控制已不能满足现代交通流量的多边性,特别是在交通流量高峰期时,往往会造成交通路口的通过率下降,甚至出现交通混乱现象,城市的交通拥挤问题正逐渐引起人们的注意。道路平面交叉口(简称交叉口)是交通网中通行能力的“隘口”和交通事故的“多发源”,国内外城市的交通事故约有一半发生在交叉口。因此,交叉口这个事故多发源不能不引起人们的高度关注。随着交通技术、

LED点阵心形流水灯单片机设计

河南理工大学 开放实验室单片机设计报 LED点阵心形流水灯礼品 目录 0 前言 (1) 1系统组成与功能 (1) 1.1 系统组成 (1) 1.1.1 AT89C51单片机 (1) 1.1.2 16乘16点阵 (2) 1.2 系统功能 (3) 2系统原理 (3) 2.1系统仿真图 (3) 2.2 实物照片 (4) 3程序流程图 (6) 4程序代码 (7) 5结论 (14) 参考文献 (14)

1 基于单片机控制心形流水灯跟点阵 0 前言 随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。本设计是用单片机和点阵加一个小的流水灯电路,作为玩具挺有趣的。 这次的作品,初衷是希望通过单片机学习,做个生日礼物送给朋友。由于时间紧迫,做的有些仓促,望原谅。 1系统组成与功能 1.1 系统组成 本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。 1.1.1 AT89C51单片机 AT89S51具有如下特点:40个引脚,8k Bytes Flash 片内程序存储器,256 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT ) 电路,片内时钟振荡器。 此外,AT89S52设计和配置了振荡频率可 为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。 引脚图如图1-1所示。 管脚说明 图1-1 A T89C51引脚图

基于单片机的交通信号灯

二○一六~二○一七学年第一学期 电子信息工程系 电子产品策划与设计 报告书 班级: 课程名称: 学生姓名: 学号: 指导教师: 二○一六年十二月

基于单片机的交通信号灯 一、设计要求 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。初始状态为状态1,南北方向绿灯通车,东西方向红灯。经过一段时间(25S )转换状态2,南北方向亮黄灯,延时5S ,东西方向仍然红灯,再转换到状态3,东西方向绿灯通车,南北方向红灯。过一段时间(25S )转换到状态4,东西方向绿灯亮黄等,延时5S ,南北方向仍然红灯。最后循环至南北绿灯,东西红灯。在这些状态下,有时钟倒数计时。 二、电路设计及原理分析 1、本设计由STC82C52最小系统模块,电源供电模块,交通信号灯模块,显示倒计时模块。 2、路口交通指挥系统示意图如下所示:(本设计实物中东西、南北方向各做一个) 黄干3、设计的方案如下: (1)本设计采用单片机89C52作为控制器,通行时间及等待时间使用数码管以倒计时的方式显示,使用单片机P0.2-P0.4口控制东西方向的车辆通行;使用单片机P0.5-P0.7口控制南北方向车辆的通行;用P0.1-P02口控制两位共阴极数码管的选通;用P3.3口作为紧急情况东西南北方向全部红灯。 (2)方案中设计有由人工控制的复位电路。 (3)考虑到紧急情况获交通管制阶段需要路段不通车,本方案设计有东西南北四个方向全为红灯的设计。 综上所诉,该产品的实现需要单片机模块,晶振模块,复位模块,中断信号模块,交通灯模块,倒计时数显模块,电源供电模块。 三、焊接及安装调试过程

基于单片机的心形流水灯毕业设计论文

基于单片机的心形流水灯毕业设计论文 此文档为WORD版可编辑修改

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称: X年X月X日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件. 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software. Key words:micro-computer;light water ;C programming language

单片机控制音乐播放-外文翻译

毕业设计(论文)外文翻译 题目: __ 单片机控制音乐播放_ __ 英文题目: Single chip microcomputer to control the music player 系 : _ 信息工程系_ __ 专业: _ _ __ 电子信息工程___ ___ 班级: ___ _ __ 09电信本________ _ 学号: ___ _____8110109053___ ______ 姓名: ________ 张亚峰 ______ _____ 指导老师: _________王乐平_________ ____ 填表日期 _ __ ___2012.11.16_____ ____

基于51单片机的音乐播放器设计 作者:Bob brown 来源:《SCM》 摘要:本音乐播放器是利用STC89C51单片机结合内部定时系统及数码管显示设计一个简易的微电脑音乐盒。本文分析了基于51单片机的音乐播放器的硬件电路和软件的设计的具体过程包括数据处理子程序的设计、显示子程序的设计最后针对仿真过程遇到的现象进行了具体的分析与说明。 关键词:播放;单片机; STC89C51 随着人们物质生活水平的提高,人们越来越注重精神生活的满足,热衷于在消费中寻求快乐和娱乐体验。音乐作为人类娱乐生活的重要组成元素,一直以来都备受关注。而人类进入工业社会以来,将音乐播放与工业产品结合发展出了一系列的音乐播放产品,并随着技术的革新和消费者需求的变化而不断更新,为人类的娱乐生活提供了时尚便利的道具。前两年造型时尚、小巧便携、可免费下载歌曲的MP3播放器的流行更是使音乐播放产品空前繁荣。但是在繁荣过后,主流音乐播放产品MP3播放器在造型和系统的设计上似乎走进了一个瓶颈,新产品和旧产品比起来只是固件上的更新和硬件的更迭,而没有内容和实质的跳跃,因此在同样具有便携性特点和音乐播放功能的音乐手机出现的时候,MP3原有的功能优势不再,市场继而被迅速挤压,地位收到空前的威胁。纵观音乐播放产品的发展史,每一次音乐播放产品的革新都是概念的突破或理念的创新的结果。如从收音机到唱片机实现了收听方式从“被动收听”到“自主选择”的变革,从唱片机到Walkman实现了固定到便携的飞跃。因此,如何在理念上、概念上进行创新和突破,找到音乐播放产品的新发展方向,适应消费者的新需求,是目前产品设计师急需解决的问题。本文首先简单回顾了音乐播放产品发展史,并分析了目前音乐播放产品现状,提出寻找新概念突破点的重要性;其次,通过对当前经济环境和社会群体环境的分析,以及目前音乐产业的发展现状和趋势的分析,从中总结出当前消费者的消费需求趋势;最后,根据总结的消费需求和市场现有的一些音乐播放产品的引导,提出未来音乐播放产品的发展方向以及相应的一些概念设想。 STC89C51单片机设计的一个音乐播放器通过单片机音乐播放器系统设计和研究,对于切实掌握单片机相关知识具有重要的理论和实际意义。这次课程设计的音乐播放器是软件和硬件的结合,不同音符表现形式就是不同频率地声音。通STC89C51过单片机产生不同的频率的脉冲信号,通过放大电路,由蜂鸣器放出,就产生了美妙和谐优美动听的乐曲。根据节拍给出该音阶持续的时间,最终实现播放简单歌曲的功能。为人们生活的改善提供了可靠,方面,廉价的方法。 单片机STC89C51作为硬件核心控制部件,结合三极管作为放大器,数码管构成典型的显示电路,按键作为输入部分以及其他外围设备组成的音乐播放系统。根据音乐演奏控制器所要实现的显示与选曲及音乐产生功能原理,系统包括演奏扬声器、选曲、播放和显示几部

相关主题
文本预览
相关文档 最新文档