一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: goodcode
收起左侧

[时钟DIY] 论坛5元一片的FutabaM11BT222A DVD VFD测试资料

[复制链接]
发表于 2015-1-6 11:33 | 显示全部楼层
goodcode 发表于 2015-1-2 22:25
买这个的人不少看样折腾的还不多难道都等着拆件

我收到的应该是比较早的店主发针脚图之前就开始折 ...

也就是说,stb和clk都经过了反向?
 楼主| 发表于 2015-1-6 16:25 | 显示全部楼层
kazuyuki 发表于 2015-1-6 11:33
也就是说,stb和clk都经过了反向?

是的 数据针脚经过两次反向所以没变化

 楼主| 发表于 2015-1-6 16:28 | 显示全部楼层
这两天忙几天没弄了,来张位定义的图
VFD位定义.jpg

评分

参与人数 1一乐金币 +4 收起 理由
bbpp0147 + 4 很给力!

查看全部评分

发表于 2015-1-14 05:34 | 显示全部楼层
全亮啊.后边变压器会叫吧,一定会吧,
听说把本站有此功能,为了支持站长,求打赏,哈哈
发表于 2015-1-14 08:35 | 显示全部楼层
yjfxue 发表于 2015-1-14 05:34
全亮啊.后边变压器会叫吧,一定会吧,

VFD确实会叫,请教下是什么原因
 楼主| 发表于 2015-1-14 15:31 | 显示全部楼层
yjfxue 发表于 2015-1-14 05:34
全亮啊.后边变压器会叫吧,一定会吧,

全量最高亮度 声音还好很小的
不过初始化错误时会叫 声音比较大
电流实测 VFD整个板 0.50A 最高亮度 低亮度时 0.40A


 楼主| 发表于 2015-1-14 21:30 | 显示全部楼层
PT6311 驱动
编译器 SDCC
89C52RC 11.0592MHz 下测试ok

PT6311.h
  1. /*
  2. 说明: PT6311 驱动
  3. */
  4. #ifndef PT6311_H_INCLUDED
  5. #define PT6311_H_INCLUDED

  6. #include <8052.h>
  7. #include <compiler.h>
  8. #include <stddef.h>
  9. #include <stdint.h>
  10. #include <stdbool.h>

  11. #ifndef _nop_
  12. #define _nop_() __asm__ ("nop")
  13. #endif

  14. #define WaitSome() _nop_()

  15. /*
  16. Data Input Pin (数据输入引脚)
  17. This pin inputs serial data at the rising edge of the shift clock (starting from the lower bit).
  18. 此管脚在移位时钟的上升沿输入串行数据(从低位开始)。
  19. */
  20. #define PT_DIN P1_2
  21. #define PTDinHigh() (PT_DIN=1)
  22. #define PTDinLow() (PT_DIN=0)
  23. /*
  24. Clock Input Pin (时钟输入引脚)
  25. This pin reads serial data at the rising edge and outputs data at the falling edge.
  26. 该引脚在上升沿读取串行数据,并在下降沿输出数据.
  27. */
  28. #define PT_CLK P1_1
  29. #define PTClkHigh() (PT_CLK=0)
  30. #define PTClkLow() (PT_CLK=1)
  31. /*
  32. Serial Interface Strobe Pin (串行接口选通针)
  33. The data input after the STB has fallen is processed a command. When this in is “HIGH”, CLK is ignored.
  34. 在STB之后的数据输入已下降被处理的命令。当这是“HIGH”,CLK被忽略。
  35. */
  36. #define PT_STB P1_0
  37. #define PTStbHigh()  (PT_STB=0)
  38. #define PTStbLow() (PT_STB=1)

  39. //命令定义
  40. /*
  41. COMMAND 1: DISPLAY MODE SETTING COMMANDS
  42. 命令1:显示模式设置命令
  43. Display Mode Settings: (显示模式设置 位,段)
  44. 0XXX: 8 digits, 20 segments
  45. 1000: 9 digits, 19 segments
  46. 1001: 10 digits, 18 segments
  47. 1010: 11 digits, 17 segments
  48. 1011: 12 digits, 16 segments
  49. 1100: 13 digits, 15 segments
  50. 1101: 14 digits, 14 segments
  51. 1110: 15 digits, 13 segments
  52. 1111: 16 digits, 12 segments

  53. 上电默认 1111: 16 digits, 12 segments
  54. 显示模式和RAM地址 0x00-0x2F
  55. xxHL Lower 4 bits xxHU Higher 4 bits
  56. */
  57. #define CMD1_DMSC_08_20 0x00
  58. #define CMD1_DMSC_09_19 0x08
  59. #define CMD1_DMSC_10_18 0x09
  60. #define CMD1_DMSC_11_17 0x0A
  61. #define CMD1_DMSC_12_16 0x0B
  62. #define CMD1_DMSC_13_15 0x0C
  63. #define CMD1_DMSC_14_14 0x0D
  64. #define CMD1_DMSC_15_13 0x0E
  65. #define CMD1_DMSC_16_12 0x0F

  66. /*
  67. COMMAND 2: DATA SETTING COMMANDS
  68. 命令1:数据设置命令
  69. 上电默认 b3~b0=0
  70. b1 b0:
  71. Data Write & Read Mode Settings: (数据写入和读取模式设置)
  72. 00: Write Data to Display Mode (写数据到显示模式)
  73. 01: Write Data to LED Port  (写数据到LED端口)
  74. 10: Read Key Data (读按键数据)
  75. 11: Read SW Data (读开关数据)
  76. b2:
  77. Address Increment Mode Settings (Display Mode):  (地址增量模式设置(显示模式))
  78. 0: Increment Address after Data has been Written  (数据已经被写入后增加地址)
  79. 1: Fixed Address (固定地址)
  80. b3:
  81. Mode Settings: (模式设置)
  82. 0: Normal Operation Mode (正常操作模式)
  83. 1: Test Mode (测试模式)
  84. */
  85. #define CMD2_DSC_WDDM_INC (0x40 | 0x00)
  86. #define CMD2_DSC_WDDM_FIX (0x40 | 0x04)
  87. #define CMD2_DSC_WDLP (0x40 | 0x01)
  88. #define CMD2_DSC_RKD (0x40 | 0x02)
  89. #define CMD2_DSC_RSD (0x40 | 0x03)

  90. /*
  91. COMMAND 3:  ADDRESS SETTING COMMANDS
  92. 命令3:地址设置命令
  93. 有效地址 0x00~0x2F 上电默认 0x00
  94. */
  95. #define CMD3_ASC 0xC0

  96. /*
  97. COMMAND 4:  DISPLAY CONTROL COMMANDS
  98. 命令4:显示控制命令
  99. Pulse width = 1/16 并且 0: Display Of 时键盘扫描关闭
  100. Dimming Quantity Settings:  (调光量设置)
  101. b2~b0
  102. 000: Pulse width = 1/16
  103. 001: Pulse width = 2/16
  104. 010: Pulse width = 4/16
  105. 011: Pulse width = 10/16
  106. 100: Pulse width – 11/16
  107. 101: Pulse width = 12/16
  108. 110: Pulse width = 13/16
  109. 111: Pulse width = 14/16
  110. b3
  111. Display Settings: (显示设置)
  112. 0: Display Off (Key Scan Continues)
  113. 1: Display On
  114. */
  115. #define CMD3_DCC_01_16 (0x88 | 0 )
  116. #define CMD3_DCC_02_16 (0x88 | 1 )
  117. #define CMD3_DCC_04_16 (0x88 | 2 )
  118. #define CMD3_DCC_10_16 (0x88 | 3 )
  119. #define CMD3_DCC_11_16 (0x88 | 4 )
  120. #define CMD3_DCC_12_16 (0x88 | 5 )
  121. #define CMD3_DCC_13_16 (0x88 | 6 )
  122. #define CMD3_DCC_14_16 (0x88 | 7 )
  123. #define CMD3_DCC_OFF 0x80

  124. /*
  125. 1)显示更新增量地址
  126. Command1: Display Mode Setting Command
  127. Command2: Data Setting Command
  128. Command3: Address Setting Command
  129. Data 1 to n: Transfer Display Data (48 Bytes max)
  130. Command4:Display Control Command

  131. 2)更新指定地址数据
  132. Command2: Data Setting Command
  133. Command3: Address Setting Command
  134. Data: Display Data

  135. 3)推荐的软件流程图
  136. START -> Delay 200 ms -> (初始化开始) -> SET COMMAND 2 (Write Data)
  137. ->SET COMMAND 3 Clear Display RAM(上电时显示内存内容未知)
  138. ->SET COMMAND 1 -> SET COMMAND 4 (88H~8FH:Display ON)(初始化结束)

  139. ->MAIN PROGRAM->SET COMMAND 2 (Read Key & Write Data Includeed)
  140. ->SET COMMAND 3->SET COMMAND 1->SET COMMAND 4
  141. ->(跳回MAIN PROGRAM 主循环)

  142. ->END

  143. Notes:
  144. 1. Command 1: Display Mode Commands
  145. 2. Command 2: Data Setting Commands
  146. 3. Command 3: Address Setting Commands
  147. 4. Command 4: Display Control Commands
  148. 5. When IC power is applied for the first time, the contents of the Display RAM are not defined; thus, it is strongly suggested that the contents of the
  149. Display RAM must be cleared during the initial setting.
  150. */

  151. void pt6331_Init(uint8_t dispMode, uint8_t dispCtrl);

  152. void pt6331_Write (uint8_t dat);
  153. void pt6331_Cmd (uint8_t cmd);
  154. void pt6331_SetMem(uint8_t dat);
  155. void pt6331_WriteDigit(uint8_t digit, uint8_t s1,uint8_t s2,uint8_t s3);
  156. void pt6331_WriteDisplayRam(uint8_t addr, uint8_t *data, uint8_t len);


  157. #endif // PT6311_H_INCLUDED
复制代码
PT6311.c
  1. /*
  2. 说明: PT6311 驱动
  3. */
  4. #include "PT6311.h"

  5. void pt6331_Write (uint8_t dat)
  6. {
  7.     /* 功能: 写8bit到设备 时钟上升沿设备存储数据*/
  8.     uint8_t i;

  9.     for (i=0;i<8;i++)
  10.     {
  11.         PTClkLow();
  12.         if(dat & 0x01)
  13.             PTDinHigh();
  14.         else
  15.             PTDinLow();
  16.                 dat >>= 1;
  17.                 //WaitSome();
  18.                 PTClkHigh(); //写入数据
  19.                 WaitSome();
  20.     }
  21. }

  22. void pt6331_Cmd (uint8_t cmd)
  23. {
  24.      /* 功能: 写一个8位命令到设备 */
  25.         PTStbLow();
  26.         //WaitSome();
  27.         pt6331_Write(cmd);
  28.         PTStbHigh();
  29.         WaitSome();
  30. }

  31. void pt6331_SetMem(uint8_t dat)
  32. {
  33.     /* 功能: 使用dat填充从0x00-0x2F的显示RAM */
  34.     uint8_t i;

  35.     pt6331_Cmd( CMD2_DSC_WDDM_INC); //COMMAND 2 数据设置命令 设置为写显示内存

  36.     PTStbLow();
  37.     pt6331_Write( CMD3_ASC); //COMMAND 3 地址设置命令
  38.     for (i=0;i<=0x2f;i++)
  39.     {
  40.         pt6331_Write( dat);
  41.     }
  42.     PTStbHigh();
  43.     WaitSome();
  44. }

  45. void pt6331_WriteDigit(uint8_t digit, uint8_t s1,uint8_t s2,uint8_t s3)
  46. {
  47.     /* 功能: 向一位的显示内存写入数据 */
  48.     pt6331_Cmd( CMD2_DSC_WDDM_INC); //COMMAND 2 数据设置命令 设置为写显示内存

  49.     PTStbLow();
  50.     pt6331_Write( CMD3_ASC | (digit * 3)); //COMMAND 3 地址设置命令
  51.     pt6331_Write( s1); //SG1-SG4 SG5-SG8
  52.     pt6331_Write( s2); //SG9-SG12 SG13-SG16
  53.     pt6331_Write( s3 & 0x0f); //SG17-SG20
  54.     PTStbHigh();
  55.     WaitSome();
  56. }

  57. void pt6331_WriteDisplayRam(uint8_t addr, uint8_t *data, uint8_t len)
  58. {
  59.     /* 功能: 从指定地址开始向显示内存写数据 */
  60.     pt6331_Cmd( CMD2_DSC_WDDM_INC); //COMMAND 2 数据设置命令 设置为写显示内存

  61.     PTStbLow();
  62.     pt6331_Write( CMD3_ASC | addr); //COMMAND 3 地址设置命令
  63.     while(len--)
  64.     {
  65.          pt6331_Write( *data++);
  66.     }
  67.     PTStbHigh();
  68.     WaitSome();
  69. }

  70. void pt6331_Init(uint8_t dispMode, uint8_t dispCtrl)
  71. {
  72.     /* 功能: 初始化PT6331到当前vfd */
  73.     //IO初始化
  74.     PTStbHigh();
  75.     PTClkHigh();
  76.     PTDinHigh();
  77.     WaitSome(); //Delay  200 ms 等待系统稳定
  78.     //COMMAND 2 + COMMAND 3 初始化显示内存
  79.     pt6331_SetMem(0x00);
  80.     //11位 17段 CMD1_DMSC_11_17 CMD3_DCC_02_16
  81.     //COMMAND 1 显示模式设置命令
  82.     pt6331_Cmd( dispMode);
  83.     //COMMAND 4 显示控制命令
  84.     pt6331_Cmd( dispCtrl);
  85. }

复制代码
全亮
_delay_ms(200); //等待单片机稳定
pt6331_Init(CMD1_DMSC_11_17, CMD3_DCC_04_16);
pt6331_SetMem(0xff);




 楼主| 发表于 2015-2-10 16:28 | 显示全部楼层
找了一块以前做定时器的旧板子把时钟对付上了
前一阵有事丢那十多天 0.22f的超级电容给DS1302供电今天上电时钟还走着哈哈

fix001.jpg

fix002.jpg

发表于 2015-2-24 18:46 | 显示全部楼层
谁找到办法软件上熄掉USB图标周围的框框啊
听说把本站有此功能,为了支持站长,求打赏,哈哈
发表于 2019-3-12 10:20 | 显示全部楼层
goodcode 发表于 2015-2-10 16:28
找了一块以前做定时器的旧板子把时钟对付上了
前一阵有事丢那十多天 0.22f的超级电容给DS1302供电今 ...

network 边上的一圈的点是如何点亮的?

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-24 09:15 , Processed in 0.052173 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表