精灵 发表于 2014-4-13 14:35:51

【moz8-2014】用单片机改控,学习14通改装件制作过程哈!转

本帖最后由 精灵 于 2014-12-20 22:05 编辑


试一试改控,从头开始,不说改个14通呵,先整个8通带混控哈(目标而以,能实现不再论哈)

今天试验成功了M16作PPM的编码部分,用的是time1计数器的笨办法,FASTAVR一边学一边用,总算搞定,接4VF的并口模拟线

可以在用按键控制摇杆的动作,1号键切换通道,2号键增加值,3号键减少,还没有加电位器AD部分.

LCD1602第一行显示通道号,第二行显示当前通道舵机值(从500到1500)单位us,呵呵!感觉还是比较费劲



http://www.5irc.com/data/attachment/album/2007/20070327235123313.jpg



回头加AD部份了!!



程序很乱!改得很乱哈

'//////////////////////////////////////////////////////////////

$Device= m16 ' used device

$Stack = 125' stack depth

$Clock = 8' adjust for used crystal

$Timer1=Timer, Prescale=8

$Lcd =PORTD.4 , RS = PORTD.2 , EN = PORTD.3, 16, 2

$Key Rows=PORTB&h07

$Def TestPin0=PORTA.0

$Def TestPin1=PORTA.1

$Source= On

Declare Interrupt Ovf1()

Dim Testch(18) As Word

Dim akey As Byte ,achg As Byte,i As Byte,j As Byte,tempw As Word,temp As Byte

Dim tempy As Word

Testch(0)=500:Testch(1)=800:Testch(2)=500:Testch(3)=1000:Testch(4)=500:Testch(5)=1000

Testch(6)=500:Testch(7)=1000:Testch(8)=500:Testch(9)=1000:Testch(10)=500:Testch(11)=1000

Testch(12)=500:Testch(13)=1000:Testch(14)=500:Testch(15)=1000:Testch(16)=500

Testch(17)=7500

i=0:akey=0:achg=0

Set DDRA.0

Set DDRA.1

TestPin0=1:TestPin1=0

Start Timer1

Enable Ovf1

Enable Interrupts

InitLcd( )

Do

          Cls                                             '

    WaitMs 5                                          '

    Cursor Off

    Locate1, 1                                    '                                     '                                                   

    Lcd “12345678“                                 '

    Locate 2 , 1

    Lcd Testch(achg+achg+1)

    Cursor On:Cursor blink

    Locate 1,achg+1

'//////////////////////////////////////////

      akey=Key():temp=achg+achg+1

      If akey=1 Then

                Incr achg

                If achg=8 Then

                        achg=0

                End If

      End If

'/////////////////////////////////////////

      If akey=2 Then

            Testch(temp)=Testch(temp)+9

                If Testch(temp)>1500 Then

                        Testch(temp)=1500

                End If

      End If

'/////////////////////////////////////////

      If akey=4 Then

                Testch(temp)=Testch(temp)-9

                If Testch(temp)<500 Then

                        Testch(temp)=500

                End If

      End If

      tempw=20000-500*9

      For j=0 To 7

            temp=j+j+1

                tempw=tempw-Testch(temp)

      Next

      testch(17)=tempw

      WaitMs 100

                  

Loop

End



'//////////////////////////////////////////////////////////////

Interrupt Ovf1(), Save 4

    Toggle Testpin0:Toggle TestPin1

    tempy=65520-testch(i)

    TCNT1H= Shift(Right,8,tempy)

    TCNT1L=tempy

      Incr i

      If i=18 Then

                i=0

      End If

End Interrupt





今天总算赶上了一点进度,加上了4个通道,先测试波形很稳,在电脑上用G2测试,可以哈!可以飞cap232了,很灵活的飞机,应该说不跳舵哈!

LCD上显示当前通道的数值,个位数上有跳动,应该是正常的,范围从500~1500us。每个AD上接了104P的电容滤波

其它什么都没加,用的是华科尔4号的电位器。三和VG400还没舍得拆,等方案成熟再改。

http://photo.5imx.com/up/0703/05/2007422318370.jpg









接RD6000的高频头发射信号,感觉还行,比较稳。

http://photo.5imx.com/up/0703/05/2007422318371.jpg



测试平台,我的慢飞P51机身,加滑翔机机翼,舵机声音大,有点小动静都听都见

http://photo.5imx.com/up/0703/05/2007422318382.jpg



后来出现一次,油门只要一动,其它通道都抖,后来检查了一下,是虚焊哈!:em15: :em15:

今天的程序还是乱哈!!

'//////////////////////////////////////////////////////////////

$Device= m16 ' used device

$Stack = 125' stack depth

$Clock = 8' adjust for used crystal

$Timer1=Timer, Prescale=8,CompareA=Toggle,Clear

$Lcd =PORTC.4 , RS = PORTC.2 , EN = PORTC.3, 16, 2

$Key Rows=PORTB&h07

$Def TestPin0=PORTD.5

$Source= On

Declare Interrupt


飞哥 发表于 2014-4-13 16:43:15

飞哥能多点图片吗

理想 发表于 2014-4-13 16:43:19

理想学习了

寒心 发表于 2014-4-14 10:32:17

达人 发表于 2014-4-15 01:32:07

达人到此一顶

云雀 发表于 2014-4-15 01:33:44

云雀学习了

想起 发表于 2014-4-15 16:27:10

想起能在详细点吗

coss 发表于 2014-4-15 21:57:30

coss到此一顶

九千里 发表于 2014-4-16 02:53:07

九千里顶你到天亮

fpv神人 发表于 2014-4-16 08:02:30

精灵希望我们成为朋友

蓝天 发表于 2014-4-16 13:14:01

页: [1]
查看完整版本: 【moz8-2014】用单片机改控,学习14通改装件制作过程哈!转