基于51芯片用proteus仿真制作的音乐闹钟,四个按键用来设置时间,和整定闹钟时间,如果要做实物的话,记得参考源码的io口,也可修改
附件包括了源码和仿真图,当然如果有开发板的话最好,做实物的话记得参考源码的io口
说明:
用的是1602lcd显示屏;
本项目是天空之城的纯音乐,如果要其他的音乐代码可以找我要,也可以网上找;
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源码:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit lcdrs=P3^5; //定义lcd口
- sbit lcden=P3^4;
- sbit s1=P3^0;
- sbit s2=P3^1;
- sbit s3=P3^2;
- sbit s4=P3^3;
- sbit speaker=P2^2;
- sbit led=P2^3;
- uchar count,s1num,num1,num2,timer0h,timer0l,time;
- uint i;
- char sec,hour,min,ahour,amin,asec;
- uchar code table[]="Time:13:59:58 ";
- uchar code table2[]="Alarm: : : ";
- uchar code kong[]=" ";
-
- code unsigned char sszymmh[] = { 6,2,1, 7,2,1, 1,3,3, 7,2,1, 1,3,2, 3,3,2, 7,2,6,
- 3,2,1, 3,2,1, 6,2,3, 5,2,1, 6,2,2, 1,3,2, 5,2,6,
- 3,2,2, 4,2,3, 3,2,1, 4,2,2, 1,3,2, 3,2,5, 1,3,1,
- 1,3,1, 1,3,1, 7,2,3, 4,2,1, 4,2,2, 7,2,2, 7,2,6,
- 6,2,1, 7,2,1, 1,3,3, 7,2,1, 1,3,2, 3,3,2, 7,2,6,
- 3,2,1, 3,2,1, 6,2,3, 5,2,1, 6,2,2, 1,3,2, 5,2,6,
- 2,2,1, 3,2,1, 4,2,2, 1,3,1, 7,2,2, 1,3,3, 2,3,1,
- 2,3,1, 3,3,1, 1,3,5, 1,3,1, 7,2,1, 6,2,1, 6,2,1,
- 7,2,2, 5,2,2, 6,2,6, 1,3,1, 2,3,1, 3,3,3, 2,3,1,
- 3,3,2, 5,3,2, 2,3,6, 5,2,1, 5,2,1, 1,3,3, 7,2,1,
- 1,3,2, 3,3,2, 3,3,8, 6,2,1, 7,2,1, 1,3,2, 7,2,2,
- 2,3,1, 2,3,1, 1,3,3, 5,2,5, 4,3,2, 3,3,2, 2,3,2,
- 1,3,2, 3,3,6, 3,3,2, 6,3,4, 5,3,2, 5,3,2, 3,3,1,
- 2,3,1, 1,3,5, 1,3,1, 2,3,2, 1,3,1, 2,3,1, 2,3,2,
- 5,3,2, 3,3,6, 3,3,2, 6,3,4, 5,3,4, 3,3,1, 2,3,1,
- 1,3,5, 1,3,1, 2,3,2, 1,3,1, 2,3,3, 7,2,2, 0,0,0 };
-
- code unsigned char FREQH[]={
- 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
- 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
- 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
- } ;
-
- code unsigned char FREQL[]={
- 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
- 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
- 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
- 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
- };
- void delay1(unsigned char t)
- {
- unsigned char t1;
- unsigned long t2;
- for(t1=0;t1<t;t1++)
- {
- for(t2=0;t2<5000;t2++)
- {
- ;
- }
- }
- TR0=0;
- }
-
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
-
- void write_com(uchar com)
- {
- lcdrs=0;
- lcden=0;
- P0=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_date(uchar date)
- {
- lcdrs=1;
- lcden=0;
- P0=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
-
- void write_sfm(uchar add,uchar date) //显示时间函数
- {
- uchar shi,ge;
- shi=date/10;
- ge=date%10;
- write_com(0x80+add);
- write_date(0x30+shi);
- write_date(0x30+ge);
- }
- void write_alarm(uchar add,uchar date)//显示闹钟时间函数
- {
- uchar shi,ge;
- shi=date/10;
- ge=date%10;
- .......请下载附件查看剩余哦
复制代码
全部资料51hei下载地址:
基于51proteus的音乐闹钟设计.zip
(19.58 KB, 下载次数: 202)
|