忍者ブログ

コンピュータ

コンピュータ目次


DELL XPS M-1330の液晶ディスプレイ交換
ASUS MODEL U24Aの冷却ファンの交換
aitendoの7seg LCDを使ってFT-817の周波数表示をする
あきずき高輝度4桁7segLEDを使ってFT-817の周波数表示をする

ASUS MODEL U24A のファン交換

長年使っているノートパソコンが、ときどき騒がしくなってしまいました。家族からうるさいと叱られ修理を決意します。ヤフオクでファンの出品を検索すると@2,700で出ていました。落札しました。裏側のネジを全て外し隙間をこじってやると案外あっさり上下に分解できます。



あとは、ファンを取り外し交換する。このとき熱伝導シートが劣化しているのでシリコングリスを塗っておくことが必要と思われます。



普段は、SSDにインストールしたUbuntu1604LTSをUSB起動でつかってます。本体には、windows10までアップグレードしてますが、使用していないOSがはいってます。OSなしのノートパソコンが販売されるとうれしい。交換後、驚くほど(工場出荷時と同等)静かになり苦情もなくなりました。


LEDによるFT-817周波数表示

 

バーグラフの回路マイクロチップ社のアプリケーションノートTB09を使用した。
マイクロチップ社アプリケーションノート

aitendo 7seg LCD を使って817の周波数表示

aitendoの99円LCDとPIC12F683で何かできないかと思い。こんなものを作ってみました。12F683が80円と主な部品は200円掛かりません。

7.02604MHzを表示中です。バンドを変更するとき若干のタイムラグがありますが、ダイアルを回転させているときはなめらかな数値回転です。

参考資料を以下に示します。ご使用の際は、自己責任でお願いいたします。

LCDピン接続確認とその他資料 ここを参考にしました。
LCDのコントロールチップの説明書 英文を読めませんがとりあえず
LCDコントロールドライバプログラムのサンプル 若干の変更で動作します。

PIC12F683用に改変します。

#include 
#include 
はコメントアウトまたは削除
//#include 
//#include 
ーーーーーーーーーーーーーーーーーーーーーーー
sbit HT1621_DAT=P3^4;   //HT1621
sbit HT1621_CS=P3^2;    //HT1621
sbit HT1621_WR=P3^3;    //HT1621

はsbitを12F683の場合#defineに

#define HT1621_DAT GP4  //HT1621
#define HT1621_CS  GP0  //HT1621
#define HT1621_WR  GP5  //HT1621
ーーーーーーーーーーーーーーーーーーーーーーーー
uchar code Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
codeをとる
uchar Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
ーーーーーーーーーーーーーーーーーーーーーーーーーー
変更前
/******************************************************

*******************************************************/
void Ht1621Wr_Data(uchar Data,uchar cnt)
{
  uchar i;
  for (i=0;i < cnt;i++)
  {  
    HT1621_WR=0;
        _Nop();
        HT1621_DAT=Data & 0x80; 
        //-------------------------                             
    _Nop();
    HT1621_WR=1;
    _Nop();
    Data<<=1; 
  }
}

変更後
/******************************************************

  基本出力  void Ht1621Wr_Data(uchar Data, uchar cnt)

 *******************************************************/
void Ht1621Wr_Data(uchar Data, uchar cnt) {
    uchar i;
    for (i = 0; i < cnt; i++) {
        HT1621_WR = 0;
        _Nop();
        HT1621_DAT = Data>>7 & 0x01;
        //-------------------------------
        _Nop();
        HT1621_WR = 1;
        _Nop();
        Data <<= 1;
    }
}

1行だけの変更です。
以上の変更でLCDのすべてのセグメントを表示するサンプルプログラムが動作します。

メイン部分です。
/*****************************************************
 * FT-817ND周波数モニター
 * 周波数のみ表示
 * MPLAB X xc8 ver.1.35 を使用
 * by JE1VQM 2015.11.14
 ******************************************************/
#include 
#include 
#include 
#include  "rs232_12F683.h"
#include  
#include "TS174.h"
#define _XTAL_FREQ 8000000
#define uchar unsigned char
#define uint unsigned int

// CONFIG
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF      // Brown Out Detect (BOR disabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)

/* 関数プロトタイピング  */
void GPSRcv(void);
void PosDisp(void);
void TimeDisp(void);
void lcd_out8(unsigned long);
void lcd_out(uchar*);

/* グローバル変数 */
uchar Ht1621Tab[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
//                       0     1     2     3     4     5     6     7     8     9     A     B     C     D     E     F       /            
uchar TS174dec[] = {0xFA, 0x0A, 0xBC, 0x9E, 0x4E, 0xD6, 0xF6, 0xCA, 0xFE, 0xDE, 0xEE, 0x76, 0x34, 0xE2, 0xF4, 0xE4};
//                       0     1     2     3     4     5     6     7     8     9     A     B     C     D     E     F       
/****************** メイン関数 ********************/
void main(void) {
    unsigned int i;
    OSCCON = 0x70; // 8MHzに設定
    TRISIO = 0x08; // GP3を入力設定
    ANSEL = 0x00; // デジタルに設定
    CMCON0 = 0x07; // コンパレータオフ
    PSA = 0; //プリスケーラをWDTで使わない
    WDTCON = 0x08; //16ビットプリスケーラ1:512 17ms WDT OFF
    Ht1621_Init(); // 液晶表示器の初期化
    Ht1621WrAllData(0, Ht1621Tab, 9); // 全消去
    /* タイマ2初期設定 */
    T2CON = 0x01; // 1/4プリ,1/1ポスト
    TMR2IF = 0; // 割り込みフラグクリア
    TMR2IE = 1; // 割り込み許可
    /* 割り込み動作開始 */
    PEIE = 1; // 割り込み許可
    GIE = 1;
    uchar f[7];
    /************* メインループ **************/
    while (1) {
        lcd_out(f);
        //        Send(0x00);
        //        Send(0x00);
        //        Send(0x00);
        //        Send(0x00);
        //        Send(0x80);
        Send(0x00);
        Send(0x00);
        Send(0x00);
        Send(0x00);
        Send(0x03);
        SWDTEN = 1;
        //   f[0]=Receive();
        f[0] = Receive();
        f[1] = Receive();
        f[2] = Receive();
        f[3] = Receive();
        f[4] = Receive();
 
        Send(0x00);
        Send(0x00);
        Send(0x00);
        Send(0x00);
        Send(0xE7);  
        f[5] = Receive();
        CLRWDT();
        SWDTEN = 0;
        GP2 = ~GP2;
    }
}
/*************************************
 *
 * 数値をlcdに表示する
 *  
 *************************************/
void lcd_out8(unsigned long dat) {
    uchar freq, flag;
    int n;
    for (n = 28; n >= 0; n -= 4) {
        freq = (uchar) (dat % 10);
        if (dat) Ht1621WrOneData(n, TS174dec[freq]);
        dat /= 10;
    }
    return;
}
/*************************************
*
* FT-817 周波数表示専用
* 
***************************************/
void lcd_out(uchar *f) {
    Ht1621WrOneData(28, TS174dec[f[3]&0x0F]);
    Ht1621WrOneData(24, TS174dec[(f[3] >> 4)&0x0F]);
    Ht1621WrOneData(20, TS174dec[f[2]&0x0F]);
    Ht1621WrOneData(16, TS174dec[(f[2] >> 4)&0x0F]);
    Ht1621WrOneData(12, TS174dec[f[1]&0x0F]);
    Ht1621WrOneData(8, TS174dec[(f[1] >> 4)&0x0F]);
    if (f[0] > 0x00) {
        Ht1621WrOneData(4, TS174dec[f[0]&0x0F]);
        if (f[0] > 0x0F) {
            Ht1621WrOneData(0, TS174dec[(f[0] >> 4)&0x0F]);
        }else{
            Ht1621WrOneData(0, 0);
        }
    }else{
         Ht1621WrOneData(4, 0);
    }
     Ht1621WrOneData(32, (f[5]&0x0f)<<2);
    return;
}

ここでUART(FT-817NDのCAT接続のため)の勉強をさせてもらいました。CAT接続(ソフトウエアUARTなのが幸いしたのか?そのまま動かせます。) そのまま使えます。後閑さんありがとうございます。
FT-817ND周波数表示プログラム

デル xps M-1330 の液晶ディスプレイ交換

キーボード(1,600円)の交換をしました。しかし、うっかりボールペンを挟み込んで液晶を破損してしまいがっかり!!!!!
オークションで送料込み2,400円で液晶を入手早速交換しました。交換手順はキーボードより簡単でしたので記録しました。
まず、ディスプレイのヒンジのそばにあるカバーを横にスライドさせはずします。(写真)


つぎにディスプレーを囲っているカバーをカメラのある上部をマイナスの精密ドライバーでこじり開けます。爪で止まっているだけなのでこれで開きます。







PR