目 录
1 设计任务与要求 ............................................................1
1.1设计任务 ..............................................................1 1.2设计要求 ..............................................................1 2 设计方案 ..................................................................1
2.1 设计思路 .............................................................1 2.2 器件介绍与作用 .......................................................1
2.2.1 STCC52RC简介 ..................................................1 2.2.2 STCC52RC参数 ..................................................3 2.2.3 STCC52RC特性 ..................................................3 2.2.4 STCC52RC单片机的P2口介绍 .....................................4 2.2.5 LED灯介绍 ......................................................5
3 硬件电路设计 ..............................................................6
3.1 原理图 ...............................................................6 3.2 LED被点亮的原理 ......................................................7 4 软件设计 ..................................................................8
4.1设计流程 ..............................................................8 4.2 源程序 .............................................................. 15 5 调试过程 ................................................................. 17
5.1实物连接图 ........................................................... 17 5.2调试 ................................................................. 18 5.3出现的问题 ........................................................... 18 6 总结 ..................................................................... 19 7 附录 MSC-51系列单片机指令表 .............................................. 20 参考文献 .................................................................... 25
. . .
1 设计任务与要求
1.1设计任务
设计一个通过单片机P2口控制流水灯的系统
1.2设计要求
(1)至少8个灯;
(2)可实现不同的亮灯(如左循环,右循环,间隔闪等)。
2 设计方案
2.1 设计思路
整个系统工作由软件程序控制运行,根据需要,可以上电后系统经过初始化,进入用户设定模式状态。于STCC52单片机的彩灯控制方案,实现对LED红灯的控制。本方案以STCC52单片机作为主控核心,与驱动等模块组成核心主控制模块。在主控模块上设有晶振电路和8个LED灯,根据需要编写若干种亮灯模式,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号。
2.2 器件介绍与作用
2.2.1 STCC52RC简介
STCC52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STCC52使用经典的MCS-51核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STCC52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外
. . .
STCC52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或件复位为止。最高运作频率35MHz,6T/12T可选
. .
图2.1 STCC52RC实物图
图2.2 STCC52RC管脚图
.
2.2.2 STCC52RC参数
1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.[2]
2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机)
3.工作频率围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz
4. 用户应用程序空间为8K字节 5. 片上集成512 字节RAM
6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。
7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片
8. 具有EEPROM 功能
9. 共3 个16 位定时器/计数器。即定时器T0、T1、T2
10.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒
11. 通用异步串行口(UART),还可用定时器软件实现多个UART 12. 工作温度围:-40~+85℃(工业级)/0~75℃(商业级) 13. PDIP封装
2.2.3 STCC52RC特性
STCC52RC单片机:
8K字节程序存储空间;512字节数据存储空间;带2K字节EEPROM存储空间;可直接使用串口下载;ATS52单片机:8K字节程序存储空间;256字节数据存储空间;没有带EEPROM存储空间;
. . .
2.2.4 STCC52RC单片机的P2口介绍
P2口由一个输出锁存器、一个转换开关MUX、两个三态输入缓冲器、输出驱动电路和一个反相器组成。P2的结构如图2.3所示。
图2.3 P2 口的位结构
图2.3中控制信号C的状态决定转换开关的位置。当C=0时,开关处于图示的位置;当C=1时,开关拨向地址线位置。由图可见,输出驱动电路与P0口不同,部设有上拉电阻(由两个场效应晶体管并联构成,图中用等效电阻R表示)。 (1). P2用作通用I/O口(C=0)
当没有在单片机芯片外扩展总线;或者虽然扩展了片外总线,但采用“MOVX Ri”类指令访问,且P2口用高八位地址线没有全部用到时(P2.6,P2.7,.....),P2口的口线就可以作为通用I/O口线使用。
执行输出指令时,部数据总线的数据在“写锁存器”信号的作用下由D端进去锁存器,经反相器反相后送至场效应晶体管T,再经T反相,在P2.x引脚出现数据正好是部数据总线的数据。
用作输入时,数据可以自口锁存器,也可以读自口的引脚,这是根据输入操作采用的是“读锁存器”指令还是“读引脚”指令决定。
CPU在执行“读--修改--写”类输入指令时(ANL P2,A)部产生的“读锁存器”
. . .
操作信号使锁存器Q端数据进入部总线,在与累加器A进行逻辑运算之后,结果又送回P2的口锁存器并出现在引脚。
CPU在执行“MOV”类指令时(如:MOV A,P2)部产生的操作信号使“读引脚”应在执行输入指令前把锁存器写入1,目的是场效应晶体管T2截止,从而使引脚处于高阻抗输入状态。
所以,P2口在通用I/O口时,属于准双向口。 (2)P2在作为地址总线(C=1)
当需要在单片机芯片外部扩展程序存储器或扩展了RAM(或接口芯片)且采用“MOVX DPTR”类指令访问,单片机部硬件会使C=1,MUX开关接向地址线,这时P2.x引脚的状态与地址线信息相同 2.2.5 LED灯介绍
LED 是英文 light emitting diode (发光二极管)的缩写,LED灯俗称发光二极管,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护部芯线的作用,所以 LED 的抗震性能好。
LED(Light Emitting Diode),发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个P-N结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED灯发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。
. . .
3 硬件电路设计
3.1 原理图
通过图3.1我们可以看出,在LED灯后要加一个电阻,通常电阻应用在单片机电路中有三种作用:限流电阻、上拉电阻、下拉电阻。在流水灯接线图中的电阻起的是限流作用。
图3.1 流水灯接线原理图
. . .
3.2 LED被点亮的原理
图3.2中A端为发光二极管的阳极,B端为发光二极管的阴极,要想点亮发光二极管,阴极必须加一个低电平(0V),发光二极管允许的电流在3mA至10mA之间,发光二极管被点亮的最小电流为3mA。已知发光二极管被点亮后的压降值为1.7V,VCC=+5V,电阻上的电压为3.3V,根据欧姆定律R=3.3V/3mA=1.1K,因此要选用1K的电阻
图3.2 流水灯接线分支电路
. . .
4 软件设计
4.1设计流程
1) 打开Keil μVision3软件
2) 建立工程
. . .
工程以LED为名保存
选择芯片
. . .
3) 建立新文件
以了LED.asm为名保存
. . .
4) 把文件添加到工程
. . .
添加成功
5) 在文件中输入程序
. . .
6) 设置生成.hex文件和编译 设置生成.hex文件
编译成功,无错误
. . .
7) 打开 STC_ISP_V483.exe软件
8) 下载程序
. . .
4.2 源程序
. . .
① 程序一
ORG 0000H
LJMP START ORG 0100H START:
MOV SP,#60H ;设置堆栈的初始地址 LOOP:
MOV P2,00H ;点亮八个LED灯
DELAY: ;延时子程序 MOV R0,#0FFH NEXT:
MOV R1,#0FFH
DJNZ R1,$ DJNZ R0,NEXT
LCALL DELAY ;调用延时子程序 MOV P2,0FFH ;熄灭八个LED灯 LCALL DELAY ;调用延时子程序 SJMP LOOP
RET END
② 程序二
ORG 0000H
LJMP START ORG 0100H
START:
MOV SP,#60H ;设置堆栈的初始地址
MOV R7,#0FFH ;把R7置1 MOV P2,R7 ;把P2口置1
LOOP:
MOV A,R7
RLC A ;循环移位
. . .
MOV P2,A ;点亮第一个灯 MOV R7,A
LCALL DELAY ;调用延时子程序 SJMP LOOP
DELAY: ;延时子程序 MOV R0,#0FFH NEXT:
MOV R1,#0FFH DJNZ R1,$ RET END
DJNZ R0, NEXT
5 调试过程
5.1实物连接图
在普中科技HC6800 V2.8 开发板中,将开发板中的USB插口与电脑上的USB插
口相连,再将单片机的P2口与LED灯用线连接起来。
图5.1 连接实物图
. . .
5.2调试
程序编译成功以后,生成.hex文件,用STC_ISP下载到单片机中,在下载过程中先进行下载然后再上电,打开单片机开发板的开关后,就会看到八个发光二极管的亮灭情况。
程序一的现象是八个发光二极管同时亮、灭,一直循环,并且亮和灭的速度很快。 程序二的现象是八个发光二极管从头依次亮,每次只有一个灯亮,从第一个一直亮到第八个,从后再从头循环,
在调试过程中,我们可以在程序中的“LCALL DELAY”语句后再增加“LCALL DELAY”语句,增加的越多,延时越长,亮或者是灭的时间就越长。
5.3出现的问题
在用STC_ISP往单片机中下载程序时出现图5.2中的打开串口失败,原因是串口已被其他程序打开或该串口不存在。出现该问题的原因时使用的串口不正确,在设备管理器中查找正确的串口,并改正。改正后程序能正常下载
+
图5.2问题截图
. . .
6 总结
通过这次课程设计我学到了很多东西,我更加体会到理论知识与动手能力相结
合的重要性,而且设计过程中使我懂得在设计程序之前,务必要对所用单片机的部结构有一个系统的了解,知道该单片机有哪些资源:懂得设计的关键是要有一个清晰的思路和一个完整的软件流程图。在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路。要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你思路,这样也为资料的保存和交流提供了方便。整个设计的过程中,还是碰到了一些问题。比如,对于键盘的延时防抖问题不能较好的解决;对于编程的顺序及各模块程序调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。设计中我最大的收获就是自己的动手能力和解决问题的能力得到了很大的提高,在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识
当今社会,由单片机芯片控制各种硬件工作的技术日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中应用更为广泛,较为贴近生活。以前在路上夜景中经常见到各种流水灯,感觉很漂亮,通过此次编程以后才知道了原理,让我有一种学以致用的成就感!很开心!流水灯控制的设计所需要的知识不仅吻合了我们本学期对于单片机这门课程的学习,而且对于我们以前所学习的如数码管显示、LEG灯等知识也是一次很好地运用,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 总的来说,这次设计获益良多。不仅培养了实践能力,还培养了设计思维,在摸索该如何设计电之实现所需功能的过程中,锻炼了运用所学知识的灵活性,加深了对知识的理解及提高了解决问题的能力。在体会到设计电路编写程序的艰辛的同时,更能体会到成功的喜悦和快乐。
. . .
7 附录 MSC-51系列单片机指令表
表7-1 数据类传送令表
助记符 MOV A,Rd MOV A,m MOV A,Ri MOV A,#n MOV Rd,A MOV Rd,m MOV Rd,#n MOV m,A MOV m,Rd MOV m1,m2 MOV m,Ri MOV m,#n MOV Ri,A MOV Ri,m MOV Ri,#n MOV DPTR,#n(16) MOVC A,A+DPTR MOVC A,A+PC MOVX A,Ri MOVX A,DPTR MOVX Ri,A MOVX DPTR,A 操 作 (A)←(Rd) (A)←(m) (A)←((Ri)) (A)←n (Rd)←(A) (Rd)←(m) (Rd)←n (m)←(A) (m)←(Rd) (m1)←(m2) (m)←((Ri)) (m)←n ((Ri))←(A) ((Ri))←(m) ((Ri))←n (DPTR)←n(16) (A)←((A)+(DPTR)) (A)←((A)+(PC)) (A)←((P2)+(Ri)) 功 能 寄存器字节送到累加器 直接字节送到累加器 间接RAM送到累加器 立即数送累加器 累加器字节送寄存器 直接字节送寄存器 立即数送寄存器 累加器字节送直接字节 寄存器字节送直接字节 直接字节送直接字节 间接RAM送入直接字节 立即数送入直接字节 累加器字节送入间接RAM 直接字节送入间接RAM 立即数送入间接RAM 十六位立即数送数据指示器 间接ROM送累加器 间接ROM送累加器 字节数 1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1 1 1 1 1 1 周期数 1 1 1 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2 2 2 2 2 从外部间接RAM(8位地址)送入累加器 从外部间接RAM(16位(A)←((DPTR)) 地址)送入累加器 累加器容送外部间接((P2)+(Ri))←(A) RAM(8位地址) 累加器容送外部间接((DPTR))←(A) RAM(16位地址) . . .
PUSH m POP m XCH A,Rd XCH A,m XCH A,Ri XCHD A,Ri
((SP)+1)←(m) (m)←((SP)) (A)←→(Rd) (A)←→(m) (A)←→(Ri) (A3~0)←→((Ri) 7~4) 直接字节进堆栈 直接字节出堆栈 寄存器与累加器交换 直接字节与累加器交换 间接RAM与累加器交换 间接RAM低半字节与累加器交换 2 2 1 2 1 1 2 2 1 1 1 1 表7-2算术运算指令
助记符 ADD A,Rd ADD A,m ADD A,Ri ADD A,#n ADDC A,Rd ADDC A,m ADDC A,Ri ADDC A,#n SUBB A,Rd SUBB A,m SUBB A,Ri SUBB A,#n INC A INC Rd INC m INC Ri INC DPTR DEC A DEC Rd DEC m 操 作 (A)←(A)+(Rd) (A)←(A)+(m) (A)←(A)+((Ri)) (A)←(A)+n (A)←(A)+(Rd)+(C) (A)←(A)+(m)+(C) (A)←(A)+((Ri))+(C) (A)←(A)+n+(C) (A)←(A)-(Rd)-(C) (A)←(A)-(m)-(C) (A)←(A)-((Ri))-(C) (A)←(A)-n-(C) (A)←(A)+1 (Rd)←(Rd)+1 (m)←(m)+1 ((Ri))←((Ri))+1 (DPTR)←(DPTR)+1 (A)←(A)-1 (Rd)←(Rd)-1 (m)←(m)-1 功 能 寄存器加到累加器 直接字节加到累加器 间接RAM加到累加器 立即数加到累加器 寄存器和进位加到累加器 直接字节和进位加到累加器 间接RAM和进位加到累加器 立即数和进位加到累加器 累加器减去寄存器和借位 累加器减去直接字节和借位 累加器减去间接RAM和借位 累加器减去立即数和借位 累加器加1 寄存器加1 直接字节加1 间接RAM加1 数据指示器加1 累加器减1 寄存器减1 直接字节减1 字节数 1 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 1 1 2 周期数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 . . .
DEC Ri MUL AB DIV AB DA A
((Ri))←((Ri))-1 (B)(A)←(A)·(B) (A)…(B)←(A)/(B) 间接RAM减1 A乘B A除B 累加器十进制调整 1 1 1 1 1 4 4 1 表7-3 逻辑运算指令
助记符 ANL A,Rd ANL A,m ANL A,Ri ANL A,#n ANL m,A ANL m,#n ORL A,Rd ORL A,m ORL A,Ri ORL A,#n ORL m,A ORL m,#n XRL A,Rd XRL A,m XRL A,Ri XRL A,#n XRL m,A XRL m,#n CLR A CPL A RL A RLC A 操 作 (A)←(A)∧(Rd) (A)←(A)∧(m) 功 能 寄存器“与”到累加器 直接字节“与”到累加器 字节数 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 周期数 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 (A)←(A)∧((Ri)) 间接RAM“与”到累加器 (A)←(A)∧n (m)←(m)∧(A) (m)←(m)∧n (A)←(A)∨(Rd) (A)←(A)∨(m) 立即数“与”到累加器 累加器“与”到直接字节 立即数“与”到累加器 寄存器“或”到累加器 直接字节“或”到累加器 (A)←(A)∨((Ri)) 间接RAM“或”到累加器 (A)←(A)∨n (m)←(m)∨(A) (m)←(m)∨n (A)←(A)⊕(Rd) (A)←(A)⊕(m) 立即数“或”到累加器 累加器“或”到直接字节 立即数“或”到累加器 寄存器“异或”到累加器 直接字节“异或”到累加器 (A)←(A)⊕((Ri)) 间接RAM“异或”到累加器 (A)←(A)⊕n (m)←(m)⊕(A) (m)←(m)⊕n (A)←0 (A)←() 立即数“异或”到累加器 累加器“异或”到直接字节 立即数“异或”到累加器 累加器清零 累加器取反 累加器循环左移 累加器带进位循环左移 . . .
RR A RRC A SWAP A
(A7~4)←→(A 3~1) 累加器循环右移 累加器带进位循环右移 累加器半字节交换 1 1 1 1 1 1 表7-4 位操作指令
助记符 CLR c CLR b SETB c SETB b CPL c CPL b ANL c,b ANL c,/b ORL c,b ORL c,/b MOV c,b MOV b,c
操 作 (c)←0 (b)←0 (c)←1 (b)←1 (c)←(c非) (b)←(b非) (c)←(c)∧(b) (c)←(c)∧(b非) (c)←(c)∨(b) (c)←(c)∨(b非) (c)←(b) (b)←(c) 功 能 进位清0 直接位清0 进位置位 直接位置位 进位取反 直接位取反 直接位“与”到进位 直接位的反“与”到进位 直接位“或”到进位 直接位的反“或”到进位 直接位送进位 进位送直接位 字节数 1 2 1 2 1 2 2 2 2 2 2 2 周期数 1 1 1 1 1 1 2 2 2 2 1 2
. . .
表7-5 控制转移指令
助记符 JC r JNC r JB b,r JNB b,r JBC b,r JZ r JNZ r CJNE A,m,r CJNE A,#n,r CJNE Rd,#n,r CJNE Ri,n,r DJNZ Rd,r DJNZ m,r AJMP a(11) LJMP a(16) SJMP r JMP A+DPTR ACALL a(11) LCALL a(16) RET RETI
功 能 若进位为1,则相对转移 若进位为0,则相对转移 若直接位为1,则相对转移 若直接位为0,则相对转移 若直接位为1,则相对转移,并对直接位清0 若累加器为0,则相对转移 若累加器不为0,则相对转移 若累加器不等于直接字节,则相对转移 若累加器不等于立即数,则相对转移 若寄存器不等于立即数,则相对转移 若间接RAM不等于立即数,则相对转移 寄存器减1,若不等于0,则相对转移 直接字节减1,若不等于0,则相对转移 绝对转移 长转移 短转移(相对转移) 按A+DPTR间接转移 绝对调用子程序 长调用子程序 从子程序返回 从中断返回 周字节数 期数 2 2 3 3 3 2 2 3 3 3 3 2 3 2 3 1 1 2 3 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 . . .
参考文献
[1] 广弟,朱月秀,冷祖祁.单片机基础第3版.北京:北京航空航天大学,2007 [2] 蔡美琴,为民MCS-51系列单片机系统及其应用.第2版.北京:高等教育,2004 [3] 周润景,丽娜.基于PROTEUS 的电路及单片机系统设计与仿真[M].北京:航空航天大学,2006
[4] 全利.单片机原理及应用技术第3版.北京:高等教育,2009
[5] 万光毅,严义,邢春香.单片机实验与实践教程[M].北京:北京航空航天大学,2006.4
. . .
指导教师评语: 成绩: 指导教师签字: 年 月 日
. . .
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务