实验报告1.0(3)

2019-03-15 22:39

void lcd_string(unsigned char row,unsigned char col,char *data1) //row为写入数据所在的行数,col为写入数据所在的列数,*data1为写入的数据 {

for(;row<4&&(*data1)!=0;row++) {

for(;col<8&&(*data1)!=0;col++) {

write_command(adress_table[row*8+col]); delay20us(4); //延时80us

write_Data(*data1++);

delay20us(4); //延时80us write_Data(*data1++);

delay20us(4); //延时80us }

col=0; } }

五、实验流程图

六、总结

1、学习LCD点阵字符原理,LCD集成化,能带字库为编程大大简化,利

于在电脑编程,对字符显示分块在读懂后进行修改设计,对行列循环进行交换,实现三字经的显示,对于按键中断和翻页功能,继承其功能并对于三字经的简化特点,利用计数变量实现对字符翻动的实现避免了大段的枚举。

2、从实验中感悟到查芯片资料,解决问题的思想方法,面对不同问题,

改动程序反复观察结果,反推思考代码。

实验四 电子节气门半实物仿真

一、 实验目的

以节气门为例,学习并掌握利用单片机进行半实物仿真的原理与方法。

二、 实验内容

3、主板的P0/P1接驱动板IN1/IN2 4、上层板的VR M0接主板的AD2 5、节气门的4接主板的AD3 6、节气门的2接主板VCC 7、节气门的6接主板GND

8、节气门的电机线3/5接驱动板OUT1/2

三、 实验原理图

控制框图

四、 实验所用源程序

#include /* common defines and macros */ #include \ /* derivative-specific definitions */ #include #include #include #include \ #define BUS_CLOCK 32000000 //总线频率,改变总线频率直接在此处修改 #define OSC_CLOCK 16000000

//晶振频率

#define LEDCPU PORTK_PK4 #define LEDCPU_dir DDRK_DDRK4 #define DEGREE_MAX 225 #define DEGREE_MIN 16 unsigned char AD_in2,AD_in3;

char AD2Disp[20],AD3Disp[20],Degreestr[20]; //xiebin add #define LED PORTB #define LED_dir DDRB

/*************************************************************/ /* 初始化锁相环 */ /*************************************************************/ /************************************************************/ /* 初始化ECT模块 */ /************************************************************/ /*************************************************************/ /* 延时函数1 */ /*************************************************************/ /*************************************************************/ /* 初始化AD模块 */ /*************************************************************/ /*************************************************************/ /* 起动AD转换 */ /*************************************************************/ /************************************************************/

/* 在液晶上显示AD转换计算量 /************************************************************/ void ADtoDegree(unsigned char ADd, char *dispAD) {

float ttt; //ttt=100 ;

ttt=(100-((ADd-18)*100/207));//yi改正 sprintf(dispAD,\实际开度%%.1f\}

*/ /*************************************************************/ /* 主函数 */ /*************************************************************/ void main(void) { DisableInterrupts; INIT_PLL(); initialize_ect(); INIT_PORT(); INIT_AD(); LEDCPU_dir=1; //xiebin add

LED_dir=0xff; //设置为输出 LED=0xff; //灭8个灯 EnableInterrupts; delay1ms(1000); for(;;) {

AD_in2= AD_capture(2); AD_in3= AD_capture(3); //

sprintf(AD2Disp,\目标AD为%d\ sprintf(AD3Disp,\节气门AD为%d\ ADtoDegree(AD_in3,Degreestr) if(fabs(AD_in3 - AD_in2)>3){ lcd_clear();

lcd_string(0,0,AD2Disp); lcd_string(1,0,AD3Disp); lcd_string(2,0,Degreestr); LEDCPU = 0; } else

LEDCPU = 1; } }

void main(void) {

unsigned char iflag,iDegree; unsigned char temp1,diffNew,diffOld; unsigned char KD,KP;

AD_in3_old=0; iDegree=1; KP=5;

KD=4; diffOld=0;

CLK_Init(); IO_Init();

initialize_ect(); INIT_PORT(); INIT_AD();

//P0--PWM0--IN1 //P1--PWM1--IN2 PWM_01Init(); for(;;) {

AD_in2= AD_capture(2);//目标

AD_in3= AD_capture(3);//节气门,原始230左右 iflag=0;

if((AD_in3 - AD_in2)>2){ //正转, diffNew=AD_in3 - AD_in2;

temp1 = diffNew/KP + (diffNew-diffOld)/KD; if(temp1>20) temp1=20; PWMDTY0=25+temp1; PWMDTY1=0; //mydelay(50); iflag=1; }

else if((AD_in2 - AD_in3)>2){ //反转,关闭节气门 diffNew=AD_in2 - AD_in3;

temp1 = diffNew/KP + (diffNew-diffOld)/KD; if(temp1>20) temp1=20;

PWMDTY0=0;PWMDTY1=33; mydelay(50); PWMDTY0=25+temp1; PWMDTY1=0; //mydelay(50); iflag=2; }


实验报告1.0(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:毕业论文-唐良梅(定稿)2012.11.25

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: