单片机课程设计.docx
- 文档编号:23952037
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:30
- 大小:510.58KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
单片机课程设计
人民武装学院
信息工程系
课程设计报告
人武学院打铃系统的设计
专业:
电子信息工程技术
班级:
10电子
姓名:
王斌
学号:
pz102024108
指导老师:
王代强
引言
该时钟控制系统有6位数码显示器,具有实时显示时钟(显示当前时间的小时、分钟及秒)功能,通过外扩锁存器还可以实现多点、多电器设备的控制。
该控制系统可广泛用于学校、工厂和机关的自动打铃、电视、室内照明及其他对象控制,同时也可用于家庭或学生寝室进行时间指示及多点时间提醒。
该校园作息时间控制系统实现了对上下课打铃、教学楼照明、学生宿舍灯、校园路灯四个开关量的精确控制。
月时间累计误差≤1分钟。
系统设有的键盘电路,方便定期进行时间校准。
1、整体设计
根据设计要求画出系统框图,如图1所示,原理见附录1。
该控制系统是由微处理器、时钟控制芯片、蜂鸣器、数码显示部分以及键盘输入部分所组成。
该控制系统设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟。
系统还采用AT89S52作为处理器,用DS12887实时时钟芯片作时钟计时单元,它不仅可以计时,同时内部还有114个非易失RAM单元,可以保证时钟及内部RAM内的数据不受停电的影响,保护数据不丢失。
显示电路采用了CD4511芯片来完成驱动和译码的功能,另外该芯片具有的数据锁存功能克服了采用软件扫描显示电路所固有的闪烁的问题。
输出驱动电路部分,采用了CD4042反相锁存器来驱动二极管、蜂鸣器工作。
图1系统框图
根据贵州大学人民武装学院实际情况对上下课打铃、教室照明、学生宿舍灯及校园路灯四个开关量在一天内的控制时间列表如下:
表1作息时间控制表
时间
事件
动作
6:
30
起床响铃钟
D2亮
7:
15
早操铃响
教室灯开
LS1响,延时15S;
D1亮、D2灭
7:
45
早上课时预铃响
LS1响,延时15S
8:
00
第一节上课铃响
LS1响,延时15S
8:
50
第一节下课铃响
LS1响,延时15S
9:
00
第二节上课铃响
LS1响,延时15S
9:
50
第二节下课铃响
LS1响,延时15S
10:
10
第三节上课铃响
LS1响,延时15S
11:
00
第三节下课铃响
LS1响,延时15S
11:
10
第四节上课铃响
LS1响,延时15S
12:
00
第四节下课铃响
教室灯关,宿舍灯开
LS1响,延时15S;
D1灭、D2亮
14:
20
第五节课预备铃响
宿舍灯关、教室灯开
LS1响,延时15S;
D2灭、D1亮
14:
30
第五节课上课铃响
LS1响,延时15S
15:
20
第五节课下课铃响
LS1响,延时15S
15:
30
第六节课上课铃响
LS1响,延时15S
16:
20
第六节课下课铃响
LS1响,延时15S
16:
30
第七节课上课铃响
LS1响,延时15S
17:
20
第七节课下课铃响
LS1响,延时15S
17:
30
第八节课上课铃响
LS1响,延时15S
18:
20
第八节课下课铃响
教室灯关、宿舍灯开
LS1响,延时15S;
D1灭、D2亮
19:
50
晚自习铃响;路灯开、
宿舍灯关、教室灯开
LS1响,延时15S;
D1亮、D2灭、D3亮
20:
00
上晚自习铃响
LS1响,延时15S
22:
00
下晚自习铃响、宿舍灯开
LS1响,延时15S;D2亮
22:
50
教室灯关
D1灭
23:
50
学生宿舍灯关、路灯关
D2灭、D3灭
2、硬件设计
按系统框图总体划分三个设计部分如下:
2.1系统部分
单片机采用片内带有4KBEEPROM的AT89C52,这样就不需要再扩展片外程序存储器,可以简化设计线路;用一片74LS138译码器提供5个外部地址(CS0、CS1、CS2、CS3、CS4),分别对于6个七段码显示器、1个时钟芯片和1个锁存器地址;采用一片时钟芯片DS12887为系统提供准确时间。
该芯片内部自带锂电池,计时精确,不受系统电源影响;AT89S52的T0与T1相连,利用单片机内部的定时/计数器完成15秒打铃控制。
如图2所示。
图2-系统部分原理图
2.2键盘接口电路
键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。
本系统中采用 独立式按键结构,如图3所示,各按键相互独立地接通一条输入数据线,当任何一个键按下时,与之相连的输入数据线即被置0,而平时该线置1。
独立式按键电路配置灵活,软件结构简单。
当功能键不很多时,采用该种方式比较合适。
图3-键盘接口原理图
2.3显示部分
选用6个七段数码管分别显示时、分、秒,数码管的驱动选用具有译码、锁存、驱动功能的CD4511芯片,显示数据来自DS12887的时单元、分单元、秒单元,经P0口(BCD码)送到CD4511芯片,译码后再送到显示器输出显示。
如图4所示。
图4-显示部分原理图
2.4输出控制部分
输出控制信号由P2口送到锁存器锁存,经74LS04芯片驱动相应的输出部分动作。
例如:
要开路灯执行指令MOVP2,#02H即可,而若执行指令MOVP2,#E0H,则是路灯、学生宿舍灯和教室灯全部打开。
P2口各位所控制的对象见表2,输出部分原理图如图5所示。
表2位控表
P2口的位控制,“0”控制发光二极管或三极管截止、“1”控制发光二极管或三极管导通
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
教室灯
宿舍灯
路灯
电铃
X
片选信号输出端
图5-输出部分原理图
3、DS12887的功能及工作原理
DS12887是一个DALLAS公司生产的实时时钟芯片,它把时钟芯片所需的晶振电路和外部锂电池等相关电路都集成与芯片内部,具有低功耗、工作稳定、功能集成度高、计时精确、与各种微处理器接口简便、在没有外接电源情况下可正常工作10年等一系列优点。
它主要由振荡电路、分频电路、周期中断、方波选择电路14字节时钟和控制单元、114字节非易失RAM、十进制、二进制加法器、总线接口电路、电源和写保护单元、内部锂电池等部分组成。
图6DS12887的引线端子排列图
各引线端子功能分配如下:
Ucc、GND——直流电源(+5V)电压,当Ucc低与4.25V时读写禁止,当Ucc低与3V时,电源切换至内部锂电池。
MOT——(模式选择):
MOT接Ucc为MOTROLA方式,MOT接GND为INTEL方式。
SQW——方波输出。
AD0~AD7——双向数据/地址复用线。
AS——(地址选通输入)用于实现信号分离,在AS信号的下降沿把地址锁入DS12887。
DS——数据选通或读输入。
R/W——读写输入。
CS——片选输入。
IRQ——中断申请输入。
RESET——复位输入。
DS12887利用AS(地址选通信号),可以对总线分时复用的微处理器实现简便的接口。
从00H—09H10个单元为时钟、日历及闹钟单元,其内容可由程序写入或读出。
其初始值在芯片初始化时由程序写入,其值可用BIN值(二进制数,编程时写作16进制数)或BCD值,这由寄存器B的DM位(b2)决定。
时钟初始化时,寄存器B的SET位(b7)必须置1,采用每天12h或24h制有寄存器B的24/12位(b1)决定。
在12h制时,时字节的最高位为1表示下午(PM)。
在各单元的内容写完之后,将寄存器B的SET位清0,时钟即开始运行。
这三个闹钟单元有两种用法。
①根据写入到三个闹钟单元的时分秒值,每天产生闹中断一次;②在各闹钟单元写入“自由”码=0C0~0FFH,即最高两位为“1”时为“自由”状态。
如时钟单元写入0C0~0FFH,则每小时闹一次,在时闹和分闹两单元写入0C0~0FFH,则每分闹一次,在三个闹钟单元均写入0C0~0FFH,则每秒闹一次。
DS12887内部的4个可由程序访问的寄存器。
寄存器A
b7
b6
b5
b4
b3
b2
b1
b0
UIP
DV2
DV1
DV0
RS3
RS2
RS1
RS0
UIP(b7)——时间的更新正在进行位。
UIP=1,表示正在进行。
UIP=0不更新,此时读写时钟日历字节有效。
DV2、DV1、DV0——这三位用于震荡器开关和复位计数器链,当他们为010组合时将打开震荡器并允许RTC保持时间;为11X(X为0或1)组合时将使能震荡器并保持计数器链为复位状态。
在把010写到DV0、DV1、DV2之后500ms将发生新的数据更新。
RS3、RS2、RS1、RS0——速率选择位,用于选择周期中断的速率和SQW输出的方波速率,如RS3~RS0全为0,则禁止分频器输出,如表4所示。
表9DS12887方波输出频率的选择
寄存器A选择位
时基4.194304MHz或1.048576MHz
时基32.768KHz
RS3
RS2
RS1
RS0
周期中断速率
SQW方波输出频率
周期中断速率
SQW方波输出频率
0
0
0
0
0
0
0
1
30.517us
32.768kHz
3.90625ms
256Hz
0
0
1
0
61.035us
16.384kHz
7.8125ms
128Hz
0
0
1
1
122.07us
8.192kHz
122.07us
8.192kHz
0
1
0
0
244.141us
4.096kHz
244.141us
4.096kHz
0
1
0
1
488.281us
2.048kHz
488.281us
2.048kHz
0
1
1
0
976.562us
1.024kHz
976.562us
1.0234kHz
0
1
1
1
1.953125us
512Hz
1.953125us
512Hz
1
0
0
0
3.90625us
256Hz
3.90625us
256Hz
1
0
0
1
7.8125ms
128Hz
7.8125ms
128Hz
1
0
1
0
15.625ms
64Hz
15.625ms
64Hz
1
0
1
1
31.25ms
32Hz
31.25ms
32Hz
1
1
0
0
6.25ms
16Hz
6.25ms
16Hz
1
1
0
1
125ms
8Hz
125ms
8Hz
1
1
1
0
250ms
4Hz
250ms
4Hz
1
1
1
1
500ms
2Hz
500ms
2Hz
寄存器B
b7
b6
b5
b4
b3
b2
b1
b0
SET
PIE
AIE
UIE
SQWE
DM
24/12
DSE
SET——设置位。
时钟不更新,SET=1用于时钟初始化。
SET=0时钟每秒更新一次。
PIE——周期中断允许位,RESET使PIE=0。
AIE——闹钟中断允许位,RESET使AIE=0。
UIE——更新结束中断允许位,RESET使UIE=0。
SQWE——方波输出允许位,RESET使SQWE=0。
DM——数据模式位。
DM=1,时间用BIN值;DM=0,时间用BCD值。
24/12——该位=1时,时间为24h模式。
该位=0时,时间为12h模式。
DSE——夏时制允许位。
DSE=1,自动执行夏时制制作。
寄存器C
b7
b6
b5
b4
b3
b2
b1
b0
IRQF
PF
AF
UF
0
0
0
0
IRQF——中断请求标志。
当下例事件之一或多件同时出现时IRQF=1
1PF=PIF=1。
2AF=AIE=1。
3UF=UIE=1。
4即:
IRQF=PF*PIE+AF*AIE+UF*UIE
当IRQF=1时,IRQ端子变为低电平,发出中断请求。
PF——周期中断标志。
当由RS3~RS0决定的周期中断时间到时,
PF置1。
AF——闹钟中断标志。
当设置的闹钟时间到时,AF置1。
UF——更新结束中断标志。
每个时间更新周期结束时,UF=1。
B3、b2、b1、b0——无用位,读时为0。
寄存器D
b7
b6
b5
b4
b3
b2
b1
b0
VRT
0
0
0
0
0
0
0
4、程序框图
软件设计以时钟显示、键盘扫描、为主程序。
在设计中利用单片机时钟计时集成电路完成计时的任务,并500ms向单片机发一个中断,中断子程序有时钟显示及时间比较,如比较相,则说明作息时间已到,发出指令控制电铃或照明电路的开、关操作。
4.1程序流程图(见图7)
图7程序流程图
4.2源程序清单
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#70H
CLRP2.4;电铃控制脚
CLRP2.5;宿舍灯控制脚
CLRP2.6;路灯控制脚
CLRP2.7;教学灯控制脚
CLRP2.3;DS12887选通脚
MOVR0,#0AH;指向寄存器A
MOVA,#2FH;初始化寄存器A,启动DS12887,中断速率500ms
MOVX@R0,A
CLRP2.3;指向寄存器B
MOVR0,#0BH
MOVA,#42H;初始化寄存器B,周期中断允许,选择BCD码,24小时模式
MOVX@R0,A
CLRP2.3
MOVR0,#04H
MOVA,#06H
MOVX@R0,A
CLRP2.3
MOVR0,#02H
MOVA,#29H
MOVX@R0,A
CLRP2.3
MOVR0,#00H
MOVA,#55H
MOVX@R0,A
MODIFY:
LCALLREAD
LCALLDISP
LCALLADJUST
LCALLINT887
SJMPMODIFY
ADJUST:
JBP1.0,AJT1
JNBP1.0,$
LCALLADHOUR
AJT1:
JBP1.1,AJT2
JNBP1.1,$
LCALLDEHOUR
AJT2:
JBP1.2,AJT3
JNBP1.2,$
LCALLADMIN
AJT3:
JBP1.3,AJT4
JNBP1.3,$
LCALLDEMIN
AJT4:
RET
ADHOUR:
MOVA,20H;小时加1子程序
ADDA,#01H
DAA
CJNEA,#24H,INCH2
MOVA,#00H
INCH2:
JCINCH3
INCH3:
MOV20H,A
LCALLWRHOUR
CLRP2.3
MOVR0,#0BH
MOVA,#42H
MOVX@R0,A
RET
DEHOUR:
MOVA,20H;小时减1子程序
CJNEA,#00H,DECH2
MOVA,#23H
SJMPDECH3
DECH2:
ANLA,#0FH
CJNEA,#00H,DECH4
MOVA,20H
SWAPA
ANLA,#0FH
DECA
SWAPA
ORLA,#09H
AJMPDECH3
DECH4:
MOVA,20H
DECA
DECH3:
MOV20H,A
LCALLWRHOUR
CLRP2.3
MOVR0,#0BH
MOVA,#42H
MOVX@R0,A
RET
WRHOUR:
CLRP2.3
MOVR0,#0BH
MOVA,#82H
MOVX@R0,A
CLRP2.3
MOVR0,#04H
MOVA,20H
MOVX@R0,A
RET
ADMIN:
MOVA,21H;分钟加1子程序
ADDA,#01H
DAA
CJNEA,#60H,INCH4
MOVA,#00H
INCH4:
JCINCH5
INCH5:
MOV21H,A
LCALLWRMIN
CLRP2.3
MOVR0,#0BH
MOVA,#42H
MOVX@R0,A
RET
DEMIN:
MOVA,21H;分钟减1子程序
CJNEA,#00H,DECH6
MOVA,#59H
SJMPDECH7
DECH6:
ANLA,#0FH
CJNEA,#00H,DECH8
MOVA,21H
SWAPA
ANLA,#0FH
DECA
SWAPA
ORLA,#09H
AJMPDECH7
DECH8:
MOVA,21H
DECA
DECH7:
MOV21H,A
LCALLWRMIN
CLRP2.3
MOVR0,#0BH
MOVA,#42H
MOVX@R0,A
RET
WRMIN:
CLRP2.3
MOVR0,#0BH
MOVA,#82H
MOVX@R0,A
CLRP2.3
MOVR0,#02H
MOVA,21H
MOVX@R0,A
RET
;从DS12887读取时间,并将时间写入20H到22H
READ:
LCALLJUDGE;判断芯片状态
CLRP2.3;读时信息
MOVR0,#04H
MOVXA,@R0
MOV20H,A
CLRP2.3;读分信息
MOVR0,#02H
MOVXA,@R0
MOV21H,A
CLRP2.3;读秒信息
MOVR0,#00H
MOVXA,@R0
MOV22H,A
RET
;送显示程序
DISP:
MOVR0,#20H;时显示
SETBP2.3
CLRP2.2
CLRP2.1
SETBP2.0
MOVA,@R0
MOVP0,A
INCR0;分显示
SETBP2.3
CLRP2.2
SETBP2.1
CLRP2.0
MOVA,@R0
MOVP0,A
INCR0
SETBP2.3;秒显示
CLRP2.2
SETBP2.1
SETBP2.0
MOVA,@R0
MOVP0,A
RET
;判断芯片状态子程序
JUDGE:
CLRP2.3
MOVR0,#0AH
MOVXA,@R0
JBACC.7,JUDGE;实质是判断寄存器A的最高位UIP
RET
;中断程序开始
INT887:
PUSH00H
PUSH0E0H
;比较作息时间程序
BJCX:
MOVA,22H;将秒信息放入寄存器R2
MOVR1,21H;将分信息放入寄存器R1
MOVR0,20H;将时信息放入寄存器R0
CJNEA,#15H,BJMIAO;判断秒是否为"00",是就关电铃
CLRP2.4
BJMIAO:
CJNEA,#00H,RET_INT;判断秒是否为"00",是就执行小时值比较
;小时比较程序
BJHOUR1:
CJNER0,#06H,BJHOUR2;判断时不为6点,比较下个时值
LJMPBJS1;判断时为6点,去比较分钟
BJHOUR2:
CJNER0,#07H,BJHOUR3;判断时不为7点,比较下个时值
LJMPBJS2;判断时为7点,去比较分钟
BJHOUR3:
CJNER0,#08H,BJHOUR4;判断时不为8点,比较下个时值
LJMPBJS3;判断时为8点,去比较分钟
BJHOUR4:
CJNER4,#09H,BJHOUR5;判断时不为9点,比较下个时值
LJMPBJS4;判断时为9点,去比较分钟
BJHOUR5:
CJNER0,#10H,BJHOUR6;判断时不为10点,比较下个时值
LJMPBJS5;判断时为10点,去比较分钟
BJHOUR6:
CJNER0,#11H,BJHOUR7;判断时不为11点,比较下个时值
LJMPBJS6;判断时为11点,去比较分钟
BJHOUR7:
CJNER0,#12H,BJHOUR8;判断时不为12点,比较下个时值
LJMPBJS7;判断时为12点,去比较分钟
BJHOUR8:
CJNER0,#13H,BJHOUR9;判断时不为13点,比较下个时值
LJMPBJS8;判断时为13点,去比较分钟
BJHOUR9:
CJNER0,#14H,BJHOUR10;判断时不为14点,比较下个时值
LJMPBJS9;判断时为14点,去比较分钟
BJHOUR10:
CJNER0,#15H,BJHOUR11;判断时不为15点,比较下个时值
LJMPBJS10;判断时为15点,去比较分钟
BJHOUR11:
CJNER0,#16H,BJHOUR12;判断时不为16点,比较下个时值
LJMPBJS11;判断时为16点,去比较分钟
BJHOUR12:
CJNER0,#17H,BJHOUR13;判断时为17点,比较下一个时钟
LJMPBJS12;;判断时为17点,比较分钟
BJHOUR13:
CJNER0,#18H,BJHOUR14;判断时不为18点,比较下个时值
LJMPBJS13;判断时为18点,去比较分钟
BJHOUR14:
CJNER0,#19H,BJHOUR15;判断时为19点,比较下一个时钟
LJMPBJS14;判断时为19点,去比较分钟
BJHOUR15:
CJNER0,#20H,BJHOUR16;判断时不为20点,比较下个时值
LJMPBJS15;判断时为20点,去比较分钟
BJHOUR14:
CJNER0,#21H,BJHOUR15;判断时不为21点,比较下个时值
LJMPBJS14;判断时为21点,去比较分钟
BJHOUR15:
CJNER0,22H,BJHOUR16;判断时为22点,比较下一个时钟
LJMPBJS15;判断时为22点,去比较分钟
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计