基于单片机的超声波测距系统课程设计.doc

基于单片机的超声波测距系统课程设计.doc

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT 1 PAGE \* MERGEFORMAT 1 课程设计 题目: 基于单片机的超声波测距仪 PAGE \* MERGEFORMAT 2 PAGE \* MERGEFORMAT 2 目 录 TOC \o 1-4 \h \u #define uchar unsigned char #define uint unsigned int //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码 //数码管位选定义 uchar code smg_we[]={0xe0,0xd0,0xb0,0x70}; uchar dis_smg[8] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; sbit smg_we1 = P3^4; //数码管位选定义 sbit smg_we2 = P3^5; sbit smg_we3 = P3^6; sbit smg_we4 = P3^7; sbit c_send = P3^2; //超声波发射 sbit c_recive = P3^3; //超声波接收 uchar flag_hc_value; //超声波中间变量 sbit beep = P2^3; //蜂鸣器IO口定义 bit flag_key_b_en,flag_key_set_en; //按键蜂鸣器使能 uchar smg_i = 3; //显示数码管的个位数 bit flag_300ms ; bit key_500ms ; long distance; //距离 uint set_d; //距离 bit flag_csb_juli; //超声波超出量程 uint flag_time0; //用来保存定时器0的时候的 // 按键的IO变量的定义 uchar key_can; //按键值的变量 uchar zd_break_en,zd_break_value; //自动退出设置界面 uchar menu_shudu = 10; //用来控制连加的速度 bit flag_lj_en; //按键连加使能 bit flag_lj_3_en; //按键连3次连加后使能 加的数就越大了 uchar key_time,flag_value; //用做连加的中间变量 uchar menu_1; //菜单设计的变量 uchar a_a; /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;iq;i++) for(j=0;j120;j++); } /***********************处理距离函数****************************/ void smg_display() { dis_smg[0] = smg_du[distance % 10]; dis_smg[1] = smg_du[distance / 10 % 10]; dis_smg[2] = smg_du[distance / 100 % 10] 0x7f; } /******************把数据保存到单片机内部eepom中******************/ void write_eepom() { SectorErase(0x2000); byte_write(0x2000, set_d % 256); byte_write(0x2001, set_d / 256); byte_write(0x2058, a_a); } /******************把数据从单片机内部eepom中读出来*****************/ void read_eepom() { set_d = byte_read(0x2001); set_d = 8; set_d |= byte_read(0x2000); a_a = byte_read(0x2058);

文档评论(0)

weidameili + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档