




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计设计题目:简易教学用打铃器设计目录一. 课程设计目的设计任务与要求 3二. 硬件电路图与说明 .3三. 电路原理图总体设计方案与说明 .4四. 软件设计主要模块流程图 .5.15五. 源程序清单与注释.7六. 小结15它能起到七 . 参考文献一课程设计目的 设计任务与要求目的:微机原理与接口技术是一门实践性和实用性都很强的课程,学习的目的在于应用。 本课程设计是配合 “危机原理与接口技术” 课堂教学的一个重要的实践教学环节, 巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。系统功能任务要求:1 )实时时钟LED显示(按小时:分:秒显示)2 )按正常教
2、学时间打铃3 )允许修改当前时间4 )允许修改打铃时间二、硬件电路图与说明电路图如下所示:主要说明:1. 部分寄存器及按键说明28H:扫描指针寄存器20H-25H :显示缓存寄存器R6:时钟寄存器R5:分钟寄存器R4:秒钟寄存器K1:模式选择键K2:时加1 (定时器组加1 )键K3:分加1 (定时器时加1 )键K4:秒加1 (定时器分加1 )键K5:定时器状态改变既存储键2. 校时模式按下K1 (模式选择键),将模式选择为校时模式(模式指示灯黄灯亮);K2.K3.K4分别为时钟加1键,分钟加1键,秒钟加1键,K5无用。3. 定时模式按下K1 (模式选择键),将模式选择为定时模式(模式指示灯绿灯
3、亮);K2为定时器组选择(本装置有 24组定时器)键;K3.K4 分别为定时器时钟加 1 键和定时器分钟加 1 键;K5为定时器状态选择键,每按K5一次,此组的定时器状态改变一次, 并将此组数据存入 93C46 中。4. 工作模式按下K1 (模式选择键),将模式选择为正常工作模式(模式指示灯红灯亮);K2.K3.K4.K5 无用。5. 存储器93C46的相关介绍存储器AT93C46为SPI接口;1 脚为 CS, 2 脚为 CLK, 3 脚为 DI , 4 脚为 DO, 5 脚为 GND, 6 脚为 ORG, 7 脚为 NC, 8 脚为 VCC;单5V电压,DIP8, 64*16 (ORG为HI
4、 )或128*8 (ORG为LO),芯片及字的清除,时钟最高为250KHZ读(READ操作:当下达 10XXXX指令后,将地址(XXXXXX的数据在 CLK=HI 时由DO输出;写(WRITE操作:在写入之前,必须先下达写使能(EWEN指令,然后在下达 01XXXXXX指令后当CLK为HI时,在把数据写入指定的地址( XXXXXX,而DO=0时,表示还在烧写, 烧写完成后,DO会转为HI,写入动作完成后,必须再下达写禁止( ENDS指令;写使能(EWEN :下达0011XXXX指令后,才可进行写入(WRITE的数据清除。写禁止(EWDS: 下达0000XXXX指令后,才可重复进行写入( WRI
5、TE的动作。三电路原理图总体设计方案与说明1 .电路原理图设计思路利用单片机及定时器设计的一个时钟,在每次秒加 1 的计时过程中,都与规定的时间作 比较,如果相等就进行开关电铃,不等则返回。2 .电路原理图总体设计框图四.软件设计主要模块流程图1.总体软件流程图2.校时程序流程图3.校分及显示流程图A五.程序清单与注释程序分为五部分1. 初始化程序2. 键值处理程序3. 中断程序4. 显示程序5. 存储器93C46读写程序具体程序如下:初始化程序:READ EQU 0 ;读 93C46WRITE EQU 2 ;写入 93C46EWEN EQU 4; 93C46 写入使能EWDS EQU 6;
6、93C46 写入禁止ADR46 EQU 21H ; 93C46 地址显示显示启动定时器进入工作状态 时分值送显示缓存区K1有按键吗?清分单元显示分值加1置校分标志K3有按键吗?K1有按键吗?是60分吗?THIGH EQU 0F8HTLOW EQU 5FHTIMENEQU 30;打铃持续时间(30秒)CS BIT P3.7; 93C46CSCLK BIT P3.6; 93C46CLKDI BIT P3.5; 93C46DIDO BIT P3.4; 93C46DOORG 0000H ;主程序起始地址AJMP START;跳至主程序ORG 000BH; TIMER0中断起始地址AJMP TIM0 ;
7、跳至TIMER0中断子程序START:MOV SP,#60H;设置堆栈在 60HMOV 28H,#00 ;显示寄存器初值为 00MOV R6,#12H ;”寄存器值为12HMOV R5,#00H ; 分”寄存器值为00HMOV R4,#00H ; 秒”寄存器值为00HMOV TMOD,#01H 设 TIMER0为 MODE1MOV TH0,#THIGH ;计时中断为 4000微秒MOV TL0,#TLOWMOV IE,#82 ; TIMER中断使能MOV R2,#250 ;中断 250 次SETB TR0 ;启动 TIMER0键值处理程序:LOOP: SETB P0.5 ;工作模式CLR P0
8、.6CLR P0.7N1JB P0.0,N1; K1 (模式选择键)按了?不是则跳至ACALL DELAY ;消除抖动JNB P0.0,$; K1 (模式选择键)放开了?ACALL DELAY ;消除抖动AJMP SET ;转到定时模式 SETN1: MOV 2FH,R6 ;将时钟数据载入 2FH中MOV 2EH,R5 ;将分钟数据载入 2EH中MOV ADR46,#00 ;把 93C46 地址置 0SETB RS0 ;将工作寄存器组选择 1区LOOP1: MOV A,#READ;读 93C46ACALL TO93c46MOV A,R3 ;取出定时器的状态ANL A,#01HCJNE A,#0
9、1H,N2 ;定时器为关闭,则跳转至 N2MOV A,R4 ;取出定时器分钟数据CJNE A,2FH,N2 ;定时器分钟数据与时钟分钟不同则转至N2MOV A,R5 ;取出定时器时钟数据CJNE A,2EH,N2 ;定时器时钟数据与时钟时钟不同则转至N2SETB P2.1 ;定时器时间到,打铃MOV A,ADR46 ;将93C46地址载入 A中N2: CJNE A,#1EH,N3 ;到定时器数据表表尾?没到转至 N3MOV ADR46,#00 ;到表尾,置 93C46地址为表头AJMP LOOP1;转至 LOOP1N3: INC ADR46 ; 93C46地址加 2INC ADR46AJMP
10、LOOP1; 转至 LOOP1SET: CLR P0.5 ;校时模式SETB p0.6CLR P0.7LOOPS: JB P0.0,N11 ; K 1 (模式选择键)按了?不是则跳至N11ACALL DELAY ;消除抖动JNBP0.0,$ ; K1 (模式选择键)放开了?ACALL DELAY ;消除抖动AJMP SETTIME ;转至 SETTIMEN11: JB P0.1,N13; K2 (时钟加1键)按了?不是则跳至 N13ACALL DELAY ;消除抖动MOV A,R6 ;将时寄存器的值载入 AADD A,#01H ; A 内容加 1DA A ;做十进制调整MOV R6,A ;将A
11、的值存入时寄存器CJNE A,#24H,N12 ;是否超过 24时?不是则跳至 N12MOV R6,#00H ;是则清除时寄存器的值为 00N12: JNB P0.1,$; K2 (时钟加 1 键)放开了?ACALL DELAY ;消除抖动N13: JB P0.2,N15; K3 (分钟加1键)按了?不是则跳至 N15ACALL DELAY 消除抖动MOV A,R5 将分寄存器的值载入 AADD A,#01 ; A 内容加 1DA A 做十进制调整MOV R5,A ;将A的值存入分寄存器CJNE A,#60H,N14 是否超过 60分?不是则跳至 N14MOV R5,#00H 是则清除分寄存器
12、的值为 00N14: JNB P0.2,$; K3(分钟加 1 键)放开了?ACALL DELAY 消除抖动N15: JB P0.3,N17; K4 (秒钟加1键)按了?不是则跳至 N17ACALL DELAY ;消除抖动MOV A,R4 ;将秒寄存器的值载入 AADD A,#01 ; A 内容加 1DA A ;做十进制调整MOV R4,A ;将A的值存入秒寄存器CJNE A,#60H,N16 ;是否超过 60秒?不是则跳至 N16MOV R4,#00 ;是则清除分寄存器的值为 00N16: JNB P0.3,$; K4 (秒钟加 1 键)放开了?ACALL DELAY ;消除抖动N17: A
13、JMP LOOPS ;转至 LOOPSSETTIME:CLR P0.5 ;定时模式CLR P0.6SETB P0.7MOV ADR46,#00HMOV A,#READ ;读93C46地址为 ADR46中的数据ACALL TO9346LOOPB:ACALL DISP ;调用 DISPJB P0.0,N21 ; K1 (模式选择键)按了?不是则跳至N21ACALL DELAY ;消除抖动JNB P0.0,$; K1 (模式选择键)放开了?ACALL DELAY ;消除抖动AJMP LOOP; 转至 LOOPN21: JB P0.1,N22; K2 (定时器组加1键)按了?不是则跳至ACALL DE
14、LAY ;消除抖动MOV A,ADR46 ;将地址载入 ACLR C ;清除进位位RRC A ; A右移1位ADD A,#01H ;地址加 1MOV R6,A ; 将 A 存入 R6CLR C ;清除进位位RLC A ; A左移1位MOV ADR46,A;将 A中地址存入 ADR46MOV A,#READ;读93C46地址为 ADR46中的数据ACALL TO9346JNB P0.1,$; K2 (定时器组加1键)放开了?ACALLDELAY;消除抖动N22: JB P0.2,N24;K3 (定时器分钟加 1 键)按了?不是则跳至ACALLDELAY; 消除抖动MOV A,R4 ;将定时器分寄
15、存器的值载入 AADD A,#01 ; A 内容加 1DA A ;做十进制调整MOV R4,A ;将A的值存入定时器分寄存器CJNE A,#60H,N23 ;是否超过 60分?不是则跳至 N16N22N24MOV R4,#00H ;是则清除分寄存器的值为 00N23: JNB P0.2,$; K3 (定时器分钟加 1键)放开了?ACALL DELAY ;消除抖动N26N27N24: JB P0.3,N26; K4 (定时器时钟加1键)按了?不是则跳至ACALL DELAY ;消除抖动MOV A,R5 ;将定时器时寄存器的值载入AADD A,#01H ; A 内容加 1DA A ;做十进制调整M
16、OV R5,A ;将A的值存入定时器时寄存器CJNE A,#24H,N25 ;是否超过24时?不是则跳至 N25MOV R5,#00 ;是则清除分寄存器的值为00N25:JNB P0.3,$; K4 (定时器时钟加1键)放开了?ACALL DELAY ;消除抖动N26:JB P0.4,N27; K5 (改变定时器状态存储键)按了?不是则跳至ACALL DELAY ;消除抖动INC R3 ;改变R3最低位的值(表示定时器的状态,1表示开,0表示关)MOV A,#WRITE ;将A的值写入 93C46地址为 ADR46中ACALL TO9346JNB P0.4,$; K5 (改变定时器状态存储键)
17、放开了?ACALL DELAY ;消除抖动N27:AJMP LOOPB ;转至 LOOPB读写93C46程序:TO9346:SETB CS ; CS=1SETB DI ; DI=1SETB CLK ; CLK=1ACALL DELAYCLR CLK ; CLK=0ACALL DELAYMOV DPTR,#JPTBL46JMP A+DPTRJPTBL46:AJMPSREAD 读AJMP SWRITE ;写AJMP SEWEN写使能AJMP SEWDS写禁止SREAD: MOV A,ADR46 ;地址载入 AADD A,#80H ; 10XXXX读指令ACALL SDT46 ;读入地址ACALL
18、RDT46 ;读定时器时钟数据MOV R5,A ;存入 R5ACALL RDT46 ;读定时器分钟数据MOV R4,A ;存入 R4INC ADR46 ;地址加 1MOV A,ADR46 ;地址载入AADD A,#80H ; 10XXXX读指令ACALL SDT46 ;读入地址ACALL RDT46 ;读定时器状态数据ACALL RDT46DEC ADR46MOV R3,A ;存入 R3AJMP EX9346SWRITE:MOVA,ADR46写入地址载入 AADD A,#40H ; 01XXXX写指令ACALL SDT46 ; 载入地址MOV A,R5 ;载入定时器时钟数据ACALL SDT4
19、6 ;写入定时器时钟数据MOV A,R4 ;载入定时器分钟数据ACALL SDT46 ;写入定时器分钟数据INC ADR46 ;地址加 1MOV A,ADR46;写入地址载入 AADD A,#40H ; 01XXXX写指令ACALL SDT46 ;载入地址MOV A,R3 ;载入定时器状态数据DEC ADR46; 地址减 1ACALL ADR46 ;写入定时器状态数据AJMP EX9346 ;转至 EX9346SEWEN:MOVA,#30H 0011XXXX写使能指令ACALL SDT46AJMP EX9346SEWDS:CLR A; 0000XXXX写禁止指令ACALL SDT46EX934
20、6:CLRCS ;CS=0RETSDT46:MOV R2,#8 ;写入 8 位数据SD1: RLC AMOV DI,CSETB CLKACALL DELAYCLR CLKACALL DELAYDJNZ R2,SD1RETRDT46:MOV R2,#8 ;读出 8 位数据RD1: SETB CLKACALL DELAYCLR CLKACALL DELAYMOV C,DORLC ADJNZ R2,RD1RETDELAY:MOVR7,#OFH ;DJNZ R7,$RET中断程序:TIM0:MOV THO,#THIGH ;重设计时 4000 微秒MOV TL0,#TLOWPUSH ACC;将A的值存入
21、堆栈PUSH PSW 将PSW勺值存入堆栈CLR RS0 ;设置工作寄存器为 0区DJNZ R2,X2 ;计时 1 秒MOV R2,#250ACALL CLOCK ;调用计时子程序 CLOCKACALL DISP ;调用显示子程序X2:ACALL SCAN ;调用扫描子程序POP PSWPOP ACCRETI显示器驱动程序:SCAN:MOV R0,#28H ;( 28H)为扫描指针INC R0 ;扫描指针加1CJNE R0,#6,X3 ;扫描完6个显示器?不是跳至 X3MOV R0,#00 ;是则扫描指针为 0X3:MOV A,R0 ;扫描指针载入 AADD A,#20 ; A加常数20H (
22、显示寄存器地址)=各时间显示区地址 ;存入只1=各时间显示地址MOV R1,A ;扫描指针存入 AMOV A,R0;将A高低4位交换(P1高4位为扫描值,SWAP A ;低4位为显示数据值)ORL A,R1 ;扫描值+显示值MOV R1,A ;输出至 P1RET计时程序:CLOCK:MOV A,R4 ; R4为秒寄存器ADD A,#01 ;加 1DA A ;做十进制调整MOV R4,A ;存入秒寄存器CJNE A,#TIMEN,X4 ;是否超过打零连续时间?不是则跳至X4CLR P2.0 ;关铃X4:CJNE A,#60H,X5 ;是否超过 60秒?不是则跳至 X5MOV R4,#00 ;是则
23、清除为0MOV A,R5 ; R5为分寄存器ADD A,#01 ;加 1DA A ;做十进制调整MOV R5,A ;存入分寄存器CJNE A,#60H,X5 ;是否超过60分?不是则跳至 X5MOV R5,#00 ;是则清除为 0MOV A,R6 ; R6为时寄存器ADD A,#01 ;力口 1DA A ;做十进制调整MOV R6,A ;存入时寄存器CJNEA,#60H,X5 ;是否超过 24时?不是则跳至 X5MOV R6,#00 ;是则清除为0X5:RET显示程序:DISP:MOVR1,#20 ; ( 20H)为显示寄存器,R仁20HMOV A,R6 ;将时寄存器的内容存入AMOV B,#
24、01H ;设B累加器的值为10HDIV AB ; A/B,商(十位数)存入 A,余数(个位数)存入 BMOV R1,B;将B的内容存入(20H)INC R1 ; R仁21HMOV R1,A;将 A的内容存入(2伯)INC R1 ; R仁 22HMOV A,R5 ;将分寄存器的内容存入AMOV B,#01H ;设B累加器的值为10HDIV AB ; A/B,商(十位数)存入 A,余数(个位数)存入 BMOV R1,B;将B的内容存入(22H)INC R1 ; R仁 23HMOV R1,A;将 A的内容存入(23H)INC R1 ; R仁 24HMOV A,R4 ;将秒寄存器的内容存入AMOV B
25、,#01H ;设B累加器的值为10HDIV AB ; A/B,商(十位数)存入 A,余数(个位数)存入 BMOV R1,B;将B的内容存入(24H)INC R1 ; R仁 25HMOV R1,A;将 A的内容存入(25H)RETEND六 . 小结我们认为, 在这学期的单片机课程设计中,在收获知识的同时,还收获了阅历,收获了 成熟,在此过程中,我通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思 考的能力, 在各种其它能力上也都有了提高。 更重要的是,我学会了很多学习的方法。 而这 是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、 再实践。不管怎样, 这些都是一种锻炼, 一种知识的积累, 能力的提高。完全可以把这个当作基 础东西,只有掌握了这些最基础的, 才可以更进一步,取得更好的成绩。很少有人会一步登 天吧。永不言弃才是最重要的。而且, 这对于我们的将来也有很大的帮助。 以后, 不管有多苦, 我想我们都能变苦为乐, 找寻有趣的事情, 发现其中珍贵的事情。 就像中国提倡的艰苦奋斗一样, 我们都可以在结束 之后变的更加成熟,会面对需要面对的事情。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度美容院美容美发服务入股协议
- 2025年度电线电缆绿色包装与供货合同
- 股权代持协议书标准模板:2025年度股权收购执行范本
- 二零二五年度交通事故车辆损失保险理赔协议
- 二零二五年度汽车展览会参展商环保责任合同
- Unit 1 Going to Beijing 单元基础知识复习(含答案)
- 2025年度温室大棚承包与农业科技成果转化合作协议
- 二零二五年度手车过户买卖与车辆上牌服务协议
- 儿童国画入门课堂
- 中级消防设施操作员速记口诀
- deepseek-r1论文-中文翻译版
- 项目式学习在小学数学教学中的应用
- 2025年中远海运物流有限公司招聘笔试参考题库含答案解析
- 2024年3月-6月-9月-12月青少年软件编程Python等级考试二级真题试卷(全4套 含答案)
- 2025中智集团下属单位公开招聘41人高频重点提升(共500题)附带答案详解
- 中医理疗馆路演
- 设备维修的基本技能培训
- 产后腹直肌分离治疗
- 2025年中国邮政招聘笔试参考题库含答案解析
- 人教版(2024)七年级英语上册新教材的变化及教学建议课件
- 2025年新闻部工作计划
评论
0/150
提交评论