发新帖本帖赏金 15.00元(功能说明)我要提问
123下一页
返回列表
打印
[51单片机]

回忆N年前玩电时代的美好时光----硬件篇【独创+连载】

[复制链接]
7379|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laoxu|  楼主 | 2015-12-20 19:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 laoxu 于 2015-12-20 20:42 编辑

回忆往事,玩过的设计不计其数,分布在机电化光各领域。唯独这个最简单的硬件设计,让我足足兴奋了很久很久,光阴似箭一晃三十几年过去了,8031单片机,仅外接一个三极管,就组成了软硬件结合的A/B相正交硬件计数,辅以软件四细分,组成四线分光栅数显仪,最高计数速度理论上达到8031计数器的计数极限,12MHz晶振下,计数器的脉宽分辩率为1us, 计数频率极限为500kHz, 既简单又实用,直到今天,三十几年过去了,在网上,发现全世界都没有过类似的设计!

打赏榜单

21ic小喇叭 打赏了 10.00 元 2015-12-21

相关帖子

沙发
laoxu|  楼主 | 2015-12-20 19:18 | 只看该作者
本帖最后由 laoxu 于 2015-12-20 20:28 编辑

去年,厂里设备改造,加装光栅尺和磁栅尺,买来的数显仪,发现配光栅尺使用情况良好,但和磁栅尺配套使用时,发现会丢数,引起计数不准,经用示波器检查磁栅尺输出信号,发现输出脉冲很窄,估计是数显仪的响应频率偏低,跟不上磁栅尺的输出信号造成的,因此,想起了N年前的那玩意,重新画板做了几套,装上后使用效果一流。
附件为这次打板的原理图。

Schematic Prints.pdf (36.41 KB)


使用特权

评论回复
板凳
laoxu|  楼主 | 2015-12-20 19:18 | 只看该作者
本帖最后由 laoxu 于 2015-12-20 20:36 编辑




原理图中,最核心最重要的组成部分,就是那支三极管~~~~~~  :lol

使用特权

评论回复
地板
laoxu|  楼主 | 2015-12-20 19:19 | 只看该作者
本帖最后由 laoxu 于 2015-12-21 13:28 编辑

原理图上没几个元件,51单片机负责A/B相正交硬件计数和动态扫描显示,H2630高速光耦,负责对输入信号隔离,一个五向开关,可输入数据和功能切换。


使用说明:

一、开机,显示器显示:“-18888888” 1秒。

二、进入工作状态,显示断电时保留的上一坐标值,公/英制,常规/直径(x2) 状态等参数。

三、五向开关功能详解:
    向上键 UP              // 常规/直径(x2,绿灯亮)
    向下键 DOWN            // 公/英制转换(英制,红灯亮)
    向左键 LEFT            // 进入坐标预置数(当前设置位闪亮)
    向右键 RIGHT           // 当前坐标值/2(对中功能)
    中心键 CENTER          // 坐标值清0
      注:
    特定功能,向右键RIGHT长按10秒,可改变坐标预置符号位

四、在坐标预置数状态        
    向上键 UP              // 当前闪亮位 加1
    向下键 DOWN            // 当前闪亮位 减1
    向左键 LEFT            // 当前闪亮位 左移1位
    向右键 RIGHT           // 当前预置值输入
    中心键 CENTER          // 当前预置值清0

使用特权

评论回复
5
laoxu|  楼主 | 2015-12-20 19:19 | 只看该作者
本帖最后由 laoxu 于 2015-12-21 13:36 编辑

这是PCB图,三拼板的,组成三坐标显示仪。



使用特权

评论回复
6
laoxu|  楼主 | 2015-12-20 19:19 | 只看该作者
本帖最后由 laoxu 于 2015-12-21 13:52 编辑

这是 4细分 SCH 文件,AD09格式
DIY-4细分-SH89F52.rar (17.54 KB)



这是 4细分 PCB 文件,AD09格式

DIY-4细分_3.rar (55.5 KB)

使用特权

评论回复
7
laoxu|  楼主 | 2015-12-20 19:19 | 只看该作者
本帖最后由 laoxu 于 2015-12-22 07:02 编辑

A/B相正交计数,硬件设计要点:

设定T0,T1为模式1,16位计数器, 并且使能INT0,INT1门控计数(高电平有效)

输入的A/B相正交信号,A相直接送 T0门控(INT0)和 T1门控(INT1)。B相分两路,一路直接送 T0计数, 另一路经三极管反相后,送 T1计数。这样,能保证在 A相输入高电平时,B相电平由高至低变化时,T0计数;B相电平由低至高变化时,T1计数;从而使得计数相位同相,保证加、减计数的准确性, 实际测量计数值 = T0 -T1 。

使用特权

评论回复
8
laoxu|  楼主 | 2015-12-20 19:19 | 只看该作者
本帖最后由 laoxu 于 2015-12-22 07:17 编辑

A/B相正交计数,软件设计要点:

定时中断,读入T0,T1值,相减后得到 硬件A/B相正交信号计数值,再用软件插值法,查表求得一个脉冲周期之中的具体位置(偏移量)。

在主程序中,将计数值左移两位,加上偏移量,即得到四细分后的具体数值。


程序片断如下:

void time2(void) interrupt 5  using 1   // 定时器中断2, 中断定时时间500us,晶振频率16.6MHz/N   
{ static unsigned char posit=0;
  static unsigned int  LED_time_off=0;
  static unsigned char T0_count=0;      // 光栅编码器T0计数   
  static unsigned char T1_count=0;      // 光栅编码器T1计数   
  static unsigned char T0_count_bak=0;  // 光栅编码器T0计数上一状态备份   
  static unsigned char T1_count_bak=0;  // 光栅编码器T1计数上一状态备份   
  unsigned char a;
  unsigned char b;

    //-------- 读入T0、T1值,光栅编码器硬件计数 --------//
  T0_count = TL0;                                      // 读入T0值
  T1_count = TL1;                                      // 读入T1值
  a = (uint8)T0_count - (uint8)T0_count_bak;
  b = (uint8)T1_count - (uint8)T1_count_bak;
  Int_T_count += (a - b);             // 光栅编码器硬件计数
  T0_count_bak = T0_count;                         // 备份T0值
  T1_count_bak = T1_count;                         // 备份T1值

    //------------ 光栅编码器软件4细分 ------------//
  input_comp |= P3 & 0x03;               // 输入A、B相正交信号
  a = tab_counter[input_comp];      // 光栅编码器4细分当前位置
  if (a != 0x80)
    { Int_Offset = a;
        }
  input_comp <<= 2;
  input_comp  &= 0x0c;                                // 保存A、B相正交信号状态

    //-------- 动态扫描显示及键值输入 --------//

  ........

}

使用特权

评论回复
9
laoxu|  楼主 | 2015-12-20 19:19 | 只看该作者
本帖最后由 laoxu 于 2015-12-23 08:59 编辑

DIY-4细分_SH89F52 源程序打包下载, Keil C 格式




DIY-4细分_SH89F52.rar (89.74 KB)

使用特权

评论回复
10
laoxu|  楼主 | 2015-12-20 19:19 | 只看该作者
本帖最后由 laoxu 于 2015-12-23 09:00 编辑

======================= 全文连载完 =======================

使用特权

评论回复
11
河东猴| | 2015-12-20 19:35 | 只看该作者
搬个小板凳听老徐讲过去的故事

使用特权

评论回复
12
dirtwillfly| | 2015-12-20 20:18 | 只看该作者
坐等楼主讲解

使用特权

评论回复
13
sepmoon| | 2015-12-20 20:22 | 只看该作者
铺个垫子坐地上听故事

使用特权

评论回复
14
皈依| | 2015-12-20 21:23 | 只看该作者
小板凳~此帖肯定火~

使用特权

评论回复
15
huangqi412| | 2015-12-20 21:23 | 只看该作者
趴着听故事

使用特权

评论回复
16
littleming1028| | 2015-12-20 21:52 | 只看该作者
继续继续~~~~~~~

使用特权

评论回复
17
jameswangchip| | 2015-12-20 22:00 | 只看该作者
听听!

使用特权

评论回复
18
幸福至上| | 2015-12-20 22:05 | 只看该作者
来听听经验丰富的设计师怎么设计得又好又简单的

使用特权

评论回复
19
逍遥派掌门| | 2015-12-20 22:51 | 只看该作者
听大哥讲故事。

使用特权

评论回复
20
tianhaolan| | 2015-12-21 08:24 | 只看该作者

听大哥讲故事。

使用特权

评论回复
发新帖 本帖赏金 15.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

146

主题

2274

帖子

221

粉丝