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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机电风扇汇编.docx

1、单片机电风扇汇编东南大学自动化学院实 验 报 告课程名称: MCU(微控制器)综合课程设计 实验名称: 综合课程设计 院 (系): 自动化学院 专 业: 自动化专业 姓 名: 学 号: 实 验 室: 测控技术实验室 实验组别: 同组人员: 实验时间: 2011 年 6 月 10 日评定成绩: 审阅教师: 一实验目的和要求3二实验原理3三实验方案与实验步骤4四实验设备与器材配置7五实验记录7六实验总结7七思考题7八汇编语言源代码7一 课程设计目的和要求1、课程设计题目:家用电器模拟:电风扇2、模拟设计要求:(1)初始加电程序运行,电风扇无速度,只有按下风速选择的任一按键,电风扇开始工作。此时,只

2、要进行新的速度选择也不按下停止键,电风扇就将按设计的风速持续运行。(2)开启摇头开关后,模拟风扇摇头,并且在摇头状态中也可进行风扇的调速。(3)利用LED流水灯的间隔时间模拟风速,程序运行后呈现较长的间隔时间以模拟风扇上电但未运行。按键盘上的键选择速度,并用数码管显示速度选择的数字。拨码开关为摇头开关,开关打开后,流水灯反向表示摇头。二 实验原理1、:使用硬件设备数码管、发光二极管、键盘、拨码开关。实验不需要接线。2、设计思想 (1)整体设计的主要程序使用定时器定时中断实现。 (2)实验要求二极管的流水灯按照按键的不同以不同的间隔时间依次点亮,则将按键的键码作为流水灯的间隔时间,设置一定的中断

3、时间,中断每运行一次则INC R1,再将R1与A作比较(再次之前已经经过键盘扫描,将键盘的键码赋值给了A),若一致则运行流水灯,若不一致则再次运行中断,由此,按不同的键有不同的键码,则中断运行次数不同,流水的时间间隔自然不同。 (3)为保证在按键后能够及时的改变风速,则每次中断时扫描一次键盘,并计算键码显示在数码管上。 (4)每次中断扫描拨码开关状态,以便能够及时的判断是否要处于摇头状态。(5)数码管显示风速选择的数字,并实时刷新。三 实验步骤与实验方案1、 程序流程图(1) 主程序(2)中断服务程序:2、实验步骤:(1)在Medwin中完成项目的创建;(2)添加自己编写的.asm源文件并编译

4、/汇编;(3)生成代码并下载到仿真器上;(4)程序运行。返回监控后可查看寄存器和存储器的值。(5)按键盘选择风速,波动拨码开关选择摇头。四 实验设备与器材配置PC机;EEEC-030型单片机/ISP综合设计实验装置五 实验分析与总结1、 此次实验中加深了对中断程序的理解。最开始的程序流水灯的部分用的是软件延时来实现,但是在调试过程中发现,利用延时会让程序一直处于第一个延时的循环中,在这种情况下无法进行按键的二次选择,拨码开关也只能够选择一次,除了关闭程序以外也没有按预想的实现风扇的停止状态。在这种情况下,我开始在程序里加入中断,以实现能够每次都进行键盘的扫描。加入中断的开始阶段,风速仍然是使用

5、软件延时的流水灯在中断外部以调用子程序的方式来实现的,但是调试过程中发现,中断的调用不理想,延时不能按预想的所实现,常常会出现所有的发光二极管一起亮起的状态,出现问题之后请教了同学使用了现在以中断的最大等待时间作为流水灯间隔时间的方式。INC R1 ;时间加1 MOV A,R5 XRL A,R1 ;最大等待时间到? JNZ EE1 ;没到,转到EE1R5为储存的输入键码,以不同的R5实现延时,从而模拟不同的风速变化。在之后的调节中还出现过虽然按了键码但是流水灯速度不变的情况,经过查看寄存器发现是R1在流水灯运行、按键重新选择时没有进行清零,从而时的R1的数值一直处于同一个状态。2、在调试中由于

6、中断程序无法进行单步调试,全速运行时无法观察寄存器的变化,则设置断点,全速运行程序停止,在断点处单步运行观察寄存器。而在软件中还有“执行到”的选择,只要选择认为需要调试的程序部分的地址或者标号,就可以执行到此处,然后就可以单步跟踪程序的运行了。3、由于自己的能力有限,所以此次设计只是进行了简单的模拟,实现了相对简单的功能。作为程序的改进,还可以加上时间的设置,可在初始化寄存器事设定一定的初值,当在一定风速时,不同的拨码开关波动后,R1与此初值比较,当R1与设置的初值相等,风扇回复按键“0”状态,以实现电风扇的定时。六 附上源代码ORG 0000HLJMP MAINORG 000BH AJMP

7、IINT0MAIN: NOP NOP ACALL LED1 MOV R1,#00H MOV R6,#00H MOV R3,#00H MOV R5,#00H MOV IE, #00H ;关中断 MOV TMOD, #01H ;设置定时器定时方式 MOV TH0, #0E0H MOV TL0, #0E0H ;初值 SETB TR0 SETB EA SETB ET0 ;开中断,启动定时HERE: ACALL SHOW1 ;数码管刷新,等待中断 JMP HERE;中断服务程序;IINT0: ACALL KS ;键盘全局检测 JNZ LK1 ;有键闭合,转移 AJMP DO LK1: ACALL CHE

8、CK DO: MOV DPTR, #0F500H MOVX A, DPTR CJNE A, #00H,YURE ;判断开关是否正确拨动 INC R1 ;时间加1 MOV A,R5 XRL A,R1 ;最大等待时间到? JNZ EE1 ;没到,转到EE1 MOV A,R7 RR A MOV R7,A MOV DPTR, #0F600H MOVX DPTR, A MOV R1,#00H AJMP EE1YURE: INC R1 ;时间加1 MOV A,R5 XRL A,R1 ;最大等待时间到? JNZ EE1 ;没到,转到EE1 MOV A,R7 RL A MOV R7,A MOV DPTR, #

9、0F600H MOVX DPTR, A MOV R1,#00H EE1: MOV TH0, #0E0H MOV TL0, #0E0H SETB TR0 ;重设初值,启动中断 RETI ;LED;LED1: ANL A , #07H ;模8 MOV R0,A CJNE R0,#00H,L1 MOV A,#80H AJMP LL L1: CJNE R0,#01H,L2 MOV A,#01H AJMP LLL2: CJNE R0,#02H,L3 MOV A,#02H AJMP LLL3: CJNE R0,#03H,L4 MOV A,#04H AJMP LLL4: CJNE R0,#04H,L5 MO

10、V A,#08H AJMP LL L5: CJNE R0,#05H,L6 MOV A,#10H AJMP LLL6: CJNE R0,#06H,L7 MOV A,#20H AJMP LLL7: MOV A,#40H LL: CPL A ;取反输出 MOV R7,A ;R7存LED的值 MOV DPTR, #0F600H MOVX DPTR, A RET;键盘扫描;CHECK: MOV R2, #0FEH ;低4位为要选通的行线值 MOV R4, #00H ;行号CHECK1: MOV A, R2 MOV DPTR, #0F700H MOVX DPTR, A MOVX A, DPTR ;读入,高

11、4位为列线状态 ANL A, #0F0H ;屏蔽无效的低4位行线状态 JB ACC.4, LONE ;检测第一列,没按下跳转至下一列 MOV A, #0CH ;该列第一个键码值为0CH AJMP LKPLONE: JB ACC.5, LTWO ;检测第二列 MOV A, #08H AJMP LKPLTWO: JB ACC.6, LTHR ;检测第三列 MOV A, #04H AJMP LKPLTHR: JB ACC.7, NEXT ;检测第四列 MOV A, #00HLKP: ADD A, R4 ;计算键码 MOV R5,A ACALL SHOW1 ;数码管显示最大等待时间 AJMP TC ;

12、键码存在R5中 NEXT: MOV A, R2 JNB ACC.3, CHECK ;4行都已扫描一遍,转回重新从第一行开始 RL A MOV R2, A ;选通值选中下一行 INC R4 AJMP CHECK1TC: RET;软件延时子程序;DELAY: MOV R2, #0C8HLOOP: NOP NOP NOP DJNZ R2, LOOP RET;数码管刷新;SHOW1: PUSH ACC MOV R0,#00HQQ1: MOV A, #0FBH MOV DPTR, #0F400H MOVX DPTR, A ;输出位码 MOV A,R6 ;R6存分数 MOV B,#0AH ;B存10,做除

13、法时用 DIV AB ;除法后,A存十位数字,B存个位数字 MOV DPTR, #TAB MOVC A, A+DPTR MOV DPTR, #0F300H MOVX DPTR, A ;十位输出 ACALL DELAY ;调延时 MOV A, #0FDH MOV DPTR, #0F400H MOVX DPTR, A ;输出位码 MOV A,B MOV DPTR, #TAB MOVC A, A+DPTR MOV DPTR, #0F300H MOVX DPTR, A ;个位输出 ACALL DELAY ;调延时 MOV A, #0FEH MOV DPTR, #0F400H MOVX DPTR, A

14、;输出位码 MOV A,R5 ;R5存最大设定时间(键盘) MOV DPTR, #TAB MOVC A, A+DPTR MOV DPTR, #0F300H MOVX DPTR, A ;输出键盘值 ACALL DELAY ;调延时 CJNE R0,#3AH,QQ AJMP QQ2 QQ: INC R0 AJMP QQ1QQ2: POP ACC RET;全局键盘检测;KS: MOV DPTR, #0F700H MOV A, #0F0H ;4行全选中 MOVX DPTR, A MOVX A, DPTR CPL A ;A取反,若无键按下,高四位就全为0 ANL A, #0F0H ;屏蔽无效的低4位行线状态 RET;段码表;TAB: DB 0C0H DB 0F9H DB 0A4H DB 0B0H DB 99H DB 92H DB 82H DB 0F8H DB 80H DB 90H DB 88H DB 83H DB 0C6H DB 0A1H DB 86H DB 8EH; END

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

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