单片机接口设计(单片机接口设计a)

4747 305 2022-11-21


本文目录一览:

请简述单片机系统的设计过程是怎样的

单片机应用系统设计分为硬件设计与软件设计两部分及系统调试三个部分,大致过程如下:一、硬件电路设计1、根据任务需求规划确定单片机类型及外围接口电路方案;2、根据方案设计具体电路。二、软件设计1、根据目标任务的功能需求,结合硬件电路控制方式,规划设计软件功能模块;2、将功能模块细化成流程图;3、根据流程图编写程序代码;4、将编译后的目标代码下载到实物单片机或虚拟单片机进行软件仿真调试;三、系统调试1、将初调成功的目标的代码下载到单片机目标试验板进行软硬件联调及功能验证;2、验证成功符合设计要求,就可以进入小批量测试了。


单片机接口电路设计


微压力传感器信号是控制器的前端,它在测试或控制系统中处于首位,对微压力传感器获取的信号能否进行准确地提取、处理是衡量一个系统可靠性的关键因素。后续接口电路主要指信号调节和转换电路,即能把传感元件输出的电信号转换为便于显示、记录、处理和控制的有用电信号的电路。由于用集成电路工艺制造出的压力传感器往往存在:零点输出和零点温漂,灵敏度温漂,输出信号非线性,输出信号幅值低或不标准化等问题。

电桥放大电路

由于所测出的微压力传感器两端的电压信号较弱,所以电压在进行A/D 转换之前必须经过放大电路的放大(见图2)。INA118 由3 个运算放大器组成差分放大结构,内置输入过压保护,且可通过外置不同大小的电阻实现不同的增益(从1 到1 000),因而应用范围很广。

图2 电桥放大电路

通过在脚1 和脚8 之间外接一电阻Rg 来实现不同的增益,该增益可从1 到1 000 不等。电阻Rg 为式中G 为增益。由于Rg 的稳定性和温度漂移对增益有影响,因此,在需要获得高精度增益的应用中对Rg 的要求也比较高,应采用高精度、低噪声的金属膜电阻。此外,高增益的电路设计中的Rg 值较小,如G=100时的Rg 值为1.02 kΩ;G=1 000 时的Rg 值为50.5Ω。

AD7715 接口电路

为了实现对微压力的实时测量,使用 16 位的AD7715 对输出电压进行采样测量,其中AD780 提供2.5V 高精度基准电压。P3.1 脚提供了AD 工作所需的时钟,P1.4 和P1.5 脚接收和发送通讯数据,P1.6 是片选信号,P1.7 接DRDY ,AT89S52 可以通过查询P1.7 的状态来判断是否可以读取AD 转换结果。A/D 接口电路如图3所示。

基于单片机的usb接口设计论文难做吗

视个人能力而定

如果单片机带usb口(协议)的,很好搞,调用固件库就好了,如果没有,用什么51的单片机搞,搞你个几个月是最少的

如果你符合以下条件就不难,懂得C编程;会看SPEC;会用开发环境;有单片机开发板(附带各种例程);学过单片机。其中第5条不是必须的,很多没学过只是感兴趣的也可以做得很好!

单片机串行通信接口设计《跪求》

程序不全,也是我前一些日子编写通讯用的一些代码,你适当修改或添加一下就应该可以了

这是单片机通讯的部分程序,

org 0000H

AJMP START

org 0023h

AJMP SERIAL ;

ORG 30H

START:

mov SP,#5fh ;

mov TMOD,#20h ;T1: 工作模式2

mov PCON,#80h ;SMOD=1

mov TH1,#0FDH ;初始化波特率(参见表)

mov SCON,#50H;Standard UART settings

MOV R0,#0AAH ;准备送出的数

mov p1,#00h

mov p2,r0

SETB REN ;允许接收

SETB TR1 ;T1开始工作

SETB EA ;开总中断

SETB ES ;开串口中断

LOOP:

JNB P3.3,TX

;JNB P3.3,TX

mov p3,#0ffh

LJMP LOOP

SERIAL:

PUSH PSW

PUSH SP

JB TI,bk

MOV A,SBUF

MOV P1,A

CLR RI

pop sp

pop psw

RETI

bk:

pop sp

pop psw

reti

TX:

MOV R7,#255

D1:  MOV R6,#255

DJNZ R6,$

MOV R6,#255

DJNZ R6,$

DJNZ R7,D1

MOV A,R0

CPL A

MOV R0,A

mov p2,r0

mov p2,a

;clr ea

MOV SBUF,A

JNB TI, $

CLR TI

; setb ea

LJMP LOOP

DELAY:

MOV R7,#255

DJNZ R7,$

RET

END

上位机用VB,简单一些,或者直接用串口调试工具,下载的很多的,部分代码如下

Private Sub Command1_Click()

'打开串口程序------------------------------------------

If MSComm1.PortOpen = False Then

Dim com As Integer   '设置串口combo的选项值

com = Combo1(0).ListIndex + 1

'设置速率--------------------------------------------

Dim BPS As String

Select Case Combo2(1).ListIndex

Case 0

BPS = "300"

Case 1

BPS = "600"

Case 2

BPS = "1200"

Case 3

BPS = "2400"

Case 4

BPS = "4800"

Case 5

BPS = "9600"

Case 6

BPS = "19200"

Case 7

BPS = "38400"

End Select

'设置校验位--------------------

Dim JY As String

Select Case Combo3(2).ListIndex

Case 0

JY = "N"

Case 1

BPS = "O"

Case 2

BPS = "E"

End Select

'数据位

Dim BIT As String

Select Case Combo3(2).ListIndex

Case 0

BIT = "8"

Case 1

BIT = "7"

Case 2

BIT = "6"

Case 3

BIT = "5"

Case 4

BIT = "4"

End Select

'设置停止位---------------------

Dim STOP_BIT As String

Select Case Combo4(3).ListIndex

Case 0

STOP_BIT = "1"

Case 1

BIT = "2"

End Select

Dim CANSHU As String

CANSHU = BPS  ","  JY  ","  BIT  ","  STOP_BIT   '设置seting参数

MSComm1.CommPort = com       '使用COM

MSComm1.Settings = CANSHU         '设置通信口参数:串口号,波特率,校验,位数据位,位停止位

MSComm1.InBufferSize = 40  '设置缓冲区接收数据为40字节

MSComm1.OutBufferSize = 2   '设置MSComm1发送缓冲区为2字节

MSComm1.InputLen = 4 '设置Input一次从接收缓冲读取字节数为2

MSComm1.RThreshold = 2  '设置接收一个字节就产生OnComm事件

Image1.Picture = LoadPicture("f:\2.bmp") '改变串口状态图表

MSComm1.InputMode = comInputModeBinary  '接收数据为二进制数据

MSComm1.SThreshold = 2   '设置Output 一次从发送缓冲读取字节数为1

MSComm1.RThreshold = 2   '设置接收2个字节产生OnComm事件

MSComm1.PortOpen = 1 '打开串口

If Err Then '错误处理

MsgBox "串口通信无效"

Exit Sub

End If

Label3.ForeColor = HC000     '状态指示

Label3.Caption = "com"  com  ","  CANSHU

Command1.Caption = "串口已打开"

MSComm1.OutBufferCount = 0              '清空发送缓冲区

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

'关闭串口程序------------------------------------------------------

Else

Image1.Picture = LoadPicture("f:\1.bmp")   '改变串口状态图表

MSComm1.PortOpen = False

Command1.Caption = "串口已关闭"

Label3.ForeColor = HC0

Label3.Caption = "无串口打开"

End If

Private Sub Form_Load()

'设置串口编号-------

Combo1(0).AddItem "COM1", 0

Combo1(0).AddItem "COM2", 1

Combo1(0).AddItem "COM3", 2

Combo1(0).AddItem "COM4", 3

Combo1(0).AddItem "COM5", 4

Combo1(0).ListIndex = 0

'设置串口速率-------

Combo2(1).AddItem "300bps", 0

Combo2(1).AddItem "600bps", 1

Combo2(1).AddItem "1200bps", 2

Combo2(1).AddItem "2400bps", 3

Combo2(1).AddItem "4800bps", 4

Combo2(1).AddItem "9600bps", 5

Combo2(1).AddItem "19200bps", 6

Combo2(1).AddItem "38400bps", 7

Combo2(1).ListIndex = 5

'设置校验位-------

Combo3(2).AddItem "无校验", 0

Combo3(2).AddItem "奇校验", 1

Combo3(2).AddItem "偶校验", 2

Combo3(2).ListIndex = 0

'设置串口速率-------

Combo4(3).AddItem "8", 0

Combo4(3).AddItem "7", 1

Combo4(3).AddItem "6", 2

Combo4(3).AddItem "5", 3

Combo4(3).AddItem "4", 4

Combo4(3).ListIndex = 0

'设置串口速率-------

Combo5(4).AddItem "1", 0

Combo5(4).AddItem "2", 1

Combo5(4).ListIndex = 0

End Sub

Private Sub Mscomm1_Oncomm()

'接收两个byte的数据,并转化为对应的数据

Dim aa(1) As Byte '按byte转化二进制数据,根据接收的byte确定数组的长度

Dim a As Variant '接收二进制传进来的数据

Dim i As Double  ' 第一个byte转化为整型数值

Dim j As Double  '第二个byte转化为整型数值

Dim tol As Double  '两byte组合成的16bit的数值,一位正负标志位

Dim K As Integer    '第一个byte的第一位,符号标志位

Dim B As Integer  '符号位

'...通讯事件发生

Select Case MSComm1.CommEvent

Case comEvReceive '...有接受事件发生

'数据转换

a = MSComm1.Input '...接受显示数据

Text1.Text = Text1.Text  a

Text3.Text = tol '输出显示

Label2.Caption = tol  "V"

MSComm1.InBufferCount = 0 '...清空输入寄存器

End Select

End Sub



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:app软件测试的工具有哪些(软件测试app测试方法)
下一篇:Python安装Jupyter Notebook配置使用教程详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~