版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模拟测速系统及LCD显示摘要:在设定的时间段内,计算在该时间段内的脉冲数,达到模拟测速的效果。首先,采用 PIT定时器设定定时宽度;然后,在PIT计数结束时使用中断,使用变量来统计改时间 内采集到的脉冲数,并使PIT重新开始定时;最后,在LCD1602上显示该变量数目。 本实验采用PIT定时器、中断使能的方式,达到模拟测速的要求。关键词:PIT定时器,中断,LCD1602,MC9S12XS128芯片引言1.1 MC9S12XS128芯片=1\*GB3①PWM模块PWM调制波有8个输出通道,每一个输出通道都可以独立的进行输出。每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。每一个PWM输出通道都能调制出占空比从0—100%变化的波形。=2\*GB3②定时器模块基本的定时器模块由1个增强的可编程预分频器驱动的可编程计数器、8个输入捕捉/输出比较通道和1个脉冲累加器组成。定时器模块一共有8个引脚,其中脉冲累加器与第7号通道的引脚是共用的。=3\*GB3③A/D转换模拟信号依次通过抽样和保持(S/H)电路和模拟转换器(A/D)后转换为数字格式。抽样和保持电路以均匀间隔对模拟信号进行抽样,并且在每个抽样运算后在足够的时间内保持抽样值恒定,以保证输出值可以被A/D转换器精确转换。下一步是通过模数转换器将抽样和保持电路的输出转换为数字形式。模数转换器的输出通常表示为二进制编码的形式。转换精度由分辨率来表示,它由离散级数量决定。比如,对一个以二进制形式编码的长度为N位的长的输出,有效地离散级数量是2的N次方,分辨率为离散数量级的倒数。12中A/D转换共有两个方块,每个方块各有8个输入通道,使用时应以标头ATD0或ATD1标识。1.2 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)注:为了表示的方便,后文皆以1表示高电平,0表示低电平。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。系统设计2.1硬件设计设计图框设定时间内计算脉冲数 下一段单位时间2.2软件设计=1\*GB3①流程图开始开始初始化初始化输入输出端口的确定输入输出端口的确定确定LCD中各个块的显示位置及其内容(除速度块)确定LCD中各个块的显示位置及其内容(除速度块)ForFor设定定时器宽度设定定时器宽度输出显示调用中断内容速度计算输出显示调用中断内容速度计算小灯切换闪烁小灯切换闪烁=2\*GB3②程序编写#include<hidef.h>/*commondefinesandmacros*/#include"derivative.h"/*derivative-specificdefinitions*/#defineepPTT_PTT3#definerwPTT_PTT2#definersPTT_PTT1intencoder_cnt,i1,j;//定义全局变量/*************************************************************//*初始化锁相环*//*************************************************************/voidPLL_32M(void)//BUSCLOCK=32MHZ,PLLCLOCK=64MHZ{CLKSEL&=0x7f;//setOSCCLKassysclk时钟选择寄存器PLLCTL&=0x8F;//DisablePLLcircuit环控制寄存器CRGINT&=0xDF;中断SYNR=0x43;REFDV=0x81;//PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz,fbus=32MPLLCTL=PLLCTL|0x70;//EnablePLLcircuitasmNOP;asmNOP;while(!(CRGFLG&0x08));//PLLCLKisLockedalreadyCLKSEL|=0x80;//setPLLCLKassysclk}/*************************************************************//*PIT定时*//*************************************************************/voidPIT_inits(void)//定时间断初始化函数1ms定时间断设置{PITCFLMT_PITE=0;//关PITPITCE_PCE0=1;//定时器通道0使能PITMTLD0=32-1; //8位定时器初值设定,32分频,在32MHzBusClock下,为1MHz。即1usPITLD0=1000-1;//16位定时器初值设定。1000*1us=1msPITINTE_PINTE0=1;//定时器间断通道0间断使能PITCFLMT_PITE=1;//使能PIT}/*************************************************************//*初始化累加器*//*************************************************************/voidPAI_inits(void){PACTL=0x50;//始能脉冲累加器,累加上升沿}//////////////////////////////////////////////////////////////voidPWM_Init(void){PWME_PWME3=0x00;//PWWisdisabled禁止PWMPRCLK=0x33;//0b00110011A=B=24M/8=3M时钟预分频寄存器设置PWMSCLA=150;//SA=A/2/150=10k时钟设置PWMSCLB=150;//SB=B/2/15=10k时钟设置PWMCTL=0x00;//noconcatenation控制寄存器设置PWMCLK_PCLK3=1;//PWM3-----SB时钟源的选择PWMPOL_PPOL3=1;//Duty=HighTime极性设置PWMCAE_CAE3=0;//left-aligned对齐方式设置PWMPER3=4;//Frequency=SB/250=40周期寄存器设置PWMDTY3=2;//Dutycycle=50%占空比寄存器设置PWME_PWME3=1;//enable使能}/////////////////////////////////////////////unsignedinta,b,c;unsignedchardis1[]={"MoNiCeSu-_-#"};unsignedchardis2[3];unsignedcharw[]={"speed:"};unsignedcharscales[]={"n/dt"};bytelcd_bz(void);//判忙//////////////////////////////////////voiddelay(unsignedcharms)////延迟函数{unsignedinti;while(ms--){for(i=0;i<25000;i++);}}///////////////////////////////////////////bytelcd_bz(void)//判忙函数{byteresult;DDRB=0X00;rs=0;rw=1;ep=1;result=(byte)(PORTB&0x80);ep=0;returnresult;}//////////////////////////////////////////voidlcd_wcmd(unsignedcharcmd)//初始化{while(lcd_bz());//判LCD是否忙碌DDRB=0XFF;rs=0;rw=0;ep=0;PORTB=cmd;ep=1;ep=0;}///////////////////////////////////////////voidlcd_pos(unsignedcharpos)//初始化{lcd_wcmd(pos|0x80);}//////////////////////////////////////////////voidlcd_wdat(unsignedchardat)//初始化{while(lcd_bz());//判断LCD是否忙碌DDRB=0XFF;rs=1;rw=0;ep=0;PORTB=dat;ep=1;ep=0;}////////////////////////////////////////////////voidlcd_init(void)//lcd初始化清屏{PTT_PTT0=0;lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01);delay(1);}voidGPIO_INITS_1(void){DDRK|=0X88;}//////////////////////////////////////////////voidmain(void)//主函数{unsignedinti;1出0入GPIO_INITS_1();DDRB=0XFF;DB0-DB7B0-B7入DDRT=0X7F;//根据连线端口选择T7口01111111===0x7Flcd_init();//初始化LCDdelay(10);//////////lcd_pos(0x00);//设置第一行显示位置i=0;while(dis1[i]!='\0'){lcd_wdat(dis1[i]);//显示第一行字符i++;}/////////lcd_pos(0x40);//设置speed显示位置i=0;while(w[i]!='\0'){lcd_wdat(w[i]);i++;}//////lcd_pos(0x4b);//n/dt显示位置i=0;while(scales[i]!='\0'){lcd_wdat(scales[i]);//显示n/dt字符i++;}//////DisableInterrupts;PLL_32M();//PLL倍频PIT_inits();//PIT初始化PAI_inits();PWM_Init(); EnableInterrupts;///////for(;;){PITMTLD0=32-1;//8位定时器初值设定,32分频,在32MHzBusClock下,为1MHz。即1usPITLD0=65535;//设置定时宽度delay(10);1a=(j-j%100)/100;//j为中断函数里面的值2b=(j%100-j%10)/10;3c=j%10;dis2[0]=a+0x30;//看pdf数字0对应位置为001100001对应00110001dis2[1]=b+0x30;dis2[2]=c+0x30;lcd_pos(0x47);//a显示位置lcd_wdat(dis2[0]);//显示字符alcd_pos(0x48);//b显示位置lcd_wdat(dis2[1]);//显示字符blcd_pos(0x49);//c显示位置lcd_wdat(dis2[2]);//显示字符cwhile(PACNT==0)//用小灯切换的速度为中断信号{PORTK_PK3=0;//单位时间越短,小灯切换速度越快PORTK_PK7=1;delay(10);}PORTK_PK3=1;PORTK_PK7=0;}}/*************************************************************//*中断函数*//*************************************************************/#pragmaCODE_SEG__NEAR_SEGNON_BANKEDvoidinterrupt66PIT0(void)//1ms{i1++;//中断执行程序j=encoder_cnt=PACNT;//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度长途客车运输安全保证合同
- 外墙更换施工方案范本
- 隧洞导流施工方案
- 桩基溶洞处理专项施工方案
- 三维植被网施工方案
- XX劳动合同范本(2024版)
- 二零二五年度物流车辆清洁消毒服务合同4篇
- 人工智能在服务行业中的应用前景-深度研究
- 智能化信号系统应用-深度研究
- 施工方案的审批程序
- 《社会工作实务》全册配套完整课件3
- 单位违反会风会书检讨书
- 2024年4月自考00832英语词汇学试题
- 《电力用直流电源系统蓄电池组远程充放电技术规范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化运维服务信息化运维方案
- 汽车修理厂员工守则
- 公安交通管理行政处罚决定书式样
- 10.《运动技能学习与控制》李强
- 冀教版数学七年级下册综合训练100题含答案
- 1神经外科分级护理制度
评论
0/150
提交评论