传感器技术课程设计1.docx
- 文档编号:27120784
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:19
- 大小:229.94KB
传感器技术课程设计1.docx
《传感器技术课程设计1.docx》由会员分享,可在线阅读,更多相关《传感器技术课程设计1.docx(19页珍藏版)》请在冰豆网上搜索。
传感器技术课程设计1
成绩评定:
传感器技术
课程设计
题目基于传感器的单片机无线通信系统
院系电子工程学院
专业自动化
姓名杨长晋
班级电A1331
学号12号
指导教师蔡苗苗
2016年5月
一、实训目的1
二、设计要求1
三、实验设备1
四、实训内容2
单片机2
PCB制版12
电路原理图及PCB图13
ESP8266WiFi使用15
实训,总结17
一、实训目的
1.掌握keil软件的使用及单片机程序的编写
2.了解PCB(单片机最小系统)的制作及封装
3.清楚ESP8266模块配置
4.了解基于传感器的单片机无线通信系统的原理
5.复习利用Keil51软件对程序进行编译
二、设计要求
1.提供完整的程序和原理图(硬件接法)
2.PCB提供详细的操作步骤
3.ESP8266与PC机数据通信操作步骤
4.单片机控制ESP8266单片机串口程序:
(Datesheet+SCH)
Datesheet:
SCON98HSM0SM1SM2RENTB8RB8TIRI(0x50)
方式2:
01010000
SBUF99H--SBUF=0x30;temp=SBUF;
IE(EAES)EA=1;ES=1;
波特率:
配置T1,晶振:
11.059M
9600-->TH1=0xFD;TL1=0xFD;
使用定时功能,方式2
ET1=0;(TCON)TR1=1;
TMODGATEC/TM1M0GATECTM1MO(0x20)
三、实验设备
产品:
硬件,软件,结构
嵌入式
硬件:
1.模电和数电(时序图)--->微电子(IC)
2.信号系统和通信原理(了解)
3.PLC单片机(程序)
4.ARM
软件:
1.语言(汇编(X86,51,ARM),C,[C++,JAVA,C#])。
2.数据结构和算法(BAT-算法)ACM。
3.操作系统(进程管理和内存管理)。
4.数据库和网络原理。
5.Dex软件和keil。
C+单片机+PCB+传感器
四、实训内容
单片机
开发板使用:
1.usb线连接PC机(供电使用)
2.usb转串口驱动安装(CH340)
[ISP-开发板USB转串口CH340驱动]
3.打开开发板电源开关
4.下载程序:
PC机端打开PZ-ISP.exe
芯片类型选择STC90C5XX系列
低速下载
打开要下载的文件(xxx.hex)
单片机的软件使用操作步骤
1.工程建立:
1>.project--new(保存工程名为test)
2>.选择cpu类型-atmel-at89c51
3>.不添加启动代码到工程(no)
4>.file-new(保存为main.c文件)
5>.添加main.c文件到工程中
6>.写代码到main.c
7>.编译代码
8>.options---output----creathexfile(勾选)
9>.重新编译代码
烧写程序到单片机
1>.安装ch340驱动(usb转串口)
2>.PZ-ISP软件
3>.芯片类型(STC90系列)
低速下载
4>.打开下载文件(test.hex)
5>.下载
程序原理图
程序的编写
#include
//--定义使用的IO口--//
#defineGPIO_DIGP0
#defineGPIO_PLACEP1
#defineGPIO_TRAFFICP2
sbitRED10=P2^0;//上人行道红灯
sbitGREEN10=P2^1;//上人行道绿灯
sbitRED11=P2^2;
sbitYELLOW11=P2^3;
sbitGREEN11=P2^4;
sbitRED00=P3^0;//右人行道红灯
sbitGREEN00=P3^1;//右人行道绿灯
sbitRED01=P2^5;
sbitYELLOW01=P2^6;
sbitGREEN01=P2^7;
//--定义全局变量--//
unsignedcharcodeDIG_PLACE[8]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制查表的方法控制
unsignedcharcodeDIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsignedcharDisplayData[8];
//用来存放要显示的8位数的值
unsignedcharTime,Second;//用来存放定时时间
//--声明全局函数--//
voidDigDisplay();//动态显示函数
voidTimer0Cofig(void);
voidmain(void)
{
Second=1;
Timer0Cofig();
while
(1)
{
if(Second==70)
{
Second=1;
}
//--宝田路通行,30秒--//
if(Second<31)
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=DIG_CODE[(30-Second)%100/10];
DisplayData[3]=DIG_CODE[(30-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
DigDisplay();
//--宝田路通行--//
GPIO_TRAFFIC=0xFF;//将所有的灯熄灭
RED00=1;
GREEN00=1;
GREEN11=0;//宝田路绿灯亮
GREEN10=0;//宝田路人行道绿灯亮
RED01=0;//前进路红灯亮
RED00=0;//前进路人行道红灯亮
}
//--黄灯等待切换状态,5秒--//
elseif(Second<36)
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=DIG_CODE[(35-Second)%100/10];
DisplayData[3]=DIG_CODE[(35-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
DigDisplay();
//--黄灯阶段--//
GPIO_TRAFFIC=0xFF;//将所有的灯熄灭
RED00=1;
GREEN00=1;
YELLOW11=0;//宝田路黄灯亮
RED10=0;//宝田路人行道红灯亮
YELLOW01=0;//前进路红灯亮
RED00=0;//前进路人行道红灯亮
}
//--前进路通行--//
elseif(Second<66)
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=DIG_CODE[(65-Second)%100/10];
DisplayData[3]=DIG_CODE[(65-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
DigDisplay();
//--黄灯阶段--//
GPIO_TRAFFIC=0xFF;//将所有的灯熄灭
RED00=1;
GREEN00=1;
RED11=0;//宝田路红灯亮
RED10=0;//宝田路人行道红灯亮
GREEN01=0;//前进路绿灯亮
GREEN00=0;//前进路人行道绿灯亮
}
//--黄灯等待切换状态,5秒--//
else
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=DIG_CODE[(70-Second)%100/10];
DisplayData[3]=DIG_CODE[(70-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
DigDisplay();
//--黄灯阶段--//
GPIO_TRAFFIC=0xFF;//将所有的灯熄灭
RED00=1;
GREEN00=1;
YELLOW11=0;//宝田路黄灯亮
RED10=0;//宝田路人行道红灯亮
YELLOW01=0;//前进路红灯亮
RED00=0;//前进路人行道红灯亮
}
}
}
voidDigDisplay()
{
unsignedchari;
unsignedintj;
for(i=0;i<8;i++)
{
GPIO_PLACE=DIG_PLACE[i];//发送位选
GPIO_DIG=DisplayData[i];//发送段码
j=10;//扫描间隔时间设定
while(j--);
GPIO_DIG=0x00;//消隐
}
}
voidTimer0Cofig(void)
{
TMOD=0x01;//定时器0选择工作方式1
TH0=0x3C;//设置初始值,定时50MS
TL0=0xB0;
EA=1;//打开总中断
ET0=1;//打开定时器0中断
TR0=1;//启动定时器0
}
voidTimer0()interrupt1
{
TH0=0x3C;//设置初始值
TL0=0xB0;
Time++;
if(Time==20)
{
Second++;
Time=0;
}
}
PCB制版
PCB:
制作封装,布局,布线
概念:
1.原理图符号:
指的是原理图设计中的元器件,为了区别于元器件实
物,特叫做原理图符号。
2.元器件封装:
指的是PCB电路板设计中的元器件,为了区别于元器
件实物,特叫做元器件封装
3.焊盘:
主要用于安装元器件的引脚,并通过它与电路板上其他的导
电图件连接。
制作封装:
安装元器件引脚的焊盘
(信号层)
元器件外形
(丝印层)
必要的注释(丝印层)
【TopLayer】:
顶层信号层
【BottomLayer】:
底层信号层
【Mechanical1】:
机械层
【TopOverlay】:
顶层丝印层
【BottomOverlay】:
底层丝印层
【KeepOutLayer】:
禁止布线层
【MultiLayer】:
多面层(过孔)
操作步骤:
1.常用操作
左键:
选择右键(按住不放):
移动,放大和缩小pguppgdn
Tab[双击](大多数属性操作)space(旋转元件)
快捷键:
在菜单栏中首字母(Edit)
放置器件placepart(P+P)
放置Net(P+N)
封装Footprint(基准点)单位(英制)
snap:
捕获栅格的使用
2.建立工程:
保存文件到工作目录(注意保存)
file--new--project-PCBporject
addnewtoproject->SCHPCBSCHlibPCBlib
3.系统自带的原理图符号
Connetctors.IntLib
Devices.IntLib
手工制作原理图符号(STC89C51)
4.原理图(单片机最小系统)R?
C?
U?
5.制作封装(STC89C51)
6.绘制PCB(布局和布线->DRC)
改变图纸大小:
Design→DocumentOptions(文档选项)
更改图纸信息:
Design→DocumentOptions→parameters
一次性编号:
Tools→AnnotateSchematic
布线规则设置:
Design→Rules→Routing→Width
原理图导入PCB
Design→UpdatePcbDocument
生成BOM
Report→BillOfMaterials
全局修改
findsimilarobjects
定位元器件:
T(tools)→c(crossprobe)[clear]
打开和隐藏层次关系:
ctrl+D
控制pcb板子大小
Design→boardshape→redefineboardshape
电器规则检查:
tool→DRC
改变光标形状
DXP→preferences→PCB→General
cursortype→Larger90
电路原理图及PCB图
ESP8266WiFi使用
1,连接线
2,安装PL2303驱动
3,打开ESP8266-Pc调试工具-SSCOM
4,串口号选择PL2303的COM口(查看设备管理器)
5,波特率设置[默认](115200,8,1,None),打开串口
6,参考手册测试模块
AT-EspressifAT指令集_AIThinkerMod_v021.pdf
每条指令可以分四种命令
测试命令AT+
查询命令AT+
设备命令AT+
执行命令AT+
不是每条AT命令都具备这四种命令
使用双引号表示字符串,输入以回车换行结尾\r\n
基础命令:
1,AT测试AT启动
2,AT+RST重启模块
3,AT+GMR查看版本信息
4,AT+UART设置串口配置
AT+UART=9600,8,1,0,0
Wifi功能AT指令
1,AT+CWMODE选择WiFi应用模式
2,AT+CWJAP加入AP
3,AT+CWLAP列出当前可用AP
4,AT+CWQAP退出与AP的连接
5,AT+CWSAP设置AP模式下的参数
AT+CWSAP="ESP8266-gigi","1234567890",5,3
6,AT+CWLIF查看已连接
7,AT+CWDHCP设置DHCP
8,AT+CWAUTOCONN设置STA开机自动连接到Wifi
9,AT+CIPSTAMAC设置STA的MAC地址
10,AT+CIPAPMAC设置AP的MAC地址
11,AT+CIPSTA设置STA的IP地址
12,AT+CIPAP设置AP的IP地址
TCP/IP的AT命令
1,AT+CIPSTATUS获得连接状态
2,AT+CIPSTART建立TCP连接和注册UDP端口
3,AT+CIPSEND发送数据
4,AT+CIPCLOSE关闭TCP和UDP
5,AT+CIFSR获取本地IP地址
6,AT+CIPMUX启动多连接
7,AT+CIPSERVER配置为服务器
8,AT+CIPMODE设置配块传输模式
9,AT+CIPSTO设置服务器超时时间
10,AT+PINGPing命令
应用场景:
1,多连接server
"AT+CWMODE=2\r\n"
"AT+CWSAP='ESP8266-gigi','01234567',11,0\r\n"
"AT+RST\r\n"
"AT+CIPMUX=1\r\n"
"AT+CIPSERVER=1,5000\r\n"
"AT+CIPSEND=\r\n"//接收和发送数据
2,单连接client
3,透传
ESP-01模组尺寸平⾯面图
最结果图
实训,总结
通过此次实训让我对keil烧写软件的使用有更深的了解。
该软件设计采用C51编程语言,完成了单片机初始化、行列式键盘的扫描、键值的处理及液晶显示驱动程序的编写。
本设计的外围接口采用了插接式的连接方式,提高了系统的适用性。
并且使我懂得了理论与实际相联合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相联合起来,才能够真正的学会了实际操作的能力。
同时经过这次的实训,我发现,pcb制版在我们专业里有着举足轻重的作用,很多地方都会用到,因此,熟练操作是很必要的。
画原理图,封装,pcb布局布线,这都是我们自动化专业要熟练掌握的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传感器 技术 课程设计