教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

光电传感器的测速 - 图文(6)

来源:网络收集 时间:2026-07-18
导读: 附录2 源程序 #include #include #define uchar unsigned char #define uint unsigned int sbit lcden=P2^6;//定义1602使能端 sbit lcdrs=P2^4; sbit lcdrw=P2^5; sbit a=P1^0;//对射传感器的信号输出端 sbit add=P

附录2 源程序

#include #include

#define uchar unsigned char #define uint unsigned int

sbit lcden=P2^6;//定义1602使能端 sbit lcdrs=P2^4; sbit lcdrw=P2^5;

sbit a=P1^0;//对射传感器的信号输出端 sbit add=P3^4;//按键加一变量 sbit jian=P3^5;//按键减一变量 sbit bj=P2^3;//蜂鸣器端口 char zhuan[16];//设置临时数组 uint num2;//每秒的转速

uint number=7;//设定转速的初值,在其基础上按键加一或按键减一 uint num=0;//转数变量

void Init_Timer0(void);

void delay(uint z)//延迟函数 {

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--); }

void write_com(uchar com)//1602写命令 {

lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }

void write_date(uchar date)//1602写数据 {

lcdrs=1; lcden=1; P0=date; delay(5); lcden=0; }

26

void LCD_Write_String(uchar x,uchar y,uchar *s) //向1602写字符串 {

if (y == 0) {

write_com(0x80 + x); //表示第一行 } else

{

write_com(0xC0 + x); //表示第二行 } while (*s) {

write_date( *s); s++; } }

void LCD_Write_Char(uchar x,uchar y,uchar Data) //向1602写字符 {

if (y == 0) {

write_com(0x80 + x); } else {

write_com(0xC0 + x); }

write_date( Data); }

void init() //初始化

{ bj=0; //蜂鸣器初始化 write_com(0x01); //1602初始化 lcdrw=0; lcden=0;

write_com(0x38); write_com(0x0e); write_com(0x06);

LCD_Write_Char(13,0,'n'); LCD_Write_Char(14,0,'/'); LCD_Write_Char(15,0,'s'); LCD_Write_Char(13,1,'n'); LCD_Write_Char(14,1,'/');

27

LCD_Write_Char(15,1,'s'); }

void main() { init(); while(1) {

if(a==1)//对射传感器检测障碍物 {num++;//计转数 while(a);}

sprintf(zhuan,\ LCD_Write_String(0,0,zhuan); Init_Timer0();//定时1s

sprintf(zhuan,\输出一秒的转速 LCD_Write_String(0,0,zhuan);

if(num2>=number)//转速超过设定值报警 bj=1;

if(num2

{ //按下相应的按键,1602LCD液晶显示屏显示相应的码值 delay(5); if(!add) {

number=number+1;

sprintf(zhuan,\打印温度值 LCD_Write_String(0,1,zhuan);//显示第二行 while(!add); } }

if(!jian)

{ //按下相应的按键,1602LCD液晶显示屏显示相应的码值 delay(5); if(!jian) {

number--;

sprintf(zhuan,\打印温度值

28

LCD_Write_String(0,1,zhuan);//显示第二行 while(!jian); } } } }

void Init_Timer0(void) {

TMOD |= 0x01; //使用模式1,16位定时器,使用\符号可以在使用多个定时器时不受影响

//TH0=0x00; //给定初值 //TL0=0x00;

EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 }

/*------------------------------------------------ 定时器中断子程序

------------------------------------------------*/ void Timer0_isr(void) interrupt 1 {

static unsigned int num1;

TH0=(65536-2000)/256; //重新赋值 2ms TL0=(65536-2000)%6;

num1++;

if(num1==500) //计时1s {

num1=0; num2=num;

num=0; //读标志位置1 } }

29

…… 此处隐藏:305字,全部文档内容请下载后查看。喜欢就下载吧 ……
光电传感器的测速 - 图文(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/413295.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)