单片机DIY选题.docx

上传人:b****5 文档编号:6687830 上传时间:2023-01-09 格式:DOCX 页数:15 大小:277.70KB
下载 相关 举报
单片机DIY选题.docx_第1页
第1页 / 共15页
单片机DIY选题.docx_第2页
第2页 / 共15页
单片机DIY选题.docx_第3页
第3页 / 共15页
单片机DIY选题.docx_第4页
第4页 / 共15页
单片机DIY选题.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机DIY选题.docx

《单片机DIY选题.docx》由会员分享,可在线阅读,更多相关《单片机DIY选题.docx(15页珍藏版)》请在冰豆网上搜索。

单片机DIY选题.docx

单片机DIY选题

实验一单片机最小系统

一、实验目的

1、学习基本焊接方法

2、学习单片机最小系统的开发与正确性检测

3、学习单片机时钟电路的开发与调试

4、学习手动复位电路的开发与调试

5、学习LED指示器的使用

二、实验器材

元器件编号

元器件

型号

数量

U1

CPU

AT89S52芯片

一片

M

晶振

频率6.00MHZ

一个

D1

发光二极管

一个

R1

电阻

10KΩ

一个

R2

电阻

2.2KΩ

一个

R3

电阻

500Ω

一个

K1

开关

一个

C01、C02

电容

30pF

二个

C1

电容

22uF

一个

Vcc

电源

+5V

导线

若干

三、实验内容

1、焊接根据实验原理图在电路板上焊接电路

2、

四、实验原理图

五、程序举例

ORG0000H程序起始地址

MOVR2,#18H设置循环次数

LOOP:

CLRP1.0循环给P1.0置“0”

DJNZR2,LOOP

END

实验二单片机单个I/O的控制系统

一、实验目的

掌握对CPU单个I/O的控制,编写程序让发光二极管每秒钟闪动一次。

二、实验器材

元器件

型号

数量

CPU

AT89S52芯片

一片

晶振

频率6.00MHZ

一个

发光二极管

一个

电阻

10KΩ

一个

电阻

2.2KΩ

一个

电阻

500Ω

一个

开关

一个

电容

30pF

二个

电容

22uF

一个

电源

+5V

导线

若干

三、实验内容

四、实验原理图

五、程序举例

①循环控制:

ORG0000H

LOOP:

SETBP1.0

LCALLDELAY延时0.5s;

CLRP1.0

LCALLDELAY

AJMPLOOP转循环程序;

DELAY:

MOVR3,#2延时子程序;

D1:

MOVR4,#250

D2:

MOVR5,#250

DJNZR5,$

DJNZR4,D2

DJNZR3,D1

RET

END

②中断控制:

ORG0000H

AJMPMAIN转主程序;

ORG000BH

AJMPINT_TIMER0T0中断服务程序;

ORG0030H

MAIN:

MOVTMOD,#01HT0初始化;

MOVTH0,#3CH

MOVTL0,#0B0H送100ms时间常数;

MOVIE,#82H允许T0中断、CPU开中断;

MOV30H,#5设置100ms计数器初值;

SETBTR0启动T0计数;

AJMP$等待;

INT_TIMER0:

MOVTH0,#3CH重置T0初值50ms;

MOVTL0,#0B0H

DJNZ30H,L1判500ms到否?

MOV30H,#5恢复100ms计数器初值;

CPLP1.0500ms到,P1.0求反;

L1:

RETI返主。

END

实验三单片机多个I/O的控制系统

一、实验目的

掌握对CPU的多个I/O控制,在P1口实现8个发光二极管的流水闪烁。

二、实验器材

元器件

型号

数量

CPU

AT89S51芯片

一片

晶振

频率6.00MHZ

一个

发光二极管

八个

电阻

10KΩ

一个

电阻

2.2KΩ

一个

电阻

500Ω

八个

开关

一个

电容

30Pf

二个

电容

22uF

一个

电源

+5V

导线

若干

三、实验内容

四、实验原理图

五、程序举例

ORG00H

ORG00H

START:

MOVA,#0FFH

CLRC

MOVR2,#08H发光二极管的个数;

LOOP:

RLCA左移累加器A中的内容;

MOVP1,AA中内容送P1口,点亮一个二极管;

CALLDELAY延时约2ms;

DJNZR2,LOOP转循环程序,依次点亮8个二极管;

MOVR2,#07H

LOOP1:

RRCA右移累加器A中的内容;

MOVP1,A熄灭一个二极管;

CALLDELAY延时

DJNZR2,LOOP1转循环程序,依次熄灭8个二极管;

JMPSTART跳转开始,重新执行循环

DELAY:

MOVR3,#20延时子程序

D1:

MOVR4,#20

D2:

MOVR5,#248

DJNZR5,$

DJNZR4,D2

DJNZR3,D1

RET

END

实验四三位循环计数系统

一、实验目的

用来熟悉对多位数码管的驱动和正确显示。

二、实验器材

元器件

型号

数量

CPU

AT89S51芯片

一片

晶振

频率6.00MHZ

一个

数码管

共阴极

三个

电阻

10KΩ

一个

电阻

2.2KΩ

一个

电阻

500Ω

十一个

开关

一个

三极管

NPN型9013

三个

电容

30pF

二个

电容

22uF

一个

电源

+5V

导线

若干

三、实验内容

四、实验原理图

五、程序举例

ORG0000H

A_BITEQU30H第一位数码管数值;

B_BITEQU31H第二位数码管数值;

C_BITEQU32H第三位数码管数值;

ORG0000H程序起始地址;

AJMPSTAR

ORG0030HSTAR的起始地址;

STAR:

CLRP0.0

MOVA,#00H清空累加器;

MOVA_BIT,A

MOVB_BIT,A

MOVC_BIT,A

STLOP:

ACALLDISPLAY调用显示子程序;

INCA_BIT

MOVA,A_BIT

CJNEA,#10,STLOP判断第一位是否到10,到10则第二位开始计

MOVA_BIT,#00H数;

INCB_BIT

MOVA,B_BIT

CJNEA,#10,STLOP判断第二位是否到10,到10则第三位开始计

MOVB_BIT,#00H数;

INCC_BIT

MOVA,C_BIT

CJNEA,#10,STLOP判断第三位是否到10,到10则给第三位清0;

MOVC_BIT,#00H

AJMPSTLOP

DISPLAY:

MOVDPTR,#NUMTAB字形表首地址;

MOVR0,#4

DPL1:

MOVR1,#250

DPLOP:

MOVA,A_BIT

MOVCA,@A+DPTR送第一位字形码;

MOVP1,A

SETBP2.4开第一位显示;

ACALLD1MS延时1MS;

CLRP2.4关第一位显示;

MOVA,B_BIT

MOVCA,@A+DPTR送第二位字形码;

MOVP1,A

SETBP2.5开第二位显示;

ACALLD1MS延时1MS;

CLRP2.5关第二位显示;

MOVA,C_BIT

MOVCA,@A+DPTR送第三位字形码;

MOVP1,A

SETBP2.6开第三位显示;

ACALLD1MS延时1MS;

CLRP2.6关第三位显示;

DJNZR1,DPLOP防止余辉效应;

DJNZR0,DPL1

RET

D1MS:

MOVR7,#80延时子程序,延时约300uS;

DJNZR7,$

RET

数码管八段字形表:

NUMTAB:

DB0E7H,21H,0CBH,6BH,2DH,6EH,0EEH,27H,0EFH,6FH

END

实验五测温系统

一、实验目的

利用单片机构成实用系统,熟悉单片机和外围设备的通讯。

二、实验器材

元器件

型号

数量

CPU

AT89S51芯片

一片

晶振

频率6.00MHZ

一个

数码管

共阴极

二个

电阻

10KΩ

一个

电阻

2.2KΩ

一个

电阻

500Ω

十个

电阻

4.7KΩ

一个

电容

30pF

二个

电容

22uF

一个

温度传感器

DALLASDS18B20

一个

开关

一个

三极管

NPN型9013

二个

电源

+5V

导线

若干

三、实验内容

四、实验原理图

五、程序举例

ORG0000H

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

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

FLAG1EQU38H是否检测到DS18B20标志位

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

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

MAIN:

LCALLGET_TEMPER调用读温度子程序

MOVA,29H

MOVC,40H将28H中的最低位移入C

RRCA

MOVC,41H

RRCA

MOVC,42H

RRCA

MOVC,43H

RRCA

MOV29H,A

LCALLDISPLAY调用数码管显示子程序

CPLP1.0

AJMPMAIN

INIT_1820:

DS18B20复位初始化子程序

SETBP2.2

NOP

CLRP2.2

MOVR1,#3主机发出延时537微秒的复位低脉冲

TSR1:

MOVR0,#107

DJNZR0,$

DJNZR1,TSR1

SETBP2.2然后拉高数据线

NOP

MOVR0,#25H

TSR2:

JNBP2.2,TSR3等待DS18B20回应

DJNZR0,TSR2

LJMPTSR4延时

TSR3:

SETBFLAG1置标志位,表示DS1820存在

CLRP1.7检查到DS18B20就点亮P1.7LED

LJMPTSR5

TSR4:

CLRFLAG1清标志位,表示DS1820不存在

CLRP1.1

LJMPTSR7

TSR5:

MOVR0,#117

TSR6:

DJNZR0,TSR6时序要求延时一段时间

TSR7:

SETBP2.2

RET

GET_TEMPER:

读出转换后的温度值

SETBP2.2

LCALLINIT_1820先复位DS18B20

JBFLAG1,TSS2

CLRP1.2

RET判断DS1820是否存在?

若DS18B20不存在则返回

TSS2:

CLRP1.3DS18B20被检测到!

MOVA,#0CCH跳过ROM匹配

LCALLWRITE_1820

MOVA,#44H发出温度转换命令

LCALLWRITE_1820

LCALLDISPLAY

LCALLINIT_1820准备读温度前先复位

MOVA,#0CCH跳过ROM匹配

LCALLWRITE_1820

MOVA,#0BEH发出读温度命令

LCALLWRITE_1820

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

CLRP1.4

RET

WRITE_1820:

写DS18B20的子程序

MOVR2,#8一共8位数据

CLRC

WR1:

CLRP2.2

MOVR3,#6

DJNZR3,$

RRCA

MOVP2.2,C

MOVR3,#23

DJNZR3,$

SETBP2.2

NOP

DJNZR2,WR1

SETBP2.2

RET

READ_18200:

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

MOVR4,#2将温度高位和低位从DS18B20中读出

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

RE00:

MOVR2,#8数据一共有8位

RE01:

CLRC

SETBP2.2

NOP

CLRP2.2

NOP

SETBP2.2

MOVR3,#9

RE10:

DJNZR3,RE10

MOVC,P2.2

MOVR3,#23

RE20:

DJNZR3,RE20

RRCA

DJNZR2,RE01

MOV@R1,A

DECR1

DJNZR4,RE00

RET

DISPLAY:

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

MOVB,#1010进制/10=10进制

DIVAB

MOVB_BIT,A十位在A

MOVA_BIT,B个位在B

MOVDPTR,#NUMTAB指定查表启始地址

MOVR0,#4

DPL1:

MOVR1,#250显示1000次

DPLOP:

MOVA,A_BIT取个位数

MOVCA,@A+DPTR查个位数的7段代码

MOVP0,A送出个位的7段代码

CLRP2.4开个位显示

ACALLD1MS显示1MS

SETBP2.4

MOVA,B_BIT取十位数

MOVCA,@A+DPTR查十位数的7段代码

MOVP0,A送出十位的7段代码

CLRP2.5开十位显示

ACALLD1MS显示1MS

SETBP2.5

DJNZR1,DPLOP100次没完循环

DJNZR0,DPL14个100次没完循环

RET

D1MS:

MOVR7,#80

DJNZR7,$

RET

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1