一、 设计任务与要求
1、 设计任务
利用AT89C51、发光二级管、晶振、驱动电路,并结合C语言编程实现各种跑马灯动态显示效果设计。 2、 设计要求
本设计要求AT89C51的P1口输出,分别实现单灯左移、单灯右移、单灯逐个点亮接着逐个熄灭以及两边向中间逐个点亮,接着中间向两边逐个熄灭。 3、 设计目的
通过本次课程设计掌握单片机系统设计思路和基本步骤,并熟练用protues绘制硬件电路图。
二、 硬件设计
1、 硬件分析
AT89C51简介:AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。其引脚图如下:
P1口简介:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 2、 元器件清单
名称 AT89C51 晶振 电阻 数目 1片 1个 8个 名称 发光二极管 电容 导线 数量 8个 2个 若干 三、硬件电路图:
四、 软件设计
此次设计软件部分不是很复杂,就用顺序结构的程序就可以实现所有功能,程序流程图如下:
程序初始化 全熄灭 左移 延时1S 右移 延时1S 两边向中间点亮 延时1S 中间向两边点亮 结束
五、 调试与联调
打开keil uVision3,新建工程,再新建一个项目为text2.c,并把事先编写好的程序输入进去,接下来编译连接程序,选择project/Rebuild all target file,如果没有错误,则编译成功,开发环境下会显示编译连接成功的信息,如下图:
编译成功后,选择Debug/start/stop debug session选项,即进入调试环境,装载代码成功之后,开发环境output window(左下角)显示如下图所示的装载成功的信息:
按F7生成HEX文件,之后进入proteus的ISIS,打开画好的原理图文件,鼠标左键单击Debug,选中“use romote debugger monitor”,便可实现u Vision3和proteus VSM的联调。联调结构如下:
六、 总结与心得
本次的课程设计使我把所学的知识和实践结合起来,是对平时学习成果的检验,使我对所学的单片机知识有了系统全面的理解和认识,锻炼了我查资料和设计开发的初步能力,为以后的学习和工作奠定了基础。
参考文献
[1]张齐,朱宁西.单片机系统设计与开发[M].机械工业出版社,2008.8 [2]李文方.单片机原理与应用[M]哈尔滨工业大学出版社,2010
附录:
#include \"reg51.h\" #include \"intrins.h\"
/*高电平有效,延时时间大概1s */ /*电路:单片机最小系统+三极管驱动 */
#define uchar unsigned char #define uint unsigned int sbit Led=P1; void delay(void); void main(void) {
unsigned char tmp,k,i,j; P1=0x00;//全熄灭 while(1) {
for(i=0;i<8;i++)//左移 {
tmp=0x01; tmp=(tmp<for(i=0;i<8;i++)//右移 {
tmp=0x80; tmp=tmp>>i; P1=tmp; delay(); } P1=0x00; delay();
for(i=0;i<4;i++)//两边向中间点亮 { j=0x01; k=0x80;
tmp=(j<>i); P1=tmp; delay();
} P1=0x00; delay();
for(i=0;i<4;i++)//中间向两边点亮 { j=0x08; k=0x09;
tmp=(j>>i)|(k<void delay(void) //误差 0us {
unsigned char a,b,c; for(c=167;c>0;c--) for(b=171;b>0;b--) for(a=16;a>0;a--);
_nop_; //if Keil,require use intrins.h }
因篇幅问题不能全部显示,请点此查看更多更全内容