pcb定位系统技术报告 电子设计大赛模拟题.docx

上传人:b****6 文档编号:15623666 上传时间:2023-07-06 格式:DOCX 页数:18 大小:1.40MB
下载 相关 举报
pcb定位系统技术报告 电子设计大赛模拟题.docx_第1页
第1页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第2页
第2页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第3页
第3页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第4页
第4页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第5页
第5页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第6页
第6页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第7页
第7页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第8页
第8页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第9页
第9页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第10页
第10页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第11页
第11页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第12页
第12页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第13页
第13页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第14页
第14页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第15页
第15页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第16页
第16页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第17页
第17页 / 共18页
pcb定位系统技术报告 电子设计大赛模拟题.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

pcb定位系统技术报告 电子设计大赛模拟题.docx

《pcb定位系统技术报告 电子设计大赛模拟题.docx》由会员分享,可在线阅读,更多相关《pcb定位系统技术报告 电子设计大赛模拟题.docx(18页珍藏版)》请在冰点文库上搜索。

pcb定位系统技术报告 电子设计大赛模拟题.docx

pcb定位系统技术报告电子设计大赛模拟题

全国大学生电子设计竞赛模拟题

PCB坐标定位系统

PCB板坐标定位系统

任务:

在一个10cm(长)×6cm(宽)的PCB覆铜板上,制作一个PCB坐标定位系统,要求如下:

基本要求:

1、当用信号笔点击PCB板平面上的任何位置,可以在LCD上的相应位置显示坐标点;

2、当用信号笔在PCB板平面上绘制简单图形时,能够在LCD上显示所绘制的图形;

3、要求坐标识别精度<=2mm,并尽可能的提高系统分辨率。

提高要求:

1、提高绘制速度,实现即绘制即显示,减小延迟;

2、能够实现图形存储,回放功能。

摘要

本系统以飞思卡尔半导体公司的16位MC9S12XS128单片机为核心,采用数字式CMOS图像传感器OV7620进行数据采集,设计并制作了一个分辨率为64×32的PCB坐标定位系统。

该定位系统可以快速实现坐标显示,图形绘制,图形存储及回放。

将10×6cm的PCB板相对应的像素点显示在龙丘生产的Oled12864迷你型液晶上,并且具有高分辨率。

并且通过按键可以实现不同功能之间的切换。

通过单片机的控制实现各种显示存储功能.

关键词:

MC9S12XS128OV7620PCBOled12864

目录

第一章系统方案比较与选择3

1.1总实现方案3

1.2主控制器方案比较与选择3

1.3液晶模块的选取3

第二章理论分析与计算3

2.1画线算法设计3

2.2画圆算法设计3

2.3描点.划线.简单图形算法设计3

第三章系统电路设计3

3.1系统主板工作原理3

第四章系统程序设计3

4.1系统总流程图3

4.2系统总体模块图3

第五章系统测试与结果3

5.1描点,坐标确定,划线,画圆,图形存储与回放的测试和结果3

5.2表笔的测试结果3

第六章结论3

参考文献3

附1:

系统主板原理图3

附2:

完整的测试结果3

附3:

部分核心源代码3

第一章系统方案比较与选择

1.1总实现方案

方案一:

采用电阻屏的原理,电阻式触摸屏是一种压力传感器,基本上是薄膜加上玻璃的结构,薄膜和玻璃相邻的一面上均涂有ITO(纳米铟锡金属氧化物)涂层,ITO具有很好的导电性和透明性。

当触摸操作时,薄膜下层的ITO会接触到玻璃上层的ITO,经由感应器传出相应的电信号,经过转换电路送到处理器,通过运算转化为屏幕上的X、Y值,而完成点选的动作,并呈现在屏幕上。

考虑电容屏原理,在10×6cm的PCB板做到识别精度<=2mm,我们目标精度是在板上做到64×32个像素点的精度,采用板上层64列,下层32行,组成64×32阵列!

分别扫描行和列以确定坐标点。

然后通过显示在Oled12864型液晶上,做到高精度的显示。

方案二:

采用电容屏的原理,电容技术触摸屏CTP(CapacityTouchPanel)是利用人体的电流感应进行工作的。

电容屏是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂一层ITO(纳米铟锡金属氧化物),最外层是只有0.0015mm厚的矽土玻璃保护层,夹层ITO涂层作工作面,四个角引出四个电极,内层ITO为屏层以保证工作环境。

当用户触摸电容屏时,由于人体电场,用户手指和工作面形成一个耦合电容,因为工作面上接有高频信号,于是手指吸收走一个很小的电流,这个电流分别从屏的四个角上的电极中流出,且理论上流经四个电极的电流与手指头到四角的距离成比例,控制器通过对四个电流比例的精密计算,得出位置。

可以达到99%的精确度,具备小于3ms的响应速度。

通过电流大小与触点到电极的距离成正比就可以确定触点的坐标。

确定坐标后就可以通过液晶来进行显示。

方案三:

采用OV7620是CMOS彩色/黑白图像传感器。

它支持连续和隔行两种扫描方式,VGA与QVGA两种图像格式;最高像素为664492,帧速率为30fp8;能够满足一般图像采集系统的要求。

利用OV7620摄像头采集图像数据并对其进行二值化,分离出图像信号将10×6cm的PCB板二值化为白,在其周围贴上黑色胶带并通过程序处理二值化为黑。

然后用黑色的表笔靠近PCB板时形成黑白信号,即可设为高低电平。

然后通过行列扫描就可以确定PCB板上的坐标XY并通过液晶对其进行显示。

通过对三个方案的对比选择,方案一由于要做到64×32个那就要最少考虑到2048个点就要2048个电阻器件,将如此数量器件焊接在10×6cm的PCB板上将是极大焊接工程,考虑到时间的限制,及人工焊接的不稳定性,放弃此方案。

在方案二中测量及数据采集要求极高,在比赛中条件限制。

因此最后我们采用了方案三。

1.2主控制器方案比较与选择

为了完成在短时间快速扫描全屏和存储图形,主控器件必须有较高的CPU工作频率和存储空间。

方案一:

采用51系列加强型STC12C5A60S2作为主控器件,用来实现题目所要求的各种功能。

此方案最大的特点是系统规模可以做得很小,成本较低。

操作控制简单。

但是,我们在利用单片机处理高速信号快速扫描及存储图形时显得吃力,且题目中要求要求坐标识别精度<=2mm,并尽可能的提高系统分辨率,并要做到图形的存储与回放,51系列单片机很难实现这一要求。

方案二:

采用飞思卡尔半导体公司16位MC9S12XS128单片机为核心控制器件,由16位中央处理单元(CPU12X)、128KB程序Flash(P-lash)、8KB RAM、8KB数据Flash(D-lash)组成片内存储器,指令系统与S12兼容CPU工作频率最高可达80MHz,16通道高达12位精度A/D采集模块,7级中断嵌套和7个中断优先级,CRG模块,COP看门狗,实时中断及时钟监视器。

如此能够实现快速扫描和数据处理!

按照题目的要求,综合考虑我们最终选择了方案二,采用16位MC9S12XS128单片机为核心控制器件。

1.3液晶模块的选取

方案一:

采用1602液晶模块程序简单,成本较低,但是局限于其无法对汉字进行显示,及显示的点阵像素有限,并且题目要求功能较多,存在多个功能间的切换,图形的绘制,为了满足各功能间的切换及操作的简单就需要文字性的说明,而1602就无法满足这点

方案二:

采用Oled12864液晶模块,OLED12864是128×64行点阵的OLED单色、字符、图形显示模块。

模块内藏64×64的显示数据RAM,其中的每位数据都对应于OLED屏上一个点的亮、暗状态;其接口电路和操作指令简单,具有8位并行数据接口,读写时序适配6800系列时序强大的显示功能,可以满足题目的所有要求。

综合考虑之后我们决定采用12864液晶模块做为显示模块

第二章理论分析与计算

2.1画线算法设计

通过对摄像头信号的分离,二值化,并对整屏进行行列扫描得到了点的坐标值,而划线要求刚好需要点的坐标。

大家都知道,两点确定一条直线。

高中数学中,我们就知道直线方程有点斜式,截距式,两点式。

用其中任意一个公式我们都能得到一个正确的直线方程。

设计中,先点亮一个点再点亮另外一个点来确定直线,这正好满足两点式的要求。

算法中首先通过起点坐标(X1,Y1)和终点坐标(X2,Y2)来确定线段的方程,然后比较X2-X1与Y2-Y1的大小,若X2-X1>Y2-Y1,则通过X1+1,X1+2…X1+n来确定对应Y的坐标,直到X1+n=Y为止,同理若X2-X1

,这样我们就得到了起点到终点的所有坐标,再将对应的坐标全部显示出来就实现了两点画线功能。

2.2画圆算法设计

有了两点画线算法,那么两点画圆算法也就简单了,首先通过前后画的2点坐标求出2点的距离,也就是圆的半径R,而我们都知道圆的方程为X*X+Y*Y=R*R,这样一来我们就确定了圆的方程式,然后比较X2-X1与Y2-Y1的大小,若X2-X1>Y2-Y1,则通过X1+1,X1+2…X1+n来确定对应Y的坐标,直到X1+n=Y为止,同理若X2-X1

如果我们将对应的坐标直接显示时会忽略一个问题,那就是对应坐标的点是否超过了点阵屏幕的范围,因此在显示时我们要进行判断,若超出了范围那么对应的点也就不显示。

这样我们就得到了起点到终点的所有有效坐标,再将对应的坐标全部显示出来就实现了两点画圆功能。

2.3描点.划线.简单图形算法设计

通过信号的采集,二值化,确定表笔笔尖为接触点并并通过扫描确定其在PCB板上XY的坐标位置。

通过对点的保持,笔尖滑动就可以确定其他点从而由点连成线。

同理,其他图形的算法原理一样。

第三章系统电路设计

3.1系统主板工作原理

系统主板主要由5V电源模块,3.3V电源模块,按键部分,液晶显示模块,蜂鸣器模块,以及以飞思卡尔半导体公司16位MC9S12XS128单片机为核心控制模块。

5V电源模块:

此设计采用7.2V电池供电,通过稳压芯片LM2940一脚输入三脚输出将7.2V输入转变为5V输出,来给单片机供电。

3.3V电源模块:

3.3V电源输出是由AM1117稳压芯片三脚输入5V二脚输出来进行转换

按键模块:

本系统板中设计了四个按键,通过按键来对不同功能来进行切换演示。

液晶模块:

液晶模块采用龙丘生产的Oled12864液晶来显示,Oled12864液晶具有功能强大,连接简单等优势。

蜂鸣器模块:

蜂鸣器模块主要是用来作为指示作用,当表笔接触到PCB板时蜂鸣器发出接触警报,

图3-1系统主板工作原理图

第四章系统程序设计

4.1系统总流程图

4.2系统总体模块图

第五章系统测试与结果

5.1描点,坐标确定,划线,画圆,图形存储与回放的测试和结果

各模块均调通,将调好的模块连在一起,打开电源,启动进行系统初始化。

按键进入描点模式,用表笔在PCB板上书写,可以看到接触的点点亮,并在OLED12864液晶上显示亮点的精确坐标。

按下按键,进行划线的测试,将表笔在PCB板上任意确定起点滑动在液晶上将显示表笔划过的轨迹,划线测试成功。

按下按键进入画圆功能,通过功能切换很好的实现了画圆的高阶功能!

按键切换进入图形绘制与存储的功能,在PCB上画任意图形,在液晶上显示相应图形断电后再次进入之前图形被保持。

因此实现了功能的存储与回放。

最后经过反复的测试,所有的功能都能很好的实现,系统正常工作。

5.2表笔的测试结果

因为是采用分离摄像头的黑白信号来进行坐标的确定,因此我们选择了黑色表笔,并从黑色表笔笔尖引出导线,链接到128单片机的PB2口,上拉接高电平,并且将PCB铜板接地,如此当表笔接触到铜板时给单片机发送信号,确认进行扫描。

这样就将黑色表笔刚靠近PCB板时的干扰完美去除。

 

第六章结论

本作品完成了题目的基本要求和发挥部分的全部要求,系统性能良好。

通过对作品的各项进行优化,使系统的性能有了提高。

飞思卡尔半导体公司的16位MC9S12XS128单片机拥有强大的数据处理能力和理想的运行速度,并且使电路简单。

同时也提高了系统的集成度和可靠性。

参考文献

《电子设计制作基础》,王港元,江西科学技术出版社,2011年;

《模拟技术基础》,康华光,高等教育出版社,1998年;

《数字电子技术基础》,阎石著,高等教育出版社,1997年;

《高频电子线路》,张肃文,高等教育出版社,2009;

《嵌入式系统设计实践》,王宜怀,曹金华,北京航空航天大学出版社;2011年;

《电子设计与制版》,赵景波,徐江伟,人民邮电出版社,2009年;

附录

附1:

系统主板原理图

附2:

完整的测试结果

附2—1画圆实物图

附2—2划线实物图

附3:

部分核心源代码

#include/*commondefinesandmacros*/

#include"derivative.h"/*derivative-specificdefinitions*/

#include

#include"LQ12864.h"

#include"displaydata.h"

#include"moduleinit.h"

#include"ledfuncdis.h"

#include"key.h"

#include"DP_Flash.h"

#definerow_start20

#definerow_max40

#defineline_max72

#defineinterval5

#definepenPORTB_PB4

uintArr[4]={0x5555,0x2222,0x3333,0x4444};

uintArr0[4];

ulongaddress=0x007E0000;

uintaddr=0x0000;

byterow_image;

byterow_count,c_flag=0,h_flag=0,cc=0,g_SampleMFlag=0;

byteimage_data[row_max][line_max];

byteY_XLen[row_max][2];

byteX_YLen[line_max][2];

byteX_YDis[2][5]=

{

{"X:

55"},

{"Y:

55"}

};

byteshu[]={"0123456789"};

byteg_Orig=0;//起点原点左标是否以确定

voidLED_ON()

{

DDRE=0x40;

PORTE=0x00;

}

voidLED_OFF()

{

DDRE=0x20;

PORTE=0x00;

}

voidImageDeal();

voidDisUpdataData();

voidLedDis(ucharkeypos);

voiddelay_s(ucharx)

{

unsignedinti,j,z;

for(i=0;i<5000;i++)

for(j=0;j<1000;j++)

for(z=x;z>0;z--)

asmnop;

}

voiddelay(intz){

intx,y;

for(x=10000;x>0;x--)

for(y=z;y>0;y--);

}

voidGetImage()

{

cc++;

while(h_flag!

=1);

if(0==pen){

ImageDeal();

DisUpdataData();

LedDisDataBase();

}

h_flag=0;

}

voiddelay1(unsignedintz)

{

while(z--)

asmnop;

}

voidmain(void){

/*putyourowncodehere*/

unsignedchariii,jjj;

DisableInterrupts;

init_SCI();

init_PLL();

Flash_Init();

delay_s

(2);

Time_Init();

delay(10);

TIE=0x00;

EnableInterrupts;

delay(100);

DDR1AD0=0xaa;

ATD0DIENL=0xff;

DDRB=0x00;

DDRA=0x00;//cameraGPIOINIT

LCD_Init();

DisDataInit(0xff);

//LinePrintf(0,TitleDis,1);

LedDis(0);

delay_s

(2);

TIE=0x05;

GetImage();

for(iii=0;iii

for(jjj=0;jjj

image_data[iii][jjj]=255;

for(;;){

//TIE=0x05;

GetImage();

while(c_flag==1);

//TIE=0x00;

c_flag=1;

TIE=0x01;

if(0==key_flag)

{

ScanKey();

LedDis(keypos);

}

}

}

voidImageDeal()

{

uchari,j,temp;

for(j=1;j

for(i=2;i

{

if(255==image_data[j][i])

{

for(i;i

{

if((0==image_data[j][i])&&(0==image_data[j][i+1]))

{

temp=i;

for(i;i

if((255==image_data[j][i])&&(255==image_data[j][i+1])){

CurrentPoint.x=temp;

CurrentPoint.y=j;

X_YDis[0][2]=shu[CurrentPoint.x/10];

X_YDis[0][3]=shu[CurrentPoint.x%10];

X_YDis[1][2]=shu[CurrentPoint.y/10];

X_YDis[1][3]=shu[CurrentPoint.y%10];

return;

}

}

}

}

}

}

}

}

voidLedDis(ucharkeypos)

{

if(0==keypos)

{

LinePrintf(0,funsdis1,1);

LinePrintf(2,funsdis2,1);

LinePrintf(4,funsdis3,1);

LinePrintf(6,funsdis4,1);

}

if(1==keypos)

{

LinePrintf(0,funsdis2,1);

LinePrintf(2,funsdis3,1);

LinePrintf(4,funsdis4,1);

LinePrintf(6,funsdis5,1);

}

else

{

LinePrintf(0,funsdis3,1);

LinePrintf(2,funsdis4,1);

LinePrintf(4,funsdis5,1);

LinePrintf(6,funsdis6,1);}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2