课程设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
长春师范大学
课程设计说明书
课程设计名称:《单片机》课程设计
专业:机械设计制造及其自动化
学号:1324140115
学生姓名:邵旭涛
指导教师:蒋东霖
目录
1设计任务 (1)
2系统总体设计 (1)
3硬件系统设计 (2)
4程序流程图 (3)
5程序 (4)
6软件仿真 (5)
7设计总结 (7)
参考文献 (8)
1设计任务
1)控制P1口的8只蓝色LED每0.5s闪亮1次,单片机晶振频率12MHz,蓝色LED 小灯8支,100欧姆电阻8支。
2)按照1)中要求并结合已知条件,设计并绘制Proteus仿真原理图。
3) 应用汇编语言设计汇编仿真程序,并结合Proteus仿真软件设计的原理图进行程序的仿真调试。
4) 应用C语言设计C51仿真程序,并结合Proteus仿真软件设计的原理图进行程序的仿真调试。
5) 编写计算说明书准备答辩。
2系统总体设计
采用AT89C51芯片控制8支连接在P1口的蓝色led等,通过仿真软件,自行汇编程序导入到芯片内进行调试,程序汇编思路如下:
⑴通过累加器A给P1口送二进制数,驱动八个LED灯,低电平发光,高电平熄灭。
⑵编写延时0.5秒的子程序DELAY。
⑶调用DELAY延时程序。
⑷送0080H给P1口,使LED灯熄灭,再调用DELAY延时程序。使LED灯闪烁。
3硬件系统设计
原理图
引脚说明:
(1)P1.0~P1.7:8位准双向并行I/O口,
(2)RESET:上电复位(高电平时复位)。 RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。8051的复位方式可以是自动复位,也可以是手动复位,此外,RESET/Vpd还是一复用脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
(3)XTAL1/XTAL2:连接晶振。8051的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取10p-30p。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。
(4)PSEN:外部程序存储器读选通信号,当 PSEN 信号为低时表示对外部程序存储器进行访问。 PESN当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
(5)ALE:地址锁存允许信号端。当8051上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率fosc 的l/6 。此引脚的第二功能PROG是对片内带有可编程的ROM的单片机编程写入(固化程序)时,作为编程脉冲的输入端。
(6)EA: 1、程序存储器设置(高电平使用片内程序存储,低电平使用片外程序储存)2、烧写程序存储器,编程电压加入端(电压一般为11~20V)。EA程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令
4 程序流程图
流程图的绘制为编程提供了便利,通过对控制要求的理解而绘制的流程图可以让我们对控制过程更加熟悉并且编程的进行也变得有据可寻。灯光闪烁控制设计的流程图如图所示:
程序开始后输出低电平灯全部亮,然后调用0.5s延时程序输出高电平灯全灭,然后在调用0.5s延时程序输出低电平灯全亮,这样不断重复。
5程序
C语言程序:
#include
char i=100;
void main ()
{
TMOD=0x01;//定时器T0为方式1
TH0=0xee;//设置定时器初值
TL0=0x00;
P1=0x00;//P1口8个LED点亮
EA=1;//开总中断
ET0=1;//开定时器T0中断
TR0=1;//启动定时器T0
while(1);//循环等待
{
;
}
}
void timer0() interrupt 1//T0中断
{
TH0=0xee;//重新赋初值
TL0=0x00;
i--;//循环次数减一
if(i<=0)
{
P1=~P1;//P1口按位取反
i=100;//重置循环次数
}
}
汇编程序:
ORG 0000H
AJMP MAIN
ORG 0080H
MAIN:CLR P1.0 //P1.0输出低电平,灯亮CLR P1.1 //P1.1输出低电平,灯亮CLR P1.2 //P1.2输出低电平,灯亮CLR P1.3 //P1.3输出低电平,灯亮CLR P1.4 //P1.4输出低电平,灯亮CLR P1.5 //P1.5输出低电平,灯亮CLR P1.6 //P1.6输出低电平,灯亮CLR P1.7 //P1.7输出低电平,灯亮SETB P1.0 //P1.0输出高电平,灯灭SETB P1.1 //P1.1输出高电平,灯灭
SETB P1.2 //P1.2输出高电平,灯灭SETB P1.3 //P1.3输出高电平,灯灭SETB P1.4 //P1.4输出高电平,灯灭SETB P1.5 //P1.5输出高电平,灯灭SETB P1.6 //P1.6输出高电平,灯灭SETB P1.7 //P1.7输出高电平,灯灭LOOP: CPL P1.0
CPL P1.1 //累加器求反
CPL P1.2 //累加器求反
CPL P1.3 //累加器求反
CPL P1.4 //累加器求反
CPL P1.5 //累加器求反
CPL P1.6 //累加器求反
CPL P1.7 //累加器求反
LCALL DELAY //调用延时程序SJMP LOOP
DELAY: MOV R5,#50
D1:MOV R6,#20
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END