当前位置:文档之家› 单片机大作业

单片机大作业


一:方案设计
该课程设计是利用 MCS-51 单片机内部的定时/计数器、中断系统、以及行 列键盘和 LED 显示器等部件,设计一个转向灯系统。可以实现:
1:按键控制向左、向右流水灯闪烁。(流水灯模块) 2:电机控制车大灯方向。(电机模块) 3:实现车辆距离过近闪烁。(警示灯模块) 4:LED 显示车距。(显示模块) 这 4 个模块功能。
选择要合适。
2.4 系统总电路
图 2 系统总电路图 图 3 系统总电路图实物图(部分)
图 4 系统总电路图实物图(部分)
三:软件设计
开始
白天
白天 or 夜晚转 向
Or 直行
晚上
左 or 右?
左 or 右?
转向灯向右流水亮起
转向灯向左流水亮起
转向灯右亮起,大 灯右转
转向灯左亮起, 大灯左转
超声波测距
void Delay5Ms(void);//延时 5 毫秒函数 void Delay400Ms(void);//延时 400 毫秒函数 void Decode(unsigned char ScanCode); void WriteDataLCM(unsigned char WDLCM);//LCD1602 写数据函数 void WriteCommandLCM(unsigned char WCLCM,BuysC);//LCD 写命令函数
调试步进电机的时候,电机一直在震动却不转,然对程序进行电机调速,电机能正常运 转,电机超出了调速范围,
五:结论
本次课程设计让我们小组温习了单片机的基本原理、功能以及构造,熟悉掌 握 KeilCx51 和 Protuse 这两个软件的基本使用方法。学会分工合作,合理安排人 员做事,提高工作效率。 软件部分的编程,主要是饶城强同学完成的,查了许多的资料,并且自己在加 了一些单片机讨论群,合理的使用了网络资源,并且提高了分析问题和解决问 题的能力,对于 51 单片机有了更深刻的认识,对于理论和实践的衔接有了一定 的了解。
unsigned char CCWR[]={0X80,0Xc0,0x40,0x60,0x20,0x30,0x10,0x90}; unsigned char CCWL[]={0X90,0X10,0x30,0x20,0x60,0x40,0xc0,0x80}; void zxw(); void zxb();
if (BuysC) ReadStatusLCM(); //根据需要检测忙 LCM_Data = WCLCM; LCM_RS = 0; LCM_RW = 0; LCM_E = 0; LCM_E = 0; LCM_E = 1; }
对于硬件部分,为了简化线路,节省时间,芯片部分电路本小组是直接购 买打印好的集成电路电路板。另一部分则是使用普通面包板直接进行电路焊 接。在对电路进行排版、焊接上,本小组先结合电路进行布局,再进行焊接, 尽可能减少排线。在焊接过程中,本小组对各元件的使用有了进一步的熟悉。
六:参考文献
[1]王静霞.单片机应用技术.电子工业出版社.2016.
[2]郭天祥.51 单片机 c 语言教程.电子工业出版社.2009.
七.附录
#include <reg52.h> //包含 51 头文件 #include <intrins.h> #define LCM_Data P0 #define Busy 0x80 //用于检测 LCM 状态字中的 Busy 标识
2.3.1 显示模块模块 模拟
表 3 显示模块 实际
功能
通过超声波测距 反馈给单片机, 单片机在通过显 示器显示车距。
2.3.2 警示灯模块 模拟
2.3.3 流水转向模块 模拟
表 4 警示灯电路 实际
功能 若车距过近,则车灯闪烁
表 5 流水灯电路 实际
功能 当车辆向左、向右转向时,
以流水灯形式闪烁。
2.3.4 驱动模块 模拟
2.3.5 常用模块 模拟
表 6 驱动电路 实际
功能
驱动大灯旋转, 当车转向时,更好的
照明路面。
表 7 常用电路 名称
晶振电路
功能 接 12MHz 晶振,,适 合并联 30pf 微调电 容,从而构成并联谐 振,帮助和稳定输出
波形。
复位电路
AT89C51 单片机要求 至少两个高电平,以 便单片机做好准备工 作。当上电时,由于 电容的电压不能突 变,会输出高电平, 当电容充电到一定程 度,就会输出低电 平,单片机利用输出 高电平的这段时间复 位。电阻和电容的值
//unsigned char ReadDataLCM(void); unsigned char ReadStatusLCM(void); unsigned char code Distance[] ="Distance";//LCD1602 显示格式 unsigned char code ASCII[13] = "0123456789.-M"; unsigned char code table[]="cm"; unsigned char code table1[]="!!! Out of range";
2.1 模拟元件简介.....................................................................................................................4 2.2 实际元件简介.....................................................................................................................5 2.3 模块电路.............................................................................................................................6 2.4 系统总电路.........................................................................................................................8 三:软件设计.................................................................................................................................10 四: 调试结果及分析................................................................................................................... 11 五:结论......................................................................................................................................... 11 六:参考文献................................................................................................................................. 11 七.附录......................................................................................................................................... 12
//static unsigned char DisNum = 0; //显示用指针 unsigned int time=0; unsigned long S=0; bit flag =0; unsigned char disbuff[4]={ 0,0,0,0,};
//写数据 void WriteDataLCM(unsigned char WDLCM) {
测距模块 显示模块
流水转向模块 单片机
电机模块
警示灯模块 图 1 模块功能图
二:硬件接口电路设计
2.1 模拟元件简介
元件图例
表 1 模拟元件简介 名称
51 单片机
说明 通过 I/0 输出高

电平控制不同的
模块实现不同的 功能
LED 灯
转向灯
步进电机
28BYJ-48/控制大 灯转角
驱动模块
L298 电机驱动
sbit DU = P2^6; sbit WE = P2^7; sbit RX=P1^3 ;//Echo sbit TX=P1^2 ;//Trig sbit LCM_RW=P1^1 ;//定义 LCD 引脚 sbit LCM_RS=P1^0 ; sbit LCM_E=P2^5 ; sbit beep=P2^3; sbit right_key=P2^1; sbit left_key=P2^2; sbit right_keyb=P2^3; sbit left_keyb=P2^4; sbit dd=P2^0; unsigned int a;
(注:程序在附录里)
结束 图 5 程序流程图
四: 调试结果及分析
刚开始调试的时候遇到许多问题,首先是流水灯不是流水灯,之前单独的流水灯程序也 无法实现流水灯的效果,判断是灯或其电路出现故障,之后对灯进行逐一排查,发现有一个 灯只要接上 I/O 口就会出现流水灯程序错乱,分析可能是 I/O 口被拉高了电平导致错乱,后 对该灯进行故障检测,发现灯正常,检测与该灯串联的电阻,发现电阻短路,换个电阻,问 题解决;
相关主题