LCDasmの勉強
下記を参考にさせて頂きました。
http://homepage2.nifty.com/sfukuda/AVRLCD.ASM
wait subの作り方は、最初に10us位の基本時間を作成し、後は、それを呼ぶsubroutineにして行く
方法が、私は分かり易いと思いました。
0b11110000記述は止めて、0xF0記述にし必要な時だけcommentに記述程度で良いと思いました。
下記を参考にさせて頂きました。
http://homepage2.nifty.com/sfukuda/AVRLCD.ASM
wait subの作り方は、最初に10us位の基本時間を作成し、後は、それを呼ぶsubroutineにして行く
方法が、私は分かり易いと思いました。
0b11110000記述は止めて、0xF0記述にし必要な時だけcommentに記述程度で良いと思いました。
最大値は0xFFFF桁毎に区切りa,b,c,dとして
ax4096
bx256
cx16
d
を考えたが、LCD表示を考えて
ADCCNT=0xFFFF; 65535
s1=ADCCNT/10000
a1=ADCCNT%10000
動作しなくなる?基板のLCD ConnectorとChipに
記号を書く様にした。
ATMEGA168/P
7 6 5 4 3 2 1 0 BL type B52 type BU type
PB 1 1 1 1 1 1 1 1
- - E R C C C C - - C C C C E R C C C C E R - -
//-------------------------------------------
7 6 5 4 3 2 1 0 CL type C52 type CU type
PC 0 0 1 1 1 1 1 1
- - E R C C C C - - C C C C E R
//-------------------------------------------
7 6 5 4 3 2 1 0
PD 1 1 1 1 1 1 1 1 DL type D52 type DBU type
- - E R C C C C - - C C C C E R C C C C E R - -
//-------------------------------------------
言うのが正直なところ。
基板を購入するとまず基本と考えLEDピカピカからLCDと進んで製作して行ったら、
ATTINY2313が3枚、ATMEGA168が6枚。
動かないと最後まで作っていったら溜まってしまった。
DCinで表示の正常表示が遅れるものが2枚くらい、
delay_timeを変更してみようと思う。
CNT値から電圧変換するには、測定値1,2,3,4,5V
のCNT値をグラフ化後、y=ax+bで近似後
xを求めれば良いのでは?
x=(y-b)/a
reset delayなどを変えてみよう。
Int. RC Osc 8MHz,Start-up time PWRDWN/RESET:
64CK/14CK +0ms
+4.1ms
+65msが有った。
+65msにすると、問題解決したみたい。
74HCU04(UnBuffer)を使用するのが良いらしいが手持ちに無かったので、74HC04を使用した。
回路は、手持ちのLの容量を確認するためも有り
フランクリン回路(コイルのタップ出し不要)を使用した。
コイルには、茶、赤、黒のペイント有り、120なので
12μHか?、
100P 4.461MHz
470P 2.193MHz
で、発振をオシロで確認しました。
波形は、方形波、
74HCU04に変更するとSin波らしく成るのか?
LM311を入手して、これでも実測してみようと思う。
HEXtoDESI()
{
ADCCNT=0x3039; //12345;
s1=ADCCNT/10000; // 1
a1=ADCCNT%10000; // 2345
s2=a1/1000; // 2
a2=a1%1000; // 345
s3=a2/100; // 3
a3=a2%100; // 45
s4=a3/10; // 4
a4=a3%10; // 5
s5=a4; // 5
表示は、
S1=s1 + 0x30;
PORTB=S1;
_delay_ms(1000);
S2=s2 + 0x30;
PORTB(8bit)でLED表示した。
ADCCNT=0xC350; //50000
ADCCNT=0x7530; //30000
ADCCNT=0x2710; //10000
ADCCNT=0; // 0
LCDに65535~0を表示し動作確認した。HEX値は電卓
使用。