找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2545|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机+ISD1420语音时钟+温度计程序和电路

[复制链接]
跳转到指定楼层
楼主
喜欢的看看吧
原理图+工程

制作出来的实物图如下:


单片机源程序如下:
  1. #include "main.h"
  2. #include "LCD1602.h"
  3. #include "clock.h"
  4. #include "key.h"
  5. #include "DS18B20.h"
  6. #include "temp.h"
  7. #include "BEEP.h"
  8. #include "ISD1420.h"
  9. #include "speakTEMP.h"

  10. //unsigned char code str0[]={"---  :  :  -----"};
  11. //unsigned char code str1[]={"temp:  . oC-----"};


  12. /*********延时K*1ms,12.000mhz**********/
  13. void delayMs(unsigned int ms)
  14. {
  15.         unsigned char j;
  16.         while(ms--)
  17.         {
  18.                 for(j=0; j<=125; j++);
  19.         }
  20. }


  21. /***************初始化*******************/
  22. void init()
  23. {
  24.         P1=0xff;                                   //初始化p1口,全设为1   
  25.         P3=0xff;
  26.         top_temp = 30;
  27.         bottom_temp = 1;
  28.         delayMs(500);         
  29.         initLCM( );  
  30.         initClock();
  31.         initTemp();
  32. //        initSpeakTemp();
  33.         BEEP = 1;
  34. }


  35. /***************the main funtion****************/
  36. void main(void)
  37. {
  38.         init( );                                   //初始化       

  39.     while (1)
  40.     {
  41.                 scan_key();
  42.                 delayMs(10);
  43.                 ReadTemperature( );
  44.                 if(temp > top_temp || temp < (char)bottom_temp) beep();
  45.                 displayTemp();
  46.                 if(DisplayTimeFlag)
  47.                         displayClock();
  48.                 else
  49.                         displayTempLim();
  50.                 delayMs(10);
  51.         }
  52. }
复制代码
  1. #include "speakTEMP.h"

  2. /*********初始化语音播报温度子程序**********/
  3. /*void initSpeakTemp()
  4. {
  5.          TCON = 0x01 ;   //触发方式为脉冲负边沿触发
  6.          EA=1;   
  7.      EX0=1;
  8. }
  9. */
  10. /*********语音播报温度子程序**********/
  11. void speak_temp(unsigned int temp_t){

  12.         int digit1,digit0;

  13.         digit1 = temp_t / 10;                //十位
  14.         digit0 = temp_t % 10;                //个位

  15.         if(digit1==0){
  16.                
  17.                 speak_isd1420(speak_world[digit0]);
  18.                 speak_isd1420(speak_world[11]);
  19.                
  20.         }
  21.         else{

  22.                 speak_isd1420(speak_world[digit1]);
  23.                 speak_isd1420(speak_world[10]);                        //播十
  24.                 if(digit0!=0)
  25.                         speak_isd1420(speak_world[digit0]);
  26.                 speak_isd1420(speak_world[11]);                        //播度

  27.         }

  28. }


  29. /***************语音播报(外部中断0)*******************/
  30. /*void sp_temp_control() interrupt 0 using 1
  31. {
  32.         EA = 0;
  33.         speak_temp(temp);
  34.         EA = 1;
  35. }*/
复制代码


所有资料51hei提供下载:
new.rar (803.17 KB, 下载次数: 65)


评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:821613 发表于 2022-3-19 07:36 | 只看该作者
有点路原理图嘛?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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