• 回答数

    3

  • 浏览数

    347

霍爾因斯基
首页 > 毕业论文 > 51单片机电子琴毕业论文

3个回答 默认排序
  • 默认排序
  • 按时间排序

猪宝0517

已采纳

建议你去"幸福校园"看看 里面有些样子 你可以参考 前言传统的数字频率计都是采用纯硬件方式组成(纯数字电路)。它的集成电路(IC)用量较大,因而产品的体积、功耗都较大,生产成本较高。产品定型后不能升级(加入新功能)。而采用单片机和相关可编程智能集成器件制成的现代数字频率计方式情况就不同了,单片机的内核CPU可完成多项工作如计数、读入、译码、驱动和时基的产生等。和纯硬件方式比,它减少了很大一部分的集成电路的用量,还可加入许多的智能操作,这更是纯硬件方式所望尘莫及的。目前市场上的频率计产品很多,但基本上都是采用专用计数芯片(如ICM7240 , ICM7216) 和数字逻辑电路组成,由于这些芯片本身的工作频率不高(如ICM7240 仅有15MHz 左右) ,从而限制了产品的工作频率的提高, 远不能达到在一些特殊的场合需要测量很高的频率的要求,而且测量精度也受到芯片本身极大的限制。自从80年代单片机引入我国之后,单片机已广泛地应用于各行各业的电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路. 运用单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,次方法不仅能解决传统频率计结构复杂、稳定性差、精度不高的弊端,而且性能也将大有提高,可实现精度较高、等精度和宽范围频率计的要求;随着单片机技术的不断发展,可以用单片机通过软件设计直接用十进制数字显示被测信号频率。本设计正是基于此技术进行的传统频率计技术改进。

356 评论

金舟创元

相关范文:基于单片机监控系统的研究【摘要】文章所设计的基于单片机监控系统汽车行驶记录仪所实现的主要功能:记录汽车停车前2秒内的行驶速度,并能实时地显示汽车行驶的状态信息,同时还对汽车的超速行驶进行报警并记录一天之内的超速次数。【关键词】单片机;模块;监控本文所设计的汽车行驶记录仪是基于两片8051单片机作为控制系统的核心来进行设计的,整个系统分为六大模块分别是:电源模块、速度信号采集模块、时钟模块、单片机模块、存储器模块、显示模块。一、电源模块的设计记录仪作为车载设备,使用汽车电源。汽车上的电源有两个:汽车发电机和蓄电池。记录仪的电源直接取自蓄电池,在发电机转速和用电负载发生较大变化时,可保持汽车电网电压的相对稳定,同时,还可吸收电路中随时出现的瞬时过电压,以保护电子元件不受损害。车辆使用的车载蓄电池标称值有两种 12V的和 24V的,因此为了得到需要的 5V的电压,我选用了 DC-DC 电源转换芯片。二、速度信号采集模块的设计速度信号检测模块的原理是:汽车行驶过程中,车轮经过传感器,单位时间内输出一定的脉冲,传感器输出的脉冲通过差动放大电路的放大与整形,然后送到单片机 8051 的 T0端口进行脉冲计数,与此同时 8051 的 T1 进行计时开始待到定时器产生中断请求后,由计数器得到的脉冲数经过速度计算的公式和里程的计算后得到汽车行驶的速度和里程。从而得到汽车的行驶速度和里程,存储与 8051 的 RAM数据存储区。本系统采用霍尔传感器将速度信号转换为脉冲信号,考虑到传感器的体积要小,便于安装,误差要尽量减小等要求,设计采用车轮旋转一周速度传感器要输出若干个脉冲的方法。本系统采用的是在变速器上安装 3个小磁钢,霍尔传感器可相应的输出 3 个脉冲用于速度信号的采集。速度信号采集模块采用 THS118 型霍尔元件作为速度信号采集部分的速度传感器。三、时钟模块的设计时钟模块主要是用于对时、分、秒、年、月、日和星期的计时。该模块采用的芯片为DS12C887 时钟芯片。此芯片集成度高,其外围的电路设计非常的简单,且其性能非常好,计时的准确性高。DS12C887为双列直插式封装。其具体与单片机的连接如下所述:AD0~AD7双向地址/数据复用线与单片机的P0口相联,用于向单片机交换数据;AS 地址选通输入脚与单片机的 ALE 相联用于对地址锁存,实现地址数据的复用;CS 片选线与单片机的 相联,用于选通时钟芯片;DS 数据选通读输入引脚与单片机的读选通引脚相联,用于实现对芯片数据的读控制;R/W 读/写输入与单片机的写选通引脚相联,用于实现对时钟芯片的写控制;MOT 直接接地,选用 INTEL 时序。IRQ引脚与 8051 的 INT1 相连,用于为时间的采集提供时间基准。四、单片机模块的设计本系统采用两片单片机,两个单片机之间采用串行通讯,用于两者之间的数据交换。其工作时序是由外部晶振电路提供的,本系统采用的晶振频率是 12 兆 HZ。其复位电路为自动上电复位。设计中所采用的单片机为 8051。单片机在系统中主要是用来对其他模块进行控制,是整个系统的核心部件。主单片机主要是用于对速度信号采集模块、时钟模块和存储模块进行控制,同时还要与从单片机进行数据的交换。其外围的 I/O口主要与这些模块的中心芯片的数据总线或地址总线相连,其控制总线与这些模块的控制线相连。从单片机主要是用于对显示和校时的控制,因此其 I/O口主要与 LCD显示器的 I/O口相连,其控制线与 LCD显示器的控制线相连。由于从单片机的外部中断源只有两个,而我所设计的对时钟的校时主要是通过外部中断完成的,所以要对从单片机的外部中断源进行扩展。本系统采用了 8259A 进行中断源的扩展,从而实现对时钟的校时。五、储模块的设计汽车行驶记录仪对系统存储数据的实时性及长久性要求很高,因此本系统我采用了ATMEL 生产的 AT29C010A Flash 性存储器。其存储空间为 16K,能够满足设计的要求。AT29C010A是一种 5V在线闪速可电擦除的存储器,具有掉电保护功能;方便的在线编程能力不需要高的输入电压,指令系统在 5V 电压下即可控制对 AT29C010A 的读取数据,这与对 EEPROM 的操作相似。再编程能力是以每一分区为单位的,128 字节的数据装入AT29C010A 的同时完成编程。在一个再编程周期里,存储单元的寻址和 128 字节的数据通过内部锁存器可释放地址和数据总线,这样可为其它操作提供地址和数据总线。编程周期开始后,AT29C010A会自动擦除分区的内容,然后对锁存的数据在定时器作用下进行编程。六、示模块的设计显示器主要是为人机交互提供即时的信息,能让人们与机器进行很好的交流。在众多种类的显示器中,越来越多的仪器仪表及人机交互界面采用液晶显示器。LCD 可分为段位式LCD、字符式 LCD和点阵式 LCD。其中段位式和字符式只能用于数字和字符的简单的显示,不能满足图形曲线和汉字显示的要求;而点阵式不仅能够显示字符和数字,还可以显示各种图形、曲线及汉字,可以实现屏幕的上下左右滚动等功能。七、键的设计本系统的按键主要是用于对时钟的校对,现对按键的功能简述如下:按键 1~7是用于对秒分时日月年星期校时的中断申请;按键 8 是用于对校时进行加一的操作,键 9 是用于对校时进行减一的操作;按键 10 是用于实现对超速报警监控功能的复位。八、系统软件流程图的设计由于本设计主要是完成系统的硬件电路设计,因此我对系统的软件设计只进行了系统部分软件流程图的绘制。设计的流程图有:记录仪总体软件设计流程图、速度信号采集模块软件设计流程图、时钟模块软件设计流程图、外部中断软件设计流程图和 LCD 显示实现的软件设计流程图。【参考文献】[1]戴佳,苗龙,陈斌.51单片机应用系统开发典型实例[M].中国电力出版社.[2]周航慈.单片机应用程序设计技术[M].北京航空航天大学出版社.[3]胡汉才.单片机原理及其接口技术[M].清华大学出版社.[4]余发山.单片机原理及应用技术[M].中国矿业大学出版社.仅供参考,请自借鉴希望对您有帮助

316 评论

森海淼淼

楼主我这里有电子琴的单片机程序,做毕业设计那个我觉得还是自己做得好,因为你没懂的话论文答辩是过不了的。简易电子琴#include<> //包含51单片机寄存器定义的头文件sbit P14=P1^4; //将P14位定义为引脚sbit P15=P1^5; //将P15位定义为引脚sbit P16=P1^6; //将P16位定义为引脚sbit P17=P1^7; //将P17位定义为引脚unsigned char keyval; //定义变量储存按键值sbit sound=P3^7; //将sound位定义为 int C; //全局变量,储存定时器的定时常数unsigned int f; //全局变量,储存音阶的频率//以下是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”的频率53//以下是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/**************************************************************函数功能:软件延时子程序**************************************************************/void delay20ms(void) {unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<60;j++);}/*******************************************函数功能:节拍的延时的基本单位,延时200ms******************************************/void delay() {unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++);}/*******************************************函数功能:输出音频入口参数:F******************************************/void Output_Sound(void){C=(46083/f)*10; //计算定时常数TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法TR0=1; //开定时T0delay(); //延时200ms,播放音频TR0=0; //关闭定时器sound=1; //关闭蜂鸣器keyval=0xff; //播放按键音频后,将按键值更改,停止播放}/*******************************************函数功能:主函数******************************************/ void main(void){ EA=1; //开总中断ET0=1; //定时器T0中断允许ET1=1; //定时器T1中断允许TR1=1; //定时器T1启动,开始键盘扫描TMOD=0x10; //分别使用定时器T1的模式1,T0的模式0TH1=(65536-500)/256; //定时器T1的高8位赋初值TL1=(65536-500)%256; //定时器T1的高8位赋初值 while(1) //无限循环{switch(keyval){case 1:f=dao; //如果第1个键按下,将中音1的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 2:f=l_xi; //如果第2个键按下,将低音7的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 3:f=l_la; //如果第3个键按下,将低音6的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 4:f=l_sao; //如果第4个键按下,将低音5的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 5:f=sao; //如果第5个键按下,将中音5的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 6:f=fa; //如果第6个键按下,将中音4的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 7:f=mi; //如果第7个键按下,将中音3的频率赋给fOutput_Sound(); //转去计算定时常数 break; case 8:f=re; //如果第8个键按下,将中音2的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 9:f=h_re; //如果第9个键按下,将高音2的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 10:f=h_dao; //如果第10个键按下,将高音1的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 11:f=xi; //如果第11个键按下,将中音7的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 12:f=la; //如果第12个键按下,将中音6的频率赋给fOutput_Sound(); //转去计算定时常数 break; case 13:f=h_la; //如果第13个键按下,将高音6的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 14:f=h_sao; //如果第14个键按下,将高音5的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 15:f=h_fa; //如果第15个键按下,将高音4的频率赋给fOutput_Sound(); //转去计算定时常数 break;case 16:f=h_mi; //如果第16个键按下,将高音3的频率赋给fOutput_Sound(); //转去计算定时常数 break; } } } /**************************************************************函数功能:定时器T0的中断服务子程序,使引脚输出音频方波**************************************************************/ void Time0_serve(void ) interrupt 1 using 1 {TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法 sound=!sound; //将引脚取反,输出音频方波}/**************************************************************函数功能:定时器T1的中断服务子程序,进行键盘扫描,判断键位**************************************************************/ void time1_serve(void) interrupt 3 using 2 //定时器T1的中断编号为3,使用第2组寄存器{TR1=0; //关闭定时器T0P1=0xf0; //所有行线置为低电平“0”,所有列线置为高电平“1”if((P1&0xf0)!=0xf0) //列线中有一位为低电平“0”,说明有键按下{delay20ms(); //延时一段时间、软件消抖if((P1&0xf0)!=0xf0) //确实有键按下{P1=0xfe; //第一行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=1; //可判断是S1键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=2; //可判断是S2键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=3; //可判断是S3键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=4; //可判断是S4键被按下P1=0xfd; //第二行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=5; //可判断是S5键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=6; //可判断是S6键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=7; //可判断是S7键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=8; //可判断是S8键被按下P1=0xfb; //第三行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=9; //可判断是S9键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=10; //可判断是S10键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=11; //可判断是S11键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=12; //可判断是S12键被按下P1=0xf7; //第四行置为低电平“0”(输出低电平“0”)if(P14==0) //如果检测到接引脚的列线为低电平“0”keyval=13; //可判断是S13键被按下if(P15==0) //如果检测到接引脚的列线为低电平“0”keyval=14; //可判断是S14键被按下if(P16==0) //如果检测到接引脚的列线为低电平“0”keyval=15; //可判断是S15键被按下if(P17==0) //如果检测到接引脚的列线为低电平“0”keyval=16; //可判断是S16键被按下}}TR1=1; //开启定时器T1TH1=(65536-500)/256; //定时器T1的高8位赋初值TL1=(65536-500)%256; //定时器T1的高8位赋初值 }

337 评论

相关问答

  • 单片机设计电子秤毕业论文

    我也选了这个题了,有没有实用电子秤的资料?求助,邮箱是:

    淡蓝喵喵喵 6人参与回答 2023-12-05
  • 51单片机电子琴毕业论文

    建议你去"幸福校园"看看 里面有些样子 你可以参考 前言传统的数字频率计都是采用纯硬件方式组成(纯数字电路)。它的集成电路(IC)用量较大,因而产品的体积、功耗

    霍爾因斯基 3人参与回答 2023-12-11
  • 单片机电动窗帘毕业论文

    进我空间有答案,这东西嘛,很义贼。

    pinguo0911 6人参与回答 2023-12-06
  • 单片机电子技术毕业论文

    单片机毕业论文答辩陈述 难忘的大学生活将要结束,毕业生都要通过最后的毕业论文,毕业论文是一种有计划的检验大学学习成果的形式,那么毕业论文应该怎么写才合适呢?以下

    鼹鼠大小姐 2人参与回答 2023-12-06
  • 单片机电气工程毕业论文

    单片机毕业论文答辩陈述 难忘的大学生活将要结束,毕业生都要通过最后的毕业论文,毕业论文是一种有计划的检验大学学习成果的形式,那么毕业论文应该怎么写才合适呢?以下

    韵味八足 3人参与回答 2023-12-11