版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验7 超声波测距实验(1)实验目的l 掌握超声波测距的原理l 掌握超声波测距的软件编程(2)实验器材电源POWER模块、测距&振动&压力&角度模块、主控制器模块、LCD1602、超声波模块、连接线(3)实验程序ceju#include #include 1602.h#include delay.h#define uchar unsigned char#define uint unsigned int/#define Trig P26/#define Echo P27void Time0_Init() TMOD |=0X01; /定时0,工作方式1,16位定时器 TH0=0; TL0=0; E
2、T0=1; /允许T0中断 EA=1;/开启总中断 sbit Trig=P26; sbit Echo=P27; double t; int s; int ge; int shi; int bai;void main(void) Time0_Init(); lcd_init(); while(1) Trig=0; Trig=1; delay_ms(1); Trig=0; while(Echo=0); TR0=1; while(Echo=1) TR0=0; t=(double)(TH0*256+TL0)*12.0/11.0592; TH0=0; TL0=0; s=(int)340*t/20000;
3、 ge=s%10; s=s/10; shi=s%10; s=s/10; bai=s; delay_ms(100); lcd_display_str(0,0,s=); lcd_1602_display_num(1,1,bai); lcd_1602_display_num(2,1,shi); lcd_1602_display_num(3,1,ge); (4)测试步骤1. 将超声波模块插入测距&振动&压力&角度传感器模块J5,按表1的连线关系连好线。给模块上电。2. 编写程序,并下载到主控制器。3. 用物体挡住超声波模块,观察液晶显示的距离。移动物体,观察液晶显示的距离是否与实际吻合。(5)实验结果
4、液晶显示屏上显示超声波模块距离阻挡物的距离(直线距离),最大可到400cm左右。实验8 PWM直流电机调速实验(1)实验目的l 了解单片机硬件PWM的配置方法l 掌握直流电机速度的控制方法(2)实验器材电源POWER模块、CPU_51模块、速度&加速度度传感器模块、LCD1602、超声波模块、连接线(3)实验程序main.c#include 1602.h#include delay.h#include int ge,shi,bai,age,ashi; sbit KEY1=P14;int i=0;int a;/定时器初始化void Time0_Init()TMOD |= 0X01; /定时0,工
5、作方式1,16位定时器TH0 = (65536-46080)/256; /定时时间:50ms,50ms后进入中断TL0 = (65536-46080)%256;ET0 = 1; /允许T0中断TR0 = 1; /启动定时器0EA = 1; /开启总中断void Time1_Init()TMOD |= 0x50; /定时器1,工作方式1,16位计数器TH1 = 0; /计数器赋初值TL1 = 0;TR1 = 1; /启动计数器int count,speed = 100 ;/*定时器0中断函数count用于计数,计满即是1s,speed变量存1s内得到的脉冲数。*/void Time0_Int()
6、 interrupt 1count+;/lcd_1602_display_num(1,0,2); if(count 19)speed = TH1*256+TL1; /取得1s,计数器1得到的脉冲数count = 0;TH1 = 0;TL1 = 0; TH0 = (65536-46080)/256; /定时器0,重新赋初值TL0 = (65536-46080)%256; /*PWM初始化PWM的频率是11.0592/256 MHZ,通过改变CCAP0H和CCAP0L的值,可以改变PWM的占空比。*/void PWM_Init()/PCA工作模式寄存器,设置PCA/PWM时钟源输入为 sysclk
7、/12 关闭PCA溢出计数中断CMOD = 0X00;CCON = 0X00; /PCA控制寄存器CCAPM0 = 0X42; /PCA比较/捕获寄存器,设置P1.3 pwm输出,无中断CL = 0X00; /PCA的16位计数器CH = 0X00;/PCA捕获/比较寄存器,当PCA模块用于PWM模式时,他们用来控制输出的占空比CCAP0L = 0XC0;/占空比25% CCAP0H=CCAP0L= 0X80时占空比50% 0(?) 0X40时 75%CCAP0H = 0XC0;CR = 1; /启动PCA定时器 int b;void main(void)int test_li=0 ;lcd_
8、init();Time0_Init();Time1_Init();PWM_Init();while(1)while(KEY1);/开关不闭合不改变 if(i=0)CCAP0L = 0XC0; CCAP0H = 0XC0; a=25;else if(i=1)CCAP0L = 0X80; CCAP0H = 0X80; a=50;else CCAP0L = 0X40; CCAP0H = 0X40; a=75; b=speed;ge=b%10;b=b/10;shi=b%10;bai=b/10;age=a%10;ashi=a/10; lcd_display_str(0,1,speed=); lcd_16
9、02_display_num(7,1,bai); lcd_1602_display_num(8,1,shi); lcd_1602_display_num(9,1,ge);lcd_display_str(0,0,zhankon=);lcd_1602_display_num(9,0,age);lcd_1602_display_num(10,0,ashi); i+;i=i%3;delay_ms(1000);(4)测试步骤1. 按照连线方法连线。2. 自行编写主程序3. 给系统上电。4. 观察液晶屏显示的转速是否正确,连续按下轻触开关KEY1,观察液晶屏显示的转速和占空比是否变化。(5)实验结果液晶显
10、示屏上第一行显示占空比,第二行显示转速。占空比随按键按下变化,同时转速也发生变化。占空比大时转速快。实验9 红外对管转速测量实验(1)实验目的l 了解电机驱动的原理l 了解红外对管的工作原理l 掌握使用红外对管测速的方法(2)实验器材电源POWER模块、红外传感器模块、主控制器模块、LCD1602、超声波模块、连接线(3)实验程序main.c#include 1602.h#include delay.h#include int ge,shi,bai,age,ashi; sbit KEY1=P14;int i=0;int a;/定时器初始化void Time0_Init()TMOD |= 0X0
11、1; /定时0,工作方式1,16位定时器TH0 = (65536-46080)/256; /定时时间:50ms,50ms后进入中断TL0 = (65536-46080)%256;ET0 = 1; /允许T0中断TR0 = 1; /启动定时器0EA = 1; /开启总中断void Time1_Init()TMOD |= 0x50; /定时器1,工作方式1,16位计数器TH1 = 0; /计数器赋初值TL1 = 0;TR1 = 1; /启动计数器int count,speed = 100 ;/*定时器0中断函数count用于计数,计满即是1s,speed变量存1s内得到的脉冲数。*/void Ti
12、me0_Int() interrupt 1count+;/lcd_1602_display_num(1,0,2); if(count 19)speed = TH1*256+TL1; /取得1s,计数器1得到的脉冲数count = 0;TH1 = 0;TL1 = 0; TH0 = (65536-46080)/256; /定时器0,重新赋初值TL0 = (65536-46080)%256; /*PWM初始化PWM的频率是11.0592/256 MHZ,通过改变CCAP0H和CCAP0L的值,可以改变PWM的占空比。*/void PWM_Init()/PCA工作模式寄存器,设置PCA/PWM时钟源输
13、入为 sysclk/12 关闭PCA溢出计数中断CMOD = 0X00;CCON = 0X00; /PCA控制寄存器CCAPM0 = 0X42; /PCA比较/捕获寄存器,设置P1.3 pwm输出,无中断CL = 0X00; /PCA的16位计数器CH = 0X00;/PCA捕获/比较寄存器,当PCA模块用于PWM模式时,他们用来控制输出的占空比CCAP0L = 0XC0;/占空比25% CCAP0H=CCAP0L= 0X80时占空比50% 0(?) 0X40时 75%CCAP0H = 0XC0;CR = 1; /启动PCA定时器#define N=100int b;void main(voi
14、d)Time0_Init();Time1_Init();lcd_init(); while(1)b=speed/N; ge=b%10;b=b/10;shi=b%10;bai=b/10;lcd_display_str(0,1,v=); lcd_1602_display_num(1,0,bai); lcd_1602_display_num(2,0,shi); lcd_1602_display_num(3,0,ge); delay_ms(1000);(4)测试步骤1. 按照实验原理编写程序,编译生成HEX 文件。2. 按照连线方法连线。3. 给系统上电。4. 通过串口给单片机烧写程序。5. 观察液晶
15、屏显示的转速是否正确,旋转转速调节旋钮,观察液晶屏显示的转速值是否变化。若否,分析原因,重复测试步骤。(5)实验结果液晶显示屏上显示转速,旋转转速调节旋钮,液晶显示屏上显示的转速会随着旋钮的旋转而改变。实验10 18B20 温度测量实验(1)实验目的l 研究温度传感器DS18B20 的原理和使用l 学习单总线通信方式的使用方法。(2)实验器材电源POWER模块、温湿度传感器模块、主控制器模块、LCD1602、超声波模块、连接线(3)实验程序main.c#include #include 1602.h#include delay.h#define uchar unsigned char#defi
16、ne uint unsigned intsbit DQ = P13;/* DS18B20 */void delay_18B20(uint n) while(n-); void DS18B20_Reset() /DS18B20 的复位程序 DQ = 1; /DQ 复位 delay_18B20(40); /延时 DQ = 0; /DQ 拉低 delay_18B20(800); /精确延时大于480us DQ = 1; /拉高 delay_18B20(10); while(DQ); delay_18B20(200);uchar DS18B20_Read() /DS18B20 的读数据程序 unsig
17、ned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(40); return(dat);void DS18B20_Write(uchar wdata) /DS18B20 的写数据程序 unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(50); DQ = 1; wdata=1; uint disdata7; uint
18、 tflag; unsigned int tvalue; void DS18B20_Display(unsigned int tvalue) uchar flagdat; disdata0=tvalue/1000; /百位数 disdata1=tvalue%1000/100; /十位数 disdata2=tvalue%100/10; /个位数 disdata3 = .; disdata4=tvalue%10; /小数位 disdata5=0xDF; disdata6=C+0x30; / Write_String(0x80, Current Temp :); lcd_display_str(0,
19、0,Current Temp :);/lcd_1602_display_num(2,1,disdata0); lcd_1602_display_num(3,1,disdata1);lcd_1602_display_num(4,1,disdata2);/lcd_1602_display_num(5,1,disdata3);/lcd_1602_display_num(6,1,disdata4);/lcd_1602_display_num(7,1,disdata5);/lcd_1602_display_num(8,1,disdata6); if(tflag=0) flagdat=0x20; /正温度
20、不显示符号 else flagdat=0x2d; /负温度显示负号:- if(disdata0=0x30) disdata0=0x20; /如果百位为0,不显示 if(disdata1=0x30) disdata1=0x20; /如果百位为0,十位为0 也不显示 /lcd_1602_display_num(1,1,flagdat); /Write_Char(0xc0,flagdat); /显示符号 /Write_String(0xc1,disdata); void main(void) while(1) lcd_init(); DS18B20_Reset(); /DS18B20_Write(0xCC); /DS18B20_Write(0x44); /delay_18B20(10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 县级中医医院医疗服务能力基本标准(试行)
- 消防安全知识竞赛
- 线上电商运营关键绩效指标合作协议
- 烟草专卖产品出口合作协议2026
- 摄影后期专业后期制作合同2026
- 写作培训师培训合同
- 统编版(2024)九年级上册道德与法治6.2 民主政治不断发展 教案
- 价值主张2026年隐私保护协议
- 知识产权侵权诉讼代理合同
- 安徽合肥市2025-2026学年高一(下)期末考试英语试卷
- 《防治煤与瓦斯突出规定》培训课件
- 阿甘正传全部台词中英对照
- 吉林省长春市(2024年-2025年小学六年级语文)统编版期末考试(下学期)试卷及答案
- 核电厂常规岛及辅助配套设施建设施工质量验收规程 第6部分 管道
- 国际标准《风险管理指南》(ISO31000)的中文版
- MOOC 国际商务-暨南大学 中国大学慕课答案
- (高清版)DZT 0004-2015 重力调查技术规范(150 000)
- 交通运输安全生产责任保险
- 《行政强制法》课件
- 苏教版数学五年级上册 第七单元测试卷(含答案)
- 重庆国隆农业科技产业发展集团有限公司招聘考试真题2022
评论
0/150
提交评论