1.控制器的选择
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积小、技术成熟和成本低等优点,各个领域应用广泛。本实验采用ATC52单片机。
2.数码管的选择
LED显示方式
有共阴极和共阳极两种,在本实验中采用共阳极数码管。
字形码表的产生
以共阳极为例,LED八段数码管的每一段接低电平时亮,不同的组合可以显示不同的数字,有一定的对应关系。
具体的对应关系如下
0 | dgfedcba | 11000000 | C0H |
1 | dgfedcba | 11111001 | F9H |
2 | dgfedcba | 10100100 | A4H |
3 | dgfedcba | 10110000 | B0H |
4 | dgfedcba | 10011001 | 99H |
5 | dgfedcba | 10010010 | 92H |
6 | dgfedcba | 10000010 | 82H |
7 | dgfedcba | 11111000 | F8H |
8 | dgfedcba | 10000000 | 80H |
9 | dgfedcba | 10010000 | 90H |
在静态显示方式下,每一位显示器的字段控制线是的。当显示某一字时,该位的各字段线和字位线的电平不变,也就是各字段的亮灭状态不变。静态显示方式下LED显示器的电路连接方法是:每位LED的字位控制线门共阴极点或共阳极点连在一起,接地或接 + 5V;
动态显示
利用人眼的视觉暂留效应,通过位选分时显示不同的数码管,这样可以看到正常的显示。本实验采用动态设计,p0口与数码管相连,p0.0—p0.7分别对应数码管的dgfedcba位,p2.0—p2.2为数码管的位控制位,当为高点平时对应的数码管亮。P3.2、p3.3分别控制开始和停止。
3.设计说明
当打开电源,进入待机状态,程序开始运行,给p0口送入80H,同时给p2.0送入高电平选中数码管的最低位,数码管将显示数字“8”,然后经过一秒的延时,将位控制位左移一位即选中p2.1,依次循环,这时需要检测数码管的第四位,若为高电平则程序返回最低位显示。在程序开头初始化各个数据,缓存区71H,72H,73H清零,开中断及开T1计数器,当按下开始键时,电子秒表开始计时,由于采用方式1,定时时间选50ms,经过两次中断后,100ms位加1,这时字位码选中最低位,同时查表字形码显示,当100ms位记满10次后,字位码向前移动一位,同时秒位加1,这时字形码的最高位取反,查表显示数字及小数点,当记满10此后,字位码向前移动一位,十秒位加1,查表显示当前数字,当记满10次后,清零,重新开始计时,依次循环,当按下停止键时,停止计时。
4程序流程图
N
Y
N
Y
N
Y
N
Y
N
Y
5程序清单
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP START
ORG 0013H
LJMP STOP
ORG 001BH
LJMP BRT1
;――――――――――初始化程序―――――――――――
MAIN: MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB EX0
SETB EX1
SETB ET1
SETB IT0
SETB IT1
SETB EA
SETB PT1
SETB PX1
MOV R4,#2
MOV 71H,#00H
MOV 72H,#00H
MOV 73H,#00H
;―――――――――――待机画面程序―――――――――――
MOV P0,#80H
LOOP1: MOV A,#01H
LOOP2: MOV P2,A
ACALL DEL
RL A
JB ACC.3 ,LOOP1
SJMP LOOP2
DEL: MOV R7,#10
DEL1: MOV R6,#200
DEL2: MOV R5,#248
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
;―――――――――――开始计时子程序――――――――――
START: SETB TR1
ACALL DISP
RETI
;――――――――――停止计时子程序――――――――――――
STOP: CPL TR1
RETI
;―――――――LED动态显示子程序―――――――――――――
DISP: MOV R0,#71H ;显示缓冲区首址送R0
MOV R1,#01H ;选中最右端LED
DISP1: MOV A,R1 ;取字位码
MOV P2,A ;字位码送P2口
MOV A,@R0 ;第一位数字地址偏移量送A
MOV DPTR,#TAB ;指向字形表首址
MOVC A,@A+DPTR ;查表取得字形码
JNB P2.1,DOT ;查看第二位LED是否被选中
CPL ACC.7 ;如果是,显示小数点
DOT: MOV P0,A ;字型码送P0口
ACALL DELAY ;延时1ms
INC R0 ;指向下一位缓冲区地址
MOV A,R1
RL A ;字位码移位
MOV R1,A ;移位后字型码送回R1
JB ACC.3,DISP ;扫描完,跳转DISP
AJMP DISP1 ;未扫描完,继续扫描
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极LED字形表
DB 92H,82H,0F8H,80H,90H
DELAY: MOV R7,#02H ;延时1ms程序
DELAY1: MOV R6,#0FFH
DELAY2: DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
;―――――――定时器中断服务程序―――――――――――――
BRT1: DJNZ R4,NEXT
INC 71H
MOV R2,71H
CJNE R2,#10,NEXT1
MOV 71H,#00H
MOV R2,#00H
INC 72H
MOV R3,72H
CJNE R3,#10,NEXT1
MOV 72H,#00H
MOV R3,#00H
INC 73H
MOV A,73H
CJNE A,#10,NEXT1
MOV 71H,#00H
MOV 72H,#00H
MOV 73H,#00H
NEXT1: MOV R4,#2
NEXT: MOV TH1,#3CH
MOV TL1,#0B0H
RETI
END
6仿真图
7总结
通过毕业设计,复习巩固以前我们所学习的数字、模拟电子技术、单片机原理及接口等课程知识,加深对各门课程及相互关系的理解,并成功使用了Proteus Isis电子软件,使理论知识系统化、实用化,系统的掌握微机应用系统的一半方法,培养较强的编程能力、开发能力,并充分认识到团队合作的精得。
同时感谢老师的指导和同学的帮助。
8辅助资料
(1) 1秒延时子程序:
DEL:MOV R7,#10
DEL1:MOV R6,#200
DEL2:MOV R5,#248
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
对每条指令进行计算得出精确延时时间为:
1+(1*10)+(1*200*10)+(2*248*200*10)+(2*200*10)+(2*10)+2
=[(2*248+3)*200+3]*10+3
=998033μs≈1s
由上式整理得:延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+3
此式适用三层循环以内的程序。
(2)ATC52是51系列单片机的一个型号,它是ATMEL公司生产的。 ATC52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位处理器和Flash存储单元,功能强大的ATC52单片机可为您提供许多较复杂系统控制应用场合。 ATC52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,ATC52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 ATC52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
主要功能特性
· 兼容MCS51指令系统 · 8k可反复擦写(>1000次)Flash ROM · 32个双向I/O口 · 256x8bit内部RAM · 3个16位可编程定时/计数器中断 · 时钟频率0-24MHz · 2个串行中断 · 可编程UART串行通道 · 2个外部中断源 · 共8个中断源 · 2个读写中断口线 · 3级加密位 · 低功耗空闲和掉电模式 · 软件设置睡眠和唤醒功能 ATC52各引脚功能及管脚电压
概述:ATC52P为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0 口
P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的 方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。 在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1 口
P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 与ATC51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX), 参见表1。 Flash 编程和程序校验期间,P1 接收低8 位地址。 表.P1.0和P1.1的第二功能
引脚号 | 功能特性 |
P1.0 | T2,时钟输出 |
P1.1 | T2EX(定时/计数器2) |
P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑 门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。 Flash 编程或校验时,P2亦接收高位地址和一些控制信号。
P3 口
P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻 辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。 P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。
RST
复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字 节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。 对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条 MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。
PSEN
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当ATC52 由外部程序存储器取指令(或数 据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP
外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接 地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。
XTAL1
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2
振荡器反相放大器的输出端。