找回密码
 立即注册

QQ登录

只需一步,快速开始

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

1302+18b20+超声波测距+12864综合程序

[复制链接]
跳转到指定楼层
楼主
觉得不错赞一个


单片机源程序如下:
  1. #include<reg52.h>
  2. #include<12864.h>
  3. #include<1302.h>
  4. #include <DS18B20.h>
  5. #include <CSB.h>

  6. unsigned char  table1[]="                ";
  7. unsigned char  table2[]="                ";
  8. unsigned char  table3[]="室内温度:";
  9. unsigned char  table4[]="测距:";

  10. unsigned char time_buf[8]={40,14,2,16,23,59,50,7};//空年月日时分秒周
  11. unsigned char time_buf1[8];
  12. unsigned char num, bai,shi,ge,i;
  13. unsigned int temp1;
  14.        
  15. long int  distance=0;
  16. unsigned char count;

  17. void init_parameter(void)//初始化
  18. {
  19.         echo=0;
  20.         trig=0;
  21.         count=0;
  22.         distance=0;
  23. }               

  24. void measure_distance(void)//计算距离
  25. {
  26.         uchar I;
  27.         uint h,y;
  28.         TR0=1;
  29.         while(echo)
  30.         {
  31.                 ;
  32.         }
  33.         TR0=0;
  34.         I=TL0;
  35.         h=TH0;
  36.         y=(h<<8)+I;
  37.         y=y-0xfc66;
  38.         distance=y+1000*count;
  39.         TL0=0X66;
  40.         TH0=0XFC;
  41.        
  42.         distance=0.17*distance;
  43. }

  44. void display(long int num)
  45. {
  46.         unsigned int qian,bai,shi,ge;
  47.         if((num>5000)||(num==0))
  48.         {
  49.                 qian=15;
  50.                 bai=15;
  51.                 shi=10;
  52.                 ge=15;
  53.         }
  54.         else
  55.         {
  56.                 qian=num/1000;
  57.                 bai=(num/100)%10;
  58.                 shi=(num/10)%10;
  59.                 ge=num%10;               
  60.                 LCD_Write_String(4,1,table4);
  61.           write_data(qian+0x30);       
  62.                 write_data(bai+0x30);       
  63.                 write_data(shi+0x30);
  64.                 write_data('.');
  65.                 write_data(ge+0x30);
  66.                 write_data('C');
  67.                 write_data('M');
  68.         }
  69. }

  70. void disp(void)
  71. {
  72.          table1[3]='2';
  73.          table1[4]='0';
  74.          table1[5]='0'+time_buf1[1]/10;//显示年月日
  75.          table1[6]='0'+time_buf1[1]%10;
  76.          table1[7]='-';
  77.          table1[8]='0'+time_buf1[2]/10;
  78.          table1[9]='0'+time_buf1[2]%10;
  79.          table1[10]='-';
  80.          table1[11]='0'+time_buf1[3]/10;
  81.          table1[12]='0'+time_buf1[3]%10;       
  82.          LCD_Write_String(1,1,table1);
  83.        
  84.          table2[0]='0'+time_buf1[4]/10;//显示时分秒
  85.          table2[1]='0'+time_buf1[4]%10;
  86.          table2[2]='-';
  87.          table2[3]='0'+time_buf1[5]/10;
  88.          table2[4]='0'+time_buf1[5]%10;
  89.          table2[5]='-';
  90.          table2[6]='0'+time_buf1[6]/10;
  91.          table2[7]='0'+time_buf1[6]%10;
  92.          table2[11]='w';
  93.          table2[12]='e';
  94.          table2[13]='e';
  95.          table2[14]='k';
  96.          table2[15]='0'+time_buf1[7]%10;
  97.          LCD_Write_String(2,1,table2);
  98.         }       
  99.        
  100. void main(void)
  101. {
  102.         P0=0X00;
  103.         dula=0;
  104.         wela=0;
  105.        
  106.         lcdinit();
  107.         init_parameter();
  108.         init_timer();
  109.         delayms(15);
  110.         ds1302_init();
  111.         ds1302_write_time();
  112.        
  113.         while(1)
  114.         {
  115.                 ds1302_read_time();
  116.                 disp();
  117.                
  118.                 temp1=tmp();
  119.                 bai=temp1/100;
  120.                 shi=temp1%100/10;
  121.                 ge=temp1%10;
  122.           LCD_Write_String(3,1,table3);
  123.                 write_data('+');
  124.                 write_data(bai+0x30);       
  125.                 write_data(shi+0x30);
  126.                 write_data('.');
  127.                 write_data(ge+0x30);                
  128.                 write_data('C');
  129.                 tmpchange();
  130.                
  131.                 trig_supersonic();
  132.                 while(echo==0)
  133.                 {
  134.                         ;
  135.                 }
  136. ……………………

  137. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
综合程序.zip (60.95 KB, 下载次数: 38)


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

使用道具 举报

沙发
ID:88279 发表于 2018-3-5 21:18 来自手机 | 只看该作者
学习了学习了!!!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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