计控课程设计东北电力要点.docx

上传人:b****3 文档编号:4468475 上传时间:2022-12-01 格式:DOCX 页数:22 大小:977.21KB
下载 相关 举报
计控课程设计东北电力要点.docx_第1页
第1页 / 共22页
计控课程设计东北电力要点.docx_第2页
第2页 / 共22页
计控课程设计东北电力要点.docx_第3页
第3页 / 共22页
计控课程设计东北电力要点.docx_第4页
第4页 / 共22页
计控课程设计东北电力要点.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

计控课程设计东北电力要点.docx

《计控课程设计东北电力要点.docx》由会员分享,可在线阅读,更多相关《计控课程设计东北电力要点.docx(22页珍藏版)》请在冰豆网上搜索。

计控课程设计东北电力要点.docx

计控课程设计东北电力要点

课程设计报告

 

学生姓名:

学号:

学院:

自动化工程学院

班级:

题目:

计算机控制系统

 

指导教师:

冯玉昌张利辉职称:

讲师副教授

 

2014年6月12日

 

目录

1题目背景与意义-3-

2设计题目介绍-3-

2.1设计题目及要求-3-

2.2系统设计总体框图-3-

4系统硬件设计-4-

4.1单片机选型及依据-4-

4.1.1单片机最小系统电路-4-

4.1.2单片机I/O口介绍-4-

4.2A/D转换芯片选择及依据-4-

4.2.1AD转换电路-5-

4.2.2ADC0832芯片介绍-5-

4.3DA转换芯片选择及依据-5-

4.3.1DA转换电路-6-

4.3显示元件选择及依据-6-

4.3.1显示部分电路-6-

4.3.2LCD1602功能介绍-7-

4.4稳压电路-7-

4.5报警电路-7-

4.6按键电路-8-

4.7上位机通信电路-8-

4.7.1Max232介绍-8-

4.7.2COMPIM引脚介绍-9-

5系统软件设计-9-

5.1报警程序框图-9-

5.2LCD显示程序-10-

5.3主程序框图-11-

6结论-11-

参考文献-12-

附录-13-

总体电路图-13-

部分程序-14-

 

1题目背景与意义

在工业生产过程控制中,有许多模拟量参数需要测量,如温度、压力、流量等,然而处理器只能接收数字量信号,所以AD转换尤为重要,处理器接收到数字信号处理后需要送到执行机构,因此DA转换也十分重要,由此可见AD/DA转换广泛应用于各种控制场合。

本课程设计以《计算机控制系统》课程理论为基础,以其他电子类、计算机及接口类相关课程内容为辅助,在实践中锻炼学生的系统设计能力、理论应用能力、总结归纳能力以及自我学习能力,提高其实践能力、创新意识与创新精神。

2设计题目介绍

2.1设计题目及要求

设计一个基于单片机的具有A/D和D/A功能的信号测控装置。

要求该信号测控装置能够接入典型传感器、变送器信号,同时可输出标准电压/电流信号。

并满足抗干扰、通用性、安全性、性价比等原则性要求。

充分理解题目要求,确定方案;合理选择器件型号;用1号图纸1张或者采用Proteus软件画出电原理图;用1号图纸1张画出软件结构框图;写出设计报告,对课程设计成品的功能进行介绍及主要部分进行分析与说明;每天写出工作日记。

可将系统扩展为多路。

可在此系统中扩展键盘、显示(LCD/LED)、与上位机通讯功能;完成以上基本设计部分之后,可以运用Proteus仿真软件对设计结果进行相应的编程和仿真,调试测控系统并观察其运行结果(可以分部分完成)。

2.2系统设计总体框图

图1系统总体框图

本设计系统框图如上图所示,本设计以51单片机为核心,传感器检测到的模拟量信号送到AD转换器,AD转换器将模拟信号转换为数字信号送入单片机,单片机将数字信号与设定值比较,通LCD显示结果,声光报警判断是否正常工作数模转换输出模拟量进行控制。

由按键选择AD转换所需要的通道。

稳压电路提供电源电压。

4系统硬件设计

4.1单片机选型及依据

本设计单片机采用AT89C51单片机。

AT89C51单片机有4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

此单片机灵活性好,性价比好,是常用的控制芯片。

4.1.1单片机最小系统电路

图2最小系统电路图

4.1.2单片机I/O口介绍

P0口有三个功能:

数据总线、地址总线、一般I/O口使用,但内部没有上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口只做I/O口使用,其内部有上拉电阻。

P2口有两个功能:

作地址总线使用、一般I/O口使用。

P3口有特殊功能,也可作为一般I/O口使用。

4.2A/D转换芯片选择及依据

AD转换芯片采用ADC0832。

ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

芯片的模拟电压输入在0~5V之间。

转换速度快且稳定性能强。

独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。

通过DI数据输入端,可以轻易的实现通道功能的选择。

由于它体积小,兼容性好,性价比高,且转换精度可以满足要求,I/O资源占用较少,所以在本设计中采用此芯片。

4.2.1AD转换电路

图3AD转换电路图

4.2.2ADC0832芯片介绍

CS片选使能,低电平芯片使能。

CH0模拟输入通道0,或作为IN+/-使用。

CH1模拟输入通道1,或作为IN+/-使用。

GND芯片参考0电位(地)。

DI数据信号输入,选择通道控制。

DO数据信号输出,转换数据输出。

CLK芯片时钟输入。

VCC/REF电源输入及参考电压输入(复用)。

在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能。

到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。

从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据,直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。

从第11个字节的下沉输出DATA0。

随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。

最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。

4.3DA转换芯片选择及依据

DA转换芯片采用DAC0809,由于仿真软件中没有此芯片模型,仿真中用DAC0808代替。

DAC0809是8分辨率的D/A转换集成芯片。

与微处理器完全兼容。

这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。

D/A转换器由8位输入锁存器、8位D/A转换电路及转换控制电路构成。

此芯片可以满足精度要求,且价格便宜,控制简单,所以本设计中采用此芯片。

4.3.1DA转换电路

图4DA转换电路图

4.3显示元件选择及依据

显示部分采用LCD1602。

LCD1602是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块。

考虑到本设计中有通道选择功能,显示部分应该设计有提示信息,所以放弃使用数码管,且LCD1062子程序网上有很多,可以直接调用查询、写数据、写指令等程序,应用方便。

4.3.1显示部分电路

图5显示电路

4.3.2LCD1602功能介绍

4脚RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

5脚RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。

6脚E(或EN)端为使能(enable)端,高电平1时读取信息,负跳变时执行指令。

4.4稳压电路

为了使单片机能和芯片更稳定的工作,必须保证有一个稳定的电压输入。

所以接入一个+5V稳压电源。

7805为典型三端IC稳压集成电路,在输入端接入8V电压时,输出为+5V稳压。

图6稳压电路

4.5报警电路

报警电路设计简单,通过控制P1.7口电平变化控制喇叭,当超出上下限时,发出声音报警。

图7报警电路

4.6按键电路

由于本设计选择的AD转换芯片有两个通道,所以考虑设计按键实现通道的选择以及上下限制的修改。

图8按键电路

4.7上位机通信电路

为了能够完成和上位机之间的通信,必须通过max232这种类似的芯片进行电平转换,因为单片机和上位机之间的电平标准不相同。

图9上位机通讯电路

4.7.1Max232介绍

Max232MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。

第一部分是电荷泵电路。

由1、2、3、4、5、6脚和4只电容构成。

功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。

第二部分是数据转换通道。

由7、8、9、10、11、12、13、14脚构成两个数据通道。

13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。

8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。

TTL/CMOS数据从11引脚(T1IN)、10引脚(T2IN)输入转换成RS-232数据从14脚(T1OUT)、7脚(T2OUT)送到电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8引脚(R2IN)输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。

4.7.2COMPIM引脚介绍

COMPIM是常用于上位机连接的串口,其引脚定义如下:

1数据载波检测、2接收数据、3发送数据、4数据终端准备、5信号地、6数据设备准备好、7请求发送、8清除发送、9振铃指示。

5系统软件设计

5.1报警程序框图

图10报警子程序框图

5.2LCD显示程序

图11LCD显示子程序

5.3主程序框图

图12主程序框图

6结论

通过实验证明,本设计电路可以满足于测量的要求,转换精度高,且系统操作方便,能在广泛的领域运用并取得了良好的效果。

通过此次课程设计,我加深了对控制系统理解,将所学的知识灵活穿插并运用起来。

发现问题和解决问题的能力有了提高!

更好的掌握单片机的内部功能模块的应用以及A/D和D/A功能的实现。

通过这次课程设计,督促了我上网查资料,查书籍,巩固了以前的知识,了解和掌握了单片机应用系统的软硬件设计过程、方法及实现,锻炼了我的实践能力,对知识的理解能力。

参考文献

[1]姜学军.计算机控制技术.清华大学出版社,2006

[2]张毅刚,彭喜元,彭宇.单片机原理及应用.高等教育出版社.2012

[3]郝晓松,彭天好,刘佳东等.基于单片机的变转速液压测控系统的研究.矿山机械,2010,(6):

22-26

[4]冯显英,葛荣雨.基于数字温湿度传感器SHT11的温湿度测控系统.自动化仪表,2006,27

(1):

59-61

 

附录

总体电路图

图13总电路图

部分程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#definedelay4us(){_nop_();_nop_();_nop_();_nop_();}

//AD0832引脚定义

sbitCS=P1^0;

sbitCLK=P1^1;

sbitDI=P1^2;

sbitDO=P1^6;

sbitP1_7=P1^7;

//LCD1602

sbitRS=P1^5;

sbitRW=P1^4;

sbitE=P1^3;

////

sbitkey1=P3^5;

sbitkey2=P3^6;

///

sbitK1=P3^4;

sbitK2=P3^2;

sbitk3=P3^7;

uchari;

intd,ad,m;

inta,b,shangxian,xiaxian;

a=45;

b=220;

ucharDisplay_Buffer[]="0.00v";

ucharDisplay_Chanel[]="0or1";

ucharcodeLine1[]="TengHao:

";

ucharcodeselect[]="xuanzetongdao";

voidDelayMS(uintms)

{

uchart;

while(ms--)

for(t=0;t<120;t++);

}

bitLCD_Busy_Check()

{

bitresult;

RS=0;RW=1;E=1;delay4us();

result=(bit)(P0&0x80);

E=0;

returnresult;

}

voidLCD_Write_Command(ucharcmd)

{

while(LCD_Busy_Check());//判断LCD是否忙碌

RS=0;RW=0;E=0;_nop_();_nop_();

P0=cmd;delay4us();

E=1;delay4us();E=0;

}

//----------------------------------------写LCD命令

//----------------------------------------设置LCD显示位置

voidSet_Disp_Pos(ucharpos)

{

LCD_Write_Command(pos|0x80);

}

voidLCD_Write_Data(uchardat)

{

while(LCD_Busy_Check());

RS=1;RW=0;E=0;

P0=dat;delay4us();

E=1;delay4us();E=0;

}

voidLCD_Initialise()

{

LCD_Write_Command(0x38);DelayMS

(1);

LCD_Write_Command(0x0c);DelayMS

(1);

LCD_Write_Command(0x06);DelayMS

(1);

LCD_Write_Command(0x01);DelayMS

(1);

}

ucharGet_AD_Result_0()

{

uchari,dat1=0,dat2=0;

//起始控制位

CS=0;CLK=0;

DI=1;_nop_();_nop_();_nop_();_nop_();

CLK=1;_nop_();_nop_();_nop_();_nop_();

//第一个下降沿之前,DI=1模式中的单端输入方式

CLK=0;DI=1;_nop_();_nop_();_nop_();_nop_();

CLK=1;_nop_();_nop_();_nop_();_nop_();

//第二个下降沿之前,设DI=0/1,选择CH0/CH1

CLK=0;DI=0;_nop_();_nop_();_nop_();_nop_();//DIO=CH

CLK=1;_nop_();_nop_();_nop_();_nop_();

//第三个下降沿之前,设DI=1

CLK=0;DI=1;_nop_();_nop_();_nop_();_nop_();

//第4-11,共八个下降沿读数据(MSB->LSB)

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

{

CLK=1;_nop_();_nop_();

CLK=0;_nop_();_nop_();

dat1=(dat1<<1)|DO;

}

//第11-18,共8个下降沿读数据(LSB->MSB

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

{

dat2=dat2|((uchar)(DO)<

CLK=1;_nop_();_nop_();

CLK=0;_nop_();_nop_();

}

CS=1;

//return(dat1==dat2)?

dat1:

0;

return(dat2);

}

ucharGet_AD_Result_1()

{

uchari,dat1=0,dat2=0;

//起始控制位

CS=0;CLK=0;

DI=1;_nop_();_nop_();_nop_();_nop_();

CLK=1;_nop_();_nop_();_nop_();_nop_();

//第一个下降沿之前,设DI=1/0

//选择单端/差分(SGL/DIF)模式中的单端输入方式

CLK=0;DI=1;_nop_();_nop_();_nop_();_nop_();

CLK=1;_nop_();_nop_();_nop_();_nop_();

//第二个下降沿之前,设DI=0/1,选择CH0/CH1

CLK=0;DI=1;_nop_();_nop_();_nop_();_nop_();//DIO=CH

CLK=1;_nop_();_nop_();_nop_();_nop_();

//第三个下降沿之前,设DI=1

CLK=0;DI=1;_nop_();_nop_();_nop_();_nop_();

//第4-11,共八个下降沿读数据(MSB->LSB)

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

{

CLK=1;_nop_();_nop_();

CLK=0;_nop_();_nop_();

dat1=(dat1<<1)|DO;

}

//第11-18,共8个下降沿读数据(LSB->MSB?

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

{

dat2=dat2|((uchar)(DO)<

CLK=1;_nop_();_nop_();

CLK=0;_nop_();_nop_();

}

CS=1;

//return(dat1==dat2)?

dat1:

0;

return(dat2);

}

//如果MSB->LSB和LSB->MSB读取结果相同,则返回读取的结果,否则返回0}

//----------------------------------------获取AD转换结果(0通道)

voidAD0832_0()

{

ad=Get_AD_Result_0();

d=ad*500.0/255;

Display_Buffer[0]=d/100+'0';

Display_Buffer[2]=d/10%10+'0';

Display_Buffer[3]=d%10+'0';

}

voidAD0832_1()

{

ad=Get_AD_Result_1();

d=ad*500.0/255;

Display_Buffer[0]=d/100+'0';

Display_Buffer[2]=d/10%10+'0';

Display_Buffer[3]=d%10+'0';

}

voidLCD1602()

{

Set_Disp_Pos(0x01);

i=0;

while(Line1[i]!

='\0')

LCD_Write_Data(Line1[i++]);

Set_Disp_Pos(0x46);

i=0;

while(Display_Buffer[i]!

='\0')

LCD_Write_Data(Display_Buffer[i++]);

}

voidDA0808_0()

{

P2=ad;

}

voidDA0808_1()

{

P2=ad;

}

voidSay_hello()

{

Set_Disp_Pos(0x01);

i=0;

while(select[i]!

='\0')

LCD_Write_Data(select[i++]);

Set_Disp_Pos(0x46);

i=0;

while(Display_Chanel[i]!

='\0')

LCD_Write_Data(Display_Chanel[i++]);

}

voidChanel_0()

{

LCD_Write_Command(0x01);

AD0832_0();

LCD1602();

DA0808_0();

}

voidChanel_1()

{

LCD_Write_Command(0x01);

AD0832_1();

LCD1602();

DA0808_1();

}

voidkey_ru()

{if(k3==1)

if(INT1==0)

if(K1==0)

a=a+20;

if(K2==0)

b=b-20;

if(k3==0)

if(INT1==0)

if(K1==0)

a=a-20;

if(K2==0)

b=b+20;

}

voidBaojing()

{

intm;

intshangxian,xiaxian;

m=ad;

key_ru();

shangxian=m-b;

xiaxian=a-m;

if(shangxian>0||xiaxian>0)

P1_7=1;

else

P1_7=0;

}

voidKey_Scan()

{

if(key1==0)

{

DelayMS(5);

if(key1==0)

{

Chanel_0();

}

}

if(key2==0)

{

DelayMS(5);

if(key2==0)

{

Chanel_1();

}

}

}

voidmain()

{

key1=1;key2=1;

LCD_Initialise();

DelayMS(10);

Say_hello();

while

(1)

{

Key_Scan();

Baojing();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1