找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5440|回复: 2
收起左侧

基于AT89c51单片机的音乐闹钟Proteus仿真+代码设计

[复制链接]
ID:434410 发表于 2018-11-27 19:10 | 显示全部楼层 |阅读模式
基于51芯片用proteus仿真制作的音乐闹钟,四个按键用来设置时间,和整定闹钟时间,如果要做实物的话,记得参考源码的io口,也可修改

附件包括了源码和仿真图,当然如果有开发板的话最好,做实物的话记得参考源码的io口
说明:
用的是1602lcd显示屏;
本项目是天空之城的纯音乐,如果要其他的音乐代码可以找我要,也可以网上找;

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源码:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit lcdrs=P3^5; //定义lcd口
  5. sbit lcden=P3^4;
  6. sbit s1=P3^0;   
  7. sbit s2=P3^1;        
  8. sbit s3=P3^2;        
  9. sbit s4=P3^3;

  10. sbit speaker=P2^2;
  11. sbit led=P2^3;  
  12. uchar count,s1num,num1,num2,timer0h,timer0l,time;
  13. uint i;
  14. char sec,hour,min,ahour,amin,asec;
  15. uchar code table[]="Time:13:59:58   ";
  16. uchar code table2[]="Alarm:  :  :    ";
  17. uchar code kong[]="                ";

  18.         
  19. 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,
  20.                                       3,2,1,      3,2,1,      6,2,3,    5,2,1,           6,2,2,         1,3,2,           5,2,6,
  21.                                       3,2,2,      4,2,3,      3,2,1,         4,2,2,           1,3,2,         3,2,5,    1,3,1,
  22.                                       1,3,1,      1,3,1,      7,2,3,         4,2,1,    4,2,2,         7,2,2,           7,2,6,
  23.                                       6,2,1,      7,2,1,      1,3,3,         7,2,1,           1,3,2,          3,3,2,           7,2,6,
  24.                                       3,2,1,      3,2,1,      6,2,3,         5,2,1,           6,2,2,          1,3,2,           5,2,6,
  25.                                       2,2,1,      3,2,1,      4,2,2,         1,3,1,           7,2,2,          1,3,3,           2,3,1,
  26.                                                                           2,3,1,      3,3,1,      1,3,5,         1,3,1,           7,2,1,          6,2,1,           6,2,1,
  27.                                                                           7,2,2,      5,2,2,      6,2,6,         1,3,1,           2,3,1,          3,3,3,           2,3,1,
  28.                                                                           3,3,2,      5,3,2,      2,3,6,         5,2,1,           5,2,1,          1,3,3,           7,2,1,
  29.                                                                           1,3,2,      3,3,2,      3,3,8,         6,2,1,           7,2,1,          1,3,2,           7,2,2,
  30.                                                                           2,3,1,      2,3,1,      1,3,3,         5,2,5,           4,3,2,          3,3,2,           2,3,2,
  31.                                                                           1,3,2,      3,3,6,      3,3,2,         6,3,4,           5,3,2,          5,3,2,           3,3,1,
  32.                                                                           2,3,1,      1,3,5,      1,3,1,         2,3,2,           1,3,1,          2,3,1,           2,3,2,
  33.                                                                           5,3,2,      3,3,6,      3,3,2,         6,3,4,           5,3,4,          3,3,1,           2,3,1,
  34.                                                                           1,3,5,      1,3,1,      2,3,2,         1,3,1,           2,3,3,          7,2,2,           0,0,0 };

  35.       
  36. code unsigned char FREQH[]={
  37.                                 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
  38.                                 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
  39.                                 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
  40.                                 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
  41.                                } ;
  42.          
  43. code unsigned char FREQL[]={
  44.                                  0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
  45.                                  0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
  46.                                  0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
  47.                                  0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
  48.                                 };
  49. void delay1(unsigned char t)
  50.    {
  51.    unsigned char t1;
  52.    unsigned long t2;
  53.    for(t1=0;t1<t;t1++)
  54.    {
  55.     for(t2=0;t2<5000;t2++)
  56.        {
  57.         ;
  58.         }
  59.    }
  60.    TR0=0;
  61. }



  62. void delay(uint z)  
  63. {
  64.         uint x,y;
  65.         for(x=z;x>0;x--)
  66.                 for(y=110;y>0;y--);
  67. }
  68.                                                                               
  69. void write_com(uchar com)
  70. {
  71.         lcdrs=0;
  72.         lcden=0;
  73.         P0=com;
  74.         delay(5);
  75.         lcden=1;
  76.         delay(5);
  77.         lcden=0;        
  78. }
  79. void write_date(uchar date)
  80. {
  81.         lcdrs=1;
  82.         lcden=0;
  83.         P0=date;
  84.         delay(5);
  85.         lcden=1;
  86.         delay(5);
  87.         lcden=0;        
  88. }
  89.    

  90. void write_sfm(uchar add,uchar date)        //显示时间函数
  91. {
  92.         uchar shi,ge;
  93.         shi=date/10;
  94.         ge=date%10;
  95.         write_com(0x80+add);
  96.         write_date(0x30+shi);
  97.         write_date(0x30+ge);
  98. }
  99. void write_alarm(uchar add,uchar date)//显示闹钟时间函数
  100. {
  101.         uchar shi,ge;
  102.         shi=date/10;
  103.         ge=date%10;
  104. .......请下载附件查看剩余哦
复制代码

全部资料51hei下载地址:
基于51proteus的音乐闹钟设计.zip (19.58 KB, 下载次数: 200)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:663145 发表于 2019-12-13 12:24 | 显示全部楼层
那4个按键具体是怎么控制时间的啊
回复

使用道具 举报

ID:827657 发表于 2020-10-13 09:32 | 显示全部楼层
你好,这个图是怎么打开的,通过Proteus 8
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表