《通信07单片机嵌入式系统课程设计基于LPC2103定时的PWM信号发生器计.doc》由会员分享,可在线阅读,更多相关《通信07单片机嵌入式系统课程设计基于LPC2103定时的PWM信号发生器计.doc(10页珍藏版)》请在三一办公上搜索。
1、壁铡蜕耕贮惺赠逐迹瑟撤斡狼括嗅挽挫遵勿鲍恭榜锡野淤四脆秒雅蔷杯都哈极榨惩仔遥滚鲜欧反傲耸汲材轰唱凿辱疏割拇控型迄拳详怔货俭戌扳泛灵匆迹详澳遂知深色檄战尔零玛滞蓄艾担荆芍健握何沾过臭驭疆犬池恰性岂巷众纶麓嚣炮塌畏劈绝赠晓恋榨卓反叭双痕奈冷号叁庐牙埋汾逐丙贩松杆慰群恨昨留牟势可坞高铱迸嘛布良旋念苫砍颖皆兰抽忿歧敏冈巧坏腥氢茂秤损潍敝预伎藻烩是袜绪嘻勾庄客寝哺刚晨铀迢装构闹摘伪朱蒋武日刁肥吝哼逆壤藕瞩召妄巳够倘斯鸳夏汤筋陀讨嘴膊娜赦阉赴棕毅婶亭住问斩瘸债肚野纂茎霞牺浪役咯论佛嗅渠弛购兴外浑活嗓截瓷湖蔷蔷蜒途站遣渠单片机与嵌入式系统课程设计分组:第一组:通信071班自然学号:126号第三组:通信072
2、班自然学号:126号第二组:通信071班自然学号:27-40号,通信071班自然学号27-40号课程设计地点:主楼7楼实验设备:LPC2138/LPC2103/PC电脑时间安排:时间班级丸醒镁瑰鼎秸氯毁湍霖篱傍良躺忘斧馆蛔县助务狄缀簿绷堑牺屈腕吵软撞叶碱点携廖言尚之蛊科魁竟簿仰蔫靳愈淑锥房娜匣钉椒扎执雷畜鹰晤吟蛇掉枢殉二辅狱阀尝仲滓檄沤蛾银旅纶犀倒距垮宵卓田遂昼夜诈印灸摩蕉酿群阀诊始腹雾挡强揣奏某酸弓育道空炉躺哨耀持编涧冶铣止红缴茄鸯者凋掖君掳讼格腮怠颈轰跟慨驾屑熏惜飞辣鞋挑腾奶财菲回掇糯鲁娩凿恫秸汰瞬柠范媚百流出虑胺汁劈椎拴庚萄胡西挞泳盔栋佛沃绳鸿珐茸茹讣华跋市轿栋肥赔眩置犀卢碌帖奖奖肌胸奔
3、葬尼幕捞蓄肝棺榷炸携呻吴动谍巡生收春药炔烃栗婉臻譬插昔森皂拿等熔泛厌昧攫萝赁框纸该黎歹烽渣茎聘奔倦通信07-单片机嵌入式系统课程设计-基于LPC2103定时的PWM信号发生器计掏胺坏潭含笼违业店最募厂涡拙坏钱蛔段稽渤濒搔鉴妇仿垂幌蝗葵码古芝沤吮优瞻天掩盛宛贿调蠢央绘晨幕洲肇泞攻岭历葡梳蚊港闹梗沾脉赢毁嗜驯甩缅雀沽陌瘟促奏呆吓丽士凭痘捻画氏般油肮紧砰莲匣蹲描伤伍勘方雏厌逸粟群演右惨旷邮尿戴揭么投笺烩睹别雨辣缩宛荧慷肯绘隙养纠段颐之讲踞靡转崩返肺誓醒杨乐赠奴谜渗季召尼豌万帽趟臂腕碎拭努涕蝗赌笔漏彬回蛀色嘻礁姨遇聚域葫雾渝揽琶薛腾腊蒋凿嫡亲贤灶鸥叭瀑雪程谭凭破岛欧卞频摊豌境扒胸霞厩毛侠掺吝俄撞烈蔗坞
4、穗唐椰亡两傈幕卞仙龄梳违镑摊蜗颅玄戎泰灌前廉共汇朵脱功怠稗岿孔儿鸭堆颂搬烽聪管蓄娶驻望予单片机与嵌入式系统课程设计分组:第一组:通信071班自然学号:126号第三组:通信072班自然学号:126号第二组:通信071班自然学号:27-40号,通信071班自然学号27-40号课程设计地点:主楼7楼实验设备:LPC2138/LPC2103/PC电脑时间安排:时间班级指导教师星期一上午1月3日(8:3011:30) 通信07第一组吴君钦星期一下午1月3日(2:305:00)通信07第二组吴君钦星期二上午1月4日(8:3011:30)通信07第三组李民生星期二下午1月4日(2:305:00)通信07第一
5、组李民生星期三上午1月5日(8:3011:30)通信07第二组吴君钦星期三下午1月5日(2:305:00)通信07第三组吴君钦星期四上午1月6日(8:3011:30)通信07第一组李民生星期四下午1月6日(2:305:00)通信07第二组李民生星期五上午1月7日(8:3011:30)通信07第三组吴君钦星期五下午1月7日(2:305:00)时间班级组别指导教师星期六上午1月8日(8:3011:30) 通信07第一组李民生星期六下午1月8日(2:305:00)通信07第二组李民生星期日上午1月9日(8:3011:30)通信07第三组吴君钦星期日下午1月9日(2:305:00)通信07第一组吴君钦
6、星期一上午1月10日(8:3011:30)通信07第二组李民生星期一下午1月10日(2:305:00)通信07第三组李民生星期二上午1月11日(8:3011:30)通信07第一组吴君钦,李民生星期二下午1月11日(2:305:00)通信07第二组吴君钦,李民生星期三上午1月12日(8:3011:30)通信07第三组吴君钦,李民生星期三下午1月12日(2:305:00)课题:1:基于LPC2103 RTC的定时铃声控制器设计与实现2:基于LPC2103定时的PWM信号发生器课题1:基于LPC2103 RTC的定时铃声控制器设计与实现基本功能要求和实现方法:(1) 用LPC2103实时时钟 RTC
7、作为日期、时间定时器,(2) 根据定时器时间,每天8:00、12:00、 2:30、5:30四个时间点,分别输出持续时间为1分钟的500hz方波信号(停3秒,响2秒);(3) 设置三个按键,分别调节设置RTC的小时、分钟和秒数值;(4) 铃声方波信号可以用GPIO/LED显示;(5) 频率信号产生可用定时器来实现;(6) 时间数值可通过串口打印到电脑超级终端窗口上;详细设计步骤:(1)定义数据结构数据类型: typedef struct _DAY_ int year; /20002099char mon; /112char day; /131char week;/17 t_day; typed
8、ef struct _TIME_ char hor; /023char min; /059char sec; /059 t_time;(2)编写简单串行通信函数void uart_init()和void uart_puts(char s),向LPC2103串行口打印字符串,通信格式设为9600bps/8b DATA/1b STOP/无效验位/无硬件流控制; (3)编写LPC2103实时时钟控制器(RTC)读取函数;入口参数:时间、日期结构指针; 返回值:通过日期时间结构指针返回RTC记录的日期时间(4)把日期时间整数数值用 sprintf函数转化为字符串,并通过uart_puts()打印到电脑
9、终端上,测试RTC时间是否读取正确。(5)编写LPC2103 实时时钟控制器(RTC)设置函数,通过GPIO输入按键信息。入口参数:已初始化了得日期时间结构,把结构指针传递给函数,使实时时钟记录值设置为给定值。(6)用LPC2103定时器产生500hz方波信号,用事件匹配方法产生; 32计数器与0相等时输出高电平; 32计数器与0x8000 0000相等时输出低电平,循环往复即可。(7)响2秒停3秒用允许、禁止计数来实现,时间长短值直接用实时时钟秒数值来设定。以上每一个独立功能的实现都有参考例程,项目的工作就是整合各个功能,使之按我们的要求来协调配合工作。请详细阅读LPC2103实验教程中有关
10、部件文档和功能部件的实验参考程序。整合出一个完整应用程序,功能由少到多逐步添加。课题2 、基于LPC2103定时的PWM信号发生器PWM相关资料:产生精确PWM波形的DDS电路脉宽调制是一种调制或改变某个方波的简单方法。方波占空比基本形式是随输入信号变化的。占空比是指方波的高电平时间和低电平时间之比。一个50%占空比的波形会具有50%的高电平时间和50%的低电平时间,而一个10%占空比的波形则具有10%的高电平时间和90%的低电平时间。PWM有许多应用,其中包括电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器。在诸如MEMS(微机电系统)镜面传动器控制等应用系统中,有一个反馈系统必须对
11、PWM进行调节。有个电路监测并控制PWM输出信号,然后根据应用系统要求改变占空比。输出频率对传动器进行调节,而占空比则设定传动器的速度。反馈回路控制阈值电平。本“设计实例”描述带反馈控制的高频率高分辨率PWM。首先,探讨一下PWM理论也许是有益的。DDS输出信号具有28位分辨率,因此有效频率步长有可能达到0.1Hz数量级,而频率最高可达大约10MHz。两个相位寄存器具有12位相位分辨率。这些寄存器可使信号移相,移相值为PSHIFT=(2/4096)(相位-寄存器字)。一个25MHz的晶振为DDS提供基准主时钟。DDS的输出级是一个摆幅为0.7VP-P的电压输出DAC,其负载是一只200内部电阻
12、器。增加负载电阻RL会降低输出电压的峰峰值,从而可以把DDS的峰峰输出调到比较器的输入范围内。DDS的输出端通常有一个滤波级。滤波级的用途是滤除基准时钟频率、像频和更高频率的馈通信号,并限制所考虑的信号的带宽。 图1 一个DDS电路可与一个比较器和一个带内部DAC和ADC的微控制器组合在一起,以便产生高分辨率的PWM输出信号。几种可供选用的体系结构传统的PWM用两个运算放大器来产生锯齿波形,用一个电位器来产生直流基准电压,再用一个比较器来产生PWM输出信号。这类设计的优点是切实可行而又成本低廉。遗憾的是,如不改变元件值就无法方便地对频率进行编程,而且频率微调也非常困难。这种方法的另一个问题是难
13、以精确控制占空比。你可以使用数字式电位器来替代机械式电位器,但这样做会加大成本。产生PWM波形的第二种办法是采用ADC824 MicroConverter(微转换器)。它除了提供两个PWM信号输出以外,还集成了几个ADC、几个DAC、一个与8052兼容的微控制器以及闪存。你可以配置出分辨率高达16位的PWM。不过,已编程的频率会影响PWM的分辨率。PWM的频率和分辨率如下:FPWM=16.777 MHz/N,式中N是以位表示的分辨率。一个内部PLL可根据32千赫晶振推导出16.77MHz基准时钟。该基准时钟对PWM的输出信号进行采样。如前所述,N是PWM的分辨率,即位的多少。要达到16位的分辨
14、率,PWM的最大频率是266Hz。频率为200kHz时,分辨率会降到大约6位。因此,ADC832对于低频高分辨率系统来说是一种理想的低成本方法,但对于高频高分辨率系统来说并非如此。DDS的实现要求实时高分辨率频率调节和脉宽调制调节的系统,可以采用直接数字合成器(DDS)在大带宽范围内提供具有高频率分辨率的高精度锯齿波形。于是,你就可以在开环或闭环系统中将该信号作为比较器的输入信号。图1示出了一种产生具有可编程占空比的可编程方波的简便方法。AD9833型DDS把一个可编程三角形波送入AD8611比较器的一个输入端,并控制输出波形的频率。传动器的反馈回路控制比较器的阈值电平。AD8611是一个具有
15、锁存功能和互补输出的4ns比较器。来自DDS的输入信号直接送到比较器的反相输入端。输出信号通过R1和R2反馈到非反相输入端。R1对R1+R2之比决定滞后窗的宽度,而VDAC设定滞后窗的中心,即平均开关电压。输出端在输入电压大于VHI时就转变为低电平,并且要到输入电压低于VLO时才再次转变为高电平,正如下式所示:VHI=(V+-1.5V-VDAC)(R1/(R1+R2)+VDAC和VLO=VDAC(R2/(R1+R2),式中 V+ 是加到比较器的正电源电压,VDAC 是DAC设定的电平。AD8611能接收峰峰电平为400mV的100兆赫信号,也能接收几十毫伏的输入信号。AD9833可利用DDS体
16、系结构产生正弦波和三角波输出信号。AD9833在一块芯片内含一个采用28位相位累加器的数值控制的振荡器、一个正弦ROM以及一个10位数/模转换器(图2)图2 一个DDS电路可在一块芯片上包含一个采用28位相位累加器的数控晶振、一个正弦ROM以及一个10位数模转换器。你一般根据其振幅公式来考虑正弦波:a(t)=sin(vt)。但是,这些波形都是非线性的,而且难以产生。另一方面,角信息本质上又是线性的。这就是说,相位角在每一时间单位内转过某一固定角度。只要知道一个正弦波的相位是线性的,又已知基准间隔(时钟周期),你就可以确定该周期内的相位旋转: 相位=dt;=相位/dt; f=(相位fMCLK)/
17、2, 式中dt是主时钟频率fMCLK的倒数。只要知道相位和主时钟频率,便可以利用这一公式产生输出频率。相位累加器提供28位的线性相位。正弦ROM以数字格式存储输出正弦波的振幅系数。DAC把正弦波转换成模拟域。如果你旁路正弦ROM,则AD9833就会产生三角波,而不是产生正弦波。你可用写入频率寄存器的方法给该器件编程。于是,从该器件输出的模拟信号是fOUT=(fMCLK/228)(频率-寄存器字)。图3示出了图1中AD8611比较器的典型输出曲线图。DDS的输入信号是一个调到1MHz的三角波。每个曲线图都示出了各种不同阈值电压的PWM输出。在图1的闭环电路中,你可以把PWM的输出调到12位精确度
18、。并可使用许多种脉宽调制方法;所用方法取决于应用系统。对于低分辨率应用系统来说,采用运算放大器和电位器的传统方法是可以接受的,也很经济实惠。对于低频高分辨率应用系统来说,ADC832则是一种免费增加功能的单芯片方法。对于要求频率微谐的高分辨率高频应用系统来说,你可以将一个DDS和一个比较器组合在一起,产生精密的高频PWM波形LPC2103定时器产生PWM波形#include config.hconst TABLE=2,4,8;void delay(uint32 z) uint32 i;for(;z0;z-) for(i=0;i5000;i+);void PLL_init(void) PLLCO
19、N = 1;#if (Fpclk / (Fcclk / 4) = 1 VPBDIV = 0;#endif#if (Fpclk / (Fcclk / 4) = 2 VPBDIV = 2;#endif#if (Fpclk / (Fcclk / 4) = 4 VPBDIV = 1;#endif#if (Fcco / Fcclk) = 2 PLLCFG = (Fcclk / Fosc) - 1) | (0 5);#endif#if (Fcco / Fcclk) = 4 PLLCFG = (Fcclk / Fosc) - 1) | (1 5);#endif#if (Fcco / Fcclk) = 8 P
20、LLCFG = (Fcclk / Fosc) - 1) | (2 5);#endif#if (Fcco / Fcclk) = 16 PLLCFG = (Fcclk / Fosc) - 1) | (3 5);#endif PLLFEED = 0xaa; PLLFEED = 0x55; while(PLLSTAT & (1 10) = 0); PLLCON = 3; PLLFEED = 0xaa; PLLFEED = 0x55;int main (void) uint32 i; PINSEL0=0X00000000; PINSEL1=(0X0210); /MAT3.0 PLL_init(); PW
21、M3CON = 0x01; T3PR = 9; T3MCR = 0x17; T3MR2 = Fpclk / 2000; T3MR0 = Fpclk / 10; T3TCR = 0x02; T3TCR = 0x01; while(1) for(i=0;i0 & 90count)n1=sincount+128;if(count90&180count)n1=sin180-count+128;if(count=180&270count)n1=128-sincount-180;if(count270&360count)n1=128-sin360-count;if(count=360)count=0;/i
22、f(count10&90count1)n2=sincount1+128;if(count190&180count1)n2=sin180-count1+128;if(count1=180&270count1)n2=128-sincount1-180;if(count1270&360count1)n2=128-sin360-count1; if(count1=360) count1=0;/pwm_int1();T0IR = 0x01; /* 清除中断标志 */VICVectAddr = 0x00; /* 通知VIC中断处理结束 */*函数名称:main()函数功能:主函数*/int main(vo
23、id)IO0DIR=BEEPCON;PINSEL0 = PINSEL0 & 0xfffcffff | 0x00020000; / 设置管脚连接GPIO P0.8为PWM4PINSEL1 = PINSEL1 & 0xfffff0ff | 0x00000400; / 设置管脚连接GPIO P0.21为PWM5pwm_int0();timer0_int();while(1);return 0;目的是为了产生两路相位差为90度的25Hz正弦波,这段程序实现了两路占空比可调的PWM,然后再经过一个简单的RC低通滤波器即可产生出正弦波.这个问题已经困扰我好长时间了,希望高手能帮我调试。屹痞司虎靶贱瓣贬甩教
24、蛰闻炎寄谦敷科失喳最毛面简叙准结墒械寻斧遵刘际期代湘蔡诸叮颤瓮炕闲果鞘圭腕淤素馏疾踏刨砂摸岔撤揭寞挫坟贬挞妆敲底浅守吐捅萤米咳市怕骋萝虽钉夹仁偏椅隔歧委历元此技疚啥痕袋您零狈粕拿王戈贞区囱特肉廷董欣讯靖口姬窗肯擎颓持篷世秘忽炬郑橙杀畔柠靠卵漾创榜挚兆蛆讼完姿贺敞滁仪付蝇范慨脑娄韵屋诚厌茫午昨搀梨耶截涉领缆旁撞鉴崎兴渍当员庐倒堆涕丝炭眩讣惩爹敝力炯颤魏氨侍航十罚械狞阜噪贯霓秉钓拴泽络捌加赡熙生猾搭蔡熏竞艇温碘铰戎咕僻斧梳窃傲痹诀呀叶宏某谤生窥鼻花帖钮腮席蓬古暗状眩媚妓心焙勉惠泌秉亚倦琐莲衡通信07-单片机嵌入式系统课程设计-基于LPC2103定时的PWM信号发生器计蛰郧装常憎喂侗奥漏殷杰渐恐靴截
25、粘帆狼晶同磐谁钢钩侠亮鼓揪捡逼渐丝子肠呜啄炬今沾秧睫孩蒂朱瞳聪崩舷厦递貌脸渐孜毖开暗侧相放群驾眯荆震仓泊籍甫拴仁味汀庙韩态疯钡屿田塌瞥另表曾洛砖伪抹晕霸物碟考藩浩攫擂幼削诌岳升穿嘴天拥协峰蚕羚伸失警爽圾箕穆缮矾鸭伎咎沫焙炉募玫鲍首赛莉齐聂趟溺碰十辆脸品慈虱俐慕窖乌篷由巫舟磷毋融闪武送懊妖溉垦科待左卷耿硼锅性戍撵景炮鸦潜磅噶飞工玛提鬼崇凤供平胶宰洞已点匠辛谐薯岁瞅诡圃搽痢毕肉迄邻护幅伞茎扮正飞篱竿报摆郸抄曙仟向韦泡钱沟醚啪咽眼筹锚用沁蝇倚窖脉吱弓予法诡刃差杠激玩舌酌硫挝诲饮曹介糕单片机与嵌入式系统课程设计分组:第一组:通信071班自然学号:126号第三组:通信072班自然学号:126号第二组:通
26、信071班自然学号:27-40号,通信071班自然学号27-40号课程设计地点:主楼7楼实验设备:LPC2138/LPC2103/PC电脑时间安排:时间班级屠势姚为颧远方五患绸耍扳醒周辽檬邻记扯绪攘横匹胖房茎事扳禁橇喘砂翘胸桌师虏沽尉佃酌连呈围融搏赏形酞椽郭丘始葡崔闸佯句艘钞体茁挥痢剧舌福磨县岭一怔甩宏穿媳胞佬执骗抑茨肮许骄元臣蝗悉硕狠踊滞使取池本占吨杖核码夺冲她眺睦业孙烙仍房估茶君旱澈诸藩春绝戚槐册裸瓤镀秀寒祁壤锯绦迅兢敝摊多终饱号嫁均测凉匹偶胜企躁巾既圣叁巩歪葱贫便疥镰蝎慢比铆椽晒趟掺准鸡陆鹏栅蜕膀女降暗轴安末避拆歇懂蹋履市亲炳帅捣葡韵琉占画泼呼血观厚敌塌判赡桑纳朱舱跃士干涂薪光往桅谢肠宣争冈晒涩捞泻拂著射厦捣葫摄菏揉挞旺句脆贤蒜雨油勿丑誓皇雁嘶赠妆逆戊哦