单片机DIY选题Word文件下载.docx
- 文档编号:19704805
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:15
- 大小:277.70KB
单片机DIY选题Word文件下载.docx
《单片机DIY选题Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机DIY选题Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
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的控制,编写程序让发光二极管每秒钟闪动一次。
①循环控制:
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个发光二极管的流水闪烁。
AT89S51芯片
八个
30Pf
ORG00H
START:
MOVA,#0FFH
CLRC
MOVR2,#08H发光二极管的个数;
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延时子程序
MOVR4,#20
MOVR5,#248
RET
实验四三位循环计数系统
用来熟悉对多位数码管的驱动和正确显示。
数码管
共阴极
三个
十一个
三极管
NPN型9013
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送第二位字形码;
SETBP2.5开第二位显示;
CLRP2.5关第二位显示;
MOVA,C_BIT
MOVCA,@A+DPTR送第三位字形码;
SETBP2.6开第三位显示;
CLRP2.6关第三位显示;
DJNZR1,DPLOP防止余辉效应;
DJNZR0,DPL1
D1MS:
MOVR7,#80延时子程序,延时约300uS;
DJNZR7,$
数码管八段字形表:
NUMTAB:
DB0E7H,21H,0CBH,6BH,2DH,6EH,0EEH,27H,0EFH,6FH
实验五测温系统
利用单片机构成实用系统,熟悉单片机和外围设备的通讯。
十个
4.7KΩ
温度传感器
DALLASDS18B20
TEMPER_LEQU29H用于保存读出温度的低8位
TEMPER_HEQU28H用于保存读出温度的高8位
FLAG1EQU38H是否检测到DS18B20标志位
a_bitequ20h数码管个位数存放内存位置
b_bitequ21h数码管十位数存放内存位置
MAIN:
LCALLGET_TEMPER调用读温度子程序
MOVA,29H
MOVC,40H将28H中的最低位移入C
RRCA
MOVC,41H
MOVC,42H
MOVC,43H
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然后拉高数据线
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:
GET_TEMPER:
读出转换后的温度值
LCALLINIT_1820先复位DS18B20
JBFLAG1,TSS2
CLRP1.2
RET判断DS1820是否存在?
若DS18B20不存在则返回
TSS2:
CLRP1.3DS18B20被检测到!
MOVA,#0CCH跳过ROM匹配
LCALLWRITE_1820
MOVA,#44H发出温度转换命令
LCALLDISPLAY
LCALLINIT_1820准备读温度前先复位
MOVA,#0BEH发出读温度命令
LCALLREAD_18200将读出的温度数据保存到35H/36H
CLRP1.4
WRITE_1820:
写DS18B20的子程序
MOVR2,#8一共8位数据
WR1:
MOVR3,#6
DJNZR3,$
MOVP2.2,C
MOVR3,#23
DJNZR2,WR1
READ_18200:
读DS18B20的程序,从DS18B20中读出两个字节的温度数据
MOVR4,#2将温度高位和低位从DS18B20中读出
MOVR1,#29H低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
RE00:
MOVR2,#8数据一共有8位
RE01:
MOVR3,#9
RE10:
DJNZR3,RE10
MOVC,P2.2
RE20:
DJNZR3,RE20
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
MOVA,29H将29H中的十六进制数转换成10进制
MOVB,#1010进制/10=10进制
DIVAB
MOVB_BIT,A十位在A
MOVA_BIT,B个位在B
MOVDPTR,#NUMTAB指定查表启始地址
MOVR1,#250显示1000次
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开十位显示
SETBP2.5
DJNZR1,DPLOP100次没完循环
DJNZR0,DPL14个100次没完循环
MOVR7,#80
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 DIY 选题