单片机DIY选题.docx
- 文档编号:6687830
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:15
- 大小:277.70KB
单片机DIY选题.docx
《单片机DIY选题.docx》由会员分享,可在线阅读,更多相关《单片机DIY选题.docx(15页珍藏版)》请在冰豆网上搜索。
单片机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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 DIY 选题