车辆嵌入式实验报告

上传人:lis****211 文档编号:147538242 上传时间:2022-09-02 格式:DOCX 页数:15 大小:422.70KB
收藏 版权申诉 举报 下载
车辆嵌入式实验报告_第1页
第1页 / 共15页
车辆嵌入式实验报告_第2页
第2页 / 共15页
车辆嵌入式实验报告_第3页
第3页 / 共15页
资源描述:

《车辆嵌入式实验报告》由会员分享,可在线阅读,更多相关《车辆嵌入式实验报告(15页珍藏版)》请在装配图网上搜索。

1、实验一串口通讯实验一、实验目的了解MC9SXS128单片机串行通讯模块、AD模块、PWM模块原理,并掌握使用。二、实验内容利用单片机自带的两个串行通讯口 SCI0和SCI1,采集电位计电压值,SCI0 串口查询发送AD采集值至SCI1,SCI1读取数据,通过PWM模块实现LED灯亮度 无极调节。三、实验原理图四、实验源程序#include #include #include derivative.h32000000总线频率16000000晶振频率波特率#define BUS_CLOCK#define OSC_CLOCK#define BAUD 9600主控板上LED灯#define LEDCP

2、U PORTK_PK4#define LEDCPU_dir DDRK_DDRK4#define LED_ON 0#define LED OFF 1 unsigned char AD;unsigned char data_receive; _unsigned int a=0;/串口接收指示灯函数初始化void INIT_AD(void);unsigned char AD_capture(void);void INIT_PLL(void);/初始化锁相环void init_pwm(void) ;/初始化 PWMvoid INIT_SCI(void); /初始化串口、void SCI0_send(u

3、nsigned char data);/ 串口发送程序 unsigned char SCI1_receive(void);/串口 接收函数串口中断接收函数#pragma CODE_SEG _NEAR_SEG NON_BANKED 中断函数置于非分页区内 void interrupt 21 receivedata(void)a + + ;data_receive= SCI1_receive();PWMDTY0=data_receive;if(a = = 1000)a=0;LEDCPU = LEDCPU;#pragma CODE_SEG DEFAULT 后续代码置于默认区域内void main(v

4、oid)LEDCPU_dir=1; /定义为输出LEDCPU = LED_ON;DisableInterrupts;INIT_PLL();INIT_AD();init_pwm();INIT_SCI();EnableInterrupts;while(1)AD=AD_capture();SCI0_send(AD);unsigned char SCI1_receive(void) if(!SCI1SR1_RDRF);等待发送数据寄存器满接收数据寄存器空标志位return(SCI1DRL);void INIT_SCI(void)SCI0BD = BUS_CLOCK/16/BAUD; 设置 SCI0 波

5、特率为 9600SCI0CR1 = 0x00;设置SCI0为正常模式,八位数据位,无奇偶校验/10位数据异步传输,1位起始位,一位停止位,8位数据位SCI0CR2 = 0x2c;允许接收和发送数据,允许接收中断功能SCI1BD = BUS_CLOCK/16/BAUD; 设置 SCI1 波特率为 9600SCI1CR1 = 0x00;设置SCI1为正常模式,八位数据位,无奇偶校验10位数据异步传输,1位起始位,一位停止位,8位数据位SCI1CR2 = 0x2c;允许接收和发送数据,允许接收中断功能void INIT_PLL(void)CLKSEL &= 0x7f;PLLCTL &= 0x8F;C

6、RGINT &= 0xDF;SYNR = 0x43;REFDV = 0x81;64MHz ,fbus=32MPLLCTL =PLLCTL|0x70;asm NOP;asm NOP;/set OSCCLK as sysclk/Disable PLL circuit/PLLCLK=2xOSCCLKx(SYNR+1)/(REFDV+1)二/Enable PLL circuitwhile(!(CRGFLG&0x08); /PLLCLK is Locked already CLKSEL |= 0x80; /set PLLCLK as sysclkvoid INIT_AD(void)ATD0CTL2 =

7、0x40; 启动A/D模块,快速清零,禁止中断ATD0CTL1_SRES=0; 选用8位模数转换ATD0CTL3 = 0x88;每次只转换一个通道ATD0CTL4 = 0x07; /AD 模块时钟频率为 2MHzunsigned char AD_capture(void)unsigned char AD_data;ATD0CTL5 = 0x08;转换 AD08while(!ATD0STAT0_SCF);AD_data = ATD0DR0L;return(AD_data);void init_pwm(void)PWMPOL_PPOL0= 1;PWMPRCLK = 0x22;PWMSCLA=0x0

8、4;PWMSCLB=0x04;PWMCLK = 0xFf;PWMCAE = 0x00;PWMPER0 = 255;PWMDTY0 = 0;PWME_PWME0=1;通道的极性为高电平有效/A时钟和B时钟的分频系数为4,频率为8MHz/SA时钟频率为1MHz/SB时钟频率为1MHz/0,1,2,3 用 SA 时钟;4,5,6,7 用 SB 时钟脉冲模式为左对齐模式通道0的周期为3.9KHz通道0的占空比设置使能PWM信号void SCI0_send(unsigned char data)while(!SCI0SR1_TDRE);等待发送数据寄存器(缓冲器)为空发送数据寄存器空标志位SCI0DRL

9、 = data;五、实验流程图六、实验总结串口 SCI0查询发送方式为死循环方式,未调节发送间隔时间,如果采用硬 件PIT定时中断发送或软件延时发送,则可调节发送间隔时间,效果更佳。实验二 液晶画点显示电压波形实验一、实验目的了解并掌握12864液晶屏、OLED屏显示原理,及MC9SXS128 PIT模块、AD模 块使用及中断编写方式。二、实验内容通过AD模块采集电位计电压值,实现12864液晶及OLED屏显示电压波形曲 线。三、实验原理图-劳4承=1_尽-vccPM2PJ6PJ7PAOPAIPA2PA3PA4PASPA6PATPM3PE 3vccGND四、实验源程序1、12864液晶屏关键程

10、序unsigned char gdram3232 unsigned char dianzhen128 请空GDRAMvoid clear_gdram(void)unsigned char x,y;for(y=0;y32;y+)for(x=0;x127|y63)return;vy=x/8;by=x%8;if(y=31)vx=31-y;vy=vy+16;elsevx=63-y;temp=1(7-by);gdramvxvy|=temp;更新GDRAM内容void lcd_refresh(void)unsigned char x,y;for(y=0;y32;y+)for(x=0;x16;x+)writ

11、e_command(0x34);/ 关闭绘图模式 write_command(y+0x80); /行地址 write_command(x+0x80); /列地址 write_command(0x30);write_Data(gdramy2*x);write_Data(gdramyj2*x+1);中断程序#pragma CODE_SEG _NEAR_SEG NON_BANKED void interrupt 66 pit0(void)if(PITTF_PTF0 = 1)PITTF_PTF0 = 1;/清除标志位ad=AD_capture();y=ad/4;if(x128)draw_point(x

12、,y);dianzhenx=y;x+;elseclear_gdram();for(i=0;i127;i+)dianzheni=dianzheni + 1;draw_point(i,dianzheni);dianzhen127=y;draw_point(127,y);lcd_refresh();graph();LEDCPU = LEDCPU;#pragma CODE_SEG DEFAULT2、OLED屏关键程序unsigned char gram1288;更新GRAM内容void Refresh_Gram(void)unsigned char i,n;for(i=0;i8;i + +)OLED_

13、WrCmd(0xb0+i);OLED_WrCmd(0x00);OLED_WrCmd(0x10);for(n=0;n127|y63)return;pos=7-y/8;bx=y%8;temp=1(7-bx);gramxpos|=temp;清空GRAMvoid Clear(void)unsigned char i,n;for(i=0;i8;i+)for(n=0;n128;n+)gramni=0X00;Refresh_Gram();中断程序#pragma CODE_SEG _NEAR_SEG NON_BANKED void interrupt 66 pit0(void)if(PITTF_PTF0 =

14、1)PITTF_PTF0 = 1;/清除标志位ad=AD_capture();y=ad/4;if(x128)Draw_Point(x,y);x+;elsefor(j=0;j8;j + +)for(i=0;i127;i+)gramij=grami + 1j;for(i=0;i8;i +)gram127i=0x00;Draw_Point(127,y);Refresh_Gram();#pragma CODE_SEG DEFAULT五、实验流程图1、12864液晶屏程序流程图2、OLED屏程序流程图六、实验效果1、12864液晶屏实验效果2、OLED屏实验效果七、实验总结12864液晶屏在画图模式中,

15、更改GDRAM数据时,需要关闭画图模式而关闭 12864液晶屏显示,在完成数据更改后再次显示,因屏幕自身性能限制,关闭显 示和再次开启过程的时间较长,所以ad采样率较低,曲线的连续性较差;而OLED 屏则克服了这一缺陷,采样率在较高情况下也可完整显示,曲线的连续性较好。实验三 闭环控制节气门开度实验一、实验目的了解并掌握增量式PID算法,MC9SXS128 AD模块、PWM模块、PIT模块原理 及使用。二、实验内容采集转把AD值和节气门AD值,通过增量式PID算法,输出PWM方波驱动节 气门直流电机,调节节气门转动角度,使其随转把转动角度变化而变化。三、实验原理图节气门AD果集电路转把AD采集

16、电路四、实验源程序/* common defines and macros */* derivative-specific definitions */#include #include derivative.h#include OLED.h#define BUS_CLOCK#define OSC_CLOCKunsigned char ad,ad04;int chazhi_old,chazhi=0;int sum,inc=0;float kp=0.025;float ki=0.00002;int out=0;32000000总线频率16000000晶振频率void INIT_AD(void)A

17、TD0CTL2 = 0x40;ATD0CTL1_SRES=0;ATD0CTL3 = 0x88;ATD0CTL4 = 0x07;/启动A/D模块,快速清零,禁止中断选用8位模数转换每次只转换一个通道/AD模块时钟频率为2MHzunsigned char AD_capture(void)unsigned char AD_data;ATD0CTL5 = 0x03;转换 AD03while(!ATD0STAT0_SCF);AD_data = ATD0DR0L;return(AD_data);unsigned char AD_capture_04(void)/摇杆unsigned char AD_dat

18、a;ATD0CTL5 = 0x04;转换 AD04while(!ATD0STAT0_SCF);AD_data = ATD0DR0L;return(AD_data);void init_PIT(void)PITMTLD0=255; 为0通道8位计数器赋值PITLD0=400;为0通道16位计数器赋值 /(31+1)*(99+1)=16000000个总线周期=100usPITMUX_PMUX0=0;第0通道使用微计数器0PITCE_PCE0=1;第0通道计数器工作PITCFLMT=0X80;使能周期中断定时器PITINTE_PINTE0=1; /0通道定时器定时中断被使能void INIT_PLL

19、(void)CLKSEL &= 0x7f;/set OSCCLK as sysclkPLLCTL &= 0x8F;/Disable PLL circuitCRGINT &= 0xDF;SYNR = 0x43;REFDV = 0x81;/PLLCLK=2xOSCCLKx(SYNDIV+1)/(REFDIV+1)二64MHz ,fbus=32MPLLCTL =PLLCTL|0x70; /Enable PLL circuitasm NOP;asm NOP;while(!(CRGFLG&0x08); /PLLCLK is Locked alreadyCLKSEL |= 0x80; /set PLLCL

20、K as sysclkvoid init_pwm(void)PWMPOL_PPOL0= 1;通道的极性为高电平有效PWMPOL_PPOL1= 1;通道的极性为高电平有效PWMPRCLK = 0x22;/A时钟和B时钟的分频系数为4,频率为8MHzPWMSCLA=0x04;/SA 时钟频率为 1MHzPWMSCLA=0x04;/SB 时钟频率为 1MHzPWMCLK = 0x03;/0 和 1 用 SA 时钟PWMCAE = 0x00;脉冲模式为左对齐模式PWMPER0 = 255;通道 0 的周期为 10KHzPWMPER1 = 255;通道 1 的周期为 10KHzPWMDTY0 = 0;通

21、道0的占空比设置PWMDTY1 = 0;通道1的占空比设置PWME_PWME0=1;PWME_PWME1=1;#pragma CODE_SEG _NEAR_SEG NON_BANKED void interrupt 66 pit0(void)if(PITTF_PTF0 = 1)PITTF_PTF0 = 1;清除标志位ad04=AD_capture_04();ad=AD_capture();chazhi_old=chazhi;chazhi=ad04-(255-ad);sum=sum+chazhi;out=out+(int)(kp*chazhi+ki*sum);if(out255)out=255;else if(out0)out=0;PWMDTY01=out;#pragma CODE_SEG DEFAULT void main(void)DisableInterrupts;init_pwm();INIT_PLL();INIT_AD();init_PIT();OLED_Init();EnableInterrupts;for(;)五、实验流程图六、实验总结本次实验没有采用老师所给程序,而是采用增量式PI控制,通过不断设置 比例和积分参数以到达理想实验结果,虽然最终节气门转动角度稳定在理想位置, 但是其在稳定前的超调量与稳定时间均比较大,系统的快速响应性不是很理想。课程总结

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!