基于AT89C51的LCD音乐盒_课程设计论文.docVIP

  • 6
  • 0
  • 约4.8万字
  • 约 60页
  • 2019-05-17 发布于河南
  • 举报
PAGE 1 《单片机原理与应用》课程设计报告 基于AT89C51的LCD音乐盒 目 录 TOC \o 1-3 \h \u ,2.Love Transfer ,3.Girl With Wing, 4.The Same Song ,5.Two Butterfly ,6.Coral Sea }; char code singer[][12]={ Guang liang,Chen yixun ,Rong zuer , Liu chang ,Pang long ,Zhou jielun}; uchar code lamp[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //以下为播放音乐的设置 #define SYSTEM_OSC #define SOUND_SPACE 4/5 uint code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表 uchar code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在频率表中的位置 uchar code LengthTab[7]= { 1,2,4,8,16,32,64 }; uchar Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存 uchar Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存 bit stop; /***********************延时函数(单位ms)**************************/ void delay(uint z) { uint x; uchar y; for(x=z;x0;x--) for(y=112;y0;y--); } /*********************************************************** ******************LCD1602驱动程序****************** ************************************************************/ /*********************************************************** 忙检测 ************************************************************/ void LCD1602_check_busy() { LCD1602_DATA = 0xff; LCD1602_RS = 0 ; LCD1602_RW = 1 ; LCD1602_EN = 1 ; while(LCD1602_DATA 0x80) ; LCD1602_EN = 0 ; } /********************************************************** 写指令 ************************************************************/ void LCD1602_write_cmd(uchar cmd) { LCD1602_check_busy(); LCD1602_RS = 0 ; LCD1602_RW = 0 ; LCD1602_DATA = cmd ; LCD1602_EN = 1 ; _nop_(); LCD1602_EN = 0 ; } /*********************************************************** 写数据 *************************************************************/ void LCD1602_write_data(uchar dat) { LCD1602_check_busy(); LCD1602_RS = 1 ; LCD1602_RW = 0 ; LCD1602_DATA = dat ; LCD1602_EN = 1 ; _nop_(); LCD1602_EN = 0 ; } /**************************************

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档