单片机实验指导Word文档格式.docx

上传人:b****2 文档编号:5830223 上传时间:2023-05-05 格式:DOCX 页数:30 大小:115.57KB
下载 相关 举报
单片机实验指导Word文档格式.docx_第1页
第1页 / 共30页
单片机实验指导Word文档格式.docx_第2页
第2页 / 共30页
单片机实验指导Word文档格式.docx_第3页
第3页 / 共30页
单片机实验指导Word文档格式.docx_第4页
第4页 / 共30页
单片机实验指导Word文档格式.docx_第5页
第5页 / 共30页
单片机实验指导Word文档格式.docx_第6页
第6页 / 共30页
单片机实验指导Word文档格式.docx_第7页
第7页 / 共30页
单片机实验指导Word文档格式.docx_第8页
第8页 / 共30页
单片机实验指导Word文档格式.docx_第9页
第9页 / 共30页
单片机实验指导Word文档格式.docx_第10页
第10页 / 共30页
单片机实验指导Word文档格式.docx_第11页
第11页 / 共30页
单片机实验指导Word文档格式.docx_第12页
第12页 / 共30页
单片机实验指导Word文档格式.docx_第13页
第13页 / 共30页
单片机实验指导Word文档格式.docx_第14页
第14页 / 共30页
单片机实验指导Word文档格式.docx_第15页
第15页 / 共30页
单片机实验指导Word文档格式.docx_第16页
第16页 / 共30页
单片机实验指导Word文档格式.docx_第17页
第17页 / 共30页
单片机实验指导Word文档格式.docx_第18页
第18页 / 共30页
单片机实验指导Word文档格式.docx_第19页
第19页 / 共30页
单片机实验指导Word文档格式.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机实验指导Word文档格式.docx

《单片机实验指导Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机实验指导Word文档格式.docx(30页珍藏版)》请在冰点文库上搜索。

单片机实验指导Word文档格式.docx

ORG0100H

START:

MOV30H,#10h

MOV31H,#10H

MOV32H,#10h

MOV33H,#8

MOV34H,#9

MOV35H,#0cH

MOV36H,#5

MOV37H,#2

DISP:

MOVR0,#DBUF0

MOVR1,#TEMP

MOVR2,#8

DP10:

MOVDPTR,#SEGTAB

MOVA,@R0

MOVCA,@A+DPTR

MOV@R1,A

INCR0

INCR1

DJNZR2,DP10

MOVR0,#TEMP

MOVR1,#8

DP12:

MOVR2,#8

MOVA,@R0

DP13:

RLCA

MOVDIN,C

CLRCLK

SETBCLK

DJNZR2,DP13

INCR0

DJNZR1,DP12

OK:

SJMPOK

SEGTAB:

DB3FH,06H,5BH,4FH,66H,6DH

DB7DH,07H,7FH,6FH,77H,7CH

DB39H,5EH,7BH,71H,00H,40H

END

实验三窜行A/D转换实验

1.掌握单片机I/O模拟I2C总线的编程方法

2.掌握16位串行A/D转换芯片ADS1100使用方法

利用ads1100将滑动变阻器的输出电压转换为数字信号,并在数码显示管显示出数字量。

引脚号

引脚名称

功能

1

VIN+

输入正

2

GND

3

SCL

时钟线

4

SDA

数据线

5

VDD

电源

6

VIN-

输入负

ADS1100有两种工作模式:

连续转换模式和单次转换模式,连续转换模式下,当一次转换结束后,ADS1100将结果放入输出寄存器并立刻开始下一次转换,ST/BSY位在控制字寄存器中始终读到的是1。

如果是单次转换模式,则在ST/BSY位被置1后,ADS1100上电并执行一次转换,转换结束后,ADS1100会把结果放入输出寄存器,并复位ST/BSY成0,关断电源。

在转换中,ST/BSY置1无效,如果要从连续模式切换到单次模式,ADS1100可在执行完当前转换后ST/BSY置0,然后断电。

ADS1100的输出寄存器和控制字寄存器的内容是可读的。

要读ADS1100,可将其设为读状态(7位的ADS1100地址后加1位高电平有效的读信号,高位在前,如ADS1100A0则是10010001),以读取三个字节的内容,其中前两个字节是输出寄存器的内容(高位在前),第三个字节是控制字寄存器的内容(高位在前,从第四个字节开始起均为FFH。

如果只想知道输出寄存器的内容是否合理,可仅读取前两个字节而忽略其后的字节。

ADS1100的输出寄存器是只读的,只能向控制字寄存器写内容,写的方法是将ADS1100设置为写(在ADS1100地址后加1位低电平有效的写信号,高位在前),然后写入一个字节(高位在前)。

ADS1100忽略在第一个字节以后的内容。

DAT0BITP1.0

CLK0BITP1.1

CSBITP1.2

ADHEXDATA050H

DBUFDATA060H

BIT_COUNTDATA070H

TIMERDATA072H

TIMER1DATA073H

TIMER2DATA074H

DTA_INDATA020H

DATA_OUTDATA021H

CLKBITP1.6

DATBITP1.7

ORG0000H

LJMPMAIN

main:

ACALLTLC549_ADC

MOVR7,#0

DJNZR7,$

ACALLTLC549_ADC

MOVR7,A;

存转换结果

MOVADHEX,A

CALLMUL500;

ADHEX*500/256  

CALLHB2

CALLTODISP;

拆开显示

NOP

CALLDISPLAY

CALLdelay

LJMPMAIN

TLC549_ADC:

;

串行显示处理程序,结果存在A中

CLRA

CLRCLK0

CLRCS

MOVR6,#8

ADLOOP:

SETBCLK0

MOVC,DAT0

RLCA

DJNZR6,ADLOOP

SETBCS

RET

DISPLAY:

ANLP2,#00H;

CS7279有效

MOVDATA_OUT,#10100100B;

A4H,复位命令

CALLSEND

MOVDATA_OUT,#11001000B;

译码方式0,0位显示

MOVDATA_OUT,DBUF

CALLSEND

MOVDATA_OUT,#11001001B;

译码方式0,1位显示

MOVDATA_OUT,DBUF+1

MOVDATA_OUT,#11001010B;

译码方式0,2位显示

MOVDATA_OUT,DBUF+2

MOVP2,#0FFH;

CS7279无效

SEND:

MOVBIT_COUNT,#8;

发送字符子程序

ANLP2,#00H

CALLLONG_DELAY

SEND_LOOP:

MOVC,DATA_OUT.7

MOVDAT,C

MOVA,DATA_OUT

RLA

MOVDATA_OUT,A

CALLSHORT_DELAY

CALLSHORT_DELAY

DJNZBIT_COUNT,SEND_LOOP

CLRDAT

LONG_DELAY:

MOVTIMER,#150;

延时约200US

DELAY_LOOP:

DJNZTIMER,DELAY_LOOP

RET

SHORT_DELAY:

MOVTIMER,#20;

延时约20US

SHORT_LP:

DJNZTIMER,SHORT_LP

RET

DELAY:

MOVTIMER,#4

AA0:

MOVTIMER1,#0

AA1:

MOVTIMER2,#0

AA2:

DJNZTIMER2,AA2

DJNZTIMER1,AA1

DJNZTIMER,AA0

RET

功能:

单字节二进制无符号数乘500(1f4H=100H+0f4H)

入口条件:

被乘数在R7中。

出口信息:

乘积在R4、R5、R6中(R6低八位)。

MUL500:

MOVA,#0f4H;

计算R3乘R7

MOVB,R7

MULAB

MOVR5,B;

暂存部分积

MOVR6,A

MOVA,R7

ADDA,B

MOVR5,A

MOVR4,A

CLRC

MOVA,R6

SUBBA,#80H

JCRETURN

MOVA,R5

ADDA,#1

MOVR5,A

MOVA,R4

ADDCA,#0

MOVR4,A

RETURN:

功能:

双字节十六进制整数转换成双字节BCD码整数

入口条件:

待转换的双字节十六进制整数在R6、R7中。

出口信息:

转换后的三字节BCD码整数在R3、R4、R5中。

HB2:

MOVA,R4

MOVR6,A

MOVA,R5

MOVR7,A

CLRA;

BCD码初始化

MOVR3,A

MOVR4,A

MOVR5,A

MOVR2,#10H;

转换双字节十六进制整数

HB3:

MOVA,R7;

从高端移出待转换数的一位到CY中

RLCA

MOVR7,A

MOVA,R6

MOVA,R5;

bcd码带进位自身相加,相当于乘2

ADDCA,R5

DAA;

十进制调整

MOVR5,A

ADDCA,R4

DAA

MOVR4,A

MOVA,R3

ADDCA,R3

MOVR3,A;

双字节十六进制数的万位数不超过6,不用调整

DJNZR2,HB3;

处理完16bit

RET

TODISP:

MOVA,R4

ORLA,#80H

MOVDBUF+2,A

MOVA,R5

SWAPA

ANLA,#0FH

MOVDBUF+1,A

MOVA,R5

MOVDBUF,A

END

实验四温度传感器实验

一、实验目的

1.了解温度传感器电路的工作原理

2.了解温度控制的基本原理

3.掌握一线总线接口的使用

利用DS18B20将温度在数码显示管显示出,以实现温度的测量和温度的控制。

TEMPER_LEQU29H;

用于保存读出温度的低8位

TEMPER_HEQU28H;

用于保存读出温度的高8位

FLAG1EQU38H;

是否检测到DS18B20标志位

A_BITEQU20H;

数码管个位数存放内存位置

B_BITEQU21H;

数码管十位数存放内存位置

LEDBufEQU30H

TEMPEQU55H

DINBITP1.0

CLKBITP1.1

ORG0000H

start:

SETBP1.4

MAIN:

LCALLGET_TEMPER;

调用读温度子程序

MOVA,29H

MOVC,40H;

将28H中的最低位移入C

RRCA

MOVC,41H

MOVC,42H

MOVC,43H

MOV29H,A

LCALLDisplayResult

LCALLDISPLAYLED;

调用数码管显示子程序

LCALLDELAY1

AJMPMAIN

这是DS18B20复位初始化子程序

INIT_1820:

SETBP2.0

CLRP2.0

主机发出延时537微秒的复位低脉冲

MOVR1,#3

TSR1:

MOVR0,#107

DJNZR0,$

DJNZR1,TSR1

SETBP2.0;

然后拉高数据线

MOVR0,#25H

TSR2:

JNBP2.0,TSR3;

等待DS18B20回应

DJNZR0,TSR2

LJMPTSR4;

延时

TSR3:

SETBFLAG1;

置标志位,表示DS1820存在

LJMPTSR5

TSR4:

CLRFLAG1;

清标志位,表示DS1820不存在

LJMPTSR7

TSR5:

MOVR0,#117

TSR6:

DJNZR0,TSR6;

时序要求延时一段时间

TSR7:

读出转换后的温度值

GET_TEMPER:

LCALLINIT_1820;

先复位DS18B20

JBFLAG1,TSS2

RET;

判断DS1820是否存在?

若DS18B20不存在则返回

TSS2:

MOVA,#0CCH;

跳过ROM匹配

LCALLWRITE_1820

MOVA,#44H;

发出温度转换命令

LCALLDELAY1

准备读温度前先复位

MOVA,#0BEH;

发出读温度命令

LCALLREAD_18200;

将读出的温度数据保存到35H/36H

写DS18B20的子程序(有具体的时序要求)

WRITE_1820:

MOVR2,#8;

一共8位数据

WR1:

MOVR3,#6

DJNZR3,$

MOVP2.0,C

MOVR3,#23

DJNZR2,WR1

读DS18B20的程序,从DS18B20中读出两个字节的温度数据

READ_18200:

MOVR4,#2;

将温度高位和低位从DS18B20中读出

MOVR1,#29H;

低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)

RE00:

数据一共有8位

RE01:

MOVR3,#9

RE10:

DJNZR3,RE10

MOVC,P2.0

RE20:

DJNZR3,RE20

DJNZR2,RE01

MOV@R1,A

DECR1

DJNZR4,RE00

DisplayLED:

-----------显示子程序---------------

movLEDBUF+5,#10H

movLEDBUF+6,#10H

movLEDBUF+7,#10H

MOVR0,#LEDBUF

MOVR1,#TEMP

MOVR2,#8

DP10:

MOVDPTR,#LEDMAP

MOVA,@R0

MOVCA,@A+DPTR

DJNZR2,DP10

MOVR0,#TEMP

MOVR1,#8

DP12:

DP13:

MOVDIN,C

DJNZR2,DP13

DJNZR1,DP12

LEDMAP:

DB3FH,6,5BH,4FH,66H,6DH;

0,1,2,3,4,5

DB7DH,7,7FH,6FH,77H,7CH;

6,7,8,9,A,B

DB58h,63H,7BH,71H,00H,40H;

C,o,E,F,,-

DB63H,39H,63h

DisplayResult:

===================

MOVLEDBuf,#10H;

'

MOVLEDBuf+3,#14H;

MOVLEDBuf+4,#13H;

Goon:

MOVA,29H;

将29H中的十六进制数转换成10进制

MOVB,#10

DIVab

MOVLEDBuf+1,A;

MOVA,B

MOVLEDBuf+2,A;

MOVA,LEDBuf+1

CJNEA,#4,$+3

JNCWW

SETBP1.4

WW:

CLRP1.4

D1MS:

MOVR7,#80

RET

Delay:

MOVr7,#0

DelayLoop:

DJNZr7,DelayLoop

DJNZr6,DelayLoop

DELAY1:

MOVR4,#020H

MOVR5,#080H

AA:

DJNZR5,AA

DJNZR4,AA1

END

实验五步进电机控制实验

1.了解步进电机控制的基本原理

2.掌握控制步进电机转动的编程方法

3.了解单片机控制外部设备的常用电路

用单片机实现步进电机的控制

ORG0000

STOP:

ORLP1,#0FFH;

步进电机停止

LOOP:

JNBP2.0,FOR2;

如果p3.2按下正转

JNBP2.1,REV2;

如果p3.3按下反转

JNBP2.2,STOP1;

如果p3.4按下停止

JMPLOOP;

反复监测键盘

FOR:

MOVR0,#00H;

正转到tab取码指针初值

for1:

MOVA,R0;

取码

MOVDPTR,#TABLE;

JZFOR;

是否到了结束码00h

CPLA;

把acc反向

MOVP1,A;

输出到p1开始正转

如果p3.4按下停止

如果p3.3按下正转

如果p3.2按下反转

CALLDELAY;

转动的速度

INCR0;

取下一个码

JMPFOR1;

继续正转

rev:

MOVR0,#05H;

反转到tab取码指针初值

rev1:

MOVA,R0

JZREV;

输出到p1开始反转

JMPREV1;

继续反转

stop1:

按p3.4的消除抖动

JNBP2.2,$;

p3.4放开否?

放开消除抖动

JMPSTOP

for2:

按p3.2的消除抖动

JNBP2.0,$;

p3.2放开否?

JMPFOR

rev2:

按p3.3的消除抖动

JNBP2.1,$;

p3.3放开否?

JMPREV

MOVR1,#150;

步进电机的转速20ms

D1:

MOVR2,#248

DJNZR2,$

DJNZR1,D1

TABLE:

db01h,02h,04h,08h;

正转表

db00;

正转结束

db01h,08h,04h,02h;

反转

反转结束

实验六128×

64液晶显示屏实验

1.了解点阵型液晶显示器的工作原理

2.了解点阵型液晶显示器控制方式

用单片机和12864液晶显示屏实现动态图显示

本实验箱采用内置控制器、不带字库的图形点阵液晶显示模块,点阵数为128×

64。

它主要由行驱动器/列驱动器及128×

64全点阵液晶显示器组成,可完成图形显示也可以显示8×

4个(16×

16点阵)汉字。

主要技术参数和性能:

1)电源VDD+5V模块内自带-10V负压用于LCD的驱动电压

2)显示内容128(列)64(行)点

3)全屏幕点阵

4)七种指令

5)与CPU接口采用8位数据总线并行输入输出和8条控制线

6)占空比1/64

7)工作温度-10+55存储温度-20+60

管脚号

管脚名称

LEVER

管脚功能描述

1

VSS

电源地

5.0V

电源电压

3

V0

5.0V-13V

液晶显示器驱动电压

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2