圣龙扬特-AVR电子

标题: 有人用bascom驱动过北京迪文DGUS屏的吗? [打印本页]

作者: hukai    时间: 2013-10-17 12:53
标题: 有人用bascom驱动过北京迪文DGUS屏的吗?
   我想用M16驱动迪文的DGUS屏,搞了好久没成功,有成功的吗?谢谢!

作者: 箫天    时间: 2013-10-17 19:07
肯定能驱动,把迪文DGUS屏的接口协议发上来。
作者: hukai    时间: 2013-10-17 19:50
指令说明,谢谢!

作者: hukai    时间: 2013-10-17 19:53
http://www.dwin.com.cn/down/html/?56.html 这是开发指南,文件太大附件不能上传,请你去迪文网站下,先谢了!
作者: 箫天    时间: 2013-10-17 21:23
大概看了看,好象没什么难度。
作者: hukai    时间: 2013-10-17 21:34
现在能上传数据到屏,但读屏变量不行,“input”;“inputhex”;”inkey“都不行,我搞来了好几天,水平不行。
作者: 箫天    时间: 2013-10-17 22:00
按2进制方式读,你用的3个函数都不行。
一种方法是用var = ISCHARWAITING()进行判断,根据返回值var判断是否有数据。如果有,用inkey读出。
If there is no character waiting, a zero will be returned.
If there is a character waiting, a one (1) will be returned.
另外一种方法是用串口接收中断。

inkey读时,变量要为byte型,不能为string型。


作者: hukai    时间: 2013-10-17 22:03
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 57600
$hwstack = 32
$swstack = 10
$framesize = 40

Dim A As Word , B As Word , C As Byte , T As Word ,

Do

   Waitms 200
   Incr T
   If T > 900 Then T = 0


   If T <= 255 Then C = &H00
   If T > 255 And T < 511 Then C = &H01
   If T > 511 And T < 767 Then C = &H02
   If T > 767 And T < 1023 Then C = &H03

   Waitms 5
   Printbin &H5A ; &HA5 ; &H05 ; &H82 ; &H00 ; &H10 ; C ; T '向0x0010写数据

Loop
End
那指令说明上的帧头描述是错的。这是上传数据到屏的部分程序,读屏变量不知怎么下手,屏上输出数据是十六进制数据”5A A5 06 83 00 13 01 00 01”。谢谢你能帮我!
作者: 箫天    时间: 2013-10-17 22:45
访问数据存储器、访问控制寄存器,PDF里写得很清楚了。
作者: hukai    时间: 2013-10-17 23:33
我现在的最大问题是怎样读出完整的十六进制变量,我用迪文提供的串口连接线直接可以读出“5A A5 06 83 00 13 01 00 01” 00 01就是键值,不需要访问控制寄存器的。
作者: 箫天    时间: 2013-10-18 06:45
这是读数据存储区返回的应答数据,从0013地址开始读一个数据,返回0001。
还是不明白你你现在的最大问题,完整的十六进制变量是什么意思。
作者: hukai    时间: 2013-10-18 08:22
可能我描述的不够清楚,我要说的是怎样去读这存储区的数据。
作者: 箫天    时间: 2013-10-18 08:40
先写读数据区命令串,然后等待屏返回的回应数据。
作者: hukai    时间: 2013-10-18 09:13
屏返回的是“5A A5 06 83 00 13 01 00 01” 这是用电脑串口读到的,问答题是我怎样读出这些,用哪个函数,谢谢!
作者: 箫天    时间: 2013-10-18 09:51
在7楼跟你说过了。
按2进制方式读,你用的3个函数都不行。
一种方法是用var = ISCHARWAITING()进行判断,根据返回值var判断是否有数据。如果有,用inkey读出。
If there is no character waiting, a zero will be returned.
If there is a character waiting, a one (1) will be returned.
另外一种方法是用串口接收中断。

inkey读时,变量要为byte型,不能为string型。
作者: hukai    时间: 2013-10-18 10:33
你好!试过“var = ISCHARWAITING()”不行,屏返回的是“5A A5 06 83 00 13 01 00 01”,而我只要“00 01”。
我给你发消息了,谢谢!
作者: 箫天    时间: 2013-10-18 11:20
你需要再细看看PDF。
怎么处理数据是要编程序实现的。
作者: gxlwq    时间: 2014-1-4 20:56
var = ISCHARWAITING()用数组来做。5A A5 06 83 00 13 01 00 01做九个数组来接收可以




欢迎光临 圣龙扬特-AVR电子 (http://avr.cnta.net/) Powered by Discuz! X2.5