标题: 超声波测身高的单片机源码 [打印本页]

作者: 1023445423    时间: 2018-4-22 18:52
标题: 超声波测身高的单片机源码
超声波测距程序




单片机源程序如下:

  1. /*******************************************************************************
  2. * 文件名 : MAIN.C

  3. * 版本     作者      日期        说明
  4. * V1.0     苏敏      初始版本

  5. * 描述:  MCU: AT89C52   晶振: 11.0592 MHz
  6.            
  7. *******************************************************************************/

  8. #include <reg52.h>
  9. //#include "uart.h"        
  10. #include <intrins.h>
  11. #include "csb.h"


  12. unsigned char code LedChar[] = {
  13.     0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
  14.     0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
  15. };
  16. unsigned char LedBuff[4] = {
  17.     0xC0, 0xC0, 0xC0, 0xC0
  18. };
  19. unsigned char i=0;
  20. void delay_ms(unsigned int x)
  21. {
  22.         unsigned char i;
  23.   while(x--)
  24.   for(i=0;i<120;i++);
  25. }
  26. void date_kandle(unsigned int a)   //????
  27. {
  28.         unsigned int date;
  29.         date=a;
  30.         LedBuff[0]=date%10;
  31.         date/=10;
  32.         LedBuff[1]=date%10;
  33.         date/=10;
  34.         LedBuff[2]=date%10;
  35.         date/=10;
  36.         LedBuff[3]=date;
  37.         
  38. }
  39. void time1_Init()
  40. {
  41.         TMOD|=0X10;
  42.         TH1=0XF0;
  43.         TL1=0X60;
  44.         ET1=1;
  45.         EA=1;
  46.         TR1=1;
  47.         
  48. }

  49. void SMG_show() interrupt 3
  50. {
  51.         TH1=0XF0;
  52.         TL1=0X60;
  53.                   
  54.                 if(i==4) i=0;
  55.                         P1=1<<i;
  56.                
  57.                         P0=LedChar[LedBuff[i]];
  58.                         i++;
  59.    
  60. }

  61. /******延时大约1S的函数*******/
  62. void Delay999ms()                //@11.0592MHz
  63. {
  64.         unsigned char i, j, k;

  65.         _nop_();
  66.         i = 7;
  67.         j = 0;
  68.         k = 40;
  69.         do
  70.         {
  71.                 do
  72.                 {
  73.                         while (--k);
  74.                 } while (--j);
  75.         } while (--i);
  76. }

  77. /************主函数**********/
  78. void main(void)
  79. {
  80.         char i;
  81.   //UartInit();
  82. time1_Init();        //串口初始化
  83.   while(1)
  84.   {
  85.                 date_kandle(csbProcess_F());
  86.                 Delay999ms();
  87.                
  88.          // UART_Put_Num(csbProcess_F());    //显示超声波测得的距离
  89.         //        UART_Send_Str("  cm");           //显示"  cm"
  90.         //        UART_Send_Enter();               //回车换行
  91.    // Delay999ms();                    //显示大约1S,防止在串口上显示过快
  92.   }
  93. }


复制代码

所有资料51hei提供下载:
超声波测距.zip (271.51 KB, 下载次数: 14)



作者: 过过过儿    时间: 2018-11-12 16:59
为什么有错误呢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1