天大自动化智能装置与设计实验报告.docx
- 文档编号:5205014
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:17
- 大小:17.79KB
天大自动化智能装置与设计实验报告.docx
《天大自动化智能装置与设计实验报告.docx》由会员分享,可在线阅读,更多相关《天大自动化智能装置与设计实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
天大自动化智能装置与设计实验报告
智能装置与设计实验报告
——实验程序汇总
自动化4班晁平复3008203263
自动化6班王平3008203281
实验一:
PIC系列单片机I/O口组成与使用方法
1、使用软件延时,使RC口的8盏灯轮流点亮。
实验程序:
LISTP=16F877
#INCLUDE
GENR1EQU20H
GENR2EQU21H;软件延时用临时寄存器
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW00H
MOVWFTRISC;C端口输出
BCFSTATUS,RP0
MOVLW80H
MOVWFPORTC;C端口RC7灯亮
BCFSTATUS,C;进位标志位清零,防止循环时有两个灯在亮。
DELAY
MOVLW0FFH
MOVWFGENR1
LOOP1
MOVLW90H
MOVWFGENR2
LOOP2
DECFSZGENR2,F
GOTOLOOP2
DECFSZGENR1,F
GOTOLOOP1;延时大致为256*144*2.5*10-6
RRFPORTC,1
BTFSCSTATUS,C
RRFPORTC,1;LED灯状态右移,若移到C标志位,则再多移一下
GOTODELAY
END
2、提高内容:
利用RB0口接的按键控制RC口连接的LED灯,每按一次键切换一盏灯,从RC7到RC0分别点亮,按键使用查询方式检测。
实验内容:
LISTP=16F877
#INCLUDE
GENR1EQU20H
GENR2EQU21H
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW01H
MOVWFTRISB;B口RB0为输入,按键输入
MOVLW00H
MOVWFTRISC
BCFSTATUS,RP0
CLRFPORTB
MOVLW80H
MOVWFPORTC
BCFSTATUS,C
LOOP
BTFSSPORTB,0;检测是否RB0按下,有则说明有按键
GOTOLOOP
RRFPORTC,1
BTFSCSTATUS,C
RRFPORTC,1
LOOP1
MOVLW0FFH
MOVWFGENR1
LOOP2
MOVLW20H
MOVWFGENR2
LOOP3
DECFSZGENR2,F
GOTOLOOP3
DECFSZGENR1,F
GOTOLOOP2;定时与上例相同,唯一区别是GENR2从144改为32
BTFSCPORTB,0;检测RB0是否弹起,一次完整按键应该是按下并弹起
GOTOLOOP1
GOTOLOOP
END
实验二:
PIC单片机定时/计数器的功能及使用方法
1、使用Timer0定时器按查询方式设置500毫秒定时,完成LED灯的轮流点亮。
实验程序:
LISTP=16F877
#INCLUDE
COUNT1EQU20H
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW00H
MOVWFTRISC
MOVLW07H
MOVWFOPTION_REG;设置分频比为1:
256
BCFSTATUS,RP0
MOVLW80H
MOVWFPORTC
BCFSTATUS,C
LOOP
CALLDELAY
RRFPORTC,1
BTFSCSTATUS,C
RRFPORTC,1
GOTOLOOP
DELAY
BCFINTCON,2;Timer0中断标志位清零
BCFSTATUS,RP0
BCFSTATUS,RP1
MOVLW0AH
MOVWFCOUNT1
MOVLW3DH
MOVWFTMR0;Timer0延时10-6*256*(256-61)*10≈0.5s
LOOP1
BTFSSINTCON,2;查询Timer0中断标志位是否为1,为1则完成定时
GOTOLOOP1
DECFSZCOUNT1,F
GOTOLOOP2
RETURN
LOOP2
BCFINTCON,2
MOVLW3DH
MOVWFTMR0
GOTOLOOP1
END
2、使用Timer1定时器按查询方式设置1秒定时,完成LED灯的轮流点亮。
实验程序:
LISTP=16F877
#INCLUDE
COUNT1EQU20H
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW00H
MOVWFTRISC
BCFSTATUS,RP0
MOVLW31H
MOVWFT1CON;Timer1打开,预分频比1:
8
MOVLW80H
MOVWFPORTC
BCFSTATUS,C
LOOP
CALLDELAY
RRFPORTC,1
BTFSCSTATUS,C
RRFPORTC,1
GOTOLOOP
DELAY
BCFSTATUS,RP0
BCFSTATUS,RP1
BCFPIR1,TMR1IF;清除Timer1中断标志位
MOVLW02H
MOVWFCOUNT1
MOVLW0CH
MOVWFTMR1H
MOVLW22H
MOVWFTMR1L;Timer1延时10-6*8*(65536-3106)*2≈1s
LOOP1
BTFSSPIR1,TMR1IF;查询Timer1中断标志位是否为1,为1则完成定时
GOTOLOOP1
DECFSZCOUNT1,F
GOTOLOOP2
RETURN
LOOP2
BCFPIR1,TMR1IF
MOVLW0CH
MOVWFTMR1H
MOVLW22H
MOVWFTMR1L
GOTOLOOP1
END
3、使用Timer2定时器按查询方式设置500毫秒定时,完成LED灯的轮流点亮。
实验程序:
LISTP=16F877
#INCLUDE
COUNT1EQU20H
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW00H
MOVWFTRISC
BCFSTATUS,RP0
MOVLW7FH
MOVWFT2CON;Timer2定时器打开,预分频与后分频均为1:
16
MOVLW80H
MOVWFPORTC
BCFSTATUS,C
LOOP
CALLDELAY
RRFPORTC,1
BTFSCSTATUS,C
RRFPORTC,1
GOTOLOOP
DELAY
BCFSTATUS,RP0
BCFSTATUS,RP1
BCFPIR1,TMR2IF;Timer2中断标志位清零
BCFSTATUS,RP0
BCFSTATUS,RP1
MOVLW0AH
MOVWFCOUNT1
MOVLW3DH
MOVWFTMR2;Timer2延时10-6*16*16*(256-61)≈500ms
LOOP1
BTFSSPIR1,TMR2IF;查询Timer2中断标志位是否为1,为1则完成定时
GOTOLOOP1
DECFSZCOUNT1,F
GOTOLOOP2
RETURN
LOOP2
BCFPIR1,TMR2IF
MOVLW3DH
MOVWFTMR2
GOTOLOOP1
END
4、提高内容:
使用Timer1定时器按中断方式设置2秒定时,完成LED灯的轮流点亮。
实验程序:
LISTP=16F877
#INCLUDE
COUNT1EQU20H
ORG0000H
GOTOSTART
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW00H
MOVWFTRISC
BCFOPTION_REG,6;中断为上升沿触发
MOVLW01H
MOVWFPIE1;打开定时器Timer1中断
BCFSTATUS,RP0
MOVLW31H
MOVWFT1CON;Timer1定时器打开,预分频1:
8
MOVLW80H
MOVWFPORTC
BCFSTATUS,C
BCFPIR1,TMR1IF;清除Timer1中断标志位
MOVLW03H
MOVWFCOUNT1
MOVLW22H
MOVWFTMR1L
MOVLW0CH
MOVWFTMR1H
MOVLW0D0H
MOVWFINTCON;打开GIE与PEIE中断
LOOP
GOTOLOOP
ORG0004H;中断服务子程序
INTSEV
BTFSSPIR1,TMR1IF;检查是否为Timer1中断
GOTORETN
DECFSZCOUNT1,F
GOTORETN
RRFPORTC,1
BTFSCSTATUS,C
RRFPORTC,1
BCFSTATUS,RP0
BCFSTATUS,RP1
MOVLW03H
MOVWFCOUNT1
RETN
BCFPIR1,TMR1IF
RETFIE
END
实验三:
PIC单片机A/D转换的功能及使用方法
1、使用查询方式检测RA0口的可调电位器的输入模拟电压(范围:
0~5V),并将结果的高八位显示在RC口的8个LED灯上。
实验程序:
LISTP=16F877
#INCLUDE
COUNTEQU20H
ORG0040H
START
BCFSTATUS,RP0
BCFSTATUS,RP1
MOVLW41H
MOVWFADCON0;选择A/D转换在RA0,并打开A/D转换,时钟为8tosc
BSFSTATUS,RP0
MOVLW0x0e
MOVWFADCON1;转换结果左移,且把RA0口设置成模拟量输入口
MOVLW0x01
MOVWFTRISA
MOVLW00H
MOVWFTRISC
BCFSTATUS,RP0
CLRFPORTC
CLRFADRESH
LOOP
BSFADCON0,2;GO/DONE位置1,开始A/D转换
NOP
NOP
HERE
BTFSCADCON0,2;检查是否转换完成
GOTOHERE
NOP
MOVFADRESH,W;读取转换结果高8位信息
MOVWFPORTC
CALLDELAY
GOTOLOOP
DELAY;延时子程序
MOVLW0FFH
MOVWFCOUNT
CIRC
DECFSZCOUNT,F
GOTOCIRC
RETURN
END
2、使用中断方式检测RA0口的可调电位器的输入模拟电压(范围:
0~5V),并将结果的高八位显示在RC口的8个LED灯上。
实验程序:
LISTP=16F877
#INCLUDE
COUNTEQU20H
ORG0000H
GOTOSTART
ORG0004H;中断服务子程序
INTSEV
BTFSSPIR1,ADIF;查询A/D转换中断标志位是否为1,
GOTORETN
MOVFADRESH,W
MOVWFPORTC
CALLDELAY
RETN
BCFPIR1,ADIF
BSFADCON0,2
RETFIE
DELAY
MOVLW0FFH
MOVWFCOUNT
CIRC
DECFSZCOUNT,F
GOTOCIRC
RETURN
ORG0040H
START
BCFSTATUS,RP0
BCFSTATUS,RP1
MOVLW41H
MOVWFADCON0
BSFSTATUS,RP0
MOVLW0x0e
MOVWFADCON1
MOVLW0x01
MOVWFTRISA
MOVLW00H
MOVWFTRISC
CLRFPIE1
BSFPIE1,ADIE;打开A/D中断
BSFINTCON,PEIE;打开PEIE中断
BSFINTCON,GIE;打开GIE总中断
BCFSTATUS,RP0
CLRFPORTC
CLRFADRESH
BSFADCON0,2
LOOP
GOTOLOOP
END
3、提高内容:
利用RB0口接的按键中断控制对RA0口的可调电位器的输入模拟电压的采样,每按一次键采样一次,并将结果显示在LED灯上。
实验程序:
LISTP=16F877
#INCLUDE
COUNTEQU20H
ORG0000H
GOTOSTART
ORG0004H;中断服务子程序
INTSEV
BTFSSINTCON,INTF;查询是否有RB0按键中断
GOTORETN
HERE
BTFSCADCON0,2;再次查询A/D转换是否已完成
GOTOHERE
MOVFADRESH,W
MOVWFPORTC
CALLDELAY
RETN
BSFADCON0,2
BCFINTCON,INTF
RETFIE
DELAY
MOVLW0FFH
MOVWFCOUNT
CIRC
DECFSZCOUNT,F
GOTOCIRC
RETURN
ORG0040H
START
BCFSTATUS,RP0
BCFSTATUS,RP1
MOVLW41H
MOVWFADCON0
BSFSTATUS,RP0
MOVLW0x0E
MOVWFADCON1
MOVLW0x01
MOVWFTRISA
MOVLW0x01
MOVWFTRISB
MOVLW00H
MOVWFTRISC
BCFOPTION_REG,6
CLRFINTCON
BSFINTCON,INTE
BSFINTCON,PEIE
BSFINTCON,GIE;开启中断:
GIE、PEIE、INTE
BCFSTATUS,RP0
CLRFPORTC
CLRFADRESH
BSFADCON0,2
LOOP
GOTOLOOP
END
实验四:
SCI串行通信实验
1、通过计算机上的串口助手软件发送8位二进制数,单片机接收后将结果显示在RD口8个LED灯上。
实验程序:
LISTP=16F877
#INCLUDE
COUNT1EQU20H
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW00H
MOVWFTRISD;D口为灯,所以作输出
MOVLW4DH
MOVWFSPBRG;波特率设置Fosc/(64+(x+1))=1200bps
MOVLW00H
MOVWFTXSTA;设置为异步方式
BCFSTATUS,RP0
BCFPIR1,RCIF
BSFRCSTA,SPEN
BSFRCSTA,CREN;开始接收
CLRFRCREG
LOOP
BTFSSPIR1,RCIF
GOTOLOOP
MOVFRCREG,W
MOVWFPORTD
BCFPIR1,RCIF
BSFRCSTA,CREN
GOTOLOOP
END
2、提高内容:
定时1秒向计算机发送0~9的ASCII码值。
实验程序:
LISTP=16F877
#INCLUDE
COUNT1EQU20H
COUNT2EQU21H
ORG0040H
START
BSFSTATUS,RP0
BCFSTATUS,RP1
MOVLW4DH
MOVWFSPBRG
MOVLW00H
MOVWFTXSTA;设置为异步通讯
BCFSTATUS,RP0
BSFRCSTA,SPEN;设置为串口通讯
MOVLW31H
MOVWFT1CON;使用Timer1作为1秒定时的定时工具
LOO1
CALLDELAY
MOVLW30H
MOVWFTXREG
MOVLW09H
MOVWFCOUNT2;发送计数器,发送每到10次(发送至39)便返回至30
BSFSTATUS,RP0
BCFSTATUS,RP1
BSFTXSTA,TXEN;发送开始
BCFSTATUS,RP0
BCFSTATUS,RP1
LOO2;循环累加发送程序
CALLDELAY
INCFTXREG,F
BSFSTATUS,RP0
BCFSTATUS,RP1
BSFTXSTA,TXEN
BCFSTATUS,RP0
BCFSTATUS,RP1
DECFSZCOUNT2,F
GOTOLOO2
GOTOLOO1
DELAY;延时子程序
BCFSTATUS,RP0
BCFSTATUS,RP1
BCFPIR1,TMR1IF
MOVLW04H
MOVWFCOUNT1
MOVLW0CH
MOVWFTMR1H
MOVLW22H
MOVWFTMR1L
LOOP1
BTFSSPIR1,TMR1IF
GOTOLOOP1
DECFSZCOUNT1,F
GOTOLOOP2
RETURN
LOOP2
BCFPIR1,TMR1IF
MOVLW0CH
MOVWFTMR1H
MOVLW22H
MOVWFTMR1L
GOTOLOOP1
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动化 智能 装置 设计 实验 报告