嵌入式系统自动寻迹小车报告

《嵌入式系统实践》报告

项目名称:自动循迹小车
专 业:自动化
班 级:183班
学 号:2420182344
姓 名:朱明

电气工程与自动化学院

- 《嵌入式系统实践(2)》考查题目

类 别:专业任选
学 分:2
适用专业:自动化专业

一、考查方式
1.分组设计制作基于嵌入式系统的智能循迹小车。
二、考查的目的和要求
通过嵌入式系统实践,能更好地理解所学的理论知识,培养学生综合运用所学的基础与专业知识和技能去分析、解决工程实际问题;培养学生掌握嵌入式系统设计的一般规律和方法;培养学生掌握模拟电子电路、数字电子电路和嵌入式系统设计方法,培养学生掌握软件设计与开发的能力。通过该系统设计,使学生熟悉系统设计流程,提高学生的实际设计能力。
三、设计内容
主要内容与要求包括以下部分:
⑴.能够按划定的黑线进行自动行驶。
⑵. 能够显示行驶速度、时间、距障碍物距离等信息。(选作)
⑶.能够自动进行避障行驶。(选作)
四、设计步骤与方法
⑴.搭建循迹小车硬件电路。
⑵. 编写循迹小车的驱动程序。
⑶.软硬件综合测试。
⑷. 撰写设计报告。
五、设计说明书与图纸
系统由硬件电路和软件程序两部分组成。硬件电路包括:MCU、时钟电路、复位电路、电源电路、电机驱动电路、红外检测电路、超声波收发电路(选作)、显示电路(选作)。软件程序包括:主程序、路径检测程序、电机驱动程序、中断服务子程序、计算距离程序(选作)、LED动态显示程序(选作)等程序。
六、实践考核方式
嵌入式系统实践以考查方式进行评定,由指导教师根据学生在实践过程中的综合表现和实践作品及报告的质量进行评分。其中,平时表现占30%,作品占40%,实践报告占30%。

- 摘 要

本文提出了一种基于 STC89C52单片机的智能循迹避障四驱小车的设计方案和具体的实现方法,以 STC89C52RC单片机作为小车的检测和控制核心,利用L298N 电机控制模块来驱动四个轮子两对直流电机,利用红外反射式光电传感器检测路面的黑白线以识别路线,利用超声波测距模块 HC-SRO4 来判断前方的障碍物,在循迹模式下小车可以沿着路面上的黑线行驶,在避障模式下可以避开障碍物,以及通过码盘计数测速传感器模块和LCD1602 显示速度。本设计结构简单,较易实现,在一定精度范围内可稳定循迹和避障,具有一定的实用价值。

关键词:STC89C52;L298N模块;红外光电传感器;超声波测距;测速传感器

目 录

第一章 课程总设计 1
1.1 小车的概括 1
1.2 循迹小车的基本原理 1
1.3 系统结构图 1
第二章 系统硬件设计 2
2.1 控制器的选择 2
2.2 概括 2
2.3 STC89C52功能 2
2.4 硬件电路设计 3
2.5 电机驱动模块 4
2.6 测速传感器模块 5
2.7 红外检测电路模块 6
2.8 超声波测距模块 7
2.9 LCD显示模块 8
第三章 系统软件设计 9
3.1 编译环境 9
3.2 红外传感器模块的驱动 9
3.3 电机模块的驱动 10
3.4 测速模块 16
3.5 超声波模块 17
总 结 22
致 谢 23
参考文献 24
附录图片 25

1. 第一章 课程总设计

1.1 小车的概括
小车采用的是一辆四轮车车模。为了简化,我把一侧的电机并联,实现根据四路循迹模块以及L298N模块控制摆动。该种车模控制简单。小车可通过 控制电机转动的速度来控制左右电机的转动幅度从而控制小车的转弯幅度,实现小车的前进与转弯操作。
1.2 循迹小车的基本原理
探测路面黑线的基本原理:光线照射到路面并反射,由于黑线和白纸对光的反射系数不同,可以根据接收到的反射光强弱来判断是否是黑线。利用这个原理,可以控制小车行走的路迹。这里的循迹是指小车在白色地板上循黑线行走,通常采取的方法是红外探测法。
红外探测法:利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。处理器就根据是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限,一般最大不应超过 3cm。
智能小车系统以处理器为核心,为了使智能小车能够快速行驶,处理器必须把路径的迅速判断、相应的转向电机控制以及直流驱动电机的控制精密地结合在一起。如果传感器部分的数据没有正确地采集和识别,转向电机控制的失当,都会造成模型车严重抖动甚至偏离轨道;如果直流电机的驱动控制效果不好,也会造成直线路段速度上不去,弯曲路段入弯道速度过快等一系列问题。
1.3 系统结构图
图1.1 系统结构图

1. 第二章 系统硬件设计

2.1 控制器的选择
课程实验使用STC89C52单片机来完成。
2.2 概括
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统的51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
图2.1STC89C52引脚图
2.3 STC89C52功能
8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
2.4 硬件电路设计
本次实验采用的电路板是网上购买的普中单片机开发板,外设较多,学习资料充足,提供多个接口便于的我使用杜邦线来连接各个模块。
图2.2系统板电路图
图2.3系统板实物图
2.5 电机驱动模块
驱动实现与原理本项目驱动两路直流电机,实现电机的实时变动转速与测速。
表1 L298N 输入输出逻辑真值表
其中“0”为低电平;“1” 为高电平;“X” 为任何状态。
图2.3 L298N 电路图以及实物图

2.6 测速传感器模块
测速传感器模块原理:是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。这是目前应用最多的传感器,光电编码器是由光栅盘和光电检测装置组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。 由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发 光二极管等电子元件组成的检测 装置检测输出若干脉冲信号,通过计算每秒光 电编码器输出脉冲的个数就能反映当前电动机的转速。
模块槽中无遮挡时,接收管导通,模块DO输出低电平,遮挡时,DO输出高电平。
DO 输出接口可以与单片机 IO 口直接相连,检测传感器是否有遮档,如用电机码盘则可检测电机的转速。
模块 DO 可与继电器相连,组成限位开关等功能,也可以与有源蜂鸣器模块相连,组成报警器。
产品接线说明:
a、VCC 接电源正极 3.3-5V
b、GND 接电源负极
c、DO TTL 开关信号输出
d、AO 此模块不起作用
图2.4 测速传感器模块电路图以及实物图
基本工作原理:
(1)采用IO口 TRIG触发测距,给最少10us的高电平信号。
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回。
(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;
2.7 红外检测电路模块
原理:红外线检测电路原理其实很简单,就是利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收,采集到的电压就是高电平;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光,采集到的电压就是低电平。外加四路循迹模块,以便于调节红外对管的灵敏度。
备注:由于本项目设计需实现的功能比较简单,故只要两路红外线检测电路即可,分别位于小车中心轴的。以及通过调节模块上面的转轴已到达调节模块灵敏度,达到实验最佳效果。

图2.5红外线检测电路模块原理图以及实物图

图2.6四路循迹模块实物图

2.8 超声波测距模块
超声波测距模块简介:超声波检测设计小车避障是利用超声波测距,并根据测出离障碍物不同距离 而做出不同反应。
检测距离:5CM-4M 。
分辨率:5MM。
数字电平信号,可直接连接单片机,无需任何辅助电路,也无需单片机产生 任何信号辅助,距离和模块输出信号脉冲长度成正比。
图 2.7 超声波测距时序图以及实物图
2.9 LCD显示模块
简介:1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
液晶工作原理:在数字电路中,所有的数据都是以0和1保存的,对 LCD 控制器进行不同的 数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少, 只需要8位(1KB)即可。而对于中文,常用却有6000以上,于是有一个办法,就是将 ASCII 表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在能屏幕上去显示呢? 这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义 有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,从而通过 扫描,显示在液晶屏幕上。
备注:加液晶显示是为了弥补在超声波蔽障及测距时不知道的具体距离以及测速传感传达的具体速度,有助于我们更好的预知路程蔽障的范围及距离障碍物的距离。
图2.8液晶显示实物图以及接口电路

1. 第三章 系统软件设计

3.1 编译环境
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
3.2 红外传感器模块的驱动
红外线模块只要 M0 处理器向其供 5V 电压就能工作,然后通过引脚采集其 电平高低就可以根据不同情况做出相应的处理。

程序清单 3.1 读取红外传感器的高低电平

//*************************************************************//
// 程序名称:读取红外传感器的高低电平。
// 功能描述:读取红外传感器的高低电平,通过L298N得到改变转速。
//单片机:STC89C52,外接晶振11.0592
//硬件连接:
// 	四路循迹IN1~IN2接上P^0.0~ P^0.1
//	红外对管VCC接四路循迹VCC
//	红外对管GND接四路循迹GND
//	红外对管OUT接四路循迹OUT1~2
//*************************************************************//

void Track(void)
{
if((IN1==0&&IN2==0)||(IN1==1&&IN2==1))
{
Forward(); //调用前进函数
}
if(IN1==1&&IN2==0)
{
Lift();	//调用左转函数
} if(IN1==0&&IN2==1)
{
Right();	//调用右转函数
}
}

3.3 电机模块的驱动
L298N电机驱动,模块核心是L298N,有VS电机工作电压输入和VCC(5V),控制电压输出,四通道驱动,我让其同时控制小车的两对电机,从而带动两对驱动轮。只需要通过红外对管接受的路径信号来改变IN1~IN4的输入信号,就很容易让电机止转,反转和停止,从而控制小车的循迹。首先进行电机驱动调试便于以后的测试。

程序清单 3.2直流电机驱动调试

//*************************************************************//
// 程序名称:直流电机测试程序
// 功能描述:直流电机正转2秒,反转2秒,自动加速正转,自动减速。
//单片机:STC89C52,外接晶振11.0592
//硬件连接:  P1.0---IN1
//		P1.1---IN2
//		P1.2---ENA
//		    直流电机两端分别接OUT1和OUT2
//电机驱动电压根据所接电机而定,驱动板芯片逻辑电压为+5V
//*************************************************************//
#include<reg52.h>
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit ENA=P1^2;
sbit IN3=P1^3;
sbit IN4=P1^4;
sbit ENB=P1^5;
void delay(unsigned int z);
void delay_us(unsigned int aa);
/*****************主函数**************/
void main()
{
	while(1)
	{
		unsigned int i,cycle=0,T=2048;
		IN1=1;		//正转
		IN2=0;
		IN3=1;
		IN4=0;	
			for(i=0;i<200;i++)
			{
			delay(10);//PWM占空比为50%,修改延迟时调整PWM脉冲
				ENA=~ENA;
				ENB=~ENB;
			}
			IN1=1;		//自动加速正转
			IN2=0;
			IN3=1;
			IN4=0;
			while(cycle!=T)
			{	ENA=1;
				ENB=1;
				delay_us(cycle++);
				ENA=0;
				ENB=0;
				delay_us(T-cycle);
			}
    }
}
/*********************z秒延时函数*********************/
void delay(unsigned int z)
{
	unsigned  int x,y;
	for(x=z;x>0;x--)
		for(y=100;y>0;y--);
	}
/*****************微秒延时****************************/
void delay_us(unsigned int aa)
{
	while(aa--);
	}

程序清单 3.3直流电机驱动与路径识别

//*************************************************************//
//程序名称:直流电机驱动与路径识别
//功能描述:红外对管接受路径信号来改变IN1~IN4的输入信号,从而使
//电机的转动和停止.
//单片机  :STC89C52,外接晶振11.0592
//硬件连接:  P1.0---IN1
//		    P1.1---IN2
//		    P1.2---ENA
//		    直流电机两端分别接OUT1和OUT2
//电机驱动电压根据所接电机而定,驱动板芯片逻辑电压为+5V
//*************************************************************//
void Forward() //电机前进
{PWM1=1; 
PWM2=1;
}
void Lift()	//电机左转
{ PWM1=0; 
	PWM2=1;
}
void Right()	//电机右转
{
PWM1=1; PWM2=0;
}
void Track(void)
{if((IN1==0&&IN2==0)||(IN1==1&&IN2==1))
{
Forward(); //调用前进函数
}
if(IN1==1&&IN2==0)
{
Lift();	//调用左转函数
}
if(IN1==0&&IN2==1)
{
Right();	//调用右转函数
}
}

备注:需要转弯的时候才需要两对电机驱动其左右转动, 在常态下则由四轮的推力使前轮向前转动。具体实现是通过控制前面产生的两路 PWM 波的占空比和 L298N 芯片的 IN1、IN2 的方向来实现小车的前进循迹。

图3.1直流电机控制Proteus仿真图

图3.2直流电机控制流程图
备注:程序采用两个红外对管左边检测黑线,右边检测白色板面,沿着黑线边缘前进。
3.4 测速模块
由于主轮与后面光码盘扇叶转速的比例是 1:20。所以测主轮的转速公式为转速=((一秒测速传感器捕获光码扇盘方孔的个数)/20)23.143.5(CM/S)
备注:小车轮子半径3.5CM,采用1秒小车的速度测试便于速度的准确性。
程序清单 3.4 直流电机转速的测量

//*************************************************************//
//程序名称:直流电机转速的测量
//功能描述:电机码盘计数,被遮挡的个数通过计算公式得到小车速度
//单片机  :STC89C52,外接晶振11.0592M
//硬件连接: D0---P1.O
//*************************************************************//
/*定时器0中断号1*/
void Time0() interrupt 1
{
TH0 = 0xDC;					//11.0592M晶振下装入10ms初值
TL0 = 0x00;
time++;

if(time == 100)
{
Wheel_Speed = ( Angular_N / 20 ) * 2 * 3.5 * 3.14 ;	
//获取1s内中断计数的值num,并进行数值处理  (中断数值/20*直径	//*3.14为1s内移动距离)
time = 0;
Angular_N = 0;
}
}

/*外部中断0初始化*/
void Int0Init()
{
IT0 = 1;				    //跳变沿出发方式(下降沿)
EX0 = 1;				    //打开INT0的中断允许
EA = 1;					//打开总中断
}

/*外部中断0的中断函数*/
void Int0()	interrupt 0
{
Angular_N++;
}

备注:我的开发板液晶模块LCD1602和LCD12864都损坏了,调试多次都未成功。所有未能做出测速显示模块,同时光码测速模块的资料未搜索到,这个模块尝试失败。

3.5 超声波模块
HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能, 测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。

基本工作原理:
(1)采用 IO 口 TRIG 触发测距,至少10us的高电平信号;
(2)模块自动发送 8个40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO 输出一个高电平,高电平持续的时间就是超声 波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

程序清单 3.5 超声波模块测试

//*************************************************************//
//程序名称:超声波模块
//功能描述:超声波测距,控制小车前进停止 
//单片机  :STC89C52,外接晶振11.0592M
//硬件连接: D0---P1.O
//*************************************************************//
#include<reg52.h> 
#include<intrins.h> 

typedef unsigned int u16;
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 DisplayData[3];
u8 code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//TRIG为控制端
sbit TRIG = P1^6; //超声波的 TRIG端  插在了P1.6口
//ECHO 为接收端
sbit ECHO = P1^7; //超声波的 ECHO端  插在了P1.7口

u8 flag = 0; //标志定时器是否溢出
//*************************************************************//
//函 数 名         : delay
//函数功能         : 延时函数,i=1时,大约延时10us
//*************************************************************//
void delay(u16 i)
{
    while(i--); 
}
void init_time()
{
    TMOD = 0x01; //选择定时器0工作 工作方式为方式1
    TH0 = 0; //装初值0
    TL0 = 0;
    TF0 = 0; //中断溢出标志位
    ET0 = 1; //开定时器中断
    EA = 1; // 开总中断
}

//*************************************************************//
// 函数名         :display(int num)
//函数功能       :数码管显示函数
//*************************************************************//

void display(int num) //显示函数
{   
    u8 i;
    if(num == -1) //当超出范围 显示999
    {
        DisplayData[0] = table[9];
        DisplayData[1] = table[9];
        DisplayData[2] = table[9];
    }
    else  //显示到前三个数码管上因为测距范围为2-400cm 故3位即可 
    {
        //取百位
        DisplayData[0] = table[num / 100]|0x80;
        //取十位
        DisplayData[1] = table[num/10%10];
        //取个位
        DisplayData[2] = table[num %10];
    }
    for(i=0;i<3;i++)
    {
        switch(i)    //位选,选择点亮的数码管,
        {
            case(0):
                LSA=0;LSB=0;LSC=0; break;//显示第0位
            case(1):
                LSA=1;LSB=0;LSC=0; break;//显示第1位
            case(2):
                LSA=0;LSB=1;LSC=0; break;//显示第2位    
        }
        P0=DisplayData[i];  	//发送数据
        delay(100);			   //间隔一段时间扫描  
        P0=0x00;					//消隐
    }
}
void delayed(unsigned int x) //延时xmS
{
    unsigned int i,j;
    for(i = x; i > 0; i--)
    {
        for(j = 113; j >0; j--);
    }
}
void main()
{
    int x; 
    u16 distance,out_TH0,out_TL0;
    TRIG = 0; // 先给控制端初始化为0
    while(1)
    {
        init_time(); //初始化定时器
        flag = 0;    //置溢出标志位为0
        //控制口发一个10US 以上的高电平
        TRIG = 1;    
        delay(2);
        TRIG = 0;
        //等待接收端出现高电平
        while(!ECHO);
        TR0 = 1; //启动计时器 开始计时
        while(ECHO); //等待高电平结束
        TR0 = 0; //关闭低电平

        out_TH0 = TH0; //取定时器的值
        out_TL0 = TL0;
        out_TH0 <<= 8;  //右移8位 

        distance = out_TH0 | out_TL0; //合并为16位的值  
        distance /= 58; 
        if(flag == 1) //如果定时器溢出 则超出超声波测量范围
        {
            display(-1);
            flag = 0;
        }
        else
   {
     for(x =5; x >=0; x--)
//加此循环只是为了将结果在数码管上停留时间长点便于观察
   {
                display(distance);
            }
        }
        delay(600);//60ms的周期,这里不是6ms,太多会闪烁。
    }
}
void timer0() interrupt 1 //中断函数
{
    flag=1; //溢出标志位置1
}

超声波传感器的使用方法:控制口发一个10US 以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的,此时就为此次测距的时间,方可算出距离。如此不断的周期测, 就可以达到移动测量的值了。

- 总 结

历经十几天的时间,终于把老师要求的嵌入式课程设计完成了,从资料的搜索到与同学的合作再到最终的调试,在整个实验过程中,第一次感觉到作为科学家的那份废寝忘食做科研任务的精神,无论是学生时代的学习和成长,还是以后步入工作都会铭记自己第一次实验。
记得在刚刚开始的时候,我特别希望做的完美,无论是代码还是小车模型,我特地在网上买了一套工具包括四驱小车模型。但是单片机开发板被我弄坏了,折腾一个星期没有成果,特别沮丧,但是多亏我一个好朋友的帮助,有一天和他在实验室研究的晚上10点,基本上我在一旁学习,最终是成功的完成循迹小车一代,也就是老师布置的任务。此次的成功,无疑给予了我很大的决心。
关于此次的循迹车,从一幅幅电路图到一个个电子元件,再到一个一个成 型的模块,最后到组装并成功实现功能。这其中所花费的精力,也有些让自己 动容。然而我想,做每个项目本都应该如此吧!一步一步的品味到了辛酸,才会 获得甘甜。十分的信心,十足的恒心。只有这样,才能成事。
在本课题的设计中,虽然把实物做出来了,而且都符合课题设计的要求但是依然让我不是很满意,觉得功能过于单一,因此暑假花了很长时间自学《单片机原理》和小车外设的使用,因此在做这篇课题报告的时候,便把剩余的模块都添加上去了,在正文部分也都提及。在暑假制作小车的时候,本来打算一口气完成加上四个模块的成品车,但是发现,无论是代码还是各个模块与小车之间的接线都存在较大问题,两三天的时间都未能够解决,最后打算,挨个模块测试,或者存在相互关系的模块同时进行测试,这样也能降低难度。最终算是勉强完成了自己的目标。
在上半年我一直在搜集电子设计大赛和“飞思卡尔”智能汽车邀请赛上的资料,目前已经下载接近100G的资料,我今后的一大目标就是可以达到赛场上顶尖的要求,虽然现在相比“飞思卡尔”智能汽车邀请赛上的智能小车还是极大的差距,最主要的问题是自己不能完全自主设计代码,这样做实验的话会失去被动性,在今后的学习之中,还得不断精炼自己的编程功底,已达到自己的要求,这样才能完成自己的目标。
姹紫嫣红看遍,归来仍是少年,希望自己一直在热爱的事情上一路向前,以梦为马,不负韶华。
致 谢
感谢张老师,在他的教导之下,让我对实验有了清晰的思路,感谢曾老师和温老师,在二位老师的鼓励下,让我有了更加浓厚的学习兴趣和研究目的,每次的成功都急于和老师们分享,这样觉得自己流下的每一滴汗,付出的每一秒都是值得的。
感谢大二的蔡俊学长,肖春明学长等,每次去找他们时,他们都不惜自己的时间给我们讲解难,以及告诉我们他们当时的经验教训。感谢 1409 里面的每位同学,1409陪伴每一位自动化学生的成长,学校给自动化学生莫大的帮助,将是我们毕生实验生涯以及今后的生活的精神寄托。
感谢信息学院的阙同学,你不仅帮助提供给我所需的器材,还指导我代码需要按照不同功能创建多个文件便于调试,我感觉到别人的优秀,更加不能松懈自己的学习进程。
感谢我的所有老师,是他们让我在人生的道路上不断的学习与进步。
感谢江西理工大学给我这个学习的环境,这是让我重新定义自己,并且找到新的起点的地方。祝愿自己在新的起点向着不变的方向进军。

- 参考文献

[1]周立功等. 《ARM嵌入式系统基础教材》. 北京:北京航空航天大学出版社, 2008
[2]郭天祥. 《 51单片机C语言教程》(第二版). 北京:电子工业出版社,2018
[3]长沙太阳人电子. 《 SMC1602A LCM》. 2009
[4]李全利等. 《单片机原理及应用》(第二版). 北京:清华大学出版社 2006
[5]刘德全等. 《Proteus 8¬—电子线路设计与仿真》(第二版). 北京:清华大学出版社 2017
[6]百度文库等
附录图片

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弱冠而立

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值