ARM芯片应用一例

时间:2022-10-21 01:45:31

ARM芯片应用一例

中图分类号:F870 文献标识码:A 文章编号:1009-914X(2015)13-0035-01

本单位是专业培训机构。在为学员提供培训的同时还要提供一些服务,如提供热水等。但由于学员人数不是固定的,学习时间也不定,所以原有设备只能提供满箱水位和固定温度,这样学员少时就造成了浪费。本嵌入式ARM应用就是通过总服务,根据学员人数具体要求通过总台PC上位机控制提供合理的水温和水量.

一、系统的主要组成与功能

1 工作示意图(略)

其中控制器包含下位机、振荡电路、整流放大电路等。它的工作原理是当上位机决定水位后通过串口通信传给下位机并控制进水阀打开进水,同时接通电原加热。当达到设定的水位,进水阀关闭,加热温度达到设定温度关断电原。这样循环工作就达到了设计要求。

2 振荡电路

振荡电路由555集成块组成间接反馈式多谐振荡电路,当电容C1进入充电过程时,它的充电电阻为Ra+Rb,相应的充电时间常数为(Ra+Rb)C1,当电容C1进入放电过程时,它的放电电阻为Rb,相应的放电时间常数为RbC1。因比充、放电时间常数是不相等的。电路振荡频率的计算也跟着发生变化,由于电容充电与放电的通路不完全相同,因此振荡公式变成了:

T1=0.693(Ra+Rb)Ca1

T2=0.693RbCa1

T=T1+T2=0.693(Ra+2Rb)C1

f=1.443/(Ra+2Rb)C1

当Ra=10K、Rb=20K、C1=100P:

f=2866k用SBT16示波器实测为100K。

3 整流放大电路

脉冲信号源经测量平板电容到AA,经D1、D2、C11、R1及R2匹配电阻组成的整流电路,其中D1、D2为高频二极管、C11为0.1UF、R1为10K。经整流过的信号加到运放OP07第二脚负输端并由反馈电阻R3决定放大倍数,其中D3、D4为保护管,R3为反馈电阻1MΩ。

4 下位机

下位机采用Samsung公司的ARM7,3SC44B0芯片。

本设计主要使用8 通道10 位ADC中AIN0、AIN1,两通道.分别通过热敏元件和平板电容变化来测量电压变化,从而达到控制目的.

5 通信模块本通讯模块主要包括了电源、232电平转换、485电路三部分。本电路的232电平转换电路直接使用MAX232集成电路,485电路采用了MAX485集成电路。

二、下位机程序

本下位机的程序是在ADS1.2集成开发境下编译的,并通过外购JTAG程序下载器,并有生产厂商提供Flash Programmmmer下载软件和芯片S3C44b0提供商提供配置文件(文件包).

int main(void)

//主程序

{U8 H,C,i;

int temp,temp1,temp2,temp3;

int a0=0,a1=0,b0=0,b1=0;

sysUtilsSetPllValue (24, 6, 1);//设置片内倍频器

IoConfig ();//设置端口

ADC_Init() ;//模数转换初始化

console_init (115200);//设置端口波特率

while(1)

{a0 = Read_Adc(0);//ADC? 0通道进行转换,返回转换的数据

a1 = Read_Adc(1);//ADC ? 1通道进行转换,返回转换的数据

sysUtilsUSecDelay(2000);

temp= a0;

UartReceive(xh);

temp1=xh;

if(temp1>=temp)

{ rPDATB=0x1FF} //芯片20脚输出高电平控制进水阀开

if(temp1

{ rPDATB=0x0FF} //芯片20脚输出高电平控制进水阀并

Temp2=a1;

UartReceive(yv);

Temp3=yv;

if(temp3>=temp2)

{ rPDATB=0x0BF} //芯片19脚输出高电平控制进水阀开

if(temp3

{ rPDATB=0x03F} //芯片19脚输出高电平控制进水阀并

b0=a0H;

b1=a1;

putch(b0);

putch(b1);

}

}

三、上位机程序

MSComm1.Settings=“115200,N,8,1”‘波特率115200bit/s,无校验,‘8位数据,1位停止位

mPort=1??‘设定串口,1为com1

MSComm1.InBufferSize=8?‘设置返回接收缓冲区的大小,以字符为单位

MSComm1.OutBufferSize=2

If MSComm1.PortOpen=True Then MSComm1.PortOpen=False’关串口

MSComm1.RThreshold=4‘设置并返回产生oncomm事件的字符数,

以字符为单位,RThreshold?‘为1,接收缓冲区收到每一个字符都会使MSComm1控件产生OnComm事件.

MSComm1.SThreshold=1‘

MSComm1.InputLen=0‘设置从接收缓冲区读取的字数,为0读取整个缓冲区

MSComm1.InputMode=comInputMode Text?‘以文本方式接收

If MSComm1.PortOpen=Fales Then MSComm1.PortOpen=True

MSComm1.InBufferCount=0?‘清空接收区

Me.Caption=“水量.温度”,双击窗体内的[MSCoomm]控件,

向[Private Sub MSComm1- OnComm()]函数中添加接牧数据代码.

Private Sub MSComm1- OnComm()

Dim rec As String

Dim B As Variant

Select Case mEvent

Case comEvREeceive

rec= MSComm1.Input

B=Right(rec,1)‘截rec数据右边字符

If(B=C)Then Text1.Text=rec

If(B=H)Then Text2.Text=rec

MSComm1.InBufferCount=0 ‘清空接收缓冲区

End Select,直接按[5]键运行程序.用通讯模块连接上位机和下位机.

参考文献

[1]单片计算机及其应用,白驹珩等编著,成都:电子科技大学出版社,1994

[2]ARM嵌入式应用技术基础,刘凯,主编,清华大学出版社

[3]ARM嵌入式应用技术应用,刘凯,编著,清华大学出版社

[4]ARM嵌入式C编程标准教程,侯殿有,才华,编著,人民邮电出版社

[5]ARM嵌入式系统软件开发实例(―),周立功等编著,北京航空航天大学出版社

[6]Visual Basic串口通信及编程实例,张辉,李荣利,王和平,著,化学工业出版社

[7]Visual Basic案例开发集锦.周峰等编著,电子工业出版社.

上一篇:基于GIS的重庆市县域土地利用变化研究 下一篇:基于网络游记的淮安旅游形象调查研究