1

关于投票
LCD常用画图子程序(点,线,图,字符库)
//------------------------------------------------------------
//显示字符
//------------------------------------------------------------
void display_char(uint x_point,uint y_point,uchar asic_num)
{
uint i;
i=(x_point/8)+y_point*PARA;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
LCD_W_DATA=asic_num;
}
//
// 画位图函数
//
// 输入: xstart 横轴起始坐标
// ystart 纵轴起始坐标
// width 位图宽度(占多少个字节的宽度)
// hight 位图高度(以象素为单位的)
// pbmp 位图数据头指针
//在屏上画一个矩形图片
//

void DrawBitmap( uint xstart, uint ystart,uint width,uint hight, uchar const *pbmp)
{
uint i; //数据开始的内存单元
uint a; //送的行数据个数
uint b; //送的列数据
uchar temp2;
uint temp0;
uint temp1;
a="width/8";
LCD_W_CMD=0x4c; // CSRDIR 代码
//清除矩形框内的数据----------------------------
temp1=ystart;
for(b=0;b<hight;b++)
{
i=(xstart/8)+temp1*PARA+page2;
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(temp0=a;temp0>0;temp0--)
{
LCD_W_DATA = 0x00;
};
temp1++;
};
//----------------------------------------------
temp1=ystart;
for(b=0;b<hight;b++)
{
i=(xstart/8)+temp1*PARA+page2;
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(temp0=0;temp0<a;temp0++)
{
temp2=*pbmp;
LCD_W_DATA =temp2;
pbmp++;
}
temp1++;
};
}
void W_DOT(uint O_X,uchar O_Y)//(0~319)*(0~239) 画点
{
uchar a,b,c,d;
uint x,y;
y=O_Y*PARA;
c=O_X/8;
a=O_X%8;
b=0x80;
b>>=a;
// b^=0xff;
x=page2;
x=x+y+c;
a=x;
c=x>>8;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=a;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=c;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x43; // mread代码
d="LCD"_R_DATA;
d|=b;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=a;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=c;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
LCD_W_DATA=d;
}

void W_horizontal_line(uchar O_Y)//0~239 画水平线
{
uchar a;
uint i;
i=O_Y*PARA;
i+=page2;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(a=40;a!=0;a--) LCD_W_DATA=0xff;
}

void W_vertical_line(uint O_X)//0~319 画垂直线
{
uchar a,b;
uint i;
i=page2;
a=O_X/8;
b=O_X%8;
i+=a;
a=0x80;
a>>=b;
// a^=0xff;
LCD_W_CMD=0x4f; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(b=0x00;b<240;b++)
{
LCD_W_DATA=a;
};
}



系统分类: 单片机
用户分类: 我的创作
标签: 无标签
来源: 原创
发表评论 阅读全文(1052) | 回复(1)

1

关于投票
LCD1335指令集320*240初始化程序
void initializationLCD320_240(void)
{
uint a;
a=0x80;
LCD_Bright=a;
printf("LCD_Bright= %d \n",a);
// 1 SYSTEM SET 40h 8 parameter : initialize LCM
LCD_W_CMD=0x40; //SYSTEMSET 40H 指令代码 SED1335MPU SED1335 该指令是 软件初始化指令在操作及其控制的液晶显示模必须首先要写入这条指令
LCD_W_DATA=0x30; // parameter p1
LCD_W_DATA=0x87; //p2
LCD_W_DATA=0x07; //p3
LCD_W_DATA=0x27; //p4
LCD_W_DATA=0x44; //p5
LCD_W_DATA=0xef; //p6
LCD_W_DATA=0x28; //p7
LCD_W_DATA=0x00; //p8
//-------------------------------------------------------------------------------------
LCD_W_CMD=0x44;// 44H sCROLL指令代码
LCD_W_DATA=0x00;
LCD_W_DATA=0x00;//显示区的首地址page1
LCD_W_DATA=0xf0;//240 行-----
LCD_W_DATA=0x80;
LCD_W_DATA=0x25;//第二显示区是从0x2580地址开始的。
LCD_W_DATA=0xf0;//240 行-----
LCD_W_DATA=0x00; // 0000 0000 SAD3L: 0x00
LCD_W_DATA=0x4b; // 1000 0000 SAD3H: 0x4b
LCD_W_DATA=0x80; // 0000 0000 SAD4L: 0x80
LCD_W_DATA=0x70 ; // 0101 0000 SAD4H: 0x70
//------------------------------------------------------------------------
LCD_W_CMD=0x5a; /* HDOT SCR 代码 */
LCD_W_DATA=0x00; /* 设置参数P1 */
//-----------------------------------------------------------------------
LCD_W_CMD=0x5b; //设置合成逻辑
LCD_W_DATA=0x01;
LCD_W_CMD=0x59;//开显示
LCD_W_DATA=0x56; /* 设置参数:显示一~四区开显示 */
//------------------------------------------------------------------------
LCD_W_CMD=0x5d; //设置光标参数
LCD_W_DATA=0x07;
LCD_W_DATA=0x01;
//----------------------------------------------------------------------
CLEAR(); /* 调清屏子程序 */
//----------------------------------------------------------------------
//------------------------------------------------------------------------
LCD_W_CMD=0x4c; //设置光标移动方向
//-------------------------------------------------------------------------
LCD_W_CMD=0x46; //设置光标的位置page3的地址。。
LCD_W_DATA=0x00;
LCD_W_DATA=0x4b;
//------------------------------------------------
LCD_W_CMD=0x42;
for(a=9600;a!=0;a--) LCD_W_DATA=0xFF;
//------------------------------------------------------
LCD_W_CMD=0x46; //设置光标的位置page2的地址
LCD_W_DATA=0x80;
LCD_W_DATA=0x25;
//------------------------------------------------
LCD_W_CMD=0x42;
for(a=9600;a!=0;a--) LCD_W_DATA=0x00;
//------------------------------------------------------
LCD_W_CMD=0x46; //设置光标的位置
LCD_W_DATA=0x80;
LCD_W_DATA=0x70;
//------------------------------------------------
LCD_W_CMD=0x42;
for(a=9600;a!=0;a--) LCD_W_DATA=0xff;
//------------------------------------------------------------------------
LCD_W_CMD=0x46; //设置光标的位置
LCD_W_DATA=0x00;
LCD_W_DATA=0x00;
LCD_W_CMD=0x42;
for(a=9600;a!=0;a--) LCD_W_DATA=0x20;
LCD_W_CMD=0x46; //设置光标的位置
LCD_W_DATA=0x00;
LCD_W_DATA=0x00;
// 初始化到此完成---------------------------------------------------------

系统分类: 单片机
用户分类: 我的创作
标签: 无标签
来源: 原创
发表评论 阅读全文(717) | 回复(0)

1

关于投票
状态变量(SV)滤波器的BODE和调试

点击看大图

上面给出的SV滤波器的电路原理图,以及参数,在上述参数下通过列方程求出传递函数;然后给出波特图。

调节R5或R6可以改变截止频率,同时可以通过调节R1,R2的比值来调节滤波器的Q值。

matlab 绘图程序如下:R1=2.4*10^3
R2=2.2*10^3
R3=2.2*10^3
R4=2.4*10^3
R5=20*10^3
R6=R5
C1=82*10