传感器实验.docx
- 文档编号:9249836
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:33
- 大小:21.71KB
传感器实验.docx
《传感器实验.docx》由会员分享,可在线阅读,更多相关《传感器实验.docx(33页珍藏版)》请在冰豆网上搜索。
传感器实验
1.数码管显示
ORG0000H;
LJMPSTART;
ORG0040H;
START:
;主方法
P4SWEQU0BBH;
MOVP4SW,#30H;
P4EQU0C0H;
CLRP4.4;
CLRP4.5;
MOVR0,#00H;
MOVR1,#00H;
MOVR2,#00H;
MOVTMOD,#10H
MOVIE,#00H;初始化
NEXT:
JNBP3.6,NEXT;
ACALLDISPLAY;
ACALLINCREASE;
ACALLDELAY;
LJMPNEXT;
DISPLAY:
;显示累加器内容
MOVDPTR,#TAB;
MOVA,R0;
MOVCA,@A+DPTR;
CPLA;
MOVR7,#08H;
LOOP1:
RLCA;
MOVP4.5,C;
CPLP4.4;
NOP;
CPLP4.4;
DJNZR7,LOOP1;
MOVA,R1;
MOVCA,@A+DPTR;
CPLA;
MOVR7,#08H;
LOOP2:
RLCA;
MOVP4.5,C;
CPLP4.4;
NOP;
CPLP4.4;
DJNZR7,LOOP2;
MOVA,R2;
MOVCA,@A+DPTR;
CPLA;
MOVR7,#08H;
LOOP3:
RLCA;
MOVP4.5,C;
CPLP4.4;
NOP;
CPLP4.4;
DJNZR7,LOOP3;
RET;
INCREASE:
;计数
INCR0;
CJNER0,#0AH,ACED;
MOVR0,#00H;
INCR1;
CJNER1,#0AH,ACED;
MOVR1,#00H;
INCR2;
CJNER2,#0AH,ACED;
MOVR2,#00H;
MOVR1,#00H;
MOVR0,#00H;
ACED:
RET;
DELAY:
;延时
MOVR7,#02H;
DELAYLOOP1:
MOVTH1,#03CH;
MOVTL1,#0B0H;
CLRTF1;
SETBTR1;
DELAYLOOP2:
JNBTF1,DELAYLOOP2;
DJNZR7,DELAYLOOP1;
RET;
TAB:
;数模表
db0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;
END;
2.步进电机原理及应用
ORG0000H
LJMPSTART
ORG000BH
LJMPT_INT
ORG0050H
START:
;程序开始
P4EQU0C0H
MOVP4,#0FFH
P4SWEQU0BBH
MOVP4SW,#70H
DATEQUP4.5
CLKEQUP4.4
SW1EQUP3.6
SW2EQUP3.7
CE1EQUP1.3
CE2EQUP1.4
IN1EQUP3.2
IN2EQUP1.0
SETBCE1
SETBCE2
CLRIN1
CLRIN2
MOVR6,#0;步数计数
MOVR5,#0
MOVR4,#0
MOVTMOD,#01H;设定T1工作在MODE1工作模式
LOOP:
MOVA,R6;对个位操作
MOVDPTR,#TAB;把地址表中的地址赋值给当前指针
MOVCA,@A+DPTR;按地址表查找
LCALLDIS;调用显示函数
MOVA,R5;对十位操作
MOVDPTR,#TAB;把地址表中的地址赋值给当前指针
MOVCA,@A+DPTR;按地址表查找
LCALLDIS;调用显示函数
MOVA,R4;对百位操作
MOVDPTR,#TAB;把地址表中的地址赋值给当前指针
MOVCA,@A+DPTR;按地址表查找
LCALLDIS;调用显示函数
LOP:
JBSW2,POS;选择转动的方向
Reverse:
;逆序
JNBIN1,LP4
JNBIN2,LP5
CPLIN1
JMPLL;01
LP4:
JNBIN2,LP6
CPLIN2
JMPLL;00
LP5:
CPLIN2
JMPLL;11
LP6:
CPLIN1
JMPLL;10
POS:
;正序
JNBIN1,LP1
JNBIN2,LP2
SETBIN1
CLRIN2
JMPLL;10
LP1:
JNBIN2,LP3
SETBIN1
SETBIN2
JMPLL;11
LP2:
CLRIN1
CLRIN2
JMPLL;00
LP3:
CLRIN1
SETBIN2;01
LL:
INCR6
CJNER6,#10,LOOP1
INCR5;十位加1
MOVR6,#0;个位清0
CJNER5,#10,LOOP1
INCR4;百位加1
MOVR5,#0;十位清0
CJNER4,#10,LOOP1
MOVR4,#0
LOOP1:
LCALLT_INT;
JMPLOOP
DIS:
;显示
MOVR0,#8;每一位用8位表示
LP:
CLRCLK;输出低电平
RLCA;循环左移
MOVDAT,C
SETBCLK;置位时钟,开始输出
DJNZR0,LP;减1不为0,跳转循环
RET
;定时器中断开始
T_INT:
;10转/分
MOVR3,#6H
TT1:
MOVTL0,#LOW(65536-41667);装入低位
MOVTH0,#HIGH(65536-41667);装入高位
SETBTR0;启动T1开始计数
JNBTF0,$;T1没有溢出,等待
CLRTF0
JNBSW1,T1_INT;按下开关SW1时,SW1=0,转速为60转/分
DJNZR3,TT1
T1_INT:
RETI;
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
3.直流电机脉宽调制调速
ORG0000H
LJMPSTART
ORG0003H
LJMPT_INT0
ORG000BH
LJMPT_INT
ORG001BH
LJMPT_INT1
ORG0050H
START:
;程序开始
P4EQU0C0H
MOVP4,#0FFH
P4SWEQU0BBH
MOVP4SW,#70H
S1EQUP3.6
S2EQUP3.7
DATEQUP4.5
CLKEQUP4.4
MOVR0,#0H
MOVR1,#0H;实际转速
MOVR2,#050H;目预测转速,初值为100
MOVR3,#014H;R5=20,每50ms减1,控制时间为1s,用来求直流电机每秒的转速
MOVR4,#064H;R6=100,表示N。
MOVR5,#0H
MOVR6,#0H
MOVR7,#0H
MOV71H,#0H
MOV75H,#0H
MOV76H,#0C8H
MOV77H,#0H
;MOV78H,0H
MOVTMOD,#10H;设定T1工作在MODE1工作模式
MOVTH1,#3CH;50ms
MOVTL1,#0B0H;50ms
SETBET1
SETBTR1;启动T1
MOVTH0,#0EFH;1ms
MOVTH0,#0FFH;1ms
SETBET0
SETBTR0;启动T0
SETBEX0;外部中断0中断允许/禁止标志位
SETBIT0;触发方式标志,为1时是下降沿触发
SETBEA;开中断
CLRP1.1;P1.1初始状态
YUCE:
;预测转速调控
JNBS1,CY1;按下S1=0;跳转到预测转速加1
JNBS2,CY2;按下S2=0;跳转到预测转速减1
LJMPCOMPT
CY1:
INCR2
LJMPLL1
CY2:
DECR2
LJMPLL1
COMPT:
CJNER3,#0H,COMPT;等待1s
MOVA,R1
MOVR1,#0H
MOV71H,A;记录实际转速
MOVR3,#14H
CLRC
SUBBA,R2;比较实际转速和预期转速
CJNEA,#0H,AA
LJMPLL;实际转速等于预测转速,则显示转速
AA:
JCAA1
CLRC
DECR4;;减小N,增加p1.3接口0的输出时间
JMPLL
AA1:
;实际转速小于预期转速
CLRC
INCR4;;增加N,减小p1.3接口0的输出时间
JMPLL
LL:
;实际转速
;MOVR0,77H
;INCR0
;CJNER0,#2,LL1
;MOV77H,#0H
MOVA,71H
JMPCOUNT
LL1:
MOVA,R2;预期转速
COUNT:
MOVB,#100
DIVAB
MOV72H,A
XCHA,B
MOVB,#10
DIVAB
MOV73H,A
MOV74H,B
MOVR5,72H
MOVR6,73H
MOVR7,74H
CLRA
MOVA,R7;对个位操作
MOVDPTR,#TAB;把地址表中的地址赋值给当前指针
MOVCA,@A+DPTR;按地址表查找
LCALLDIS;调用显示函数
MOVA,R6;对十位操作
MOVDPTR,#TAB;把地址表中的地址赋值给当前指针
MOVCA,@A+DPTR;按地址表查找
LCALLDIS;调用显示函数
MOVA,R5;对百位操作
MOVDPTR,#TAB;把地址表中的地址赋值给当前指针
MOVCA,@A+DPTR;按地址表查找
LCALLDIS;调用显示函数
MOVR5,#0H
MOVR6,#0H
MOVR7,#0H
LJMPYUCE
DIS:
;显示
MOV78H,#08H;每一位用8位表示
LP:
CLRCLK;输出低电平
RLCA;循环左移
MOVDAT,C
SETBCLK;置位时钟,开始输出
DJNZ78H,LP;减1不为0,跳转循环
RET
T_INT0:
INCR1
RETI
T_INT:
MOVTH0,#0EFH;5ms
MOVTL0,#0FFH;5ms
PUSHACC
PUSHPSW
MOVA,75H
ADDA,R4
MOV75H,A
SUBBA,76H
MOVP1.1,C
JCDD
ADDA,76H
DD:
POPPSW
POPACC
RETI
T_INT1:
MOVTH1,#3CH;50ms
MOVTL1,#0B0H;
DECR3
RETI
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
4.LED点阵显示屏
#include
unsignedcharcol1[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//行扫描显示编码
unsignedcharcol2[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
unsignedcharrow1[]={0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x3F,0x20,0x00,0x00};//列扫描显示编码
unsignedcharrow2[]={0x00,0x3E,0xA2,0x92,0x92,0x8A,0x92,0x92,0xA2,0xA2,0XA2,0x96,0x8A,0x82,0x02,0x02};
sbitP00=P0^0;//D.X,数据线
sbitP01=P0^1;//CK.X,数据输入时钟线
sbitP02=P0^2;//CK.XL,输出存储器锁存时钟
sbitP03=P0^3;//D.Y
sbitP04=P0^4;//EX.Y
sbitP05=P0^5;//CK.Y
sbitP06=P0^6;//CK.YL
sbitP07=P0^7;//EX.X,输出使能
voidsend(unsignedcharm)
{
unsignedcharnum,c;
P07=1;
num=row1[m];
for(c=0;c<8;c++)
{
P01=0;
P00=num&0x80;//按位发送
P01=1;//SRCK上升沿,数据移位
num<<=1;
}
num=row2[m];
for(c=0;c<8;c++)
{
P01=0;
P00=num&0x80;//按位发送
P01=1;
num<<=1;
}
P02=0;//RCK上升沿,移位寄存器的数据进入数据存储寄存器
P02=1;
P07=0;//G为低电平,允许输出
P04=1;
num=col1[m];
for(c=0;c<8;c++)
{
P05=0;
P03=num&0x80;//按位发送
P05=1;//SRCK上升沿,数据移位
num<<=1;
}
num=col2[m];
for(c=0;c<8;c++)
{
P05=0;
P03=num&0x80;//按位发送
P05=1;
num<<=1;
}
P06=0;//RCK上升沿,移位寄存器的数据进入数据存储寄存器
P06=1;
P04=0;//允许输出
}
voiddelay_t(unsignedintt)//延时t毫秒
{
unsignedchari;
for(;t;t--)
i=255;
if(i>0)
{
i--;
}
}
voidmain(void)
{
unsignedchari,j;
while
(1)
{
for(j=0;j<16;j++)
{
send(j);
for(i=0;i<10;i++)
delay_t(10);
}
}
}
5.重量测量
//字模方式:
列行式,逆向,16*16
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineLCD_databusP2//LCD8bitdatabus
ucharnum;
sbitRS=P3^5;//寄存器选择信号
sbitRW=P3^4;//读/写操作选择信号,高电平读,低电平写
sbitEN=P3^3;//使能信号
sbitCS1=P1^7;//左半屏显示信号,低电平有效
sbitCS2=P1^6;//右半屏显示信号,低电平有效
uintloop=0;//页面
uinttimes=0;//延时计数
ucharcodefa[]={0x02,0x82,0xE2,0x5E,0x42,0xC2,0x02,0x10,0x10,0x10,0xFF,0x10,0x10,0x18,0x10,0x00,0x02,0x01,0x7F,0x10,0x10,0x3F,0x01,0x21,0x79,0x27,0x21,0x29,0x31,0x61,0x01,0x00};/*"砝",0*/
ucharcodema[]={0x02,0x82,0xE2,0x5E,0x42,0xC2,0x00,0x02,0xFA,0x82,0x82,0x82,0xFE,0x80,0x00,0x00,0x01,0x00,0x7F,0x10,0x10,0x3F,0x00,0x04,0x04,0x04,0x44,0x84,0x40,0x3F,0x00,0x00};/*"码",1*/
ucharcodezhong[]={0x08,0x08,0x0A,0xEA,0xAA,0xAA,0xAA,0xFF,0xA9,0xA9,0xA9,0xE9,0x08,0x08,0x08,0x00,0x40,0x40,0x48,0x4B,0x4A,0x4A,0x4A,0x7F,0x4A,0x4A,0x4A,0x4B,0x48,0x40,0x40,0x00};/*"重",2*/
ucharcodeliang[]={0x40,0x40,0x40,0xDF,0x55,0x55,0x55,0xD5,0x55,0x55,0x55,0xDF,0x40,0x40,0x40,0x00,0x40,0x40,0x40,0x57,0x55,0x55,0x55,0x7F,0x55,0x55,0x55,0x57,0x50,0x40,0x40,0x00};/*"量",3*/
ucharcodewei[]={0x00,0x10,0x10,0x12,0x14,0x1C,0x10,0xF0,0x9F,0x10,0x10,0x10,0x10,0xF8,0x10,0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x11,0x26,0x40,0x20,0x1F,0x00,0x00};/*"为",4*/
ucharcodemao[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*":
",5*/
ucharcodeling[]={0x00,0x00,0x00,0xF8,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x1F,0x00,0x00,0x00,0x00};/*"0",0*/
ucharcodeyi[]={0x00,0x00,0x00,0x00,0x00,0x08,0x04,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x7F,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00};/*"1",1*/
ucharcodeer[]={0x00,0x00,0x00,0x18,0x04,0x02,0x02,0x02,0x82,0x82,0x84,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x44,0x42,0x41,0x41,0x40,0x40,0x40,0x70,0x00,0x00,0x00,0x00};/*"2",2*/
ucharcodesan[]={0x00,0x00,0x00,0x0C,0x02,0x02,0x02,0x82,0x82,0x42,0x22,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x40,0x40,0x40,0x40,0x40,0x41,0x22,0x1C,0x00,0x00,0x00,0x00};/*"3",3*/
ucharcodesi[]={0x00,0x00,0x00,0x00,0x80,0x60,0x1C,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0A,0x09,0x08,0x48,0x48,0x7F,0x48,0x48,0x08,0x00,0x00,0x00,0x00};/*"4",4*/
ucharcodewu[]={0x00,0x00,0x00,0xFE,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x1F,0x00,0x00,0x00,0x00};/*"5",5*/
ucharcodeliu[]={0x00,0x00,0x00,0xF8,0x04,0x82,0x82,0x82,0x82,0x82,0x04,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x21,0x40,0x40,0x40,0x40,0x40,0x21,0x1E,0x00,0x00,0x00,0x00};/*"6",6*/
ucharcodeqi[]={0x00,0x00,0x00,0x0E,0x02,0x02,0x02,0x02,0x82,0x42,0x32,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"7",7*/
ucharcodeba[]={0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0x44,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x21,0x40,0x40,0x40,0x40,0x40,0x21,0x1E,0x00,0x00,0x00,0x00};/*"8",8*/
ucharcodejiu[]={0x00,0x00,0x00,0x78,0x84,0x02,0x02,0x02,0x02,0x02,0x84,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x41,0x41,0x41,0x41,0x41,0x20,0x1F,0x00,0x00,0x00,0x00};/*"9",9*/
ucharcodeke[]={0x00,0x04,0x04,0xE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传感器 实验
