ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:89.94KB ,
资源ID:2200172      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2200172.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机.docx

1、单片机一、主要内容:1) 输出实验:假定4个端口全部连接发光二极管,编程实现所有发光二极管同时亮,延迟一定时间(自定)后,又同时灭,如此循环。 2) 输入:从P0口输入某个数据到累加器A,打开观察窗口观察数据是否进入累加器A。实现方式:通过peripherals实现端口数据观察。3) 假设P0口外接一个数码管(共阴),如图所示,请在数码管上轮流显示数字09。(采用软件延时)。数码管编码真值表(09): DB 0FCH,60H,0DAH,0F2H,66H DB 0B6H,0BEH,0E0H,0FEH,0F6H 二、 流程图及程序1) 输出实验:流程图:说明:本实验通过对P0P3四个端口值的控制以

2、及延时程序的插入实现LED灯的循环亮灭。程序: ORG 0000H ;定义程序起始地址 LJMP MAIN ;跳转到MAIN ORG 030H ;定义MAIN的入口地址MAIN: MOV P0,#00H MOV P1 ,#00H MOV P2 ,#00H MOV P3 ,#00H ;给四个端口P0P3赋以初值0,使得四个端口连接的LED灯全亮 ACALL DEL ;调用延时子程序DEL,跳到DEL执行延时 MOV P0 ,#0FFH MOV P1 ,#0FFH MOV P2 ,#0FFH MOV P3 ,#0FFH ;给四个端口P0P3赋值0FFH, 使得四个端口连接的LED灯全灭 MOV A

3、,P0 ;将P0口的值传送到累加器A中 ACALL DEL ;再次调用延时子程序DEL AJMP MAIN ;跳转回MAIN程序入口重新执行 ORG 0200H 定义;DEL子程序入口DEL: MOV R5,#04H ;将R5赋值04HF3: MOV R6,#0FFH ;给R6赋值FFHF2: MOV R7,#0FFH ;给R7赋值FFHF1: DJNZ R7,F1 ;R7(R7)-1,若(R7)不等于0,则跳转F1 DJNZ R6,F2 ; R6(R6)-1,若(R6)不等于0,则跳转F2 DJNZ R5,F3 ; R5(R5)-1,若(R5)不等于0,则跳转F3 RET ; 调用结束,返回

4、 END 说明:延时程序的延时时间为: 42562561us.2) 在数码管(共阴)上轮流显示数字09 :流程图:说明:此实验主要通过对P0端口的赋值对共阴极管进行控制而实现数码管对数字的显示,通过赋值的不同和延时的插入使其循环不同的数字。本例中只显示了0、1、2三个数字。还可以通过加入类似的语句现实更多的数字。程序:ORG 0000H ;定义程序起始地址 LJMP MAIN ;跳转到MAIN主程序 ORG 030H ;定义MAIN的入口地址MAIN: MOV P1,#0FCH ;将0FCH放至端口P1中,实现数码管显示数字0 ACALL DEL ;调用延时子程序,跳入DEL执行延迟 MOV

5、P1,#060H ;改变端口P1的值,使数码管显示数字1 ACALL DEL ;延时 MOV P1,#0DAH ; 改变端口P1的值,使数码管显示数字2 ACALL DEL ;延时 AJMP MAIN ;跳转回MAIN函数重新开始执行DEL: MOV R5,#04HDEL1: MOV R6,#0FFHDEL2: MOV R7,#0FFHDEL3: DJNZ R7, DEL3 DJNZ R6, DEL2 DJNZ R5, DEL1 ;此部分与1)程序中的延迟相同 RET ;返回 END程序补充:若需要再现实3、4、5、6、7、8、9需加入以下程序段在显示2之后:MOV P1,# 0F2H ;改变

6、端口P1的值,使数码管显示数字3 ACALL DEL ;延迟MOV P1,# 66H ;改变端口P1的值,使数码管显示数字4 ACALL DELMOV P1,# 0B6H ;改变端口P1的值,使数码管显示数字5 ACALL DELMOV P1,# 0BEH ;改变端口P1的值,使数码管显示数字6 ACALL DELMOV P1,# 0E0H ;改变端口P1的值,使数码管显示数字7 ACALL DELMOV P1,#0FEH ;改变端口P1的值,使数码管显示数字8 ACALL DELMOV P1,# 0F6H ;改变端口P1的值,使数码管显示数字9 ACALL DEL【实验二】定时器/计数器及中

7、断实验一、实验内容1)假设P0口外接一个数码管(共阴),如图所示,请在数码管上轮流显示数字09。(采用定时器实现延时并显示数字)。 数码管编码真值表(09): DB 0FCH,60H,0DAH,0F2H,66H DB 0B6H,0BEH,0E0H,0FEH,0F6H 2) 单片机晶振为12MHZ,要求利用T1,工作方式1产生周期为2ms的方波。 解:利用方式1,16位计数器,当定时时间到,T1计数器溢出使TF1置“1”,由于不采用中断方式,TF1置“1”后,不会自动复“0” ,故需要指令给TF1清“0”。初值:65536-1ms/1us=65536-1000=64536=FC18H二、 流程图

8、及程序1). 数码管轮流显示(延时用定时器实现)流程图:程序: ORG 0000H AJMP START ;跳至START开始执行程序 ORG 001BH AJMP T00 ;跳转至中断服务程序T00 ORG 0030HSTART: MOV SP,#7FH ;设置堆栈地址 MOV B,#0F6H PUSH B ;先压入数字9对应的端口值 MOV B,#0FEH PUSH B MOV B,#0E0H PUSH B MOV B,0BEH PUSH B MOV B,#0B6H PUSH B MOV B,#66H PUSH B MOV B,0F2H PUSH B MOV B,#ODAH PUSH B

9、MOV B,#60H PUSH B MOV B,#0FCH PUSH B ;将09的数值按倒着的顺序压入栈内MOV R0,#00H ;将R0的值初始为0MOV TMOD,#10H ;T1工作于方式1 MOV TH1,#0FCH MOV TL1,#18H ;给计数器T1赋初值 SETB ET1 ;T1允许中断 SETB EA ;CPU开中断 SETB TR1 ;启动T1 SJMP $ ;等待中断T00: MOV TH1,#0FCH MOV TL1,#18H ;重新给T1赋初值 INC R0 ;每中断一次,R0加1PEND: POP B ;依次弹出堆栈的值 MOV P1,B ;传送到端口P1,完成

10、相应数字的显示CJNE R0,#0AH,HA ;判定:当R0=10时,则全部元素都弹出,需重新完成栈压入工作,AJMP START HA:RETI END2). 查询方式产生2ms方波流程图说明:此实验利用T1工作与1方式进行计时,当计满1000次的时候,TF=1,产生溢出,计数重新开始,TF恢复至“0”,相应的输出波函数发生一次翻转,多次重复,不断翻转,从而产生2ms的方波。程序: ORG 0000H ;定义程序起始地址 AJMP START ;跳转到START开始执行程序 ORG 0030H ;定义START的入口地址START:MOV TMOD,#10H ;设置T1计数器为方式1 MOV

11、 TH1,#0FCH MOV TL1,#18H ;向TH1、TL1中分别放入初值的高低部分0FCH、18H SETB TR1 ;将TR1置位,启动T1LOOPER:JBC TF1,PE ;循环查询TF1是否置位;若置位,则跳至PE,且TF10 AJMP LOOPER PE:MOV TH1,#0FCH MOV TL1,#18H ;重新装TH1、TL1初值 CPL P1.0 ;是P1.0发生翻转,实现正确输出方波 AJMP LOOPER ;调回LOOPER继续检测TF1 END3) 中断方式产生2ms方波流程图说明:此程序在于当TF1置位,存在溢出的时候直接产生中断,从而使T1重新装填,并实现输出

12、方波。程序: ORG 0000H ;定义程序的入口地址 AJMP START ;跳转至START开始执行程序 ORG 001BH ;定义T1中断的入口 AJMP T00 ;跳至中断服务程序T00 ORG 0030H ;定义START的入口地址 START: MOV TMOD,#10H ;设置T1为方式1 MOV TH1,#0FCH MOV TL1,#18H ;给计数器T1装入初值 SETB ET1 ;T1允许中断 SETB EA ;CPU允许中断 SETB TR1 ;启动T1 SJMP $ ;暂停T00: MOV TH1,#0FCH ; MOV TL1,#18H ;给计数器T1装入初值 CPL

13、 P1.0 ;输出方波 RETI ;返回 END【实验三】串口通信实验 一、 实验内容假定P1口连接8个外围开关,不断读取P1口输入的开关量信息,并将读取的结果通过串口发送出去。其中P1口的输入信息通过Peripherals-P1口模拟,并通过serial window查看输出信息。流程图及程序:1) 发送流程图:程序: ORG 0000H ;定义程序的起始地址 AJMP START ;跳转至START开始执行程序 ORG 0130H ;定义START入口地址START:MOV SCON,#80H ;设置串行口为工作方式2 MOV PCON,#00H ;波特率不加倍MAIN: MOV A,P1

14、 ;读取P1信息 MOV SBUF,A ;将信息存入发送数据缓冲SBUF,并发送 ACALL DEL ;调用延迟程序DEL,产生延迟WAIT: JBC TI,MAIN ;循环查询TI是否置位,即判断是否完成发送 SJMP WAITDEL:MOV R5,#84HDEL1:MOV R6,#0FFHDEL2:MOV R7,#0FFHDEL3:DJNZ R7, DEL3 DJNZ R6, DEL2 DJNZ R5, DEL1 ;延时程序 RET ;返回END2) 接收流程图:程序: ORG 0000H ;定义程序的起始地址 AJMP START ORG 0023H AJMP SERIN ;跳转到子程序SERIN ORG 0030H ;定义START程序入口START:MOV SCON,#90H ;设置串行工作方式2,允许接收 MOV PCON,#00H ;波特率不加倍 SETB ES ;允许串行口中断 SETB EA ;允许CPU中断 SJMP $ ;暂停SERIN:CLR RI ;必须要加,将RI清零 MOV A,SBUF ;将SBUF中数据放入A中 MOV P0,A ;将A中数据独到P0端口 RETI ;返回

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

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