单片机课程设计电子音调发生器

单片机课程设计电子音调发生器
单片机课程设计电子音调发生器

单片机课程设计

实验报告

电子音调发生器

姓名:

日期: 2009年6月29日星期一

目录

(一)实验目的 (1)

(二)设计任务及要求 (2)

(三)工作原理及设计思路 (2)

(四)实现功能设计 (2)

(五)软件设计 (3)

(六)电路设计 (35)

(七)调试 (37)

(八)实验体会 (38)

(一)实验目的

1.了解计算机发声原理。

2.熟悉定时器和键盘扫描电路的工作原理及编程方法。

(二)设计任务及要求

利用实验平台上的开关k0-k7和蜂鸣器设计电子音调发生器,要求:

1.利用实验平台上开关k0-k7进行音调选择,即拨动不同的开关产生不同的音调,依次拨动K0~K7,蜂鸣器发出1234567i八个音调。

2.编写2支歌曲,并可进行选择播放。

(三)工作原理及设计思路

音节由不同频率的方波产生,音节与频率的关系如表1所示。要产生音频方波,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用计时器计时此半周期时间,每当计时到后就将输出方波的I/0反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。在ZKS-03实验仪上,产生方波的I/O脚选用P1.7,通过跳线选择器JP1将单片机的P1.7与蜂鸣器的驱动电路相连。这样P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。另外,音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍,

每个音节相应的定时器初值X可按下法计算:

(1/2)*(1/f)=(12/fose)*(216-x)

即 x=216-(fose/24f)

其中f:音调频率,当晶振fose=11.0592MHz时,音节“1”相应的定时器初值为x,则可得x=63777D=F921H 其它的可同样求得。

(四)实现功能设计

实现两个主要功能:电子琴与音乐播放;一个辅助功能:在液晶上显示相关

信息。

1、电子琴:4*4的矩阵16个按键,按键0实现两个功能的切换,其余按键分别发出音调低音5、6、7,中音1、

2、

3、

4、

5、

6、7,高音1、2、3、4、5。发音的同时在液晶显示屏上显示出对应的音调。

2、音乐播放:按键0实现两个功能的切换,按键1实现播放类型选择(单曲循环播放、所有循环播放),其余按键分别对应一首歌。目前已经有9首歌。

播放的同时,在液晶上显示出歌名。

(五)软件设计

根据要实现的功能,流程图如下:

#include

#include

#define nop _nop_()

#define uchar unsigned char

#define uint unsigned int

#define PAI_BASE 15

#define MUSIC_NUM 9

#define SCAN_CYCLE 500

#define BEEP P3_3

/***************液晶显示相关变量***********************************/ sbit LCD_RS = P2^7;

sbit LCD_RW = P2^6;

sbit LCD_EN = P2^5;

static uchar th0_f; //在中断中装载的 T0 的值高 8 位

static uchar tl0_f; //在中断中装载的 T0 的值低 8 位

static timebuffer,Record_counter,Record_flag=0;

static uchar key2,key=16,scounter=0,Record_time;

static uchar s_musicCounter=0x00,s_tableCounter;

bit Rplay_flag=0;

bit K0_flag=0;

bit Music_flag0;

bit Music_flag=0;

bit Freq_flag=0;

bit disptime_flag=0;

bit musicAutoFlag=0;

//sbit BEEP = P3_3; //喇叭输出脚

//延时子程序1

void delay(int ms)

{

int i;

while(ms--)

{

for(i = 0; i< 250; i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

/*******************************************************************/

/* */

/*检查LCD忙状态

*/

/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。

*/

/* */

/*******************************************************************/

bit lcd_busy()

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

_nop_();

_nop_();

_nop_();

_nop_();

result = (bit)(P0&0x80);

LCD_EN = 0;

return result;

}

/*******************************************************************/

/* */

/*写指令数据到LCD */

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

*/

/* */

/*******************************************************************/

void lcd_wcmd(uchar cmd)

{

while(lcd_busy());

LCD_RS = 0;

LCD_RW = 0;

LCD_EN = 0;

_nop_();

_nop_();

P0 = cmd;

_nop_();

_nop_();

_nop_();

_nop_();

LCD_EN = 1;

_nop_();

_nop_();

_nop_();

_nop_();

LCD_EN = 0;

}

/*******************************************************************/

/* */

/*写显示数据到LCD */

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

*/

/* */

/*******************************************************************/

void lcd_wdat(uchar dat)

{

while(lcd_busy());

LCD_RS = 1;

LCD_RW = 0;

LCD_EN = 0;

P0 = dat;

_nop_();

_nop_();

_nop_();

LCD_EN = 1;

_nop_();

_nop_();

_nop_();

_nop_();

LCD_EN = 0;

}

/*******************************************************************/

/* */

/* 设定显示位置

*/

/* */

/*******************************************************************/

void lcd_pos(uchar pos)

{

lcd_wcmd(pos|0x80); //数据指针=80+地址变量

}

/*******************************************************************/

/* */

/* LCD初始化设定

*/

/* */

/*******************************************************************/

void lcd_init()

{

delay(15); //等待LCD电源稳定

lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据

delay(5);

lcd_wcmd(0x38);

delay(5);

lcd_wcmd(0x38);

lcd_wcmd(0x0c); //显示开,关光标

delay(5);

lcd_wcmd(0x06); //移动光标

delay(5);

lcd_wcmd(0x01); //清除LCD的显示内容

delay(5);

}

/*******************************************************************/

/* */

/* 清屏子程序

*/

/* */

/*******************************************************************/

void lcd_clr()

{

lcd_wcmd(0x01); //清除LCD的显示内容

delay(5);

}

//静态显示字符串

void lcd_string(char *strpoint) /*在当前显示位置显示LCD 字符串*/

{ register i=0;

while(strpoint[i]!=0){

lcd_wdat(strpoint[i]);

i++;

}

}

/********************************************************************

*****/

/*Constant Tables*/

const char code c_music1[]={0x82,0x01,0x81,0x94,0x84, /*生

日快乐歌*/

0xb4,0xa4,0x04,

0x82,0x01,0x81,0x94,0x84,

0xc4,0xb4,0x04,

0x82,0x01,0x81,0xf4,0xd4,

0xb4,0xa4,0x94,

0xe2,0x01,0xe1,0xd4,0xb4,

0xc4,0xb4,0x04,

0x00};

const char code c_music2[]={0x62, 0x52, /*两只蝴蝶*/

0x64, 0x64, 0x02, 0x52, 0x62, 0x52,

0x44, 0x44, 0x04, 0x22, 0x42,

0x54, 0x52, 0x62, 0x52, 0x42, 0x22, 0x42, 0x14, 0x14, 0x04, 0x62, 0x52,

0x64, 0x64, 0x02, 0x52, 0x62, 0x52,

0x44, 0x44, 0x04, 0x22, 0x42,

0x54, 0x52, 0x62, 0x52, 0x42, 0x22, 0x42, 0x54, 0x54, 0x04, 0x62, 0x82,

0x84, 0x84, 0x02, 0x82, 0x92, 0x82,

0x64, 0x64, 0x04, 0x52, 0x52,

0x54, 0x52, 0x62, 0x52, 0x42, 0x22, 0x91, 0x41,

0x42, 0x42, 0x44, 0x44, 0x44,

0x02, 0x82, 0x82, 0x92,

0xb2, 0xa2, 0xa2, 0x92, 0x64, 0x52, 0x62, 0x64, 0x64, 0x02, 0x62, 0x62, 0x82,

0x94, 0x94, 0x02, 0x22, 0x62, 0x52,

0x54, 0x54, 0x04, 0x62, 0x82,

0x82, 0x62, 0x84, 0x02, 0xb2, 0xb2, 0xa2, 0x92, 0xa2, 0x64, 0x02, 0x92, 0x92, 0xa2, 0x92, 0x82, 0x62, 0x52, 0x52, 0x62, 0x52, 0x62,

0x84, 0x84, 0x02, 0x82, 0x82, 0x92,

0x92, 0x82, 0x62, 0x52, 0x52, 0x12, 0x12, 0x22,

0x44, 0x44, 0x44, 0x44,

0x00};

const char code c_music3[]={0x04, 0x42, 0x41, 0x51,

0x62, 0x62, 0x52, 0x41, 0x51, 0x54, 0x02, 0x41, 0x51, /*老鼠爱大米*/

0x62, 0x62, 0x52, 0x42, 0x44, 0x02, 0x11, 0x21,

0x14, 0x11, 0x11, 0x21, 0x41, 0x44, 0x02, 0x42,

0x42, 0x42, 0x42, 0x41, 0x51, 0x54, 0x42,

0x51, 0x61,

0x62, 0x62, 0x82, 0x91, 0x51, 0x54, 0x62, 0x51, 0x41,

0x42, 0x42, 0x52, 0x61, 0x81, 0x84, 0x02, 0x81, 0x81,

0x92, 0x41, 0x41, 0x42, 0x61, 0x01, 0x52, 0x42, 0x42, 0x51, 0x41,

0x44, 0x44, 0x44, 0x62, 0x61, 0x81,

0x82, 0x81, 0x81, 0x82, 0x81, 0x91, 0x94, 0x62, 0x52,

0x42, 0x42, 0x42, 0x51, 0x61, 0x64, 0x02, 0x61, 0x81,

0x82, 0x82, 0x82, 0x91, 0xb1, 0xb2, 0x92, 0x82, 0x62,

0x52, 0x42, 0x42, 0x22, 0x54, 0x02, 0x61, 0x81,

0x82, 0x82, 0x81, 0x92, 0x81, 0x94, 0x62, 0x52, 0x42, 0x42, 0x42, 0x51, 0x61, 0x64, 0x02, 0x61, 0x81,

0x82, 0x82, 0x82, 0x91, 0xb1, 0xb2, 0x92, 0x82, 0x61, 0x51,

0x52, 0x52, 0x54, 0x54, 0x41, 0x62, 0x71, 0x62, 0x52, 0x54, 0x54, 0x62, 0x51, 0x41, 0x44, 0x62, 0x51, 0x41, 0x44, 0x62, 0x52, 0x62, 0x42, 0x62, 0x91, 0x81, 0x84, 0x02, 0x61, 0x81,

0x92, 0x91, 0x81, 0x82, 0x91, 0x81, 0x84, 0x61, 0x51, 0x42,

0x52, 0x51, 0x61, 0x52, 0x41, 0x51, 0x41, 0x53, 0x62, 0x51, 0x41,

0x44, 0x62, 0x51, 0x41, 0x44, 0x62, 0x52, 0x62, 0x42, 0x61, 0x92, 0x81, 0x84, 0x02, 0x61, 0x81,

0x92, 0x92, 0xb2, 0x81, 0x91, 0x82, 0x01, 0x81, 0x61, 0x51, 0x41,

0x54, 0x51, 0x41, 0x51, 0x61, 0x54, 0x62, 0x62,

0x54, 0x02, 0x42, 0x44, 0x44,

0x00};

const char code c_music4[]={0x04, 0x02, 0x41, 0x51, 0x62, 0x61, 0x61, 0x62, 0x52, /*梦醒时分*/

0x62, 0x81, 0x61, 0x62, 0x61, 0x81, 0x92, 0x92, 0x92, 0xa2,

0x82, 0x62, 0x62, 0x62, 0x61, 0x51, 0x42, 0x41, 0x41, 0x42, 0x22,

0x62, 0x81, 0x41, 0x44, 0x51, 0x52, 0x01, 0x52, 0x42,

0x81, 0x61, 0x52, 0x52, 0x41, 0x51, 0x62, 0x61, 0x61, 0x62, 0x52,

0x62, 0x81, 0x61, 0x62, 0x61, 0x81, 0x92, 0x91, 0x91, 0x92, 0xa2,

0x82, 0x62, 0x61, 0x81, 0x81, 0x81, 0x92, 0xb2, 0xb2, 0x92,

0x72, 0x52, 0x52, 0x81, 0x81, 0x92, 0xb2, 0xb2, 0x92,

0xb2, 0xc2, 0xc4, 0xc4, 0x01, 0x81, 0x81, 0x81,

0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xc1, 0xc1, 0xc2, 0xb1, 0xa1,

0xb2, 0xb2, 0xb2, 0xc2, 0x62, 0x82, 0x82, 0x81, 0x81,

0x92, 0xb1, 0xb1, 0xb2, 0xb2, 0xc2, 0x91, 0xb1, 0xb2, 0xb1, 0xb1,

0xc2, 0xc1, 0xc1, 0xc2, 0xb2, 0xd2, 0xc1, 0x81, 0x81, 0x81, 0x81, 0x81,

0xd2, 0xd2, 0xd2, 0xf2, 0xd2, 0xc1, 0xc1, 0xc2, 0xb1, 0xa1,

0xb2, 0xb2, 0xb2, 0xc2, 0x62, 0x82, 0x82, 0x81, 0x81,

0x92, 0xb1, 0xb1, 0xb2, 0xb1, 0xb1, 0xc2, 0x91, 0xb1, 0xb2, 0xb1, 0xb1,

0xc2, 0xc1, 0xc1, 0xc2, 0xb2, 0xd4, 0xc2, 0x01, 0xb1,

0xb4, 0xb4, 0xb4, 0xb4,

0x00};

const char code c_music5[]={0x54, 0x64, 0x64, /*大长今*/ 0x64, 0x02, 0x52, 0x44,

0x24, 0x44, 0x44,

0x51, 0x43, 0x44, 0x44,

0x54, 0x64, 0x64,

0x64, 0x02, 0x82, 0x64,

0x64, 0x54, 0x64,

0x64, 0x64, 0x64,

0x84, 0x94, 0x94,

0x94, 0x84, 0x64,

0x64, 0x84, 0x94,

0x81, 0x91, 0x82, 0x84, 0x84,

0x54, 0x64, 0x64,

0x54, 0x02, 0x62, 0x64,

0x54, 0x64, 0x24,

0x41, 0x23, 0x94, 0x94,

0x24, 0x24, 0x24,

0x54, 0x64, 0x64,

0x64, 0x02, 0x52, 0x44,

0x24, 0x44, 0x44,

0x51, 0x43, 0x44, 0x44,

0x54, 0x64, 0x64,

0x64, 0x02, 0x82, 0x64,

0x64, 0x54, 0x64,

0x64, 0x64, 0x64,

0x84, 0x94, 0x94,

0x94, 0x02, 0x82, 0x64,

0x64, 0x84, 0x94,

0x84, 0x84, 0x84,

0x54, 0x64, 0x64,

0x54, 0x02, 0x62, 0x64,

0x54, 0x64, 0x24,

0x41, 0x23, 0x24, 0x24,

0x24, 0x24, 0x24,

0x54, 0x02, 0x42, 0x24,

0x54, 0x02, 0x42, 0x24,

0x54, 0x64, 0x44,

0x54, 0x02, 0x62, 0x84,

0x94, 0x02, 0x82, 0x64,

0x54, 0x02, 0x42, 0x24,

0x24, 0x14, 0x24,

0x41, 0x23, 0x24, 0x24,

0x24, 0x24, 0x24,

0x14, 0x14, 0x14,

0x14, 0x02, 0x22, 0x42, 0x52, 0x62, 0x52, 0x44, 0x02, 0x22, 0x44, 0x44, 0x54,

0x64, 0x64, 0x64,

0x64, 0x64, 0x84,

0x94, 0x02, 0xb2, 0x94,

0x84, 0x84, 0x84,

0x84, 0x61, 0x81, 0x92, 0x04, 0x92, 0x82, 0x64, 0x02, 0x52, 0x64, 0x02, 0x52, 0x62, 0x52, 0x44, 0x44, 0x44,

0x41, 0x23, 0x24, 0x44,

0x54, 0x54, 0x54,

0x54, 0x64, 0x64,

0x44, 0x41, 0x23, 0x24,

0x24, 0x24, 0x24,

0x00};

const char code c_music6[]={0x24, 0x42, 0x52, 0x64, 0x62, 0x92, /*漫步人生路*/

0x84, 0x62, 0x52, 0x64, 0x02, 0x62,

0x72, 0x62, 0x62, 0x52, 0x52, 0x42, 0x41, 0x31, 0x22,

0x44, 0x02, 0x52, 0x34, 0x34,

0x24, 0x42, 0x52, 0x64, 0x62, 0x92,

0xa4, 0x82, 0x62, 0x64, 0x02, 0x62,

0x72, 0x62, 0x52, 0x42, 0x32, 0x42, 0x52, 0x62,

0x42, 0x32, 0x22, 0x12, 0x24, 0x24,

0x42, 0x32, 0x42, 0x52, 0x64, 0x52, 0x62,

0x74, 0x74, 0x72, 0x81, 0x71, 0x62, 0x52,

0x64, 0x74, 0x84, 0x02, 0x62,

0x94, 0x92, 0x82, 0x94, 0x92, 0xb2,

0x92, 0x82, 0x82, 0x92, 0x64, 0x52, 0x42, 0x54, 0x52, 0x42, 0x54, 0x42, 0x42, 0x82, 0x62, 0x62, 0x52, 0x42, 0x34, 0x62, 0x62, 0x94, 0x92, 0x82, 0x94, 0x92, 0xb2,

0x92, 0x82, 0x82, 0x92, 0x64, 0x52, 0x42, 0x54, 0x42, 0x82, 0x64, 0x52, 0x42,

0x52, 0x61, 0x51, 0x42, 0x32, 0x24, 0x24, 0x00};

const char code c_music7[]={0x02, 0x12, 0x12, 0x22, /*最浪漫的事*/

0x44, 0x42, 0x42, 0x42, 0x22, 0x22, 0x62, 0x64, 0x64, 0x02, 0x12, 0x24,

0x42, 0x42, 0x42, 0x42, 0x44, 0x62, 0x82, 0x84, 0x84, 0x84, 0x02, 0x82,

0x92, 0x82, 0x92, 0x82, 0x94, 0x82, 0x51, 0x61,

0x62, 0x51, 0x41, 0x44, 0x02, 0x42, 0x42, 0x22,

0x44, 0x42, 0x22, 0x42, 0x64, 0x52,

0x54, 0x54, 0x54, 0x54,

0x32, 0x12, 0x22, 0x42,

0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x22, 0x52,

0x52, 0x62, 0x64, 0x62, 0x12, 0x22, 0x42, 0x42, 0x42, 0x42, 0x42, 0x44, 0x62, 0x82, 0x84, 0x84, 0x84, 0x82, 0x82,

0x92, 0x82, 0x92, 0x82, 0x94, 0x92, 0x82,

0x52, 0x62, 0x52, 0x44, 0x22, 0x22, 0x42,

0x14, 0x62, 0x52, 0x44, 0x22, 0x22,

0x41, 0x51, 0x42, 0x44, 0x44, 0x44,

0x82, 0x92, 0xb2,

0x94, 0x92, 0x82, 0x92, 0x82, 0x62, 0x82,

0x84, 0x84, 0x02, 0x82, 0x92, 0xb2,

0x94, 0x92, 0x82, 0x92, 0x82, 0x92, 0x42,

0x44, 0x44, 0x02, 0x42, 0x52, 0x62,

0x52, 0x52, 0x52, 0x42, 0x52, 0x42, 0x22, 0x62,

0x62, 0x52, 0x54, 0x02, 0x82, 0x92, 0x62,

0x84, 0x82, 0x62, 0x82, 0x62, 0x64,

0x92, 0x82, 0x92, 0x82, 0x62, 0x82, 0x81,

0x92, 0xb1,

0x94, 0x92, 0x82, 0x92, 0x82, 0x62, 0x82,

0x84, 0x84, 0x02, 0x82, 0x92, 0xb2,

0x94, 0x92, 0x82, 0x92, 0x82, 0x92, 0x42, 0x44, 0x44, 0x02, 0x42, 0x52, 0x62,

0x74, 0x72, 0x82, 0x92, 0x92, 0x82, 0x92,

0x92, 0xb2, 0x92, 0x92, 0x92, 0xb2, 0x92,

0x82,

0x84, 0x84, 0x82, 0x42, 0x92, 0x82,

0x84, 0x84, 0x82, 0x92, 0xb2, 0x01, 0x61,

0x52, 0x61, 0x51, 0x44, 0x44, 0x44,

0x00};

const char code c_music8[]={0xb2, 0x41, 0x51, 0x62, 0x81, 0x91, 0x84, 0x84, /*1000年以后*/

0x72, 0x61, 0x41, 0x42, 0x61, 0x51, 0x54, 0x54,

0xb2, 0x41, 0x51, 0x62, 0x92, 0xa1, 0x91,

0x82, 0x82, 0x61, 0x91,

0x94, 0x94, 0xa1, 0xa1, 0xa1, 0xb1, 0xc1,

0xb1, 0xa2,

0xb2, 0xa1, 0xb1, 0xb1, 0xd2, 0x01, 0xa2, 0x91, 0xa1, 0xa1, 0x81, 0x82,

0x91, 0x91, 0xa1, 0xb1, 0xc1, 0xb1, 0xc1,

0xe1, 0xd1, 0xc1, 0xc1, 0xc1, 0xc2, 0xc1, 0xb1,

0xb2, 0xa1, 0xb1, 0xb1, 0xd2, 0x01, 0xa2,

0x91, 0xa1, 0xa1, 0x81, 0x82,

0x92, 0xb4, 0x02, 0xb1, 0xb1, 0xb1, 0xc1,

0xd2, 0xc1, 0xb1,

0xb2, 0xc2, 0xc4, 0x02, 0xa1, 0xb1, 0xb1,

0xc2, 0x01,

0xd2, 0xc1, 0xb1, 0xb1, 0x82, 0x01, 0xc4,

0x02, 0xd1, 0xc1,

0xb2, 0xa1, 0x91, 0x92, 0x62, 0xa4, 0x02, 0xb1, 0xa1,

0x92, 0xa1, 0xb1, 0xb1, 0xc2, 0x01, 0x82, 0xc1, 0xd1, 0xd2, 0x01, 0xd1,

0xe2, 0xd2, 0xb1, 0xc2, 0xc1, 0xc2, 0x01, 0xa1, 0xb1, 0xc2, 0x01,

0xd2, 0xc1, 0xb1, 0xb1, 0x82, 0x01, 0xc4, 0xc1, 0xc1, 0xd1, 0xc1,

0xb2, 0xa2, 0x91, 0xc2, 0x01, 0xa4, 0x02, 0xb1, 0xa1,

0x92, 0x81, 0x91, 0x91, 0xb1, 0x82, 0x82, 0xc1, 0xb1, 0xb2, 0xd1, 0xd1,

0xe1, 0xd1, 0xc4, 0xb1, 0xc1, 0xd2, 0xc1, 0xb1, 0xd2, 0xc1, 0x81,

0x82, 0xb2, 0xb4, 0xb4, 0xb4,

0x00};

const char code c_music9[]={0x02, 0x11, 0x11, 0x62, 0x52, 0x52, 0x41, 0x61, /*一辈子的孤单*/

0x62, 0x41, 0x51, 0x54, 0x54, 0x04,

0x02, 0x11, 0x11, 0x61, 0x52, 0x51, 0x52, 0x42,

0x52, 0x62, 0x64, 0x64, 0x04,

0x02, 0x11, 0x11, 0x62, 0x52, 0x52, 0x41, 0x61,

0x62, 0x41, 0x51, 0x54, 0x54, 0x04,

0x02, 0x51, 0x41, 0x62, 0x52, 0x42, 0x52, 0x42, 0x42, 0x44, 0x44, 0x44,

0x04, 0x62, 0x52, 0x52, 0x42,

0x42, 0x52, 0x54, 0x54, 0x54,

0x04, 0x51, 0x63, 0x54, 0x44,

0x41, 0x11, 0x21, 0x11, 0x14, 0x14, 0x14, 0x04, 0x62, 0x52, 0x52, 0x42,

0x42, 0x52, 0x54, 0x54, 0x54,

0x02, 0x12, 0x62, 0x54, 0x42,

0x44, 0x02, 0x62, 0x64, 0x64,

0x02, 0x12, 0x62, 0x84, 0x92,

0x62, 0x52, 0x54, 0x54, 0x54,

0x02, 0x12, 0x62, 0x54, 0x42,

0x54, 0x02, 0x62, 0x64, 0x64,

0x02, 0x12, 0x62, 0x52, 0x52, 0x42,

0x51, 0x62, 0x51, 0x54, 0x54, 0x04,

0x02, 0x51, 0x41, 0x62, 0x52, 0x42, 0x52, 0x42, 0x42, 0x44, 0x44, 0x44,

数字音节发生器

目录 第一章设计思路--------------------------------------------------- 1 1.1设计原理----------------------------------------------------- 1 1.2各模块的设计------------------------------------------------- 1 1.2.1 音调发生模块------------------------------------------- 1 1.2.2数控分频模块------------------------------------------- 3 1.2.3 7段显示译码器----------------------------------------- 3 1.2.4 ROM的创建--------------------------------------------- 4 1.2.5 CNT138T计数器模块------------------------------------- 5 1.2.6顶层设计----------------------------------------------- 6第二章系统仿真--------------------------------------------------- 8 2.1音调发生模块仿真结果----------------------------------------- 8 2.2数控分频模块仿真结果----------------------------------------- 8 2.3数码管模块仿真结果------------------------------------------- 9 2.4计数器模块仿真结果------------------------------------------- 9 2.5整个系统仿真结果--------------------------------------------- 9第章心得体会--------------------------------------------------- 10

基于单片机的简易电子琴设计课程设计

基于单片机的简易电子琴设计课程设计

湖南文理学院 课程设计报告 课程名称:单片机课程设计 专业班级:自动化10102班17号学生姓名:肖葵 指导教师:王南兰 完成时间:2013年 6 月13 日报告成绩: 湖南文理学院制

摘要 随着社会的发展进步,音乐逐渐成为人们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。人们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。 关键词:AT89S51;音色节拍器;电子琴

ABSTRACT With the development of our society, music has become an important part of life. There’s a saying goes that people who likes music cannot be an evil. During our life, we often enjoy all kinds of music in the world to baptize our spirits. This thesis has designed a simple microcontroller-based electronic key board. We are curious about the foundation of electronic keyboard, such as the choice of timber, the control of volume, the metrononme and automatic playback. The keyboard is a product of modern electronic technology combined with music, it is a new type of keyboard instruments. And it plays an important role in modern music. Single chip has a powerful control functions and flexible programming characteristics. It has converged with modern people's lives, become an irreplaceable part. The main content is AT89S51 control of the core components, Design of an electronic organ, single chip as a host to the core, with the keyboard, speakers and other core modules main control module, in the main control module has 16 keys and speakers. Stability of the system, its advantages are simple hardware circuits, software functions, control system reliability, high cost performance and have certain practical and reference value. Key words : single chip MCU keyboard speaker electronic organ

武汉工程大学单片机多路抢答器的课程设计资料

电气信息学院 单片机技术课程设计报告 课题名称多路抢答器的设计 专业班级10 电气4班 学号2010500238 __________________ 学生姓名________ 杨彬____________ 扌旨导教师______ 易先军___________ 评分_____________________________

2013年6月17日至6月21日

课程设计量化评分标准 指导老师评语:

答辩记录 1、例举设计过程中遇到的问题及其解决方法(至少两例)。答:(1)问题说明:对于采用独立式按键设计还是行列式按键设计有所困扰。 解决方法:行列式键盘是采用X*丫型按键来实现I/O的扩展的,这种按键的排 列方式可以有效的提高I/O 的利用率。 (2)问题说明:Proteus 软件中,从元器件库中调出的元件有的不能仿真。 解决方法:Proteus 里面又不是器件是没有仿真模型的,只是个原理图 符号,故必须选含仿真模型的器件。 2、教师现场提的问题记录在此(不少于2个问题)。 (1)Proteus 软件的主要功能是什么? 答:Proteus 软件可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。 (2)如果有多个按键几乎同时按下,你是如何来保证最先按下的按钮抢答成功的? 答:可以通过锁存器达到目的。当有第一个按键被按下时,锁存器将迅速锁存优先抢答者的按键状态,并能同时禁止其他选手按键,使其按键操作无效。

现如今生活娱乐的多元化已是现代的生活方式之一。知识、娱乐比赛更是流行于各行各业,而其中又以抢答形式为主。在抢答过程中,为了知道哪一组或 哪一位选手优先获得抢答权,必须要设计一个系统来完成这个任务,避免人的主观意识判断错误。在抢答中,只靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差甚小,也可分辨出哪组优先答题。此次设计使用AT89C51单片机为核心控制元件,设计一个简易的抢答器,与数码管、报警器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断电路等。设计的抢答器具有实时显示抢答选手的号码和抢答时间的特点,而复位电路,则使其能再开始新的一轮答题和比赛,与此同时还利用汇编语言编程,使其能够实现一些基本的功能。 关键词:AT89C51单片机;抢答器;数码管;报警器 I

单片机课程设计报告书----电子秤

一、设计任务及要求: 设计任务: 完成一个简单的使用数字电子秤的硬件与软件部分的设计。 设计要求: 1.利用单片机实现对所设计的电子秤的各项功能的控制。 2.电子秤能够LCD液晶显示出商品的名称、价格,重量、总价等信息。 3.电子秤具有储存几种简单商品价格的功能。 4.电子秤的测量范围要求达到5KG,测量精度要求达到0.001。 5.电子秤能够自动完成商品的价格计算。 指导教师签名: 2010 年6月16 日二、指导教师评语: 指导教师签名: 2010 年7月3日三、成绩 验收盖章 2010 年7 月日

基于单片机的实用电子秤的设计 1 设计目的 单片机以其功能强,体积小,功耗低,易开发等很多优势被广泛应用。本 次数字电子秤的设计就是需要通过选择合适的单片机来进行主控,再结合A/D 转换、键盘、液晶显示、复位电路和蜂鸣器报警驱动电路的知识,同时在软件 的设计过程中用到键盘扫描、液晶显示驱动、模数转换程序及汉字库的的设计, 做到对我们所学数电、模电、单片机等知识的综合应用,最终实现所设计数字 电子秤的各项功能,达到“巩固知识,培养技能,学而用之”的实践目的。通过这次课程设计,不但要提高我们在工作中的学习能力、探究能力、应用能力和动 手能力,还要历练我们不畏艰难、不懂便学、有漏必补的认真严谨的工作态度,强化我们的社会适应力和社会竞争力,为走向社会提前试水,完善自我。 2 设计的主要内容及要求 本设计主要完成一个简单实用数字电子秤的硬件电路部分和软件部分的设计。硬件部分包括数据采集、最小系统板、人机交互界面三大部分。其中,数 据采集部分由压力传感器和A/D 转换部分组成;人机界面部分为键盘输入、 液晶显示。软件部分应用单片机 C 语言实现了本设计的全部控制功能。本设 计的数字电子秤要求能够显示商品的名称、价格、总量、总价等;能够自动完 成商品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能, 一旦重量超出了自身重量的测量的范围,发出警报;同时对数字电子秤的测量 范围要达到5KG,测量精度要求达到0.001。 3 整体设计方案 整个数字电子秤电路由压力传感电路(ADC0832采样)、模数转换系统、单 片机主控制电路、LM4229显示电路、蜂鸣器报警电路和4*4键盘电路6 个部

电子音乐发生器报告-单片机设计实验报告

单片机设计实验报告 题目:电子音乐发生器 班级: 班内序号: 实验组号: 学生姓名: 指导教师:

电子音乐发生器

实验摘要 此次本组制作的基于pic单片机的电子音乐发生器是具有液晶显示屏提示的音乐简单演奏、播放等功能的演示作品。在目前很多简单音乐播放器件(如贺卡、礼品中的简单音乐单元)中,这样的简单电路和rom编程原理都是可以通用的,而且电路搭接、布局简单,十分适合电路原理学习、汇编语言编程零基础训练以及简单礼品核心部分制作参考。 整个系统中,微控制器采用了Microchip公司的PIC16F877,软件设计中涉及PORTB\PORTC\PORTD\PORTE用作普通数字I/O脚功能。本实验用单片机PORTB\D接收来自键盘输入的指令信息,由此确定lcd液晶屏幕显示以及喇叭播放内容,再通过PORTC\D\E输出声音或字幕信息。 A b s t r a c t In this experiment,our group made this pic microcontroller based electronic music generator is a simple LCD prompts music playing, playback and other functions to the presentation. In the current lot of simple music playback devices (such as greeting cards, gift of simple musical elements), such a simple circuit and rom programming principles can all be generic, and the circuit lap, the layout is simple, very suitable circuit schematic learn assembly language zero-based training program and a simple gift core part of the production reference. Throughout the system, the microcontroller uses Microchip's PIC16F877, software design involves PORTB \ PORTC \ PORTD \ PORTE used as a normal digital I / O pin functions. The experiment with the microcontroller PORTB \ D receives commands from the keyboard input information, thereby determining the LCD screen display and speakers to play the content, and then through PORTC \ D \ E output sound or subtitle information. 关键字 单片机——microcontroller 芯片——CMOS chip lcd液晶显示屏——LCD screen 输入输出端口——I / O pin 一.实验论证与比较 电子音乐发生器采用以Microchip公司的PIC16F877芯片为核心的简单控制系统,外部

单片机电子琴音乐盒课程设计

课程设计报告 设计题目:单片机多功能音乐盒设计 【摘要】本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来暂停歌曲,另一个用来切换歌曲本音乐盒共有四首歌曲,还有4*4矩阵键盘电子琴弹奏功能,播放歌曲时,蜂鸣器发出音调,矩阵键盘无扫描信号,不动作。当按下暂停歌曲键时,可继续弹奏电子琴。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。 设计作者:吴文豪 专业班级/学号:10应电三班 1006020144 合作者1:专业班级/学号: 合作者2:专业班级/学号: 指导教师:王明文 设计时间:2012年5月12日———2012年6月3日

目录 引言 (1) 1.设计任务及要求 (2) 1.1设计任务 (2) 1.2设计要求 (2) 1. 3研究内容 (2) 2.系统总体设计 (3) 2.1系统结构框图设计及说明 (3) 3.软、硬件设计…………………………………………………………….. 3.1 系统硬件设计………………………………………………………… 3.1.1系统硬件原理图及工作原理说明………………………… 3.1.2单元电路设计原理与元件参数选择……………………… 3. 2系统软件设计…………………………………………………….. 3. 2. 1软件系统总流程图及设计思路说明…………………... 3. 2. 2软件各功能模块的流程图设计及思路说明…………... 4.安装与调试………………………………………………………………. 4.1安装调试过程……………………………………………………… 4.2调试中遇到的问题…………………………………………………5.结论………………………………………………………………………. 6.使用仪器设备清单………………………………………………………. 7.收获、体会和建议………………………………………………………. 8.参考文献…………………………………………………………………. 9.附录………………………………………………………………………

(完整版)基于51单片机的4人抢答器课程设计

基于51单片机的4人抢答器设计 设计要求: 以单片机为核心,设计一个4位竞赛抢答器:同时供4名选手或4个代表队比赛,分别用4个按钮S0~S3表示。 设置一个系统清除和抢答控制开关S,开关由主持人控制。 抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。 当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 工作原理: 通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。

#include #define uchar unsigned char #define uint unsigned int uchar num; //定义中断变量,num计满20表示1秒时间到uchar num1; //十秒倒计时显示初始值 uchar flag1,flag2; //清零键及开始键按下标志位 uchar flag3,flag4=0; //定义键盘按下标志位 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //数码管编码

单片机电子秤设计报告

基于单片机的电子秤 单片机电子秤设计报告 秤是一种在实际工作和生活中经常用到的测量器具。随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。 和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片 机设计实现,具有精度高、功能强等特点。本课题设计的电子秤具有基本称重、键盘输入、计算价格、显示、超重报警功能。该电子秤的测量范围为 0-10Kg,测量精度达到 5g,有高精度,低成本,易携带的特点。电子秤采用液晶显示汉字和测量记过,比传统秤具有更高的准确性和直观性。另外,该电子秤电路简单,使用寿命长,应用范围广,可以应用于商场、超市、家庭等场所,成为人们日常生活中不可少的必需品。 一、功能描述 1、采用高精度电阻应变式压力传感器,测量量程 0-10kg ,测量精度可 达 5g 。 2、采用电子秤专用模拟 / 数字( A/D)转换器芯片 hx711 对传感器信号进行调理转换, HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的 24 位 A/D 转换器芯片

3、采用 STC89C52单片机作为主控芯片,实现称重、计算价格等主控功 4、采用 128*64 汉字液晶屏显示称重重量、单价、总价等信息。 5、采用 4*4 矩阵键盘进行人机交互,键盘容量大,操作便捷。 6、具有超量程报警功能,可以通过蜂鸣器和 LED灯报警。 7、系统通过 USB电源供电,单片机程序也可通过 USB线串行下载。 二、硬件设计 1、硬件方案 单片机电子秤硬件方案如图 1 所示: 图 1 单片机电子秤硬件方案称重传感器感应被测重力,输出微弱的毫伏级电压信号。该电压信号经过电子秤专用模拟 /数字(A/D)转换器芯片hx711 对传感器信号进行调理转换。 HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的 24 位 A/D 转换器芯片,内置增益控制,精度高,性能稳定。 HX711芯片通过 2 线串行方式与单片机通信。单片机读取被测数据,进行计算转换,再液晶屏上显示出

单片机课程设计--电子音调发生器

单片机课程设计报告电子音调发生器 学院电子信息工程学院

电子音调发生器 二、设计的任务及要求 利用JD51开发板上的按键S1~S4和蜂鸣器设计电子音调发生器,要求: (1)利用JD51开发板上的按键S1~S4进行音调选择,即按下不同的开关产生不同的音调,依次按动S1~S4 及组合按键,蜂鸣器发出1234567i八个音调;并在数码管上显示。 (2)编写2支歌曲,并可进行选择播放。 三、工作原理及设计思路 工作原理: 音节由不同频率的方波产生,音节与频率的关系通过查表可得。要产生音频方波,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。 利用计时器计时此半周期时间,每当计时到后就将输出方波的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。 在JD51单片机上,产生方波的I/O脚选用P2.4,通过跳线选择器将单片机的P2.4与蜂鸣器的驱动电路相连。这样P2.4输出不同频率的方波,蜂鸣器便会发出不同的声音。另外,音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍。 每个音节相应的定时器初值X可按下法计算: (1/2)*(1/f)=(12/fosc)*(256-x) 即 x=256-(fosc/24f) 其中f:音调频率,当晶振fosc=11.0592MHz时,音节“1”相应的定时器初值为x,则可得x=63777D=F921H 其它的可同样求得。 表1

1.总体框图 硬件图 2.蜂鸣电路 模块由蜂鸣器驱动电路和89C51组成。选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100MA驱动电流。当89C51输出为低电平时蜂鸣器产生蜂鸣音,89C51 输出为高电平时,蜂鸣器不发声。 四、软件设计流程及描述 根据要实现的功能,流程图如下: 熟悉定时器和键盘扫描电路的工作原理及编程方法。

基于51单片机简易电子琴的课程设计

基于51单片机简易电子琴 1 课题背景 单片微型计算机室大规模集成电路技术发展的产物,属于第四代电子计算机它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。他的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘扬声器等模块组成核心主控制模块,在主控模块上设有8个按键,和一个复位按键。 主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴硬件的组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏要表达的音符。并且分别从原理图,主要芯片,个模块原理及各莫奎的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们想演奏的那首曲目。当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系编写正确就可以达到我们想要的曲目。 2 任务要求与总体设计方案 2.1 设计任务与要求 利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出7个不同的音调,而且有一个按键可以自动播放歌曲,要求按键按下时发声,松开延时一小段时间,中间再按别的键则发另外一音调的声音,当系统扫描到键盘按下,则快速检测出是哪一个按键被按下,然后单片机的定时器启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个按键被按下,则启动中断系统。前面的发音停止,转到后按的键的发音程序。发出后按的键的音调。 2.2 设计方案 2.2.1 播放模块 播放模块是由喇叭构成,它几乎不存在噪声,音响效果较好,而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。 2.2.2 按键控制模块

基于单片机STC89C52RC的八路抢答器课程设计报告75092282

基于单片机STC89C52RC的八路抢答器课程设计报告75092282

信息与电子工程学院 课程设计报告 课程单片机技术应用 设计题目基于单片机STC89C52RC的八路抢答器专业应用电子技术 班级11级4班 成员姓名学号分工成绩 软件部分 硬件部分

目录 一、课程设计概述.................................................................................................................... - 1 - 1.1课程设计背景 (1) 1.2课程设计内容 (1) 1.3课程设计技术指标 (1) 二、方案的选择及确定............................................................................................................ - 1 - 2.1方案一:集成数字电路 (1) 2.2方案二:单片机 (2) 2.3方案分析比较: (2) 三、硬件设计............................................................................................................................ - 3 - 3.1系统硬件设计 (3) 3.2复位电路的设计 (3) 3.3时钟电路设计 (3) 3.4显示电路设计 (4) 3.5按键电路设计 (5) 3.6报警电路设计 (6) 3.7电源模块设计 (7) 四、系统软件设计.................................................................................................................... - 7 - 4.1系统的功能流程 (7) 4.2主程序流程图 (7) 五、系统调试过程.................................................................................................................... - 9 - 5.1软件调试 (9) 5.2硬件调试 (10) 六、总结.................................................................................................................................. - 13 - 七、遇到的问题及解决方法.................................................................................................. - 13 - 八、参考文献.......................................................................................................................... - 13 - 九、附录.................................................................................................................................. - 14 - 9.1仪器与设备 (14) 9.2元器件清单 (14)

单片机电子秤设计报告共28页文档

单片机电子秤设计报告 秤是一种在实际工作和生活中经常用到的测量器具。随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。 和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片机设计实现,具有精度高、功能强等特点。本课题设计的电子秤具有基本称重、键盘输入、计算价格、显示、超重报警功能。该电子秤的测量范围为0-40Kg,测量精度达到5g,有高精度,低成本,易携带的特点。电子秤采用液晶显示汉字和测量记过,比传统秤具有更高的准确性和直观性。另外,该电子秤电路简单,使用寿命长,应用范围广,可以应用于商场、超市、家庭等场所,成为人们日常生活中不可少的必需品。 一、功能描述 1、采用高精度电阻应变式压力传感器,测量量程0-40kg,测量精度可达5g。 2、采用电子秤专用模拟/数字(A/D)转换器芯片hx711对传感器信号进行调理转换,HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片。 3、采用STC89C52单片机作为主控芯片,实现称重、计算价格等主控功能。 4、采用128*64汉字液晶屏显示称重重量、单价、总价等信息。 5、采用4*4矩阵键盘进行人机交互,键盘容量大,操作便捷。 6、具有超量程报警功能,可以通过蜂鸣器和LED灯报警。 7、系统通过USB电源供电,单片机程序也可通过USB线串行下载。

二、硬件设计 1、硬件方案 单片机电子秤硬件方案如图1所示: 图1 单片机电子秤硬件方案 称重传感器感应被测重力,输出微弱的毫伏级电压信号。该电压信号经过电子秤专用模拟/数字(A/D)转换器芯片hx711对传感器信号进行调理转换。HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片,内置增益控制,精度高,性能稳定。HX711芯片通过2线串行方式与单片机通信。单片机读取被测数据,进行计算转换,再液晶屏上显示出来。 矩阵键盘主要用于计算金额。当被测物体重量得到后,用户可以通过矩阵键盘输入单价,电子秤自动计算总金额并在液晶屏显示。电源系统给单片机、HX711电路及传感器供电。 2、称重传感器 传感器是测量机构最重要的部件。称重传感器本身具有单调性,其主要参数指标是灵敏度、总误差和温度漂移。 (1) 灵敏度 称重传感器的电灵敏度为满负荷输出电压与激励电压的比值,典型值是2mV/V。当使用2 mV/V灵敏度和5 V激励电压的传感器时,其满度输出电压为10 mV。通常,为了使用称重传感器线性度最好的一段称重范围,应当仅使用满度范围的三分之二。因此满度输出电压应当大约为6mV。当电子秤应用于工业环境时,在6mV满度范围内测量微小的信号变化并非易事。 (2) 总误差 总误差是指输出误差和额定误差的比值。典型电子秤的总误差指标大约是0.02%,这一技术指标相当重要,它限制了使用理想信号调节电路所能达到的精确度,决定了ADC分辨率的选择以及放大电路和滤波器的设计。

可编程音乐发生器

河南城建学院 电子技术基础课程设计 题目:可编程音乐发生器 姓名:洪帅___ 学号:__091412115__ 专业班级:__ 0914121___ 指导老师: ___ 刘晓芳______ 所在院系:电气与信息工程学院 2014年6月19日

河南城建学院课程设计报告 1 摘要 本课程设计是可编程音乐发生器,根据音乐的几个音节频率的不同,设计的一个音乐音节发生器.全电路由三部分组成:以图3.3为主组成的音乐音节振荡器.有十六进制计数\脉冲分配器74LS161,74HC138组成的切换电路和由图3.1组成的为图3.2提供时钟的时钟脉冲发生器. 在音阶振荡器中,电阻R11。R12和电容Cx是决定电路振荡频率的元件,在本电路中将R11、R12 固定,通过改变Cx 的数值来改变振荡频率。电路中,按照音乐的七个基本音阶,将Cx 分成十二组,即C5~C 17,每一个电容可以组成十二个音阶中的一个音阶,十二个电容组成振荡电路的567 1 2 3 4 5 6 7 12。根据音乐音阶信号的分析测量,已知七个基本音阶的频率,可以算出每个电容的值。 音阶振荡电路由74LS161、74HC138等组成,74LS161是十六进制计数器,将信号脉冲转化为十二进制,再有74HC138与各个电容连接,因每个电容的容量不同,进而产生不同的信号传递到图3.3中。 时钟脉冲振荡器是有R1、R2、C以及555定时器组成的,由图3.1的管脚输入到图3.2中。 在模拟仿真之中,打开开关,会听到音符的声音。

目录 1 概述 (3) 1.1设计目的 (3) 1.2设计要求 (3) 1.3设计题目 (3) 2 系统总体方案及硬件设计 ..... (4) 2.1所用原件 (4) 2.2结构框图 (4) 2.3方案对比 (4) 3 各模块设计 (5) 3.1脉冲发生器 (5) 3.2脉冲分配器 (6) 3.3多谐振荡器 (8) 3.4音乐功放 (9) 4 软件仿真 (10) 5课程设计体会 (11) 5.1设计中遇到的问题 (11) 5.2设计体会 (11) 6参考文献 (12)

基于51单片机的电子琴设计课程设计

目录 前言 (2) 第1章基于51单片机的电子琴设计 (3) 1.1 电子琴的设计要求 (3) 1.2 电子琴设计所用设备及软件 (3) 1.3 总体设计方案 (3) 第2章系统硬件设计 (5) 2.1 琴键控制电路 (5) 2.2 音频功放电路 (6) 2.3 时钟-复位电路 (6) 2.4 LED显示电路 (6) 2.5 整体电路 (6) 第3章电子琴系统软件设计 (7) 3.1 系统硬件接口定义 (7) 3.2 主函数 (8) 3.2.1 主函数程序 (8) 3.3 按键扫描及LED显示函数 (9) 3.3.1 键盘去抖及LED显示子程序 (10) 3.4 中断函数 (11) 3.4.1 中断程序 (12) 第4章电子琴和调试 (12) 4.1 调试工具 (12) 4.2 调试结果 (13) 4.3 电子琴设计中的问题及解决方法 (14) 第5章电子琴设计总结 (15) 参考文献 (16) 附录 (17)

前言 音乐教育是学校美育的主要途径和最重要内容,它在陶冶情操、提高素养、开发智力,特别是在培养学生创新精神和实践能力方面发挥着独特的作用。近年来,我国音乐教育在理论与实践上都取得了有目共睹的成绩,探索并形成了具有中国特色的、较为完整的音乐教育教学体系。但我国音乐教育的改革力度离素质教育发展的要求还存在一定距离。如今,电子琴作为电子时代的新产物以其独特的功能和巨大的兼容性被人们广泛的接受和推崇。而在课堂教学方面,它拥有其它乐器无法比拟的两个瞬间:瞬间多元素思维的特殊的弹奏方法;瞬间多声部(包括多音色)展示的乐队音响效果的特点。结合电子琴自身强大的功能及独特的优点来进行音乐教育的实施,这样就应该大力推广电子琴进入音乐教室,让电子琴教学在音乐教育中发挥巨大的作用。现代乐器中,电子琴是高新科技在音乐领域的一个代表,体现了人类电子技术和艺术的完美结合。电子琴自动伴奏的稳定性、准确性,以及鲜明的强弱规律、随人设置的速度要求,都更便于人们由易到难、深入浅出的准确掌握歌曲节奏和乐曲风格,对其节奏的稳定性和准确性训练能起到非常大的作用。电子琴所包含的巨量的音乐信息和强大的音乐表现力可以帮助音乐教学更好地贯彻和落实素质教育,更有效地提高人们的音乐素质和能力。目前,市场上的电子琴可谓琳琅满目,功能也是越来越完备。以单片机作为主控核心,设计并制作的电子琴系统运行稳定,其优点是硬件电路简单、软件功能完善、控制系统可靠、性价比较高等,具有一定的实用与参考价值。这就为电子琴的普及提供了方便。 二、电子琴设计要求本设计主要是用AT89C51单片机为核心控制元件,设计一台电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有7个按键和1个复位按键。本系统主要是完成2大功能:音乐自动播放、电子琴弹奏。关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只是存在自定义的表中。

单片机课程设计八位竞赛抢答器的设计

单片机原理及接口技术 课程设计 八位竞赛抢答器的设计 姓名: 学号: 指导教师: 院系(部所):机电工程学院 专业:机械设计制造及其自动化 完成日期:2012年12月20日

摘要 随着单子技术的飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。本设计是以八路抢答为基本理念。考虑到需设定限时回答的功能呢个,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。用开关做键盘输出,扬声器发生提示,并且有警告灯显示,正常工作时为绿灯,报警或抢答等违规信号时则出现红灯。 关键词:AT89C51;抢答器;计数器

目录 1概述 (1) 2 抢答器的硬件系统设计 (3) 2.1 系统整体方案设计 (3) 2.2 系统硬件组成 (3) 3 最小系统与主控模块的设计与实现 (5) 3.1 单片机最小硬件系统的组成简述 (5) 3.1.1 电源电路 (5) 3.1.2 时钟电路 (6) 3.1.3 复位电路 (7) 3.2 主流程图 (8) 4 模块的设计与实现 (9) 4.1 抢答电路的设计 (9) 4.2 锁存器74HC573 (9) 4.3 主持人控制电路与扬声器的设计...................... 错误!未定义书签。 4.4 显示电路的设计.................................... 错误!未定义书签。 5 软件的设计 (12) 5.1语言选择 (12) 5.2软件总体设计 (12) 总结 (13) 参考文献 (15) 致谢 (16) 附录 (17)

基于单片机的电子秤的设计样本

四川信息职业技术学院 毕业设计阐明书(论文) 设计(论文)题目: 基于单片机电子秤设计 专业:应用电子技术 班级:应电12-3 学号: 1111111 姓名:某某某 指引教师:某某某

二〇一四年十一月二十五日

四川信息职业技术学院毕业设计(论文)任务书

目录 摘要................................................................................................... 错误!未定义书签。绪论................................................................................................... 错误!未定义书签。第一章方案设计与论证................................................................... 错误!未定义书签。 1.1方案选取 ............................................................................ 错误!未定义书签。 1.2方案论证 ............................................................................ 错误!未定义书签。第二章硬件设计与分析................................................................... 错误!未定义书签。 2.1单片机最小系统 ................................................................ 错误!未定义书签。 2.1.1 芯片简介.............................................................. 错误!未定义书签。 2.1.2 时钟电路设计...................................................... 错误!未定义书签。 2.1.3 复位电路设计...................................................... 错误!未定义书签。 2.2信号采集模块 .................................................................... 错误!未定义书签。 2.2.1 传感器选取.......................................................... 错误!未定义书签。 2.2.2 传感器选取.......................................................... 错误!未定义书签。 2.3数据转换电路 .................................................................... 错误!未定义书签。 2.3.1 A/D转换器选取................................................... 错误!未定义书签。 2.3.2 ADC0832简介 ..................................................... 错误!未定义书签。 2.3.3单片机对ADC0832控制原理 ............................ 错误!未定义书签。 2.4声光报警电路 .................................................................... 错误!未定义书签。 2.5显示电路 ............................................................................ 错误!未定义书签。 2.6整机电路 ............................................................................ 错误!未定义书签。

相关文档
最新文档