当前位置:文档之家› 电子电路设计实验报告

电子电路设计实验报告

电子电路设计实验报告
电子电路设计实验报告

电子线路专题实验Ⅱ

一、实验要求:

1. 认真阅读学习系统线路及相关资料

2. 将键盘阵列定义为0. 1. 2------ E. F,编程实现将键盘输入内容显示在LCD显示器上。

3. 编程实现将日历、时钟显示在LED显示屏上(注意仔细阅读PCF8563资料),日历、时钟轮回显示。

4. 利用D/A转换通道(下行通道)实现锯齿波发生器;输出(1~5V)固定电压转换成(4~20mA)电流。

5. 利用A/D转换通道(上行通道)实现数据采集,将采集信号显示在LED屏上。程序要求分别具有平均值滤波、中值滤波和滑动滤波功能。

6. 将按键阵列定义成与16个语音段对应,编写程序,实现按键播放不同的语音段。

二、实验设计思路:

本次实验用c语言实现,主要包括LCD,LED,AD,DA,日历芯片,测温传感芯片。受到嵌入式系统实验的启发,将LCD,LED,I2C总线协议,键盘扫描模块接口写成一个文件库(放在library文件夹下),尽量做到调用时与底层硬件无关。通过调用库文件中的函数,实现代码的重用性。键盘,LCD的代码由于与嵌入式实验具有相通之处,因此可将高层的函数(与底层硬件无关的函数)方便地移植过来。

三、实验设计:

1.矩阵键盘扫描模块

4×4的矩阵键盘,通过扫描可得到按下键的行列值,将行列值转换为相应的对应数字0~F。函数GetKey()实现获得按键的键值。对于键盘模块对于对按键的键值识别主要是通过两次扫描而取得。对于第一次扫描,给四行键全部赋予1,然后读回键盘值,对于第二次扫描,逐行为键盘送1,每次送1后再读回键盘值,若非零,说明此行有键按下,最终确定键值。

通过调用GetKey函数构造GetChar()函数,实现获取键盘字符(’0’~’F’)的功能。

通过调用GetChar()函数构造GetDec()函数,实现获取键盘输入整数的功能,整数范围在0~99999。有按’C’键回退一格,按’E’清空当前未完输入,按’F’键结束输入的功能。

程序代码:

//键盘初始化,将标志位置1;

void Key_Init(void)

{

bKeyUp_Flag=1;//标志(全局变量)位置1

}

//键盘扫描函数,得到键的行列位置;

unsigned char GetScanKey(void)

{

unsigned char key, i, temp;

unsigned char xdata * ptr;

key=0xff;

for (i=1; i<0x10; i<<=1) //i的低4位为行数位,行依次检测循环4次{

ptr=0x8fff;

* ptr =i;

temp = * ptr; //取键盘IO口的值

temp &= 0x0f; //屏蔽高四位

if (temp!=0x00) //是否有有效键值

{

key = i<<4; //取行数位的值并将其放入返回值高4位

key|=temp; //列数位的值放入返回值低4位

break;

}

}

return key; //返回行位(高四)和列位(低四)

}

//取键值,长按无效

unsigned char GetKey(void)

{

unsigned char key, temp;

if (!bKeyUp_Flag) //判断标志,是0执行

/***按键程序执行一次后会将bKeyUp_Flag标志位清零,执行此段程序,长按键无效返回无效值,直至按键无效返回无效按键值,

置"1"标志位。按键输入恢复有效。屏蔽这部分则长按键有效***/

{

key=GetScanKey();

if (key==0xff) //没有按键,置标志位

bKeyUp_Flag=1;

else //保持按键

return 0xff; //因为0xff大于15,故为无效键值,实现长按键无效}

key=GetScanKey();

if (key==0xff) //没有按键

return key;

else //有按键有效

temp=key; //取键值

Delay_ms(20); //延时20ms 消抖

key=GetScanKey(); //键盘扫描

if(key!=temp) //判断两次键值是否相同,排除干扰信号影响确认有效信号

{

key=0xff;

return key;

}

else //取键值

{

/*这部分主要作用是软件抗干扰*/

temp=Key_Value_Table[key>>4]; //见说明

/*行值有效位(键盘的4个行SEL返回的值含有的有效位"1")有且只有一位键值才有效否则返回无效键值*/

if (temp==0xff)

{

key=0xff;

return key;

}

temp=Key_Value_Table[key&0x0f];

/*列值有效位(键盘的4个列RL返回的值含有的有效位"1")有且只有一位键值才有效否则返回无效键值*/

if (temp==0xff)

{

key=0xff;

return key;

}

key=Key_Value_Table[key>>4]*4+Key_Value_Table[key&0x0f];//行对应的中间值的四倍与列对应的中间值之和即为按键编号0~15

/*行列组合后的值大于15无效*/

if (key>15)

{

key=0xff;

return key;

}

bKeyUp_Flag=0;

return key;

}

}

//获得键盘输入字符

int GetChar(void)

{

unsigned char key=0xff;

while(key==0xff)key=GetKey();/* wait input fix */

return ((int)key_arrenge[key]);

/* change to ASCII code and return */

}

//获得键盘输入整数

long GetDec(void)

{

long out_dec = 0; /* result(decimal number) 数值范围0~99999 */

unsigned char i,j; /* variable for character count */

int temp = 0;

int key;

for(i = 0;i<6 ; )

{

key =GetChar(); /* 获取键值’0’-’9’*/

if((key<='9')&&(key >= '0'))

{

temp = key - '0'; /* 获取数值0-9 */

out_dec = out_dec * 10 + (long)temp;

if(out_dec == 0)

{

continue; /* 首位数据输入为0时,显示不变*/

}

i++;

LCD__putchar(key); /* 显示当前输入的数据*/

continue;

}

if('E'== key) /* 当前输入清零*/

{

out_dec = 0;

back_cursol(i); /* 清显示区*/

for(j=0;j

LCD__putchar(' ');

back_cursol(i); /* 清显示区*/

continue;

}

if('F' == key) /* ENTER键,数值确认*/

{

return out_dec;

}

if('C' == key) /* 撤销最近一个输入数字*/

{

out_dec = out_dec / 10;

back_cursol(1);

LCD__putchar(' ');

back_cursol(1);

continue;

}

}

}

2. LED模块

通过送字形码和字位码可以点亮对应的一个8段LED。8个LED的同时显示通过循环扫描显示实现,即每次在一个LED上显示设定的数字,延时显示一段时间(延时越长,亮度越好),然后切换显示下一个,依次轮换。

程序代码:

unsigned char Led_table[16]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

};

void Delay_us1(int t)

{

while(t-->=0);

}

//函数功能描述:给显示数组赋初始值;

void Led_Init(unsigned char *show)

{

unsigned char i;

for (i=0;i<8;i++)

{

//在此处给显示数组赋值

*show= 0x00;

show++;

}

}

//函数功能描述:在LED上显示;

void display(unsigned char *show)

{

unsigned char i=1,j;

unsigned char xdata *ptr;

for (j=0; j<8; j++)//八个数码管全部显示

{

ptr=0x8fff;//段选地址

*ptr=i;

ptr=0x9fff;//位选地址

//在此给*ptr赋值送字形码

*ptr=Led_table[show[j]];

Delay_us1(30);

*ptr=0x00;

i<<=1;//下一位

}

}

//数字转led字形码

unsigned char asc2led(unsigned char a)

{

return *(Led_table+a);

}

3. LCD显示模块

设计思路:

LCD的显示通过给LCD写命令和数据实现。写数据与写指令时各控制引脚的电平不同,对应了不同的地址。先构造写数据和写命令函数(与硬件相关操作),已经检测LCD是否忙的函数(当处于忙状态时不能写数据,否则硬件会工作不正常),在此接口的基础上构造库(与硬件无关操作,通过调用写数据和写命令函数实现),实现各种不同的功能,包括初始化设定工作方式,显示字符,显示字符串,显示数字(0~99999),清屏,设定光标的位置等。这里的显示字符,显示整数和键盘检测模块的读入字符,读入整数对应起来,可以合作使用。

使用时先调用初始化函数初始化LCD,设定工作方式,然后可以调用不同的函数实现不同的显示。

程序代码:

/*===== define variable =====*/

unsigned char cursol_x; /* cursor position (horizontal) */ unsigned char cursol_y; /* cursor positon (vertical)

*/

unsigned char xdata *ptr;//指向XDATA的指针(访问片外地址)

unsigned char code ASC2_Value_Table[16]=

{0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,

0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};

//===========向1602指令寄存器写指令=============

void WriteW(unsigned char a)

{

ptr=0xAFF0; //RS=0,R/W=0

*ptr=a;

}

//==============向1602指令寄存器写指数据============

void WriteD(unsigned char key_asc2)

{

CheckBF();

ptr=0xAF02;

*ptr=key_asc2;

}

//===========检查忙标志位BF=============

void CheckBF(void)

{

unsigned int i;

while(1)

{

ptr=0xAFF1;//RS=0,R/W=1

i=*ptr;

i&= 0x80;

if(i==0)

break;

}

}

//==========LCD初始化==========

void LCD_Init(void)

{

CheckBF();

WriteW(0x38);

CheckBF();

WriteW(0x01);//Clear display 清显示

CheckBF();

WriteW(0x06);//Entry mode set:I/D=1,S=0 [I:Increase,D:Decline,S:Shift]

CheckBF();

WriteW(0x0F);//Dislpay on/off control D=1,C=1,B=1[D:Display,C:Cursor,B:Blink] CheckBF();

WriteW(0x80);//Dislpay on/off control D=0,C=0,B=0[D:Display,C:Cursor,B:Blink] }

//======设定光标所在位置==========

void L CD__setcursol(unsigned char x, unsigned char y)

{

cursol_x = x; /* cursor position (horizontal) */

cursol_y = y; /* cursor positon (vertical) */

CheckBF(); /* wait LCD process */

WriteW(0x80 | y*0x40 + x); /* address of the second line 0x40-0x4f */

}

//======后移光标=======

void m ove_cursol(void)

{

if(++cursol_x > 0x0f)

{ /* move cursor to right, if get to end of the line */

cursol_x = 0; /* move to begin of the line */

if(++cursol_y >= 2)

{ /* return, if over the second line */ cursol_y = 0; /* return to begin of the line */ }

LCD__setcursol(cursol_x, cursol_y); /* set cursor */ }

}

//======前移光标=======

void b ack_cursol(int i)

{

cursol_x -= i;

LCD__setcursol(cursol_x, cursol_y); /* set cursor */

}

//======清屏=======

void LCD__clear(void)

{

CheckBF(); /* wait LCD process */

WriteW(0x01); /* clear display */

}

//=======写字符==========

void L CD__putchar(int c)

{

if((c == '\n')||(c == '\r')) /* line feed code */

{

cursol_x = 0;

cursol_y ^= 1;

LCD__setcursol(cursol_x, cursol_y); /* set cursor */ }

CheckBF(); /* wait LCD process */

WriteD(c); /* write Data-Register */

CheckBF(); /* wait LCD process */

move_cursol(); /* move cursor position */ }

//=========写字符串========

void L CD__puts(const unsigned char *s)

{

for(; '\0' != *s; s++)

{ /* loop before null code */ LCD__putchar(*s); /* display character on LCD

*/

}

}

//=========写整数=======

void L CD__putdec(long dec) /* 可打印的数据小于99999 */

{

long num ; /* number to be displayed */

int i; /* loop counter */

unsigned char str_buf[5]; /* buffer for data display */ num = dec; /* save number to be displayed */

for(i = 0 ;num != 0; i++)

{ /* confirm digit */ str_buf[i] = num % 10; /* get every digit number and save in buffer*/

num = num / 10;

}

if(i == 0)

{ /* if number is 0 */

LCD__putchar('0'); /* display '0' in LCD */ }

else

{ /* if number is not 0

*/

for(--i; i >= 0; i--)

{ /* loop times of digits

*/

LCD__putchar(str_buf[i] + '0'); /* after transfered into ASCII code */

} /* display in LCD */ }

}

//十六进制码转换为ascii码

unsigned char Key_ASC2(unsigned char key)

{

unsigned char key_asc2;

key_asc2=ASC2_Value_Table[key];

return key_asc2;

}

4.I2C总线协议

I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。I2C 总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

协议代码:

sbit SCL=P1^0;

sbit SDA=P1^1;

//***************************************

//*功能:启动I2C总线

//****************************************

void i2c_start()

{

SDA=1;

SCL=1;

_nop_();

_nop_();

SDA=0;

_nop_();

_nop_();

SCL=0;

}

//******************************************************************* ******

//*功能:停止I2C总线

//******************************************************************* *******

void i2c_stop()

{

SDA=0;

SCL=0;

_nop_();

_nop_();

SCL=1;

_nop_();

_nop_();

SDA=1;

}

//************************************************* //*功能:应答I2C总线

//************************************************* bit i2c_rec_ack()

{

bit ack_flag;

SDA=1;

_nop_();

_nop_();

SCL=1;

_nop_();

_nop_();

if(SDA==0)

{

ack_flag=1;

}

else

{

ack_flag=0;

}

SCL=0;

return ack_flag;

}

void i2c_send_ack(void)

{

SDA=0;

_nop_();

_nop_();

SCL=1;

_nop_();

_nop_();

SCL=0;

_nop_();

_nop_();

SDA=1;

}

//******************************************

//*功能:无应答I2C总线

//******************************************

void i2c_send_noack()

{

SDA=1;

_nop_();

_nop_();

SCL=1;

_nop_();

_nop_();

SCL=0;

}

//************************************************************** //*功能:往I2C总线发送数据

//************************************************************** void i2c_send_byte(unsigned char data_byte)

{

unsigned char i;

for(i=0;i<8;i++)

{

SDA=(bit)(data_byte&0x80);

_nop_();

_nop_();

SCL=1;

_nop_();

_nop_();

SCL=0;

data_byte<<=1;

}

}

//************************************************************* //*功能:从I2C总线接受数据

//*************************************************************** unsigned char i2c_rec_byte()

{

unsigned char i, temp;

temp=0;

for(i=0;i<8;i++)

{

temp<<=1;

SCL=1;

_nop_();

_nop_();

if(SDA==1)

{

temp|=0x01;

}

SCL=0;

}

return(temp);

}

//************************************************

//*功能:往I2C总线上器件指定地址写字节的数据

//************************************************

bit i2c_write_byte(unsigned char sla,unsigned char data_addr,unsigned char data_byte)

{

i2c_start(); // 发送I2C START信号

i2c_send_byte(sla); // 发送器件从地址

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

i2c_send_byte(data_addr); // 发送数据地址

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

i2c_send_byte(data_byte);

if(i2c_rec_ack()==0)

{

return 0;

}

i2c_stop(); // 发送I2C STOP信号

return 1;

}

//**************************************

//*功能:往I2C总线上器件指定地址开始写指定长度的数据

//***************************************

bit i2c_write_nbyte(unsigned char sla,unsigned char data_addr,unsigned char *ptr,unsigned char len)

{

i2c_start(); // 发送I2C START信号

i2c_send_byte(sla); // 发送器件从地址

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

i2c_send_byte(data_addr); // 发送数据地址

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

for(;len>0;len--) // 连续发送LEN长度的字节数据

{

i2c_send_byte(*ptr++);

if(i2c_rec_ack()==0)

{

return 0;

}

}

i2c_stop(); // 发送I2C STOP信号

return 1;

}

//***********************************

//*功能:从I2C总线上器件指定地址接收一个字节的数据

//*************************************

unsigned char i2c_read_byte(unsigned char sla,unsigned char data_addr) {

unsigned int temp;

i2c_start(); // 发送I2C START信号

i2c_send_byte(sla); // 发送从器件写命令

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

i2c_send_byte(data_addr); // 发送数据地址

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

i2c_start(); // 重新发送I2C START信号

i2c_send_byte(sla|0x01); // 发送器件从器读命令

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

temp=i2c_rec_byte();

i2c_send_noack(); // 接收最后一个字节后发送NOACK信号

i2c_stop(); // 发送I2C STOP信号

return temp;

}

//**************************************

//*功能:从I2C总线上器件指定地址接收一个字节的数据

//***************************************

bit i2c_read_nbyte(unsigned char sla,unsigned char data_addr,unsigned char *ptr,unsigned char len)

{

i2c_start(); // 发送I2C START信号

i2c_send_byte(sla); // 发送从器件写命令

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

i2c_send_byte(data_addr); // 发送数据地址

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

i2c_start(); // 重新发送I2C START信号

i2c_send_byte(sla|0x01); // 发送器件从器读命令

if(i2c_rec_ack()==0) // 检测应答信号

{

return 0;

}

for(;len>1;len--) // 连续接收LEN-1长度的字节数据

{

*ptr++=i2c_rec_byte();

i2c_send_ack(); // 发送ACK信号

}

*ptr=i2c_rec_byte(); // 接收最后一个字节

i2c_send_noack(); // 发送NOACK信号

i2c_stop(); // 发送I2C STOP信号

return 1;

}

5. AD模块(SPI总线)

利用TLC1549实现,TLC1549可以将输入的模拟量转换成数字量,并且是10位数字量,然后也是利用SPI总线一位一位的发送,因此需要传两字节的数据,高地址中的低两位有效,低地址中的八位都有效,传送过程结合时序图进行编程。

模块使用的函数是模块驱动程序参考中的函数

sbit SCLK=P1^2;

sbit DIO=P1^3;

sbit ADCS=P1^4;

sbit DACS=P1^5;

void Before_Once_AD(void);//预采集

uint adc_1549(void) ;//读取AD输出的10bit数据

6. DA模块(SPI总线)

利用TLC5615实现的,TLC5615也是利用SPI总线一位一位的传送,并且要求传送的数据是12位,因此需要传两字节的数据,分别放在HIGHD和LOWD中,12位数据是HIGHD中的八位和LOWD中的高四位,但是12为数据中的低两位又是无效的,所以只有10位有效数字。模块使用的函数是模块驱动程序参考中的函数

//函数功能描述:驱动TLC5615开始DA转换

//dat为被转换的数字量

void tlc5615(uint dat) ;

7.日历芯片

PCF8563 是低功耗的CMOS 实时时钟/日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2 C 总线接口串行传递。每次读写数据后,内嵌的字地址寄存器会自动产生增量。按I2C 总线协议规约PCF8563 有唯一的器件地址0A2H。因此,可以由CPU把初始化的日历时钟通过总线接口串行传递写入PCF8563,由PCF8563以此为起点自动计时,再通过I2C总线串行接口从PCF8563读出内部的日历/时钟。

这部分主要是在I2C总线协议的基础上进行通信,向芯片指定地址写入控制字,写入时间数据或读出时间数据。由于芯片中的实际数据都是以BCD码形式存储,因此通信时需要进行十六进制数和BCD码的互相转换。

具体设计函数包括向芯片写入时间,从芯片读出时间,码制转换。

程序代码:

//8bit 十六进制转bcd码

unsigned char NUM2BCD(unsigned char x)

{return ((((x)/10)<<4)|(x%10));

}

//8bit bcd码转十六进制

unsigned char BCD2NUM(unsigned char x)

{

return (((x)>>4)*10+((x)&0x0f));

}

/*-----------------------------------------------

函数说明:写入时间:秒,分,时,日,星期,月,年,BCD码

-----------------------------------------------*/

void wt_time(unsigned char *t)

{

i2c_write_byte(0xA2,0x00,0x00);//开始计时

i2c_write_nbyte(0xA2,0x02,t,7);//写入时间

}

/*-----------------------------------------------

读时间

-----------------------------------------------------*/

void rd_time(unsigned char *time)

{

int i;

unsigned char addr=0x02;

unsigned char temp;

for(i=0;i<7;i++)

{

temp=i2c_read_byte(0xA2,addr);

if(i==0||i==1) //去掉无效位//秒,分

temp&=0x7f;

if(i==2||i==3) //时,日

temp&=0x3f;

if(i==4) //星期

temp&=0x07;

if(i==5) //月

temp&=0x1f;

time[i]=temp;

//Delay_ms(50);

Delay_us(100);

addr=addr+1; //页读须软件累加地址

}

}

8.语音芯片

这部分直接使用了模块驱动程序参考中的函数,ISD_WR_APC2(uchar voiceValue)函数可以调节音量,0xa8对应最大音量,0xaf对应最小音量。play_open(unsigned int AddST,unsigned int AddEN)函数可以根据播放的首尾地址播放不同的音乐。

9.库文件定义和使用

一个模块的文件包括头文件(*.h)和源文件(*.c)。在头文件中进行函数的声明,在对应源文件中将头文件首先包含进来,然后对函数进行具体定义实现。使用时用到了某个模块,先将头文件include进来,然后在工程中添加对应的C文件。

千万不要忽略了头文件中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。

还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:

#ifndef <标识>

#define <标识>

……….

#endif

四、实验过程:

1.键盘和LCD的测试

功能描述:

初始状态:LCD上第一行显示"0:get char",第二行显示"1:get decimal"。按0进入获取字符并显示的状态,按字符’F’退出返回初始状态,按1进入获取整数并显示状态(整数范围:0~99999),当键入99999时退出返回初始状态。

主要代码:

###[lcdtest.c]###

void main(void)

{

unsigned char key,flag;

long dec;

LCD_Init();//lcd初始化

Key_Init();

LCD__clear();

while(1)

{

LCD__setcursol(0,0);

LCD__puts("0:get char");

LCD__setcursol(0,1);

LCD__puts("1:get decimal");

flag=GetChar();

if(flag=='0'||flag=='1')break;

}

LCD__clear();

LCD__setcursol(0,0);

while(1)

{

if(flag=='0')

{

key=GetChar();

LCD__putchar(key);

if(key=='F')break;//当按F时跳出

}

if(flag=='1')

{

LCD__setcursol(0,0);

dec=GetDec();

LCD__clear();

LCD__putdec(dec);

if(dec==99999)break;//当输入整数为99999时跳出

}

}

}

2.LCD和LED显示日历

功能描述:

初始状态LCD显示欢迎界面,提示按F键进入,按F后进入提示菜单,按0选择程序中默认的日期设定,按1选择手动设定日期,依次按照提示键入日期。日期设定后在LCD上显示全部日期信息,LED上显示时分秒。

主要代码:

###[calendar.c]###

unsigned char show[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//led显示数值表

unsigned char time[7]={0x01};//秒,分,时,日,星期,月,年(BCD码)

/*-----------------------------------------------

函数说明:软件设定时间:秒,分,时,日,星期,月,年,BCD码

-----------------------------------------------*/

void set_time(unsigned char *time)

{

LCD__clear();

LCD__setcursol(0,0);

LCD__puts("Set year(0~99):");

LCD__setcursol(0,1);

time[6]=NUM2BCD((unsigned char)(GetDec()));

LCD__clear();

LCD__setcursol(0,0);

LCD__puts("Set month(1~12):");

LCD__setcursol(0,1);

time[5]=NUM2BCD((unsigned char)(GetDec()));

LCD__clear();

LCD__setcursol(0,0);

LCD__puts("Set day:");

LCD__setcursol(0,1);

time[3]=NUM2BCD((unsigned char)(GetDec()));

LCD__clear();

LCD__setcursol(0,0);

LCD__puts("Set weekday(0~6):");

LCD__setcursol(0,1);

time[4]=NUM2BCD((unsigned char)(GetDec()));

LCD__clear();

LCD__setcursol(0,0);

LCD__puts("Set hour(0~23):");

LCD__setcursol(0,1);

time[2]=NUM2BCD((unsigned char)(GetDec()));

LCD__clear();

LCD__setcursol(0,0);

LCD__puts("Set minute(0~59):");

LCD__setcursol(0,1);

time[1]=NUM2BCD((unsigned char)(GetDec()));

LCD__clear();

LCD__setcursol(0,0);

LCD__puts("Set second(0~59):");

LCD__setcursol(0,1);

time[0]=NUM2BCD((unsigned char)(GetDec()));

}

/*-----------------------------------------------

函数说明:软件设定缺省时间:秒,分,时,日,星期,月,年,BCD码

-----------------------------------------------*/

//将2011 年6 月13 日星期一下午3 点(15 点)59 分30 秒的时间写入PCF8563 void set_default_time(unsigned char *t)

{

t[0]=0x30;

t[1]=0x59;

t[2]=0x15;

t[3]=0x13;

t[4]=0x01;

t[5]=0x06;

t[6]=0x11;

}

//--------------日历显示--------------

void CalendarDisp(unsigned char * time)

{

//---------------LCD显示-----------------------

LCD__setcursol(0,0);

//year

LCD__putchar('2');

LCD__putchar('0');

LCD__putchar(Key_ASC2((time[6]>>4)&0x0f));

LCD__putchar(Key_ASC2(time[6]&0x0f));

LCD__putchar('-');

//month

LCD__putchar(Key_ASC2((time[5]>>4)&0x0f));

LCD__putchar(Key_ASC2(time[5]&0x0f));

LCD__putchar('-');

//day

(完整版)智能电子电路设计与制作期末试卷A

淮安信息职业技术学院2012-2013学年度第2学期 《智能电子电路设计与制作》期末试卷A 一、填空题(每空0.5分)共15分 1、MEGA16单片机I/O 端口的方向寄存器作用是(对端口输入输出选择)。 2、MEGA16单片机I/O 端口的输入寄存器作用是( 判断端口电平高低 )。 3、MEGA16单片机I/O 端口的数据寄存器作用是(对端口写入“1”或“0” )。 4、ATmega16单片机是( 8 )位单片机。 5、MCUCR 寄存器是( 控制寄存器 ),用于设置 INTO 和INT1的中断( 触发)方式。 6、GICR 寄存器是( 中断控制寄存器 ),用于设置外部中断的中断(允许 )位。 7、全局中断使能位是(状态)寄存器中的 第( 七 )位 即( BIT/7 )位。 8、TCNT0是定时器( T/C0)的(数据 )寄存器,作用是( 对计数器进行读写 )。 9、T/C0的计数时钟源可以来自( 内部 )和( 外部 )两种。 10、T/C0工作在普通模式时,( 计数初值 )由TCNTO 设置,最大值为( OXFFFF )。 11、使用MEGA16单片机的AD 相关寄存器有( AD 多工选择寄存器 )、( ADC 控制和状态寄存器A )、( ADC 数据寄存器)、( 特殊功能IO 寄存器 )。 12、MEGA16单片机TWI 相关寄存器有( TWI 比特率寄存器 )、( TWI 控制寄存器 )、( TWI 状态寄存器 )、( TWI 数据寄存器 )。 13、MEGA16单片机与SPI 相关的寄存器有( SPI 控制寄存器 )、( SPI 状态寄存器 )。 14、24C08是具有( I 2c )总线协议的非易失性存储器。 15、USART 模块的管脚发送数据管脚名称为( TXD )。 二、选择题(每题3分,共45分) 1. MCUCR 寄存器中的中断触发模式位是?(D ) A 、ICS00\ICS01 B 、ICS10\ICS11 C 、SM2 D 、A 和B 2. ATmega16的GICR 寄存器中外部中断0的中断使能位是(B ) A 、INT1 B 、INT0 C 、INT2 D 、INT3 3.多位数码管显示器通常采用(B )法显示 系部: 班级: 学号: 姓名:

电气原理图设计方法及实例分析

电气原理图设计方法及实例分析 【摘要】本文主要对电气原理图绘制的要求、原则以及设计方法进行了说明,并通过实例对设计方法进行了分析。 【关键词】电气原理图;设计方法;实例 继电-接触器控制系统是由按钮、继电器等低压控制电器组成的控制系统,可以实现对 电力拖动系统的起动、调速等动作的控制和保护,以满足生产工艺对拖动控制的要求。继电-接触器控制系统具有电路简单、维修方便等许多优点,多年来在各种生产机械的电气控制 中获得广泛的应用。由于生产机械的种类繁多,所要求的控制系统也是千变万化、多种多样的。但无论是比较简单的,还是很复杂的控制系统,都是由一些基本环节组合而成。因此本节着重阐明组成这些控制系统的基本规律和典型电路环节。这样,再结合具体的生产工艺要求,就不难掌握控制系统的分析和设计方法。 一、绘制电气原理图的基本要求 电气控制系统是由许多电气元件按照一定要求连接而成,从而实现对某种设备的电气自动控制。为了便于对控制系统进行设计、研究分析、安装调试、使用和维修,需要将电气控制系统中各电气元件及其相互连接关系用国家规定的统一图形符号、文字符号以图的形式表示出来。这种图就是电气控制系统图,其形式主要有电气原理图和电气安装图两种。 安装图是按照电器实际位置和实际接线电路,用给定的符号画出来的,这种电路图便于安装。电气原理图是根据电气设备的工作原理绘制而成,具有结构简单、层次分明、便于研究和分析电路的工作原理等优点。绘制电气原理图应按GB4728-85、GBTl59-87等规定的标 准绘制。如果采用上述标准中未规定的图形符号时,必须加以说明。当标准中给出几种形式时,选择符号应遵循以下原则: ①应尽可能采用优选形式; ②在满足需要的前提下,应尽量采用最简单形式; ③在同一图号的图中使用同一种形式。 根据简单清晰的原则,原理图采用电气元件展开的形式绘制。它包括所有电气元件的导电部件和接线端点,但并不按照电气元件的实际位置来绘制,也不反映电气元件的大小。由于电气原理图具有结构简单、层次分明、适于研究等优点,所以无论在设计部门还是生产现场都得到广泛应用。 控制电路绘制的原则: ①原理图一般分主电路、控制电路、信号电路、照明电路及保护电路等。 ②图中所有电器触头,都按没有通电和外力作用时的开闭状态(常态)画出。 ③无论主电路还是辅助电路,各元件应按动作顺序从上到下、从左到右依次排列。 ④为了突出或区分某些电路、功能等,导线符号、连接线等可采用粗细不同的线条来表示。 ⑤原理图中各电气元件和部件在控制电路中的位置,应根据便于阅读的原则安排。同一电气元件的各个部件可以不画在一起,但必须采用同一文字符号标明。 ⑥原理图中有直接电联系的交叉导线连接点,用实心圆点表示;可拆卸或测试点用空心圆点表示;无直接电联系的交叉点则不画圆点。 ⑦对非电气控制和人工操作的电器,必须在原理图上用相应的图形符号表示其操作方式。 ⑧对于电气控制有关的机、液、气等装置,应用符号绘出简图,以表示其关系。 二、分析设计法及实例设计分析 根据生产工艺要求,利用各种典型的电路环节,直接设计控制电路。这种设计方法比较简单,但要求设计人员必须熟悉大量的控制电路,掌握多种典型电路的设计资料,同时具有丰富的设计经验,在设计过程中往往还要经过多次反复地修改、试验,才能使电路符合设计

电子电路设计软件

电子电路设计软件 我们大家可能都用过试验板或者其他的东西制作过一些电子制做来进行实践。但是有的时候,我们会发现做出来的东西有很多的问题,事先并没有想到,这样一来就浪费了我们的很多时间和物资。而且增加了产品的开发周期和延续了产品的上市时间从而使产品失去市场竞争优势。有没有能够不动用电烙铁试验板就能知道结果的方法呢?结论是有,这就是电路设计与仿真技术。 说到电子电路设计与仿真工具这项技术,就不能不提到美国,不能不提到他们的飞机设计为什么有很高的效率。以前我国定型一个中型飞机的设计,从草案到详细设计到风洞试验再到最后出图到实际投产,整个周期大概要10年。而美国是1年。为什么会有这样大的差距呢?因为美国在设计时大部分采用的是虚拟仿真技术,把多年积累的各项风洞实验参数都输入电脑,然后通过电脑编程编写出一个虚拟环境的软件,并且使它能够自动套用相关公式和调用长期积累后输入电脑的相关经验参数。这样一来,只要把飞机的外形计数据放入这个虚拟的风洞软件中进行试验,哪里不合理有问题就改动那里,直至最佳效果,效率自然高了,最后只要再在实际环境中测试几次找找不足就可以定型了,从他们的波音747到F16都是采用的这种方法。空气动力学方面的数据由资深专家提供,软件开发商是IBM,飞行器设计工程师只需利用仿真软件在计算机平台上进行各种仿真调试工作即可。同样,他们其他的很多东西都是采用了这样类似的方法,从大到小,从复杂到简单,甚至包括设计家具和作曲,只是具体软件内容不同。其实,他们发明第一代计算机时就是这个目的(当初是为了高效率设计大炮和相关炮弹以及其他计算量大的设计)。 电子电路设计与仿真工具包括SPICE/PSPICE;multiSIM7;Matlab;SystemView;MMICAD LiveWire、Edison、Tina Pro Bright Spark等。下面简单介绍前三个软件。 ①SPICE(Simulation Program with Integrated Circuit Emphasis):是由美国加州大学推出的电路分析仿真软件,是20世纪80年代世界上应用最广的电路设计软件,1998年被定为美国国家标准。1984年,美国MicroSim 公司推出了基于SPICE的微机版PSPICE(Personal-SPICE)。现在用得较多的是PSPICE6.2,可以说在同类产品中,它是功能最为强大的模拟和数字电路混合仿真EDA软件,在国内普遍使用。最新推出了PSPICE9.1版本。它可以进行各种各样的电路仿真、激励建立、温度与噪声分析、模拟控制、波形输出、数据输出、并在同一窗口内同时显示模拟与数字的仿真结果。无论对哪种器件哪些电路进行仿真,都可以得到精确的仿真结果,并可以自行建立元器件及元器件库。 ②multiSIM(EWB的最新版本)软件:是Interactive Image Technologies Ltd在20世纪末推出的电路仿真软件。其最新版本为multiSIM7,目前普遍使用的是multiSIM2001,相对于其它EDA软件,它具有更加形象直观的人机交互界面,特别是其仪器仪表库中的各仪器仪表与操作真实实验中的实际仪器仪表完全没有两样,但它对模数电路的混合仿真功能却毫不逊色,几乎能够100%地仿真出真实电路的结果,并且它在仪器仪表库中还提供了万用表、信号发生器、瓦特表、双踪示波器(对于multiSIM7还具有四踪示波器)、波特仪(相当实际中的扫频仪)、字信号发生器、逻辑分析仪、逻辑转换仪、失真度分析仪、频谱分析仪、网络分析仪和电压表及电流表等仪器仪表。还提供了我们日常常见的各种建模精确的元器件,比如电阻、电容、电感、三极管、二极管、继电器、可控硅、数码管等等。模拟集成电路方面有各种运算放大器、其他常用集成电路。数字电路方面有74系列集成电路、4000系列集成电路、等等还支持自制元器件。MultiSIM7还具有I-V分析仪(相当于真实环境中的晶体管特性图示仪)和Agilent信号发生器、Agilent万用表、Agilent 示波器和动态逻辑平笔等。同时它还能进行VHDL仿真和Verilog HDL仿真。 ③MATLAB产品族:它们的一大特性是有众多的面向具体应用的工具箱和仿真块,包含了完整的函数集用来对图像信号处理、控制系统设计、神经网络等特殊应用进行分析和设计。它具有数据采集、报告生成和

电子电路设计与制作教学大纲

《电子电路设计与制作》教学大纲1.课程中文名称:电子电路设计与制作 2.课程代码: 3.课程类别:实践教学环节 4.课程性质:必修课 5.课程属性:独立设课 6.电子技术课程理论课总学时:256总学分:16 电子电路设计与制作学时:3周课程设计学分:3 7.适用专业:电子信息类各专业 8.先修课程:电路分析基础、模拟电子技术、数字电子技术、PCB电路设计一、课程设计简介 实验课、课程设计、毕业设计是大学阶段既相互联系又相互区别的三大实践性教学环节。实验课是着眼于实验验证课程的基本理论,培养学生的初步实验技能;毕业设计是针对本专业的要求所进行的全面的综合训练;而课程设计则是针对某几门课程构成的课程群的要求,对学生进行综合性训练,培养学生运用课程群中所学到的理论学以致用,独立地解决实际问题。电子电路设计与制作是电子信息类各专业必不可少的重要实践环节,它包括设计方案的选择、设计方案的论证、方案的电路原理图设计、印制板电路(即PCB)设计、元器件的选型、元器件在PCB板上的安装与焊接,电路的调试,撰写设计报告等实践内容。电子电路设计与制作的全过程是以学生自学为主,实践操作为主,教师的讲授、指导、讨论和研究相结合为辅的方式进行,着重就设计题目的要求对设计思路、设计方案的形成、电路调试和参数测量等展开讨论。 由指导教师下达设计任务书(学生自选题目需要通过指导教师和教研室共同审核批准),讲解示范的案例,指导学生各自对自己考虑到的多种可行的设计方案进行

比较,选择其中的最佳方案并进行论证,制作出满足设计要求的电子产品,撰写设计报告。需要注意是,设计方案的原理图须经Proteus软件仿真确信无误后,才能进行印刷电路图的制作,硬件电路的制作,以避免造成覆铜板、元器件等材料的浪费。电路系统经反复调试,完全达到(或超过)设计要求后,再完善设计报告。设计的整个过程在创新实验室或电子工艺实验室中完成。 二、电子电路设计与制作的教学目标与基本要求 教学目标: 1、通过课程设计巩固、深化和扩展学生的理论知识,提高综合运用知识的能力,逐步提升从事工程设计的能力。 2、注重培养学生正确的工程设计思想,掌握工程设计的思路、内容、步骤和方法。使学生能根据设计要求和性能参数,查阅文献资料,收集、分析类似电路的性能,并通过设计、安装、焊接、调试等实践过程,使电子产品达到设计任务书中要求的性能指标的能力。 3、为后续的毕业设计打好基础。课程设计的着眼点是让学生开始从理论学习的轨道上逐渐转向实际运用,从已学过的定性分析、定量计算的方法,逐步掌握工程设计的步骤和方法,了解工程设计的程序和实施方法;通过课程设计的训练,可以给毕业设计提供坚实的铺垫。 4、培养学生获取信息和综合处理信息的能力,文字和语言表达能力以及协调工作能力。课程设计报告的撰写,为今后从事技术工作撰写科技报告和技术文件打下基础。 5、提高学生运用所学的理论知识和技能解决实际问题的能力及其基本工程素质。 基本要求: 1、能够根据设计任务和指标要求,综合运用电路分析、电子技术课程中所学到的理论知识与实践操作技能独立完成一个设计课题的工程设计能力。 2、会根据课题需要选择参考书籍,查阅手册、图表等有关文献资料。能独立思考、深入钻研课程设计中所遇到的问题,培养自己分析问韪、解决问题的能力。

电子技术课程设计的基本方法和步骤模板

电子技术课程设计的基本方法和步骤

电子技术课程设计的基本方法和步骤 一、明确电子系统的设计任务 对系统的设计任务进行具体分析, 充分了解系统的性能、指标及要求, 明确系统应完成的任务。 二、总体方案的设计与选择 1、查阅文献, 根据掌握的资料和已有条件, 完成方案原理的构想; 2、提出多种原理方案 3、原理方案的比较、选择与确定 4、将系统任务的分解成若干个单元电路, 并画出整机原理框图, 完成系统的功能设计。 三、单元电路的设计、参数计算与器件选择 1、单元电路设计 每个单元电路设计前都需明确本单元电路的任务, 详细拟订出单元电路的性能指标, 与前后级之间的关系, 分析电路的组成形式。具体设计时, 能够模拟成熟的先进电路, 也能够进行创新和改进, 但都必须保证性能要求。而且, 不但单元电路本身要求设计合理, 各单元电路间也要相互配合, 注意各部分的输入信号、输出信号和控制信号的关系。 2、参数计算 为保证单元电路达到功能指标要求, 就需要用电子技术知识对参数进行计算, 例如放大电路中各电阻值、放大倍数、振荡器中电阻、电容、振荡频率等参数。只有很好地理解电路的工作原理, 正确利用计算公式, 计算的参数才能满足设计要求。 参数计算时, 同一个电路可能有几组数据, 注意选择一组能完成

电路设计功能、在实践中能真正可行的参数。 计算电路参数时应注意下列问题: (1)元器件的工作电流、电压、频率和功耗等参数应能满足电路指标的要求。 (2)元器件的极限必须留有足够的裕量, 一般应大于额定值的 1.5倍。 (3)电阻和电容的参数应选计算值附近的标称值。 3、器件选择 ( 1) 阻容元件的选择 电阻和电容种类很多, 正确选择电阻和电容是很重要的。不同的电路对电阻和电容性能要求也不同, 有些电路对电容的漏电要求很严, 还有些电路对电阻、电容的性能和容量要求很高, 例如滤波电路中常见大容量( 100~3000uF) 铝电解电容, 为滤掉高频一般还需并联小容量( 0.01~0.1uF) 瓷片电容。设计时要根据电路的要求选择性能和参数合适的阻容元件, 并要注意功耗、容量、频率和耐压范围是否满足要求。 ( 2) 分立元件的选择 分立元件包括二极管、晶体三极管、场效应管、光电二极管、晶闸管等。根据其用途分别进行选择。选择的器件类型不同, 注意事项也不同。 ( 3) 集成电路的选择 由于集成电路能够实现很多单元电路甚至整机电路的功能, 因此选用集成电路设计单元电路和总体电路既方便又灵活, 它不但使系统体积缩小, 而且性能可靠, 便于调试及运用, 在设计电路时颇受欢迎。选用的集成电路不但要在功能和特性上实现设计方案, 而且要满足功耗、电压、速度、价格等方面要求。 4、注意单元电路之间的级联设计, 单元电路之间电气性能的 相互匹配问题, 信号的耦合方式

微电子电路课程设计

课程设计报告 微电子电路 带有源负载的共源极放大器与带有源负载的cascode 放大器 集成电路设计 目录 1.课程设计目的···································页码3 2.课程设计题目描述和要求·························页码3 3.设计思路·······································页码4 4.带有源负载的共源极放大器设计过程及结果·········页码5 5.带有源负载的cascode放大器设计过程及结果·······页码7 6.心得体会·······································页码9 7.参考书目·······································页码9

2 1.课程设计目的 深刻理解课本上学到的知识,建立各个章节的知识体系之间的联系。 加强动手能力和运用课本知识理论解决问题的能力。 对于放大器的性能和参数有更深刻的理解和掌握。 2.课程设计题目描述和要求 分析如图这样的带有源负载的共源极放大器与带有源负载的cascode 放大器的开环增益,3dB 频宽,单位增益频率。其中负载电容为3PF ,电源电压为5V ,要求CS 放大器的开环增益大于30dB ,cascode 放大器的开环增益大于60 dB 。对仿真结果进行分析,功耗小于2mW 。 Vdd C

3 Vdd C 3.设计思路:根据题目要求来计算以cs 放大器为例 ⑴功率不超过2mW ,电源为 5v ,得到总电流不能超过400uA 。 ⑵开始分配给ID 的电流为50u 运用了镜像电流源,电流大小之比为2,在长度一定时候的宽度之比也是2,故在右边电路的id 为100u ⑶根据公式 对于n 管来说,预估一个过驱动电压0.4v (大约0.2-0.5v )均可。计算出来n 管宽长比为11.26,取11。因为实验中给定了n 管的阈值电压为0.723v ,所以,可以确定栅源电压为1.1v 左右。 对于p 管来说,预估一个过驱动电压为0.5v (大约0.2-0.5v )均可。经过计算,p 管的宽长比为11.59,取12 。

电子电路设计的基础知识

电子电路设计的基础知识 一、电子电路的设计基本步骤: 1、明确设计任务要求: 充分了解设计任务的具体要求如性能指标、内容及要求,明确设计任务。 2、方案选择: 根据掌握的知识和资料,针对设计提出的任务、要求和条件,设计合理、可靠、经济、可行的设计框架,对其优缺点进行分析,做到心中有数。 3、根据设计框架进行电路单元设计、参数计算和器件选择: 具体设计时可以模仿成熟的电路进行改进和创新,注意信号之间的关系和限制;接着根据电路工作原理和分析方法,进行参数的估计与计算;器件选择时,元器件的工作、电压、频率和功耗等参数应满足电路指标要求,元器件的极限参数必须留有足够的裕量,一般应大于额定值的1.5倍,电阻和电容的参数应选择计算值附近的标称值。 4、电路原理图的绘制: 电路原理图是组装、焊接、调试和检修的依据,绘制电路图时布局必须合理、排列均匀、清晰、便于看图、有利于读图;信号的流向一般从输入端或信号源画起,由左至右或由上至下按信号的流向依次画出务单元电路,反馈通路的信号流向则与此相反;图形符号和标准,并加适当的标注;连线应为直线,并且交叉和折弯应最少,互相连通的交叉处用圆点表示,地线用接地符号表示。 二、电子电路的组装 电路组装通常采用通用印刷电路板焊接和实验箱上插接两种方式,不管哪种方式,都要注意: 1.集成电路:

认清方向,找准第一脚,不要倒插,所有IC的插入方向一般应保持一致,管脚不能弯曲折断; 2.元器件的装插: 去除元件管脚上的氧化层,根据电路图确定器件的位置,并按信号的流向依次将元器件顺序连接; 3.导线的选用与连接: 导线直径应与过孔(或插孔)相当,过大过细均不好;为检查电路方便,要根据不同用途,选择不同颜色的导线,一般习惯是正电源用红线,负电源用蓝线,地线用黑线,信号线用其它颜色的线;连接用的导线要求紧贴板上,焊接或接触良好,连接线不允许跨越IC或其他器件,尽量做到横平竖直,便于查线和更换器件,但高频电路部分的连线应尽量短;电路之间要有公共地。 4.在电路的输入、输出端和其测试端应预留测试空间和接线柱,以方便测量调试; 5.布局合理和组装正确的电路,不仅电路整齐美观,而且能提高电路工作的可靠性,便于检查和排队故障。 三、电子电路调试 实验和调试常用的仪器有:万用表、稳压电源、示波器、信号发生器等。调试的主要步骤。 1.调试前不加电源的检查 对照电路图和实际线路检查连线是否正确,包括错接、少接、多接等;用万用表电阻档检查焊接和接插是否良好;元器件引脚之间有无短路,连接处有无接触不良,二极管、三极管、集成电路和电解电容的极性是否正确;电源供电包括极性、信号源连线是否正确;电源端对地是否存在短路(用万用表测量电阻)。 若电路经过上述检查,确认无误后,可转入静态检测与调试。 2.静态检测与调试 断开信号源,把经过准确测量的电源接入电路,用万用表电压档监测电源电压,观察有无异常现象:如冒烟、异常气味、手摸元器件发烫,电源短路等,如发现异常情况,立即切断电源,排除故障; 如无异常情况,分别测量各关键点直流电压,如静态工作点、数字电路各输入端和输出端的高、低电平值及逻辑关系、放大电路输入、输出端直流电压等是否在

电子系统设计的基本原则和方法

电子系统设计的基本原则和设计方法 一、电子系统设计的基本原则: 电子电路设计最基本的原则应该使用最经济的资源实现最好的电路功能。具体如下: 1、整体性原则 在设计电子系统时,应当从整体出发,从分析电子电路整体内部各组成元件的关系以及电路整体与外部环境之间的关系入手,去揭示与掌握电子系统整体性质,判断电子系统类型,明确所要设计的电子系统应具有哪些功能、相互信号与控制关系如何、参数指标在那个功能模块实现等,从而确定总体设计方案。 整体原则强调以综合为基础,在综合的控制与指导下,进行分析,并且对分析的结果进行恰当的综合。基本的要点是:(1)电子系统分析必须以综合为目的,以综合为前提。离开了综合的分析是盲目的,不全面的。(2)在以分析为主的过程中往往包含着小的综合。即在对电子系统各部分进行分别考察的过程中,往往也需要又电子局部的综合。(3)综合不许以分析为基础。只有对电子系统的分析了解打到一定程度以后,才能进行综合。没有详尽以分析电子系统作基础,综合就是匆忙的、不坚定的,往往带有某种主管臆测的成分。 2、最优化原则 最优化原则是一个基本达到设计性能指标的电子系统而言的,由于元件自身或相互配合、功能模块的相互配合或耦合还存在一些缺陷,使电子系统对信号的传送、处理等方面不尽完美,需要在约束条件的限制下,从电路中每个待调整的原器件或功能模块入手,进行参数分析,分别计算每个优化指标,并根据有忽而

指标的要求,调整元器件或功能模块的参数,知道目标参数满足最优化目标值的要求,完成这个系统的最优化设计。 3、功能性原则 任何一个复杂的电子系统都可以逐步划分成不同层次的较小的电子子系统。仙子系统设计一般先将大电子系统分为若干个具有相对独立的功能部分,并将其作为独立电子系统更能模块;再全面分析各模块功能类型及功能要求,考虑如何实现这些技术功能,即采用那些电路来完成它;然后选用具体的实际电路,选择出合适的元器件,计算元器件参数并设计个单元电路。 4、可靠性与稳定性原则 电子电路是各种电气设备的心脏,它决定着电气设备的功能和用途,尤其是电气设备性能的可靠性更是由其电子电路的可靠性来决定的。电路形式及元器件选型等设计工作,设计方案在很大程度上也就决定可靠性,在电子电路设计时应遵循如下原则:只要能满足系统的性能和功能指标就尽可能的简化电子电路结构;避免片面追求高性能指标和过多的功能;合理划分软硬件功能,贯彻以软代硬的原则,使软件和硬件相辅相成;尽可能用数字电路代替模拟电路。影响电子电路可靠性的因素很多,在发生的时间和程度上的随机性也很大,在设计时,对易遭受不可靠因素干扰的薄弱环节应主动地采取可靠性保障措施,使电子电路遭受不可靠因素干扰时能保持稳定。抗干扰技术和容错设计是变被动为主动的两个重要手段。 5、性能与价格比原则 在当今竞争激烈的市场中,产品必须具有较短的开发设计周期,以及出色的性能和可靠性。为了占领市场,提高竞争力,所设计的产品应当成本低、性能好、

电子设计大赛常用电路图

错误 !未定义书签。 图2 L293D 的电机驱动电路 图3 电源稳压电路 图4 降压电路

图3 降压斩波电路原理图 图4 电流检测模块

OS CI ICE_SDA ICE_SCK ICE_EN AV SS1OP I AGC M ICOUT DA C2DA C IOB12IOB11IOB15IOB13SLE EP IOB14VS S IOA12IOA14IOA11IOA10IOA15IOA13I O B 9I O B 10IOA9 I O B 5I O B 8I O B 7V C P I O A 8 V D D H I O A 6I O A 7V S S VS S V D D H VS S V R T A V S S 1 V D D _P I O B 2V C M I O A 3I O B 6I O B 1I O A 1V M I C I O B 0I O A 2M I C P R E S _B I O B 4 I O A 4 I O B 3I O A 0I O A 5VREF2V S S V D D H SPCE061A DA C1M ICN AV SS1VDD VS S VS S VS S OS CO +C29100u C31104 U1 OS C32O 12OS C32I 13XT EST 14VDD 15XICE 16XICECLK 17XICES DA 18VS S 19PV IN 20DA C121DA C222VREF223VS S 24AGC 25OP I 26M ICOUT 27M ICN 28PFUSE 29M I C P 33V C M 34V R T P A D 35V D D 36V M I C 37V S S 38I O A 041I O A 142I O A 243I O A 344I O A 445I O A 546I O A 647I O A 748V S S 49V S S 50V D D H 51V D D H 52I O A 8 53 N C 39N C 40NC 30NC 31NC 32 IOA9 54 IOA1055IOA1156IOA1257IOA1358IOA1459IOA1560XROM T 61VS S 62XS LEEP 63IOB1564IOB1465IOB1366IOB1267IOB1168PV PP 69V D D H 75 I O B 1076I O B 977NC 70NC 71NC 72NC 73NC 74I O B 878I O B 779I O B 680I O B 581I O B 41I O B 32I O B 23N C 82N C 83N C 84I O B 14I O B 05X R E S B 6V D D 7V C P 8V S S 9N C 10N C 11C8104C7104C18104 +C5 100u C28104 + C27100u +C17100u + C4100u V D D _A SPCE061A 芯片引脚电路图 电机驱动电路 图5 电源变换电路图

电子电路设计的一般方法和步骤

电子电路设计的一般方法与步骤 一、总体方案的设计与选择 1.方案原理的构想 (1)提出原理方案 一个复杂的系统需要进行原理方案的构思,也就是用什么原理来实现系统要求。因此,应对课题的任务、要求和条件进行仔细的分析与研究,找出其关键问题是什么,然后根据此关键问题提出实现的原理与方法,并画出其原理框图(即提出原理方案)。提出原理方案关系到设计全局,应广泛收集与查阅有关资料,广开思路,开动脑筋,利用已有的各种理论知识,提出尽可能多的方案,以便作出更合理的选择。所提方案必须对关键部分的可行性进行讨论,一般应通过试验加以确认。 (2)原理方案的比较选择 原理方案提出后,必须对所提出的几种方案进行分析比较。在详细的总体方案尚未完成之前,只能就原理方案的简单与复杂,方案实现的难易程度进行分析比较,并作出初步的选择。如果有两种方案难以敲定,那么可对两种方案都进行后续阶段设计,直到得出两种方案的总体电路图,然后就性能、成本、体积等方面进行分析比较,才能最后确定下来。 2.总体方案的确定 原理方案选定以后,便可着手进行总体方案的确定,原理方案只着眼于方案的原理,不涉及方案的许多细节,因此,原理方案框图中的每个框图也只是原理性的、粗略的,它可能由一个单元电路构成,亦可能由许多单元电路构成。为了把总体方案确定下来,必须把每一个框图进一步分解成若干个小框,每个小框为一个较简单的单元电路。当然,每个框图不宜分得太细,亦不能分得太粗,太细对选择不同的单元电路或器件带来不利,并使单元电路之间的相互连接复杂化;但太粗将使单元电路本身功能过于复杂,不好进行设计或选择。总之,

应从单元电路和单元之间连接的设计与选择出发,恰当地分解框图。 二、单元电路的设计与选择 1.单元电路结构形式的选择与设计 按已确定的总体方案框图,对各功能框分别设计或选择出满足其要求的单元电路。因此,必须根据系统要求,明确功能框对单元电路的技术要求,必要时应详细拟定出单元电路的性能指标,然后进行单元电路结构形式的选择或设计。 满足功能框要求的单元电路可能不止一个,因此必须进行分析比较,择优选择。 2.元器件的选择 (1)元器件选择的一般原则 元器件的品种规格十分繁多,性能、价格和体积各异,而且新品种不断涌现,这就需要我们经常关心元器件信息和新动向,多查阅器件手册和有关的科技资料,尤其要熟悉一些常用的元器件型号、性能和价格,这对单元电路和总体电路设计极为有利。选择什么样的元器件最合适,需要进行分析比较。首先应考虑满足单元电路对元器件性能指标的要求,其次是考虑价格、货源和元器件体积等方面的要求。 (2)集成电路与分立元件电路的选择问题 随着微电子技术的飞速发展,各种集成电路大量涌现,集成电路的应用越来越广泛。今天,一块集成电路常常就是具有一定功能的单元电路,它的性能、体积、成本、安装调试和维修等方面一般都优于由分立元件构成的单元电路。 优先选用集成电路不等于什么场合都一定要用集成电路。在某些特殊情况,如:在高频、宽频带、高电压、大电流等场合,集成电路往往还不能适应,有时仍需采用分立元件。另外,对一些功能十分简单的电路,往往只需一只三极管或一只二极管就能解决问题,就不必选用集成电路。

硬件电路设计基础知识.docx

硬件电子电路基础关于本课程 § 4—2乙类功率放大电路 § 4—3丙类功率放大电路 § 4—4丙类谐振倍频电路 第五章正弦波振荡器 § 5—1反馈型正弦波振荡器的工作原理 § 5— 2 LC正弦波振荡电路 § 5— 3 LC振荡器的频率稳定度 § 5—4石英晶体振荡器 § 5— 5 RC正弦波振荡器

第一章半导体器件 §1半导体基础知识 §1PN 结 §-1二极管 §1晶体三极管 §1场效应管 §1半导体基础知识 、什么是半导体半导体就是导电能力介于导体和绝缘体之间的物质。(导电能力即电导率)(如:硅Si锗Ge等+ 4价元素以及化合物) 、半导体的导电特性本征半导体一一纯净、晶体结构完整的半导体称为本征半导体。 硅和锗的共价键结构。(略)

1、半导体的导电率会在外界因素作用下发生变化 ?掺杂一一管子 *温度--- 热敏元件 ?光照——光敏元件等 2、半导体中的两种载流子一一自由电子和空穴 ?自由电子——受束缚的电子(一) ?空穴——电子跳走以后留下的坑(+ ) 三、杂质半导体——N型、P型 (前讲)掺杂可以显著地改变半导体的导电特性,从而制造出杂质半导体。 *N型半导体(自由电子多) 掺杂为+ 5价元素。女口:磷;砷P—+ 5价使自由电子大大增加原理:Si—+ 4价P与Si形成共价键后多余了一个电子。 载流子组成: o本征激发的空穴和自由电子——数量少。 o掺杂后由P提供的自由电子——数量多。 o 空穴——少子 o 自由电子------ 多子 ?P型半导体(空穴多) 掺杂为+ 3价元素。女口:硼;铝使空穴大大增加 原理:Si—+ 4价B与Si形成共价键后多余了一个空穴。 B——+ 3价 载流子组成: o本征激发的空穴和自由电子数量少。 o掺杂后由B提供的空穴——数量多。 o 空穴——多子 o 自由电子——少子

电子线路设计与制作实验报告

电子线路设计与制作 实验报告 班级:电信12305班 指导老师:朱婷 小组成员:张壮安剑锋罗杰杨康熊施任务分工:1.张壮实验报告的撰写 2.安剑锋检查元件及整理 3.罗杰电路的焊接 4.杨康元器件的保管及测试 5.熊施协助电路的焊接 2014年11月14日

项目一:红外线电路设计 一、电路工作原理 常用的红外线遥控系统一般分发射和接收两个部分。发射部分的主要元件为红外发光二极管。它实际上是一直特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的红外线而不会死可见光。 接收部分的红外接收管是一种光敏二极管。在实际应用中要给红外线接收二极管加反向偏压,它才能正常工作,亦即红外线接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。红外线二极管一般有圆形和方形两种。 二、电路原理图设计

课题名称元件数量备注 红外线发射——接收模拟 电路红外线发射管 1 红外线接收管 1 发光二极管 1 运放uA741 1 20K可调电位器 1 100Ω电阻 1 10kΩ电阻 1 330Ω电阻 1 元件清单表 三、电路设计与调试 (1)各小组从指导老师那里领取元器件,分工检测元器件的性能。(2)依据电路原理图,各小组讨论如何布局,最后确定一最佳方案在洞洞板上搭建红外线发射\接收电路图。 (3)检查电路无误后,从信号发生器送入适应电压。 (4)调节可调电阻R3的阻值,观察发光二极管LED是否出现闪烁现象,如果出现说明有发射和接收,如果没有检查电路。(5)实验完毕,记录结果,并写实验报告。

四、实验注意事项 (1)发光二极管的电流不能天大(小于200mA);(2)在通电前必须检查电路无误后才可; (3)信号发生器的输出电压峰峰值1.5~2.5V。 项目二:定时电路的设计一、电路原理图与工作原理

电子电路识图的基本方法和技巧

电子电路识图的基本方法和技巧 对初学者来说,复杂的电子电路图上布满了密密麻麻的电路符号,根本不知从何下手识图,也不能从电子电路原理图中找出电子产品的故障所在,更不能得心应手地去设计各种各样的电子电路。其实,只要对电子电路图进行仔仔细细观察,就会发现电子电路的构成具有很强的规律性,即相同类型的电子电路不仅功能相似,而且在电路结构上也是大同小异的。任何一张错综复杂、表现形式不同的电子电路图都是由一些最基本的电子电路组合而成的,构成复杂电子电路图的最基本电路称为单元电路。只要掌握了基本单元电路,任何复杂的电路都可以看成是基本单元电路的集合。1.从基本元器件入手,为识图打下良好的基础。电子元器件是构成电子产品的基础。因此,了解电子元器件的基础知识,掌握不同元器件在电路中的电路表示符号及各元器件的基本功 能特点是进行电子识图的第一步。 2.掌握基本单元电路,为识读复杂电路打下基础。在学习基本单元电路时,要掌握好基本单元电路的工作原理、电路的功能及特性、电路典型参数、组成电路的元器件、每一个元器件在电路中所起的作用及电路调试方法等。 3.分解复杂电路。复杂电路被分解为基本单元电路后,就可以根据一个个基本单元电路的功能、特点进而分析到整个复

杂的电子电路,设计出各种各样的电路。 4.掌握基本单元电路之间的连接方法。基本单元电路之间可以直接连接起来,叫做直接耦合;通过变压器的初、次级间的磁感应来实现信号的连接,叫做变压器耦合;用电容来连接,叫做电容耦合。 5.明确各分体元器件在电子电路中所起的作用。为了方便初学者识图,现将各分体元器件在电子电路中不同的接法及与不同元器件连接所起的作用归纳如下。电阻器:在电路中主要起限流、分压的作用。 1)电阻器与电阻器在电路中并联一般是为了增大电阻器的功率。 2)电阻器与电阻器串联并从中间引出抽头,在一般情况下是为了得到电阻器上的分压。 3)电阻与稳压管串联,电阻器为稳压二极管的限流电阻器。4)电阻器与电容器串联组成微分电路,在这里电阻器为电容器的充电限流电阻器,充电常数由RC的乘积觉定。在这里如果微分电路与二极管或单向晶闸管等半导体器件并联,且电路中有电感性负载,则微分电路在电路中起阻容吸收的作用,即吸收电感器由于在开机、关机一瞬间产生的较高感应电动势,保护半导体器件不因太高的感应电动势而击穿损坏。 5)电阻器与电容器并联,在一般情况下电阻器为电容器的

从EMC角度考虑常用电路设计及PCB设计

从EMC角度考虑常用电路设计及PCB设计 A.电源电路 电源电路设计中,功能性设计主要考虑温升和纹波大小。温升大小由结构 很关键:大电容一般采用低ESR电容,小电容采用0.1UF和1000pF共用。电源电路设计中,电磁兼容设计是关键设计。主要涉及的电磁兼容设计有:传导发射和浪涌。 传导发射设计一般采用输入滤波器方式。外部采购的滤波器内部电路一般采用下列电路: Cx1和Cx2为X电容,防止差模干扰。差模干扰大时,可增加其值进行抑制;Cy1和Cy2为Y电容,防止共模干扰。共模干扰大时,可增加其值进行抑制。需要注意的是,如自行设计滤波电路,Y电容不可设计在输入端,也不可双端都加Y电容。 浪涌设计一般采用压敏电阻。差模可根据电源输入耐压选取;共模需要电源输入耐压和产品耐压测试综合考虑。 当浪涌能量大时,也可考虑压敏电阻(或TVS)与放电管组合设计。

1 电源输入部分的EMC设计 应遵循①先防护后滤波;②CLASS B规格要求的电源输入端推荐两级滤波电路,且尽量靠近输入端;③在电源输入端滤波电路前和滤波电路中无采样电路和其它分叉电路;如果一定有采样电路,采样电路应额外增加了足够的滤波电路。 原因说明: ①先防护后滤波: 第一级防护器件应在滤波器件之前,防止滤波器件在浪涌、防雷测试中损坏,或导致滤波参数偏离,第二级保护器件可以放在滤波器件的后面;选择防护器件时,还应考虑个头不要太大,防止滤波器件在PCB布局时距离接口太远,起不到滤波效果。 ②CLASS B规格要求的电源输入端推荐两级滤波电路,且尽量靠近输入端:CLASSB要求比CLASS A要求小10dB,即小3倍,所以应有两级滤波电路; CLASSA规格要求至少一级滤波电路;所谓一级滤波电路指包含一级共模电感的滤波电路。

电路设计的基本原理和方法

电路设计的基本原理和方法 本人经过整理得出如下的电路设计方法,希望对广大电子爱好者及热衷于硬件研发的朋友有所帮助。 电子电路的设计方法 设计一个电子电路系统时,首先必须明确系统的设计任务,根据任务进行方案选择,然后对方案中的各个部分进行单元的设计,参数计算和器件选择,最后将各个部分连接在一起,画出一个符合设计要求的完整的系统电路图。 一.明确系统的设计任务要求 对系统的设计任务进行具体分析,充分了解系统的性能,指标,内容及要求,以明确系统应完成的任务。 二.方案选择 这一步的工作要求是把系统要完成的任务分配给若干个单元电路,并画出一个能表示各单元功能的整机原理框图。 方案选择的重要任务是根据掌握的知识和资料,针对系统提出的任务,要求和条件,完成系统的功能设计。在这个过程中要敢于探索,勇于创新,力争做到设计方案合理,可靠,经济,功能齐全,技术先进。并且对方案要不断进行可行性和有缺点的分析,最后设计出一个完整框图。框图必须正确反映应完成的任务和各组成部分的功能,清楚表示系统的基本组成和相互关系。 三.单元电路的设计,参数计算和期间选择 根据系统的指标和功能框图,明确各部分任务,进行各单元电路的设计,参数计算和器件选择。 1.单元电路设计 单元电路是整机的一部分,只有把各单元电路设计好才能提高整机设计水平。 每个单元电路设计前都需明确各单元电路的任务,详细拟定出单元电路的性能指标,与前后级之间的关系,分析电路的组成形式。具体设计时,可以模仿传输的先进的电路,也可以进行创新或改进,但都必须保证性能要求。而且,不仅单元电路本身要设计合理,各单元电路间也要互相配合,注意各部分的输入信号,输出信号和控制信号的关系。 2.参数计算 为保证单元电路达到功能指标要求,就需要用电子技术知识对参数进行计算。例如,放大电路中各电阻值,放大倍数的计算;振荡器中电阻,电容,振荡频率等参数的计算。只有很好的理解电路的工作原理,正确利用计算公式,计算的参数才能满足设计要求。 参数计算时,同一个电路可能有几组数据,注意选择一组能完成电路设计要求的功能,在实践中能真正可行的参数。 计算电路参数时应注意下列问题: (1)元器件的工作电流,电压,频率和功耗等参数应能满足电路指标的要求; (2)元器件的极限参数必须留有足够充裕量,一般应大于额定值的1.5倍; (3)电阻和电容的参数应选计算值附近的标称值。 3.器件选择 (1)元件的选择 阻容电阻和电容种类很多,正确选择电阻和电容是很重要的。不同的电路对电阻和电容性能要求也不同,有解电路对电容的漏电要求很严,还有些电路对电阻,电容的性能和容量要求很高。例如滤波电路中常用大容量(100uF~3000uF)铝电解电容,为滤掉高频通常

电子电路设计与仿真工具

电子电路设计与仿真工具 我们大家可能都用过试验板或者其他的东西制作过一些电子制做来进行实践。但是有的时候,我们会发现做出来的东西有很多的问题,事先并没有想到,这样一来就浪费了我们的很多时间和物资。而且增加了产品的开发周期和延续了产品的上市时间从而使产品失去市场竞争优势。有没有能够不动用电烙铁试验板就能知道结果的方法呢?结论是有,这就是电路设计与仿真技术。 说到电子电路设计与仿真工具这项技术,就不能不提到美国,不能不提到他们的飞机设计为什么有很高的效率。以前我国定型一个中型飞机的设计,从草案到详细设计到风洞试验再到最后出图到实际投产,整个周期大概要10年。而美国是1年。为什么会有这样大的差距呢?因为美国在设计时大部分采用的是虚拟仿真技术,把多年积累的各项风洞实验参数都输入电脑,然后通过电脑编程编写出一个虚拟环境的软件,并且使它能够自动套用相关公式和调用长期积累后输入电脑的相关经验参数。这样一来,只要把飞机的外形计数据放入这个虚拟的风洞软件中进行试验,哪里不合理有问题就改动那里,直至最佳效果,效率自然高了,最后只要再在实际环境中测试几次找找不足就可以定型了,从他们的波音747到 F16都是采用的这种方法。空气动力学方面的数据由资深专家提供,软件开发商是IBM,飞行器设计工程师只需利用仿真软件在计算机平台上进行各种仿真调试工作即可。同样,他们其他的很多东西都是采用了这样类似的方法,从大到小,从复杂到简单,甚至包括设计家具和作曲,只是具体软件内容不同。其实,他们发明第一代计算机时就是这个目的(当初是为了高效率设计大炮和相关炮弹以及其他计算量大的设计)。 电子电路设计与仿真工具包括SPICE/PSPICE;multiSIM7;Matlab;SystemView;MMICAD LiveWire、Edison、Tina Pro Bright Spark等。下面简单介绍前三个软件。 ①SPICE(Simulation Program with Integrated Circuit Emphasis):是由美国加州大学推出的电路分析仿真软件,是20世纪80年代世界上应用最广的电路设计软件,

相关主题
文本预览
相关文档 最新文档