ARM课程设计(频率计).doc

上传人:文库蛋蛋多 文档编号:4136212 上传时间:2023-04-07 格式:DOC 页数:26 大小:215KB
返回 下载 相关 举报
ARM课程设计(频率计).doc_第1页
第1页 / 共26页
ARM课程设计(频率计).doc_第2页
第2页 / 共26页
ARM课程设计(频率计).doc_第3页
第3页 / 共26页
ARM课程设计(频率计).doc_第4页
第4页 / 共26页
ARM课程设计(频率计).doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《ARM课程设计(频率计).doc》由会员分享,可在线阅读,更多相关《ARM课程设计(频率计).doc(26页珍藏版)》请在三一办公上搜索。

1、 电控学院课程设计(论文) 课程名称: ARM嵌入式系统基础教程 题 目: ARM为核心的频率计设计 院 (系): 电气与控制工程学院 专业班级: 测控技术与仪器1002 组 员: 指导教师: 2013年 12月 28日ARM为核心的频率计设计摘要:频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。频率计最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。本文以ARM为内核设计频率计,用ARM的定时器/计数器的定时和计数功能,检测外部方波频率,并用上位机显示。关键词:频率计、ARM、定时计数目录1. 概述11.1本次设计任务11.1

2、.1设计题目11.1.2设计要求11.2设计基本原理22 .方案设计33. 硬件设计43.1 硬件设计原理图及其介绍43.2 主要单元电路的设计43.2.1 电源电路设计43.2.2时钟振荡电路设计63.2.3复位电路设计63.2.4串口电路73.2.5显示电路设计83.3硬件电路总体设计114 .软件设计11结论12心得体会13致谢14参考文献15附录1: 程序清单161. 概述 数字频率计(DFM)是电子测量与仪表技术最基础的电子仪表类别之一, 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,而且它是数字电压表(DVM)必不可少的部件。当今数字频率计不仅是作为电压表

3、、计算机、天线电广播通讯设备、工艺过程自动化装置。多种仪表仪器与家庭电器等许多电子产品中的数据信息输出显示器反映到人们眼帘。集成数字频率计由于所用元件少、投资少,体积小,功耗低,且可靠性高,功能强,易于设计和研发,使得它具有技术上的实用性和应用的广泛性。不论从我们用的彩色电视机、电冰箱,DVD,还有我们现在家庭常用到的数字电压表数字万用表等等都包含有频率计。现在频率计已是向数字智能方向发展,即可以很精确的读数也精巧易于控制。数字频率计已是现在频率计发展的方向,它不仅可以很方便的读数,而且还可以使频率的测量范围和测量准确度上都比模拟先进.而且频率计的使用已是很多的方面,数字卫星、数字通讯等高科技

4、的领域都有应用,今天数字频率计的发展已经不仅仅是一个小电子产品的发展也是整个民族乃至整个国家的发展,所以频率计的发展是一个整体的趋势。1.1本次设计任务1.1.1设计题目以ARM为核心设计频率计1.1.2设计要求 1)用protel画出最小系统及外围扩展电路 2)显示部分可用12864 或者数码管 最好用上位机(VB界面) 主要功能为,用ARM的定时器/计数器的定时和计数功能,外部扩展6位LED数码管,要求累计每秒进入ARM的外部脉冲个数,用LED数码管显示出来。或用上位机显示。3) 要求小组成员分工明确,答辩到位1.2设计基本原理所谓频率,就是周期性信号在单位时间 (1s) 内变化的次数若在

5、一定时间间隔T内测得这个周期性信号的重复变化次数为N,则其频率可表示为 fx=N/T 。从原理图可知,被测信号Vx经放大整形电路变成计数器所要求的脉冲信号,其频率与被测信号的频率fx相同。时基电路提供标准时间基准信号,具有固定宽度T的方波时基信号II作为闸门的一个输入端,控制闸门的开放时间,被测信号I从闸门另一端输入,被测信号频率为fx,闸门宽度T,若在闸门时间内计数器计得的脉冲个数为N,则被测信号频率fx=N/THz。可见,闸门时间T决定量程,通过闸门时基选择开关选择,选择T大一些,测量准确度就高一些,T小一些,则测量准确度就低.根据被测频率选择闸门时间来控制量程.在整个电路中,时基电路是关

6、键,闸门信号脉冲宽度是否精确直接决定了测量结果是否精确.逻辑控制电路的作用有两个:一是产生锁存脉冲,使显示器上的数字稳定;二是产生清“0”脉冲,使计数器每次测量从零开始计数。清零信号锁存信号TN整形放大电路计 数 器锁 存 器译 码 器逻 辑 控 制 电 路显 示 器时 基 电 路闸 门图1.l原理总体结构图2 .方案设计 方案1 由外部波形发生器传送出频率后经LPC2200定时器对频率进行计数。然后由上位机对频率进行计数显示。 方案2 通过板内的1个定时器,完成发射频率与频率计数。板内自带的定时器向另一个定时器发送方波频率,由另一个定时器接受并进行计数。外接液晶屏1602显示频率,并且显示的

7、程序可由板内的2个按键切换或进行中断。因为本次设计所提供的器件有波形发生器,使用方案1更有利于整体设计,且在软件设计上更容易实现。故此次设计我们使用方案1。3. 硬件设计3.1 硬件设计原理图及其介绍 LPC2200待测信号发生模块定时器计数器上位机显示结果图3.1 原理框图由上图知,被测脉冲信号进入ARM开发板,然后经过1S的定时捕获得出频率值,再经由上位机显示出数值。3.2 主要单元电路的设计本次电路设计主要包括以下几个模块:电源电路设计、时钟电路设计、复位电路设计和LCD显示电路。3.2.1 电源电路设计电源、晶振及复位电路是整个系统正常工作的基础。在进行电路设计时,首先保证其设计的正确

8、性和可靠性,其次在系统调试之前也应首先检查它们的工作是否正常:上电之前的电路是否短路、电压输出是否正确、晶振输出是否正确、以及复位信号电平和持续时间是否满足要求等。本系统中5V电压直接由外部电源引入,1.8V及3.3V电压由电压转换器获得。在此选用固定电压输出的DCDC转换器:ams1117-1.8(输出电压1.8V)和ams1117-3.3(输出电压3.3V)。图3.2电源电路3.2.2时钟振荡电路设计图3.3 时钟振荡电路3.2.3复位电路设计复位电路完成系统的上电复位和运行中的按键复位功能。本系统采用电压监控芯片R3112完成电路的复位设计,具体电路如图8.3所示。LPC2200芯片复位

9、端为低有效端子,R3112芯片在加电后,其输出端(OUT)会在保持一定时间的低电平信号后变为高电平,低电平信号存在时间的长短由CD端连接的电容决定,通过调节此电容可以满足系统对复位时间的要求。另外R3112可以监控系统电压,在系统电压低于一定值时,输出低电平,复位整个系统,从而保证了系统工作的可靠性。图3.4复位电路3.2.4串口电路SP232E器件是一个符合RS-232和V.28串行协议规格的收发器家族,带有增强ESD性能。这些器件的ESD容限得到了改进,不论是人体放电模式还是IEC1000-4-2气隙放电,都达到了15kV。SP232E器件在引脚上兼容Sipex的SP232A器件,符合热门

10、行业标准。与原来的版本一样,在带负载情况下SP232E器件具有至少120Kbps的数据传输速率,0.1F的电荷泵电容,以及适应商业应用的整体强度。同时,这些器件还具有Sipex的双极型CMOS设计,允许低功耗操作,而不影响性能。SP232E系列可选塑料或陶瓷DIP和SOIC封装,覆盖商业级,工业级和军工级温度范围。由于开发板是3.3V供电系统,需要使用电平转换芯片SP3232E来进行RS-232电平转换。SP3232E的工作电压为3.3V,电平转换电路如图25所示。当使用ISP(在系统可编程集成开发环境)功能时,需要将PC机的串口与开发板的串口相连,短接JP6端口,短接P0.14,在系统复位时

11、,进入ISP状态。同样,在程序仿真调试中,若用到串口UART0,则需要短接JP6两个端口。 图3.5UART03.2.5显示电路设计液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。在本次频率计设计当中12864 液晶显示最后的频率计算结果。 12864 液晶显示具有如下的特性:提供8 位,4

12、位并行接口及串行接口可选并行接口适配M6800 时序自动电源启动复位功能内部自建振荡源6416 位字符显示RAM(DDRAM 最多16 字符4 行,LCD 显示范围162 行)(改为半角输入)2M 位中文字型ROM(CGROM),总共提供8192 个中文字型(1616 点阵)16K 位半宽字型ROM(HCGROM),总共提供126 个西文字型(168 点阵)6416 位字符产生RAM(CGRAM)1516 位总共240 点的ICON RAM(ICONRAM)液晶显示12864的引脚功能如表3.1所示。 表3-1 液晶显示12864的引脚功能引脚号引脚名称方向功能说明1VSS-模块的电池地2VD

13、D-模块的电源正端3VO-LCD驱动电压输入端4RS(CS)H/L并行的指令数据选择信号:串行的片选信号5R/W(SID)H/L并行的读写选择信号:串行的数据口6E(CLK)H/L并行的使能信号:串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并串行接口选择:H-并行:L-串行16NC空脚17RSTH/L复位 低电平有效18NC空脚19LED_A-背光电源正极20LED_K-背光电源负极对12864写控制时,在使能信号E下降沿有效。在使能信号E

14、下降沿后,为了保证数据或指令可靠写入,需要在使能信号E下降沿后有一段延时,使12864完成内部动作。12864的指令集分为基本指令集和扩充指令集,扩充指令集提供绘图功能,可以显示图片;在本设计当中,仅需要基本指令集以显示汉字、数字和字母,表3.2给出12864的基本指令集。清除显示指令将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)为“00H”。 地址归位指令设定DDRAM的地址计数器(AC)为“00H”,并且将游标移到开头原点位置,这个指令并不改变DDRAM的内容。在显示状态开/关指令中,D=1,整体显示ON,C=1,游标ON,B=1,游标位置ON。在功能设定指令中DL=1

15、(必须为1),RE=1,扩充指令集动作,RE=0,基本指令集动作。表3-2 12864的基本指令指令指令码RSRWDB7DB6DB5DB4DB3DB2DB1DB0设定DDRAM地址001AC6AC5AC4AC3AC2AC1AC0些资料到RAM10D7D6D5D4D3D2D1D0清楚显示0000000001地址归位000000001X显示状态开关0000001DCB游标或显示移位控制000001S/CR/LXX功能设定00001DLXREXX3.3硬件电路总体设计 图3.6总体电路4 .软件设计 由硬件电路和和设计原理:所谓频率,就是周期性信号在单位时间 (1s) 内变化的次数。若在一定时间间隔

16、T内测得这个周期性信号的重复变化次数为N,则其频率可表示为 fx=N/T 。因此,可以用计数器累计单位时间内的信号个数,然后经译码、显示输出测量结果,发送给12864或上位机显示。开 始初始化定时器0初始化串口0向串口发数据定时器1S定时获取脉冲1S时间到关闭定时器0显示结果NY 4.1程序流程图 结论此次实验题目为ARM为核心的频率计设计,主要完成从方波发生器接收脉冲信号,对其进行上升沿捕获,计1s脉冲个数,通过串口0将最终频率数值显示在上位机上,读取显示数值为最终计算频率。此次实验使我通过亲自动手操作,将课本ARM嵌入式系统基本教程上的理论知识应用于实践,充分发掘学生们的潜力,进一步掌握A

17、RM相关知识。此外,实验中有一些问题存在,在实验室做设计时,没有有效地利用仪器设备进行设计调试,希望以后能有所改进。心得体会【软件调试】:xxx 在设计的过程中,遇到许许多多错误。由于所测信号是方波信号,开始的程序设计是,每当 一个周期的高电平到来时计数器的值加一,定时一秒,再把计数器的值发送给上位机显示, 但高电平时一段持续高电平,不是脉冲信号,程序很难设计。在老师的帮助下应用定时捕获才最终把程序调试了出来。总之,这次课程设计锻炼了我的动手实践能力,把课本上学到的理论知识与设计制作很好的结合起来,加深了我对很多知识的理解。【硬件设计】:xxx 在做数字频率计的设计时,开始是遇到不少的问题,比

18、如我们想如此微弱的信号是怎样被数字频率计检测的呢,频率计到底是什么设计原理呢,毕竟还没有接触过实际设计和开发,所以在考虑问题的时候往往是不全面的,也就是说这次设计还不少的方面没有考虑周全,也一定存在着这样那样的问题。这个电路的设计有很多的不足,我们的能力在很多方面也需要提高,通过这次小小的考验让我们懂得第一次接触的东西也是能融会贯通的,态度决定一切。致谢 通过一周的努力,我们的ARM毕设接近了尾声。此次我们选择了以ARM为核心的频率及设计,在本次课设与论文完成中,xxx老师和xxx老师都给予了我们耐心的指导和无私的帮助,从选择题目到提纲撰写,再到流程进程,再到软硬件的设计以及各种调试,老师们多

19、次指出我们设计存在的问题,并给与我们帮助,我们在此表示衷心感谢。参考文献1 周立功 著. ARM嵌入式系统基本教程(第2版). 北京航空航天大学出版社,2008年.2 周立功 著.深入浅出ARM7-LPC213X/214X. 北京航空航天大学出版社,2005年6月.3 百度文库资料.频率计设计4 多媒体课件.第6章 接口技术与硬件设计附录1: 程序清单/* 文 件 名:pinlvji.c* 功 能:计外部脉冲个数,将频率数值通过串口发送到上位机进行显示,使* 用串口调试助手的窗口显示频率值。* 说 明:使用外部晶振为11.0592MHz,即Fpclk=11.0592MHz,根据* CONFIG

20、.H文件配置;* 通讯格式:8位数据位,1位停止位,无奇偶校验,通讯波特率* 115200。*/#include config.h#define UART_BPS115200/ 定义通讯波特率#define TIMER 5#define KEY 10; dly-) for(j=0; j5000; j+); /* 名 称:Time0Init()* 功 能:初始化定时器0,定时时间为1S。 * 入口参数:无* 出口参数:无*/void Time0Init(void) /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz Fpclk = Fcclk/4 = 44

21、.2368MHz/4 = 11.0592MHz*/ T0PR = 99; / 设置定时器0分频为100分频,得110592HzT0MCR = 0x03; / 匹配通道0匹配中断并复位T0TCT0MR0 = 110592; / 比较值(1S定时值)T0TCR = 0x03; / 启动并复位T0TCT0TCR = 0x01; /* 名 称:UART0_Ini()* 功 能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波* 特率为115200* 入口参数:无* 出口参数:无*/void UART0_Init(void) uint16 Fdiv; PINSEL0 = (PINSEL0 &

22、(0x0F) | 0x05;/ 不影响其它管脚连接,设置I/O连接到UART0 U0LCR = 0x83;/ DLAB = 1,可设置波特率 Fdiv = (Fpclk / 16) / UART_BPS;/ 设置波特率 U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0x03;/* 名 称:UART0_SendByte()* 功 能:向串口发送字节数据,并等待发送完毕。* 入口参数:data要发送的数据* 出口参数:无*/void UART0_SendByte(uint8 data) U0THR = data; / 发送数据 while( (U0

23、LSR&0x40)=0 ); / 等待数据发送完毕/* 名 称:UART0_SendStr()* 功 能:向串口发送一字符串* 入口参数:srt要发送的字符串的指针* 出口参数:无*/void UART0SendStr(char *str) while(1) if( *str = 0 ) break; UART0SendByte(*str+);/ 发送数据 /* * 函数名:itoa * 描述 :将整形数据转换成字符串 * 输入 :-radix =10 表示10进制,其他结果为0 * -value 要转换的整形数 * -buf 转换后的字符串 * -radix = 10 * 输出 :无 * 返

24、回 :无 * 调用 :被USART1_printf()调用 */static char *itoa(int value, char *string, int radix)int i, d;int flag = 0;char *ptr = string;if (radix != 10) *ptr = 0; return string;if (!value) *ptr+ = 0x30; *ptr = 0; return string;if (value 0; i /= 10) d = value / i; if (d | flag) *ptr+ = (char)(d + 0x30); value

25、-= (d * i); flag = 1; *ptr = 0;return string; /*名 称:显示函数功 能:显示转化后的字符串说 明:*/void disply(int d)char buf16;itoa(d,buf,10);UART0SendStr(buf);/* 名 称:main()* 功 能:向串口UART0发送字符串* 说 明:在CONFIG.H文件中包含stdio.h。*/int main(void) uint8 Num =0,num=0,i=0,flag=0,t; uint16 PLJ_Send_Data; uint32 PLJ _Data, PLJ _DataTIME

26、R,temp; PINSEL0&=0xFFFFFFFC; / 设置引脚连接模块,P0.0为GPIO IO0DIR = KEY; / P0.7输出控制Time0Init();/ 初始化定时器0UART0_Init(); / 初始化UART 0PINSEL0 = 0x00000005; / 设置I/O连接到UART0while(1) for(num=0;num=TIMER) flag=1; i=TIMER; if(flag=1) temp=0; for(t=0;tTIMER;t+) temp=temp+ PLJ _Datat; PLJ _Send_Data=2*(uint16)temp/TIMER; T0TC=0; PLJ _Send_Data=2000000/ PLJ _Send_Data; disply(PLJ _Send_Data); UART0SendByte(0x0d); UART0SendByte(0x0a); DelayNS(10); return(0);

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号