(57)【要約】【課題】熱履歴演算の回路規模の小型化を図る。【解決手段】蓄熱データが書き込まれる熱メモリは、１ライン分の記憶容量よりも、データ書込み時のオフセット分だけ大きくされている。ラインメモリから読み出した所定のタップ数の蓄熱データを用いて拡散計算を含む熱履歴演算が行われ新たな蓄熱データが算出される、新たな蓄熱データは、更新前の蓄熱データを読出す際に用いたアドレスに対してタップ数に応じたオフセットを付けたアドレスが指定されてラインメモリに書き戻される。【選択図】　　　　図４
2004009326.tif 000002
【特許請求の範囲】
【請求項１】
所定タップ数の蓄熱データを用いた拡散計算を含む熱履歴演算を行うサーマルプリンタの熱履歴演算装置において、
発熱素子毎の蓄熱状態を示す１ライン分の蓄熱データが順番に書き込まれて保持し、少なくとも新たな蓄熱データの書込み時に付与されるオフセットの大きさ分だけ記憶容量が大きくされたラインメモリと、
１ライン分の各蓄熱データを順番に更新するように、１つの蓄熱データを更新する際には、更新すべき蓄熱データの読出アドレスとその前後の各アドレスを指定して所定タップ数分の１組の蓄熱データをラインメモリから読み出し、熱履歴演算で算出される新たな蓄熱データを書き込む際には、対応する更新前の蓄熱データの読出アドレスに対して前記所定タップ数に応じたオフセットを付けた書込アドレスを指定してラインメモリに書き込み、次に１ライン分の蓄熱データを更新する際には、前回の読出アドレスに対して前記所定タップ数に応じたオフセットを付けた読出アドレスを用いて蓄熱データをラインメモリから読み出すメモリ制御手段と、
ラインメモリから読み出した１組の蓄熱データを用いた拡散計算を含む熱履歴演算を行って新たな蓄熱データを算出する演算回路とを備えたことを特徴とするサーマルプリンタの熱履歴演算装置。
【請求項２】
前記メモリ制御手段は、読出アドレスを出力し、前記１組の蓄熱データ読み出す毎に読出アドレスを１ずつ変化させる読出アドレスカウンタと、新たに算出される蓄熱データがラインメモリに書き込まれるごとに毎に書込みアドレスを１ずつ変化させる書込アドレスカウンタとを備え、前記読出アドレスカウンタ及び書込アドレスカウンタは、それぞれラインメモリのアドレス範囲の一端までカウントした後にアドレス範囲の他端からカウントを行うようにされ、任意の記憶容量のラインメモリに対応可能にされていることを特徴とする請求項１記載のサーマルプリンタの熱履歴演算装置。
【請求項３】
所定タップ数の蓄熱データを用いた拡散計算を含む熱履歴演算を行うサーマルプリンタの熱履歴演算装置において、
発熱素子毎の蓄熱状態を示す１ライン分の蓄熱データが順番に書き込まれて保持するラインメモリと、
前記所定タップ数に応じた記憶容量を有するバッファメモリと、
１ライン分の各蓄熱データを順番に更新するように、１つの蓄熱データを更新する際に更新すべき蓄熱データの読出アドレスとその前後の各アドレスを指定して所定タップ数分の１組の蓄熱データをラインメモリから読み出し、熱履歴演算で順次に算出される新たな蓄熱データをアドレスを循環させながら指定して前記バッファメモリに書き込むとともに、この書き込みに先立って、書込みの対象となる前記バッファメモリのアドレスから蓄熱データを読み出し、対応する更新前の蓄熱データが書き込まれているラインメモリのアドレスに書き込むメモリ制御手段と、
ラインメモリから読み出した１組の蓄熱データを用いた拡散計算を含む熱履歴演算を行って新たな蓄熱データを算出する演算回路とを備えたことを特徴とするサーマルプリンタの熱履歴演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、サーマルヘッドの発熱素子の蓄熱状態を演算する蓄熱演算装置に関するものである。
【０００２】
【従来の技術】
サーマルプリンタには、サーマルヘッドで感熱記録紙を加熱して直接に発色させる感熱記録方式と、記録紙に重ねたインクリボンの背後をサーマルヘッドで加熱してインクリボンのインクを記録紙に転写する熱転写記録方式とがある。このサーマルヘッドは、多数の発熱素子がライン状に形成されている。
【０００３】
各発熱素子から発生した熱エネルギーの多くは記録のために使われるが、記録に供しないものは、放熱されたり、サーマルヘッド蓄えられたりする。また、サーマルヘッドに蓄えられた熱エネルギーの一部は、発熱素子に向かって戻り、次のラインの記録に影響するものもある。
【０００４】
このようにして、サーマルヘッドの各蓄熱層に蓄熱された熱エネルギーの一部が画素の記録に影響するため、記録する画素の濃度に対応する発熱データに応じてサーマルヘッドを駆動しただけでは、画素が所期の濃度で記録されなかったり、プリントされた画像に濃度ムラが発生したり、画像の輪郭がボヤけたりして、原画に忠実な画像を再現することができない。このため、サーマルプリンタでは、蓄熱補正を行っている。
【０００５】
第Ｎラインの発熱データに対して蓄熱補正を行う場合には、第Ｎ−１ラインまでの各ラインの各発熱データを用いて求められたサーマルヘッドの蓄熱状態を示す１ライン分の蓄熱データから発熱素子毎の蓄熱補正データを算出し、この蓄熱補正データを用いて第Ｎラインの発熱データを補正する。また、補正された第Ｎラインの発熱データを用いて蓄熱データの更新を行い、この更新された蓄熱データは、次の第Ｎ＋１ラインの蓄熱補正データを算出するのに用いられる。
【０００６】
蓄熱データは、各蓄熱層を発熱素子に対応させた部分（以下、蓄熱セルという）に仮想的に分割し、その蓄熱セルごとに熱履歴演算を行って求められる。熱履歴演算は、発熱素子から蓄熱セルに伝わる熱エネルギーや、１個の発熱素子に対応した異なる蓄熱層の蓄熱セル間で移動する熱エネルギーを計算する累積計算の他に、注目する蓄熱セルと隣接した蓄熱セルとの間で移動する熱エネルギーを計算する拡散計算が含まれる。
【０００７】
拡散計算は、例えばＦＩＲ（有限インパルス応答）フィルタなどに代表される演算であって、ラインメモリから読み出した蓄熱データと、所定の係数とを乗算して累積加算することを所定のタップ数だけ繰り返して行うものである。このような拡散計算を含む熱履歴演算の演算結果は、ラインメモリに書き戻される。
【０００８】
【発明が解決しようとする課題】
ところで、拡散計算を含む熱履歴演算を行う場合では、熱履歴演算で得られる新たな蓄熱データを直ちにラインメモリに書き戻すことができない。これは拡散計算では、更新すべき蓄熱セルの蓄熱データの他に隣接した蓄熱セルの蓄熱データを用いるためであり、１つの蓄熱セルに対して行われた熱履歴演算で得られる蓄熱データをその演算直後にラインメモリ上の古い蓄熱データに置き換えてしまうと、次に隣接した蓄熱セルの新たな蓄熱データを求める際に、更新された蓄熱データを用いることになり、正しい演算結果が得られないからである。
【０００９】
上記のように新たな蓄熱データを演算直後にラインメモリに書き戻せないため、従来ではライメモリの他に１ライン分の蓄熱データを保持可能なバッファメモリを設け、演算結果をバッファメモリに順次書き込み、１ライン分の演算が完了した後に、バッファメモリの内容をラインメモリに転送していた。しかしながら、このような構成では、ラインメモリ，演算回路などの他に、バッファメモリが必要であるため、熱履歴演算を行う熱履歴演算装置の回路規模が大きいという問題があった。また、サーマルヘッドを複数の蓄熱層に分けて、各蓄熱層毎に蓄熱状態を調べる場合には、各蓄熱層のそれぞれについてラインメモリとバッファメモリとが必要であり、熱履歴演算装置はより大きな回路規模となっていた。
【００１０】
本発明は、上記の問題を解決するためになされたもので、回路規模を小さくできるサーマルプリンタの熱履歴演算装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、請求項１記載の発明では、発熱素子毎の蓄熱状態を示す１ライン分の蓄熱データが順番に書き込まれて保持し、少なくとも新たな蓄熱データの書込み時に付与されるオフセットの大きさ分だけ記憶容量が大きくされたラインメモリと、
１ライン分の各蓄熱データを順番に更新するように、１つの蓄熱データを更新する際には、更新すべき蓄熱データの読出アドレスとその前後の各アドレスを指定して所定タップ数分の１組の蓄熱データをラインメモリから読み出し、熱履歴演算で算出される新たな蓄熱データを書き込む際には、対応する更新前の蓄熱データの読出アドレスに対して前記所定タップ数に応じたオフセットを付けた書込アドレスを指定してラインメモリに書き込み、次に１ライン分の蓄熱データを更新する際には、前回の読出アドレスに対して前記所定タップ数に応じたオフセットを付けた読出アドレスを用いて蓄熱データをラインメモリから読み出すメモリ制御手段と、
ラインメモリから読み出した１組の蓄熱データを用いた拡散計算を含む熱履歴演算を行って新たな蓄熱データを算出する演算回路とを備えたものである。
【００１２】
請求項２記載の発明では、メモリ制御手段に、読出アドレスを出力し、前記１組の蓄熱データ読み出す毎に読出アドレスを１ずつ変化させる読出アドレスカウンタと、新たに算出される蓄熱データがラインメモリに書き込まれるごとに毎に書込みアドレスを１ずつ変化させる書込アドレスカウンタとを備え、前記読出アドレスカウンタ及び書込アドレスカウンタを、それぞれラインメモリのアドレス範囲の一端までカウントした後にアドレス範囲の他端からカウントを行うようにし、任意の記憶容量のラインメモリに対応可能にしたものである。
【００１３】
請求項３記載の発明では、発熱素子毎の蓄熱状態を示す１ライン分の蓄熱データが順番に書き込まれて保持するラインメモリと、
前記所定タップ数に応じた記憶容量を有するバッファメモリと、
１ライン分の各蓄熱データを順番に更新するように、１つの蓄熱データを更新する際に更新すべき蓄熱データの読出アドレスとその前後の各アドレスを指定して所定タップ数分の１組の蓄熱データをラインメモリから読み出し、熱履歴演算で順次に算出される新たな蓄熱データをアドレスを循環させながら指定して前記バッファメモリに書き込むとともに、この書き込みに先立って、書込みの対象となる前記バッファメモリのアドレスから蓄熱データを読み出し、対応する更新前の蓄熱データが書き込まれているラインメモリのアドレスに書き込むメモリ制御手段と、
ラインメモリから読み出した１組の蓄熱データを用いた拡散計算を含む熱履歴演算を行って新たな蓄熱データを算出する演算回路とを備えたものである。
【００１４】
【発明の実施の形態】
図１に本発明を実施したカラー感熱プリンタの概略を示す。シート状のカラー感熱記録紙２は、図示しない給紙用カセットから回動自在なプラテンローラ３に向かって送られ、搬送路を往復動している間に３色面順次でカラー画像が発色記録される。カラー画像が記録されたカラー感熱記録紙２は排紙口４から排紙される。
【００１５】
カラー感熱記録紙２は、周知のように、支持体上にシアン感熱発色層，マゼンタ感熱発色層，イエロー感熱発色層，透明な保護層が順番に層設されている。感熱発色層は、記録する順番に層設されており、イエロー感熱発色層は４２０ｎｍの紫外線（近紫外線）が、マゼンタ感熱発色層は３６５ｎｍの紫外線が照射されることによって発色能力が消失する。
【００１６】
各感熱発色層は、深層になるほど発色するために大きな発色熱エネルギーが必要である。このカラー感熱記録紙２では、イエロー感熱発色層の発色熱エネルギーが最も低く、シアン感熱発色層の発色熱エネルギーが最も高い。発色熱エネルギーは、感熱発色層が発色する直前のバイアス熱エネルギーと、階調値すなわち記録すべき画素の発色濃度に応じた階調熱エネルギーとからなる。バイアス熱エネルギーは各感熱発色層毎に一定の値であるが、階調熱エネルギーは発色濃度が高いほど大きくなる。
【００１７】
プラテンローラ３の下流には、搬送ローラ対５が配されている。この搬送ローラ対５は、一方がパルスモータ６で駆動されるキャプスタンローラ５ａであり、他方がカラー感熱記録紙２の搬送に伴って従動回転するピンチローラ５ｂである。ピンチローラ５ｂは、キャプスタンローラ５ａとの間にカラー感熱記録紙２をニップしたニップ位置と、カラー感熱記録紙２から離れたニップ解除位置との間で移動する。搬送ローラ対５は、キャプスタンローラ５ａがパルスモータ６によって正逆両方向に回転されることにより、ニップしたカラー感熱記録紙２を往復動させる。
【００１８】
プラテンローラ３に対向して、サーマルヘッド７が配されている。サーマルヘッド７の下部には、主走査方向（カラー感熱記録紙２の搬送方向（副走査方向）と直交する方向）に多数（Ｑ＋１個）の発熱素子８（図２参照）をライン状に配列した発熱素子アレイ９が形成されている。サーマルヘッド７は、軸１０を中心にして、画像を記録するためにプラテンローラ３上のカラー感熱記録紙２に圧接した圧接位置と、カラー感熱記録紙２から離れた退避位置との間で揺動する。
【００１９】
サーマルヘッド７としては、例えば発熱素子８側からグレーズ層，セラミック基板，アルミ板が順次に層設され、アルミ板に放熱性を良好にするための放熱板が取り付けられたものが用いられている。
【００２０】
サーマルヘッド７には、その温度（以下、ヘッド温度という）を測定するためのヘッド温度センサ１１が取り付けられている。ヘッド温度センサ１１から得られるヘッド温度は、サーマルヘッド７の蓄熱状態の初期値を設定するのに用いられる。
【００２１】
サーマルヘッド７は、搬送路の上流（図中左側）から下流に向けて搬送中のカラー感熱記録紙２に加熱を行って１色の画像を１ラインずつ画像を記録する。１色の画像の記録完了後、カラー感熱記録紙２が搬送路の下流から上流に向けて搬送されて戻され、この後に再びカラー感熱記録紙２が上流から下流に向けて搬送されている間に次の１色の画像が１ラインずつ記録される。このようにして、サーマルヘッドは、カラー感熱記録紙２の往復動によって３色面順次でカラー画像を記録する。
【００２２】
搬送ローラ対５の下流には、イエロー用光定着器１３とマゼンタ用光定着器１４とが配されている。イエロー用光定着器１３は、発光ピークが４２０ｎｍのイエロー用紫外線を放出する紫外線ランプ１３ａを備えている。マゼンタ用光定着器１４は、発光ピークが３６５ｎｍのマゼンタ用紫外線を放出する紫外線ランプ１４ａを備えている。
【００２３】
図２に上記カラー感熱プリンタの電気的な構成を示す。マイクロコンピュータ２０は、カラー感熱プリンタの各部を制御する。記録すべき画像は、デジタルカメラやスキャナ等で取り込まれ、イエロー画像データ，マゼンタ画像データ，シアン画像データとして画像メモリ２１に書き込まれる。プリント時には、記録すべき色の画像データが画像メモリ２１から１ライン分ずつ順番に読み出されて、蓄熱補正部２２に送られる。
【００２４】
蓄熱補正部２２は、入力される画像データに対して、保持しているサーマルヘッド７の蓄熱状態に基づいて蓄熱補正を行った補正発熱データを求め、これを発熱素子８の通電時間に変換した通電時間データを出力するとともに、サーマルヘッド７の蓄熱状態を更新する。サーマルヘッド７の蓄熱状態の初期値としては、ヘッド温度センサ１１で測定されたヘッド温度に基づいたものがマイクロコンピュータ２０によってセットされる。
【００２５】
ラインメモリ２３には、蓄熱補正部２２から出力される１ライン分の通電時間データが書き込まれる。ヘッド駆動部２４は、ラインメモリ２３上の１ライン分の通電時間データを取り込み、マイクロコンピュータ２０からの通電開始信号の入力に応答して、サーマルヘッド７の各発熱素子８を通電する。
【００２６】
各発熱素子８の通電時間は、対応する通電時間データに表される通電時間である。これにより各発熱素子８は、対応する通電時間データの元である補正発熱データに表される熱エネルギーを発生する。通電開始信号は、所定の周期毎にマイクロコンピュータ２０からヘッド駆動部２４に入力される。なお、発熱素子８に対する通電時間を変化させることで、発熱素子８の発生する熱エネルギーを制御しているが、発熱素子８に対する通電回数を変化させることで、発熱素子８の発生する熱エネルギーを制御してもよい。
【００２７】
パルスモータ６は、マイクロコンピュータ２０に制御されるドライバ２５で駆動され、１ラインの記録毎にカラー感熱記録紙２を１ライン分ステップ送りする。これにより、カラー感熱記録紙２に１ラインずつ画像が記録される。
【００２８】
図３に蓄熱補正部２２を示す。コントローラ３０は、予め決められたシーケンスに基づいて蓄熱補正部２２の各部を制御する。入力ラインメモリ３１には、画像メモリ２１から読み出された１ライン分の画像データが書き込まれる。入力ラインメモリ３１に書き込まれた画像データは、順番に読み出されて第１ＬＵＴ３２に送られる。
【００２９】
第１ＬＵＴ３２は、入力される画像データをそれに示される階調値に応じた発色熱エネルギーを表す発熱データに変換する。画像データに示される階調値と発色熱エネルギーとの対応関係は、カラー感熱記録紙２の発色特性に基づいて決まるため、同じ値の画像データであっても色が異なると発色熱エネルギーが異なったものとなる。第１ＬＵＴ３２からの発熱データは演算回路３３に送られる。
【００３０】
演算回路３３は、サーマルヘッド７の蓄熱状態に応じて発熱データを補正するための補正演算と、サーマルヘッド７の蓄熱状態を更新するための熱履歴演算とを行う。この演算回路３３としては、乗算器と加算器で構成されており、回路規模が小さくされている。
【００３１】
蓄熱状態は、サーマルヘッド７の各蓄熱層の発熱素子８に対応する部分（以下、蓄熱セルという）毎に調べられる。この例では、サーマルヘッド７を構成するグレーズ層，セラミック基板，アルミ板，放熱性を、仮想的に発熱素子８側から第１，第２・・・第５蓄熱層に分割したモデルを用いて補正演算及び熱履歴演算を行う。
【００３２】
演算回路３３は、次の演算式▲１▼に基づいた補正演算を行い、発熱データを補正した補正発熱データを求める。この補正演算は、発熱素子８には、それに対応する第１〜第５蓄熱層の各蓄熱セルに蓄えられた熱エネルギーの一部が直接に伝わって記録に影響を与えるというモデルを想定したものである。なお蓄熱データは、蓄熱層の発熱素子毎の蓄熱状態、すなわち蓄熱セルに蓄えられている熱エネルギーを示す。
【００３３】
【数１】
2004009326.tif 000003
【００３４】
上記演算式▲１▼中の記号の意味は次の通りである。
ｈ（ｉ，ｊ）：第ｉラインｊ番目の発熱データ
Ｈ（ｉ，ｊ）：第ｉラインのｊ番目の補正発熱データ
Ｄ１（ｉ，ｊ）：第ｉラインｊ番目用の第１蓄熱データ
Ｄ２（ｉ，ｊ）：第ｉラインｊ番目用の第２蓄熱データ
Ｄ３（ｉ，ｊ）：第ｉラインｊ番目用の第３蓄熱データ
Ｄ４（ｉ，ｊ）：第ｉラインｊ番目用の第４蓄熱データ
Ｄ５（ｉ，ｊ）：第ｉラインｊ番目用の第５蓄熱データ
ｋ０１〜ｋ０５：蓄熱セルに蓄えられた熱エネルギーを発熱素子に伝達される熱エネルギーに変換するための係数
【００３５】
熱履歴演算は、発熱素子８と第１蓄熱層との間及び各蓄熱層の相互間で移動する熱エネルギー求める計算の他、隣接する蓄熱セル間で移動する熱エネルギーを求める計算、すなわちの熱の拡散計算を同時に行うものである。拡散計算のタップ数を「２ｔ＋１」としたときに、第Ｍ蓄熱層の１つの蓄熱セルに対応する新たな第Ｍ蓄熱データ（　ＤＭ（ｉ＋１，ｊ））を算出する熱履歴演算は、次の演算式▲２▼によって行われる。
【００３６】
【数２】
2004009326.tif 000004
【００３７】
演算式▲２▼中の記号の意味は次の通りである。
ＡＭ１〜ＡＭｔ：第Ｍ蓄熱層の熱拡散計算用の係数
ｋ１１〜ｋ５１：蓄熱層または発熱素子から他の蓄熱層への熱エネルギーの流移動量を求めるための係数
ｋ１２〜ｋ５２：蓄熱セルに残る熱エネルギーを求めるための係数
【００３８】
上記演算式▲２▼は、第１蓄熱層については、１ラインの記録時において各発熱素子８で発生した熱エネルギーの一部が対応する第１蓄熱層の蓄熱セルから伝わり、また第１蓄熱層の各蓄熱セルから対応する第２蓄熱層の蓄熱セルに熱エネルギーの一部が伝わり、そして第１蓄熱層の各蓄熱セル間で熱エネルギーが拡散するというモデルに沿ったものである。
【００３９】
また、第２〜第５蓄熱層についても同様であり、例えば第２蓄熱層については、１ラインの記録時において第１蓄熱層の蓄熱セルに蓄えられた熱エネルギーの一部が対応する第３蓄熱層の蓄熱セル伝わり、また第２蓄熱層の各蓄熱セルから対応する第２蓄熱層の蓄熱セルに熱エネルギーの一部が伝わり、第２蓄熱層の各蓄熱セル間で熱エネルギーが拡散するというモデルに沿ったものである。
【００４０】
なお、拡散計算用のタップ数は、蓄熱層毎に設定することができるが、この例では説明を簡単にするために、第１〜第５蓄熱層のそれぞれの熱拡散計算用のタップ数を同じ値「２ｔ＋１」として説明する。
【００４１】
ｊ番目の新たな蓄熱データを算出する際に、（ｊ−ｔ）〜（ｊ−１）番目、（ｊ＋１）〜（ｊ＋ｔ）番目の補正発熱データあるいは蓄熱データを必要とするが、（ｊ−ｔ）〜（ｊ−１）番目、（ｊ＋１）〜（ｊ＋ｔ）番目のものが実在しない場合には、それに代えては最も位置が近い端部の発熱素子８に対応する補正発熱データあるいは蓄熱データが用いられる。例えば、ｔ＝３として第１蓄熱データＤ１（ｉ＋１，２）を求める場合には、　各補正発熱データＨ（ｉ，−１）の代わりに補正発熱データＤ１（ｉ，０）が用いられ、第１蓄熱データＤ１（ｉ，−１）の代わりに第１蓄熱データＤ１（ｉ，０）が用いられる。
【００４２】
各演算に用いられる各種係数は、係数メモリ３４に書き込まれており、演算に必要なタイミングで読み出される。また、各演算に必要な各蓄熱データは、後述する第１〜第５熱メモリ４１〜４５から演算に必要なタイミングで読み出され、補正発熱データは出力ラインメモリ３５から読み出される。
【００４３】
演算回路３３は、１回の補正演算と、５層の蓄熱層に対応した５回の熱履歴演算とを１回の演算サイクルで行う。１ライン分の演算処理では、演算サイクルを繰り返し行うことで、１ライン分の補正発熱データを算出するとともに、各蓄熱層の１ライン分の蓄熱データを更新する。なお、熱履歴演算で新たなｊ番目の第１蓄熱データを算出する際には、（ｊ−ｔ）〜（ｊ−１）番目の補正発熱データがが必要であるため、１ラインの演算処理時には、補正演算だけの演算サイクルが先行してｔ回行われ、最後のｔ回の演算サイクルでは熱履歴演算だけが行われる。
【００４４】
演算回路３３からの補正発熱データは出力ラインメモリ３５に送られる。出力ラインメモリ３５には、１ライン分の補正発熱データが書き込まれる。第１蓄熱データの熱履歴演算時には、更新すべき第１蓄熱データに対応する「２ｔ＋１」個の各補正発熱データが出力ラインメモリ３５から読み出されて演算回路３３に送られる。演算回路３３による１ライン分の演算処理が完了すると、出力ラインメモリ３５の補正発熱データが順番に読み出されて第２ＬＵＴ３６に送られる。なお、入力ラインメモリ３１と、出力ラインメモリ３５のデータの読出し及び書込みは、図示しないメモリコントローラによって制御される。
【００４５】
第２ＬＵＴ３６は、補正発熱データを通電時間データに変換し、これにより、補正発熱データは、それに表される熱エネルギーを発熱素子８が発生するのに必要な通電時間に変換される。通電時間データは、順次にラインメモリ２３に送られる。
【００４６】
第１〜第５蓄熱層に対応して、第１〜第５熱メモリ４１〜４５が設けられており、これらはメモリコントローラ４６によってデータの読み出し及び書き込みが制御される。各熱メモリ４１〜４５は、対応する蓄熱層の蓄熱データをそれぞれ保持する。各熱メモリ４１〜４５は、１つのアドレスに１個の蓄熱データを記憶する。これらの各熱メモリ４１〜４５は、１個の蓄熱データを１バイトとすれば、記憶容量が２ｎ（ｎは自然数）バイトであり、「０」〜「２ｎ−１」の範囲でアドレスが指定されるラインメモリである。
【００４７】
上記の各熱メモリ４１〜４５の記憶容量はそれぞれ２ｎバイトであるが、その記憶容量は１ライン分の蓄熱データの個数よりも、後述するオフセットの大きさ分以上大きくされている。すなわち、１ライン分の蓄熱データ（発熱素子８）の個数を「Ｑ＋１」個，オフセットの大きさを「Ｐ」とすれば「熱メモリの記憶容量≧（Ｐ＋Ｑ＋１）バイト」の関係を満たすと同時に、その記憶容量が「２ｎ」バイトとなっている。
【００４８】
第１熱メモリ４１には、第１蓄熱層の蓄熱セル毎の蓄熱状態を示す１ライン分（０番目〜Ｑ番目）の第１蓄熱データが保持される。補正演算時には、補正すべき発熱データに対応する第１蓄熱データが第１熱メモリ４１から読み出され演算回路３３に送られる。また、第１蓄熱データの熱履歴演算時には、更新すべき第１蓄熱データを含むタップ数分の各第１蓄熱データが第１熱メモリ４１から読み出されて演算回路３３に送られる。さらに、第２蓄熱データの熱履歴演算時においても、更新すべき第２蓄熱データに対応する第１蓄熱データを含むタップ数分の各第１蓄熱データが第１熱メモリ４１から読み出されて演算回路３３に送られる。
【００４９】
演算回路３３による第１蓄熱データの熱履歴演算の結果は、第１熱メモリ４１に送られ、メモリコントローラ４６の制御により、更新前の第１蓄熱データのアドレスに所定のオフセットを付けたアドレスに書き込まれる。
【００５０】
同様に、第２〜第５熱メモリ４２〜４５には、対応する蓄熱層の第２〜第５蓄熱データがそれぞれ１ライン分保持されている。第２〜第５熱メモリ４２〜４５についても、第１熱メモリ４１と同様に、補正演算時には、対応する蓄熱データが読み出され、熱履歴演算時にはタップ数分の各蓄熱データが読み出されて、演算回路３３に送られる。また、第２〜第５蓄熱データの熱履歴演算の結果は、対応する熱メモリに送られ第１熱メモリ４１と同様に更新前の蓄熱データのアドレスに所定のオフセットを付けたアドレスに書き込まれる。なお、各熱メモリ４１〜４５には、ヘッド温度センサ１１で測定されたヘッド温度に基づいた値の蓄熱データが初期値としてそれぞれセットされる。
【００５１】
蓄熱データを熱メモリに書き込む際のオフセットは、熱履歴演算時のタップ数と、熱メモリ上での蓄熱データの処理方向と応じて決められる。タップ数を「２ｔ＋１」としている場合では、オフセットの大きさは「ｔ」アドレス分以上とすればよい。アドレスを増加する方向に蓄熱データの更新を順次に進める場合には、オフセット方向をアドレスを小さくする方向として、オフセットを「−ｔ」とし、逆にアドレスを減少する方向に蓄熱データの更新を順次に進める場合には、オフセット方向をアドレスを大きくする方向として、オフセットを「＋ｔ」とればよい。
【００５２】
なお、０〜（２ｎ−１）までのアドレスを有し、ｎビットでアドレスが指定されるメモリに対しては、オフセットを「−ｔ」とすることと「＋（２ｎ−ｔ）」とすることは同じであり、オフセットを「＋ｔ」とすることと「−（２ｎ−ｔ）」とすることは同じである。
【００５３】
この例では、サーマルヘッド７の発熱素子８の個数（Ｑ＋１）を「１２０」個，タップ数（２ｔ−１）を「７」，オフセットを「−８」，各熱メモリ４１〜４５が「１２８（＝２７）」個の蓄熱データを記憶する容量を有し、「０」〜「１２７」の範囲でアドレスが指定されるものとして説明する。なお、この例ではタップ数を「７」としているので、オフセットの大きさは最低「３」あればよい。
【００５４】
図４にメモリコントローラ４６を示す。メモリコントローラ４６の各部は、コントローラ３０によって制御される。メモリコントローラ４６は、第１〜第５熱メモリ４１〜４５のうちの１つを選択してデータの読出しと書込みを制御するＲ／Ｗ制御部５０と、データの読み出し及び書き込み時のアドレスを指定するアドレス制御部５１とからなる。
【００５５】
Ｒ／Ｗ制御部５０は、Ｒ／Ｗ制御信号と選択信号とを出力する。Ｒ／Ｗ制御信号は、各熱メモリ４１〜４５に同時に送られ、選択信号は各熱メモリ４１〜４５のうちでデータの読み出し，書き込みをすべき熱メモリに送られる。これにより、選択信号が入力されている熱メモリがＲ／Ｗ制御信号によりデータの読み出しまたは書き込みの動作を行う。
【００５６】
アドレス制御部５１は、セルカウンタ５２，オフセットカウンタ５３等から構成される。セルカウンタ５２は、１ライン分の蓄熱データを番号を順次に指定するためのものであり、７ビットすなわち値０〜１２７のカウント値Ｃｃ（０〜１２７）を出力する。セルカウンタ５２は、１ラインの演算処理の開始時にカウント値Ｃｃとして初期値「１２５」がセットされ、演算サイクルが完了する毎にカウント値Ｃｃが「１」ずづインクリメントされる。
【００５７】
オフセットカウンタ５３は、蓄熱データの読み出しの際に、セルカウンタ５２のカウント値Ｃｃで示される蓄熱データの番号とそれが記憶されている熱メモリのアドレスの対応と、算出される蓄熱データの番号とそれを書き込むべき熱メモリのアドレスの対応をとるためのものであり、そのカウント値Ｃｆは「８」ずつインクリメント及びディクリメントされる。オフセットカウンタ５３としては、カウント値Ｃｆを７ビットで出力し、カウント値Ｃｆをサイクリックにカウントするものが用いられているが、カウント値Ｃｆを「８」ずつのインクリメント及びディクリメントできればよいから、実質的に上位４ビットを出力するための４ビットのカウンタで構成できる。
【００５８】
カウント値Ｃｆとしては、第１ラインの演算処理開始時に初期値「０」が与えられ、１ライン分の演算処理が完了する毎に、ディクリメントされる。また、演算回路３３で算出される蓄熱データを書き込む際には、カウント値Ｃｆは、読み出し時のアドレスにオフセットを付けて書込みを行うためにディクリメントされ、その蓄熱データ書き込み完了後に「８」だけインクリメントされて値が戻される。
【００５９】
加算器５４は、カウント値Ｃｃと、カウント値Ｃｆとを加算し、この結果を加算アドレスとして出力する。この加算アドレスは、熱履歴演算の結果を熱メモリに書き込む際の履歴演算用書込みアドレスとして用いられる。
【００６０】
上記の加算器５４は、７ビットの加算アドレスを出力するものであり、７ビットを超えるビットについては何ら出力を行わない。また、上記のように各熱メモリ４１〜４５は、アドレス範囲が０〜（２７−１）とされている。このため、カウント値Ｃｃとカウント値Ｃｆとを加算したときの加算結果が７ビットを超えるオーバーフローとなるような場合に、加算器５４では熱メモリの下位アドレスへの折り返しが自動的に行われる。したがって、熱メモリのアドレス範囲を意識した制御処理を行わなくても、適切にオフセットを付けた書込みアドレスが得られる。なお、後述する加算器５５，５７の加算についても同様である。
【００６１】
加算器５５は、補正演算だけを先行して行う回数と同じ値「３」を加算アドレスに加算し、この加算結果を補正演算で必要な蓄熱データを読み出すための補正演算用読出しアドレスとして出力する。
【００６２】
走査カウンタ５６は、１つの加算アドレスに対してタップ数に応じた走査値「−３」〜「＋３」を順次に出力する。加算器５７は、走査値が入力される毎に、その走査値を加算アドレスに加算したものを履歴演算用読出しアドレスとして順次に出力する。したがって、１つの加算アドレスに対してタップ数分の履歴演算用読出しアドレスが出力される。
【００６３】
端部処理部５８には、加算器５７からの履歴演算用読出しアドレスの他に、セルカウンタ５２からのカウント値Ｃｃと、オフセットカウンタ５３からのカウント値Ｃｆと、加算器５７からの履歴演算用読出しアドレスと、走査カウンタ５６からの走査値とが入力される。
【００６４】
この端部処理部５８は、カウント値Ｃｃと走査値との加算値が０〜１１９の範囲である場合には、端部処理部５８は、入力される履歴演算用読出しアドレスをそのまま出力する。また、端部処理部５８は、カウント値Ｃｃと走査値との加算値が「−３」〜「−１」の範囲の場合には、加算器５７からの入力に代えてカウント値Ｃｆを履歴演算用読出しアドレスとして出力し、１ライン中の０番目の蓄熱データに対応した履歴演算用読出しアドレスを出力する。さらに、端部処理部５８は、カウント値Ｃｃと走査値との加算値が「１２０」〜「１２２」の範囲である場合には、カウント値Ｃｆに値「１１９」との加算を７ビットで行い、その加算結果を履歴演算用読出しアドレスとして出力し、１ライン中の最後（１１９番目）の蓄熱データを指定する。
【００６５】
メモリコントローラ４６からは、上記の履歴演算用読出しアドレス，履歴演算用書込みアドレス，補正演算用読出しアドレスのうちの１つが処理に応じて各熱メモリ４１〜４５に与えられる。
【００６６】
次に上記構成の作用について説明する。画像をプリントする場合には、プリントすべき画像のイエロー画像データ，マゼンタ画像データ，シアン画像データを画像メモリ２１に取り込んだ後に、プリントの指示を与える。この指示により、カラー感熱記録紙２がサーマルヘッド７の位置に送られ、サーマルヘッド７がカラー感熱記録紙２の記録開始位置に圧接される。
【００６７】
サーマルヘッド７がカラー感熱記録紙２の圧接された後に、イエロープリント工程が開始される。まず、ヘッド温度センサ１１によってヘッド温度が測定される。そして、マイクロコンピュータ２０によってヘッド温度に応じた各蓄熱層の蓄熱データが計算され、その結果が各蓄熱メモリ４１〜４５にそれぞれ１ライン分ずつ書き込まれる。このときに、図５（ａ）に示すように、０〜１１９番目の蓄熱データは、熱メモリのアドレス「０」〜「１１９」に順番に書き込まれる。続いて、セルカウンタ５２，オフセットカウンタ５３が初期化され、カウント値Ｃｃとして値「１２５」が、カウント値Ｃｆとして値「０」がそれぞれセットされる。
【００６８】
上記のようにして各部が初期化されてから、イエロー画像の第１ラインに対する処理が開始される。第１ラインの各イエロー画像データが画像メモリ２１から読み出されて、入力ラインメモリ３１に書き込まれる。この後に、入力ラインメモリ３１から第１ライン０番目のイエロ−画像データが読み出されて、第１ＬＵＴ３２に送られ、この第１ＬＵＴ３２で発熱データに変換されて演算回路３３に送られる。
【００６９】
一方、入力ラインメモリ３１からの０番目のイエロ−画像データの読み出しに同期して、メモリコントローラ４６の制御下で補正演算用読出しアドレスを用いた第１〜第５蓄熱データの読み出しが順次に行われる。カウント値Ｃｃが値「１２５」，カウント値Ｃｆが値「０」であるから、加算器５５から「０（＝１２８）」の補正演算用読出しアドレスが出力される。この「０」の補正演算用読出しアドレスの下で、Ｒ／Ｗ制御部５０が選択信号で第１〜第５蓄熱メモリ４１〜４５を順番に選択しながら、データ読出しのためのＲ／Ｗ制御信号を送る。これにより、第１〜第５蓄熱メモリ４１〜４５のアドレス「０」に書き込まれている０番目の第１〜第５蓄熱データが順次に読み出されて演算回路３３に送られる。
【００７０】
上記のようにして、演算回路３３には０番目の発熱データと、０番目の第１〜第５蓄熱データとが順次に入力される。そして、これらの各データと、係数メモリ３６から読み出した係数ｋ０１〜ｋ０５とを用いて、上述の演算式▲１▼に基づいた補正演算が演算回路３３で行われ、０番目の補正発熱データが算出される。この第１ライン０番目の補正発熱データが出力ラインメモリ３５に書き込まれる。
【００７１】
第１ライン０番目の補正発熱データの算出が完了すると、すなわち０番目の演算サイクルの完了すると、セルカウンタ５２にカウントアップの指示が与えられカウント値ＣｃＣがインクリメントされて値「１２６」とされる。この後に、第１ラインの１番目のイエロー画像データが入力ラインメモリ３１から読み出され、第１ＬＵＴ３２を介して演算回路３３に送られる。
【００７２】
また、１番目のイエロ−画像データの読み出しに同期して、上記と同様に第１〜第５蓄熱メモリ４１〜４５から第１〜第５蓄熱データが読み出されて演算回路３３に送られる。このときにカウント値Ｃｃが値「１２６」となっているので、補正演算用読出しアドレスは、「１（＝１２９）」となる。したがって、第１〜第５蓄熱メモリ４１〜４５からはアドレス「１」に書き込まれている１番目の第１〜第５蓄熱データが順次に読み出される。
【００７３】
１番目の補正発熱データと第１〜第５蓄熱データとを用いた補正演算により、１番目の補正発熱データが算出され、これが出力ラインメモリ３５に書き込まれる。このようにして１番目の演算サイクルが完了すると、セルカウンタ５２のカウント値Ｃｃがインクリメントされて値「１２７」とされる。以下、同様に２番目の演算サイクルでは、２番目の発熱データと、２番目の第１〜第５蓄熱データから２番目の補正発熱データが算出され、出力ラインメモリ３５に書き込まれる。
【００７４】
３番目の演算サイクルでは、補正演算とともに、０番目の第１〜第５蓄熱データを更新するための熱履歴演算が行われる。上記と同様な手順で３番目の補正発熱データの算出が完了すると、最初に０番目の第１蓄熱データを更新するための熱履歴演算が行われる。
【００７５】
第１蓄熱データの熱履歴演算では、カウント値Ｃｃとカウント値Ｃｆを加算した加算アドレスに走査カウンタ５６からの走査値をさらに加算した履歴演算用読取しアドレスを用いて蓄熱データが読み出される。この３番目の演算サイクルの実行時では、カウント値Ｃｃが値「０」，カウント値Ｃｆが値「０」となっている。また、走査値は「−３」〜「＋３」である。したがって、端部処理部５８には履歴演算用読取しアドレス「−３」〜「＋３」が順次に入力される。
【００７６】
更新演算用読取しアドレス「−３」〜「−１」については、カウント値Ｃｃと走査値との加算値は「−３」〜「−１」の範囲となるので、加算器５７からの入力に代えてカウント値Ｃｆ（値「０」）が履歴演算用読取しアドレスとして端部処理部５８から出力される。このようにして更新演算用読取しアドレス「０」を３回出力した後に、「０」〜「３」の更新演算用読出しアドレスを順番に出力する。
【００７７】
このようにして更新演算用読出しアドレスが出力される毎に、選択信号で選択された第１熱メモリ４１に対してデータ読出しのためのＲ／Ｗ制御信号が与えられる。これにより、第１熱メモリ４１のアドレス「０」から０番目の第１蓄熱データが４回読み出され、引き続きアドレス「１」〜「３」から１番目〜３番目の第１蓄熱データが読み出されて演算回路３３に送られる。他方、１個の第１蓄熱データが読み出される毎に、その第１蓄熱データと同じ番号の補正発熱データが出力ラインメモリ３４から読み出されて演算回路３３に送られる。
【００７８】
上記のようにタップ数と同じ個数の第１蓄熱データと補正発熱データとが順次に読み出されて演算回路３３に入力され、演算式▲２▼に基づいた熱履歴演算が行われて新たな０番目の第１蓄熱データが算出される。算出された新たな０番目の第１蓄熱データは、選択信号で選択中の第１熱メモリ４１に書き込まれる。この新たな０番目の第１蓄熱データのデータ書込みに先立って、オフセットカウンタ５３にカウントダウンの指示が与えられ、カウント値Ｃｆがディクリメントされて「１２０」とされる。そして、このカウント値Ｃｆと値「０」のカウント値Ｃｃとを加算したものが履歴演算用書込みアドレスとされるから、新たな０番目の第１蓄熱データは、第１熱メモリ４１のアドレス「１２０」に書き込まれる。
【００７９】
結果として、新たな０番目の第１蓄熱データは、更新前の０番目の第１蓄熱データが書き込まれているアドレス「０」に対してオフセットを「−８」だけ付けたアドレス「１２０」に書き込まれる。このときに、更新前の１ライン分の第１蓄熱データはアドレス０〜１１９の範囲に書き込まれているから、これらの第１蓄熱データが新たな０番目の第１蓄熱データで上書きされることはない。
【００８０】
０番目の第１蓄熱データが書き込み完了後、０番目の第２蓄熱データの熱履歴演算を行うために、オフセットカウンタ５３にカウントアップの指示が与えられ、カウント値Ｃｆが「０」とされる。
【００８１】
０番目の第１蓄熱データの場合と同様に、「０」のカウント値Ｃｃとカウント値Ｃｆとの下で、走査値を「−３」〜「＋３」の範囲で変化させて得られる各履歴演算用読出しアドレスを与え、選択信号で第１熱メモリ４１と第２熱メモリ４２とを交互に選択しながら０番目〜３番目の第１蓄熱データと第２蓄熱データを順次に読み出して演算回路３３に送る。なお、この場合にも、０番目の第１蓄熱データと第２蓄熱データは４回ずつ読み出される。
【００８２】
０番目〜３番目の第１蓄熱データと第２蓄熱データを用いて更新演算が行われ、新たな０番目の第２蓄熱データが算出される。新たな０番目の第２蓄熱データが算出されると、オフセットカウンタ５３にカウントダウンが指示が与えられ、カウント値Ｃｆが「１２０」となる。そして、このカウント値Ｃｆの下で、第２熱メモリ４２に新たな０番目の第２蓄熱データに書き込みが行われる。したがって、新たな０番目の第２蓄熱データはアドレス「１２０」に書き込まれる。
【００８３】
新たな０番目の第２蓄熱データの書き込み完了後、オフセットカウンタ５３にカウントアップの指示が与えられ、カウント値Ｃｆが値「０」とされる。以下、同様な手順によって新たな０番目の第３〜第５蓄熱データが求められて、それぞれ対応する熱メモリのアドレス「１２０」に書き込まれる。なお、第３蓄熱データの熱履歴演算では、第２蓄熱データと第３蓄熱データとが、第４蓄熱データの熱履歴演算では、第３蓄熱データと第４蓄熱データとが、第５蓄熱データの熱履歴演算では、第４蓄熱データと第５蓄熱データとがそれぞれ読み出される。
【００８４】
３番目の演算サイクルが終了すると、セルカウンタ５２にカウントアップの指示が与えられてカウント値Ｃｃが「１」とされてから、４番目の演算サイクルが開始される。なお、カウント値Ｃｆは、新たな０番目の第５蓄熱データのデータ書込み完了後に「０」とされている。
【００８５】
４番目の演算サイクルが３番目の演算サイクルと同様な手順で行われる。この４番目の演算サイクルでは、４番目の補正発熱データが算出されるとともに、新たな１番目の第１〜第５蓄熱データが算出される。そして、この新たな１番目の第１〜第５蓄熱データは、熱メモリへの書き込みの際に「１２０」とされたカウント値Ｃｆと、「１」のカウント値Ｃｃとから作成された履歴演算用書込みアドレスでアドレスが指定されるから、対応する熱メモリ４１〜４５のアドレス「１２１」に書き込まれ、結果として更新前のアドレスに対して「−８」アドレスのオフセットが付けられる。
【００８６】
以下、同様にして演算サイクルを順次に行い、５番目以降の補正発熱データと、２番目以降の新たな第１〜第５蓄熱データを算出する。そして、得られる補正発熱データは出力ラインメモリ３５に書き込まれ、新たな第１〜第５蓄熱データは、更新前のアドレスよりも「−８」だけオフセットが付けられて対応する熱メモリに書き込まれる。なお、１２０番目から最後（１２２番目）の演算サイクルでは補正演算は行われない。
【００８７】
結果として、図５（ｂ）に示されるように、第１ラインの演算処理が完了した時点では新たな０〜１１９番目の各蓄熱データは、対応する熱メモリのアドレス「１２０」〜「０」〜「１１１」にそれぞれ書き込まれた状態となる。
【００８８】
上記のように１ライン分の蓄熱データの更新を行っているときに、例えば新たに算出された８番目の第１蓄熱データは、第１熱メモリ４１のアドレス「０」に書き込まれる。この第１熱メモリ４１のアドレス「０」には、更新前の０番目の第１蓄熱データが書き込まれているが、この０番目の第１蓄熱データを必要とする熱履歴演算は既に完了しているので問題はない。８番目以降の第１蓄熱データの書込みについても同様であり、第２〜第５蓄熱データについても同様である。
【００８９】
以上のようにして第１ラインについての演算処理が完了すると、１１９番目の第５蓄熱データの書込み完了後に「０」とされたカウント値Ｃｆは、第２ラインの演算処理のためにオフセットカウンタ５３にカウントダウンの指示が与えられて「１２０」とされる。また、セルカウンタ５２が初期化されてカウント値Ｃｃが「１２５」とされる。
【００９０】
さらに、出力ラインメモリ３５から第１ラインの補正発熱データが順番に読み出されて、第２ＬＵＴ３６に送られる。そして、１ライン分の補正発熱データが第２ＬＵＴ３６で通電時間データに変換され、ラインメモリ２３に書き込まれる。なお、補正発熱データを算出する毎に、これを通電時間データに変換してラインメモリ２３に書き込んでもよい。
【００９１】
ラインメモリ２３に第１ラインの各通電時間データが書き込まれた後に、マイクロコンピュータ２０からの通電開始信号がヘッド駆動部２４に送られる。すると、ヘッド駆動部２４は、ラインメモリ２３上の１ライン分の通電時間データを取り込んで各発熱素子８の通電を開始し、対応する通電時間データに応じた時間が経過した時点で通電を停止する。これにより、各発熱素子８から対応する通電時間データの基となった補正発熱データに表される熱エネルギーが発生する。この各発熱素子８の発熱によりカラー感熱記録紙２のイエロー感熱発色層が発色してイエロー画像の第１ラインが記録される。
【００９２】
イエロー画像の第１ラインをサーマルヘッド７で記録している間に、第２ラインの演算処理が行われる。前述のようにカウント値Ｃｃが値「１２５」，カウント値Ｃｆが「１２０」とされてから、第２ラインの演算処理が第１ラインの場合と同様な手順で行われる。
【００９３】
補正演算時のデータ読出しでは、カウント値Ｃｆが「１２０」とされているので、熱メモリのアドレス「１２０」〜「０」〜「１１１」を順番に指定する補正演算用読出しアドレスが加算器５５で作成される。図５（ｂ）に示されるように、メモリのアドレス「１２０」〜「０」〜「１１１」には、順番に０〜１１９番目の蓄熱データが書き込まれているから、結果的に０番目の蓄熱データから順番に読み出される。
【００９４】
同様に、熱履歴演算時のデータ読出しにおいても、アドレス「１２０」〜「０」〜「１１１」を順番に指定する履歴演算用読出しアドレスが作成されるから、０〜１１９番目の各蓄熱データを順次に更新するのに必要な更新演算用読出しアドレスが作成されて蓄熱データが読み出される。
【００９５】
そして、履歴演算で算出された蓄熱データのデータ書込み時には、カウント値Ｃｆが「１１２」とされるので、更新前の蓄熱データが書き込まれているアドレス「−８」のオフセットを付けて書き込まれる。これにより、図５（ｃ）に示すように、新たな０〜１１９番目の蓄熱データは、アドレス「１１２」〜「０」〜「１０３」に書き込まれる。
【００９６】
第２ラインの演算処理が完了した後、カウント値Ｃｆが値「１１２」とされ、またカウント値Ｃｃが「１２５」とされる。また、第２ラインの各補正発熱データが通電時間データに変換され、ラインメモリ２３に書き込まれる。
【００９７】
イエロー画像の第１ラインの記録が終了した後に、パルスモータ６が駆動されてカラー感熱記録紙２が下流に向けて１ライン分送られてから、２番目の通電開始信号がヘッド駆動部２４に入力される。これにより、ラインメモリ２３上の第２ラインの通電時間データに基づいた通電時間で各発熱素子８が通電され、イエロー画像の第２ラインが記録される。
【００９８】
以下、同様にして、イエロー画像の第３ライン以降の補正演算、更新演算を行って補正発熱データの算出，蓄熱データの更新を行うとともに、カラー感熱記録紙２をステップ送りしながらサーマルヘッド７を駆動してイエロー画像の第３ライン以降を順次記録する。
【００９９】
イエロー画像の記録されたカラー感熱記録紙２の部分は、イエロー用光定着器１３からの紫外線が照射されることにより光定着される。イエロー画像の最終ラインの記録が終了し、カラー感熱記録紙２の後端まで光定着が完了すると、サーマルヘッド７による圧接が解除されてからカラー感熱記録紙２が戻される。この搬送中に、カラー感熱記録紙２の記録開始位置がサーマルヘッド７に達すると、搬送が停止されるとともに、サーマルヘッド７がカラー感熱記録紙２に圧接される。
【０１００】
サーマルヘッド７がカラー感熱記録紙２に圧接した後に、イエロー画像の場合と同様な手順で蓄熱補正部２２での処理を行いながら、マゼンタ画像を１ラインずつ記録する。
【０１０１】
マゼンタ画像の記録されたカラー感熱記録紙２の部分は、マゼンタ用光定着器１４からの紫外線が照射されることにより光定着される。マゼンタ画像の最終ラインの記録が終了すると、サーマルヘッド７による圧接が解除されてからカラー感熱記録紙２が戻される。この搬送中に、カラー感熱記録紙２の記録開始位置がサーマルヘッド７に達すると、搬送が停止されるとともに、サーマルヘッド７がカラー感熱記録紙２に圧接される。サーマルヘッド７が圧接された後に、シアンプリント工程が開始され、上記と同様な手順でシアン画像が１ラインずつ記録され、シアン画像の最終ラインが記録されたカラー感熱記録紙２は、排紙口４から排出される。
【０１０２】
図６は、蓄熱データの読出アドレスカウンタと、書込アドレスカウンタとを別々に設け、熱メモリとして任意の記憶容量のもの利用できる例を示すものである。なお、以下に説明する他は、上記実施形態と同様であり、実質的に同じ構成部材には同一の符号を付す。
【０１０３】
オフセットレジスタ６１には、蓄熱データを書き込む際のオフセットの大きさを示すオフセット値Ｆが書き込まれる。例えば、８アドレス分のオフセットを付ける場合には、オフセット値Ｆは「８」とされる。
【０１０４】
読出（Ｒ）用初期値レジスタ６２は、１色の画像の記録に先立って、そのカウント値Ｒｓに「０」が設定される。減算器６３は、１ライン分の演算処理が完了する毎に、その時点のカウント値Ｒｓからオフセット値Ｆを減算し、その減算結果を読出用初期値レジスタ６２の新たなカウント値Ｒｓとしてセットする。このようにしてセットされる、カウント値Ｒｓは１ラインの演算処理時における０番目の蓄熱データが書き込まれているアドレスを示している。なお、アドレスを増やす方向にオフセットを付ける場合には、減算器６３及び後述する減算器７３に代えて加算器を用い、カウント値にオフセット値Ｆを加算したものを新たなカウント値としてセットする。
【０１０５】
減算器６４は、演算回路３３で先行して行われる補正演算の回数だけカウント値Ｒｓを小さくするものであり、カウント値Ｒｓから値「３」減算し、これを読出（Ｒ）用カウンタ６５に送る。読出用カウンタ６５は、１ライン分の演算処理に先立って減算器６４からの減算結果、すなわち値「Ｒｓ−３」が、そのカウント値Ｒｃとしてセットされる。このカウント値Ｒｃは、演算サイクルが完了する毎に「１」ずづインクリメントされ、カウント値Ｒｃが熱メモリのアドレス範囲の上限に達すると、次のカウントアップで「０」となるように熱メモリのアドレス範囲に基づいた折り返し制御が行われる。このカウント値Ｒｃは、更新すべき蓄熱データのアドレスを示している。
【０１０６】
読出用カウンタ６３からのカウント値Ｒｃは、加算器５５，５７に送られる。加算器５５は、カウント値Ｒｃに値「３」を加算することで補正演算用読出しアドレスを算出する。加算器５７に送られたカウント値Ｒｃには、走査カウウンタ５６からの走査値「−３」〜「＋３」が加算され、加算アドレスＲａとして端部処理部６６に送られる。
【０１０７】
端部処理部６６には、上記実施形態と同様に実在する番号の蓄熱データに対応する履歴演算用読出しアドレスを出力するものである。この端部処理部６６には、加算器６５からの加算アドレスＲａの他に、カウント値Ｒｓと走査値が入力される。
【０１０８】
発熱素子８の個数（Ｑ＋１）としたときに、端部処理部６６は、走査値≦「Ｒａ−Ｒｓ」≦「走査値＋Ｑ」の条件を満たす場合には、加算アドレスＲａを履歴演算用読出しアドレスとして出力する。そして、この条件を満たさない場合で、「走査値＜「Ｒａ−Ｒｓ」の場合には、カウント値Ｒｓを更新演算用読出しアドレスとして出力することにより０番目の蓄熱データのアドレスを指定し、「Ｒａ−Ｒｓ」＜「走査値＋Ｑ」の場合には、値「Ｒｓ＋Ｑ」を更新演算用読出しアドレスとして出力することにより、最後すなわち「Ｑ」番目の蓄熱データのアドレスを指定する。
【０１０９】
書込（Ｒ）用初期値レジスタ７２は、１色の画像の記録に先立ってそのカウント値Ｗｓに「−Ｆ」がセットされる。減算器７３は、１ライン分の演算処理が完了する毎に、その時点のカウント値Ｗｓからオフセット値Ｆを減算し、その減算結果を書込用初期値レジスタ６７の新たなカウント値Ｗｓとしてセットする。このようにしてセットされる、カウント値Ｗｓは１ラインの演算処理時における新たな０番目の蓄熱データを書き込むべきアドレスを示している。
【０１１０】
減算器７４は、上述の減算器６４と同様に先行して行われる補正演算の回数だけカウント値Ｗｓ小さくするものであり、カウント値Ｗｓから値「３」減算し、これを書込（Ｗ）用カウンタ７５に送る。書込用カウンタ７５は、１ライン分の演算処理に先立って減算器７４からの減算結果、すなわち値「Ｗｓ−３」が、そのカウント値Ｗｃとしてセットされる。カウント値Ｗｃは、読出用カウンタ６３からのカウント値Ｒｃと同じく、演算サイクルが完了する毎に「１」ずつインクリメントされ、アドレス範囲に基づいた折り返し制御が行われる。このように制御されるカウント値Ｗｃは、新たな蓄熱データを書き込むべきアドレスを示している。
【０１１１】
上記のように読出用アドレスカウンタとしての読出用カウンタ６５、書込用アドレスカウンタとしての書込用カウンタ７５をそれぞれ設け、熱メモリのアドレス範囲の上限に達してからの次のカウントアップで「０」となるようにカウンタ毎にカウント値を制御可能にしているので、熱メモリ４１〜４５としては、その記憶容量が１ライン分の蓄熱データの個数よりもオフセット分以上大きくされるが、任意の記憶容量のものを用いることができる。
【０１１２】
なお、各減算器６３，６４、７３，７４、加算器５５，６６による加減算，端部処理部６７による条件判定とそれに基づく更新演算用読出しアドレスの出力制御は、熱メモリのアドレス範囲に基づくアドレスの折り返しを考慮して行われる。
【０１１３】
この例おいても蓄熱データの読出し、書込み時のアドレス指定は上記実施形態と同様に行われ、読出した更新すべき蓄熱データのアドレスに対して所定のオフセットを付けたアドレスに新たに算出された蓄熱データが書き込まれる。
【０１１４】
上記各実施形態では、各蓄熱層に対する熱履歴演算のタップ数を同じとして、オフセットの大きさ，ラインメモリの記憶容量を同じにしているが、各蓄熱層に対する熱履歴演算のタップ数が異なる場合であっても、最も大きいタップ数に合わせオフセット，ラインメモリの記憶容量を設定し、各蓄熱層の熱履歴演算の手順を共通化するのがよい。
【０１１５】
図７は、蓄熱データをオフセットを付けて書き込む代わりに、小容量のバッファメモリを設けたものである。なお、以下に説明する他は最初の実施形態と同様であり、同じ構成部材には同一の符号を付す。
【０１１６】
第１熱メモリ８１は、１ライン分の第１蓄熱データを記憶する記憶容量を持っている。第１熱メモリ８１に対応して第１バッファメモリ８１ａが設けられている。この第１バッファメモリ８１ａとしては、拡散計算のタップ数に応じた小容量のものが用いられる。この第１バッファメモリ８１ａのデータの読出し及び書込みはメモリコントローラ８６によって制御される。演算回路３３で算出される第１蓄熱データは、第１バッファメモリ８１ａに送られて書き込まれる。
【０１１７】
メモリコントローラ８６は、熱履歴演算時には、最初の実施形態と同様に更新すべき第１蓄熱データとその前後の各第１蓄熱データを順次に読み出すが、第１熱メモリ８１の各アドレスにそのアドレス番号と同じ番号の第１蓄熱データを書き込むため、第１蓄熱データを読み出しでは所望とする第１蓄熱データの番号がアドレスとして指定される。
【０１１８】
また、演算回路３３からの新たな第１蓄熱データを第１バッファメモリ８１ａに書き込む際には、メモリコントローラ８６は、アドレス０から順番に指定し、最後のアドレスを指定すると、次に再びアドレス０に戻るように循環的にアドレスの指定を行う。さらに、この第１蓄熱データの第１バッファメモリ８１ａへの書き込み先立って、メモリコントローラ８６は、第１バッファメモリ８１ａの書き込みの対象となっているアドレスに書き込まれている第１蓄熱データを読み出し、この読み出した第１蓄熱データをその番号と同じ第１熱メモリ８１のアドレスに書き込むように、第１熱メモリ８１と第１バッファメモリ８１ａとを制御する。
【０１１９】
第２〜第５熱メモリ８２〜８５には、第２〜第５バッファメモリ８２ａ〜８５ａが設けられており、これらは第１熱メモリ８１，第１バッファメモリ８１ａと同様にメモリコントローラ８６で制御される。
【０１２０】
各バッファメモリ８１ａ〜８５ａの最低限必要な記憶容量は、熱履歴演算のタップ数に応じて決まる。例えば、演算式▲２▼で熱履歴演算を行う場合で、例えば第１蓄熱データと第２蓄熱データについてのタップ数がいずれも「２ｔ＋１」である場合には、第１バッファメモリ８１ａは、「ｔ＋１」個以上の蓄熱データを記憶できる容量があればよい。また、第１蓄熱データについてのタップ数が第１蓄熱データのものよりも大きくその値「２ｔ＋１」である場合も同じである。
【０１２１】
また、第１蓄熱データよりも第２蓄熱データについてのタップ数が大きい場合には、第２蓄熱層の更新演算の際に、第２蓄熱データについてのタップ数分だけ更新前の第１蓄熱データを読み出す必要があるので、第１バファメモリの最低限必要な記憶容量は、第２蓄熱データについてのタップ数に応じて決める必要がある。なお、各蓄熱データの熱履歴演算のタップ数が異なる場合には、各タップ数に応じて決まる最低限必要な記憶容量のうちの最大の記憶容量を各バッファメモリに持たせ、各熱メモリ，各バッファメモリの制御シーケンスを共通化するのが好ましい。
【０１２２】
なお、同一の蓄熱層の蓄熱データだけを用いて、熱拡散の計算を行うのであれば、タップ数を「２ｔ＋１」個としたときに、それの蓄熱データに対応するバッファメモリは「ｔ」個以上の蓄熱データを記憶できる容量があればよい。
【０１２３】
この例では、各バッファメモリ８１ａ〜８５ａの記憶容量を「８」（アドレス０〜７）としているが、各蓄熱層に対応する更新演算のタップ数が「７」であるので、各バッファメモリ８１ａ〜８５ａの記憶容量は「４」あればよい。
【０１２４】
上記構成の作用を説明する。なお、第１〜第５メモリ８１〜８５，第１〜第５バッファメモリ８１ａ〜８５ａの動作はいずれも同様であるので、第１熱メモリ８１と第１バッファメモリ８１ａを例にして説明する。また、第１蓄熱データの熱履歴演算を行う場合には、補正発熱データが演算回路３３に入力されるが、図８，図９では省略してある。
【０１２５】
例えば第ｉラインの８番目の第１蓄熱データの更新演算の開始時には、図８（ａ）に示すように、第ｉ−１ラインのデータ処理演算で得られた第１蓄熱データ（ダッシュなしの番号で示す）が第１熱メモリ８１のアドレス０から順番に書き込まれている。また、第１バッファメモリ８１ａには、第ｉラインのそれまでの熱履歴演算で得られた新たな０〜７番目（ダッシュ付きの番号で示す）がアドレス０〜７に順番に書き込まれている。
【０１２６】
８番目の第１蓄熱データの更新のために、第１熱メモリ８１のアドレス５〜１１から５〜１１番目の第１蓄熱データが読み出され、演算回路３３に送られる。演算回路３３には、この他に第ｉラインの５〜１１番目の補正発熱データが入力される。これらの第１蓄熱データと補正発熱データとが演算式▲２▼に適用されて、新たな８番目の第１蓄熱データが算出される。
【０１２７】
上記のように新たな８番目の第１蓄熱データを算出している間に、第１バッファメモリ８１ａのアドレス０から新たな０番目の第１蓄熱データが読み出されて第１熱メモリ８１に送られる。そして、この新たな０番目の第１蓄熱データが第１熱メモリ８１のアドレス０に書き込まれる。
【０１２８】
新たな０番目の第１蓄熱データが第１熱メモリ８１に書き込まれた後に、演算回路３３からの新たな８番目の第１蓄熱データが第１バッファメモリ８１ａに送られる。そして、図８（ｂ）に示すように、新たな８番目の第１蓄熱データが第１熱メモリ８１ａのアドレス０に書き込まれる。
【０１２９】
新たな８番目の第１蓄熱データを第１熱メモリ８１ａに書き込んだ後に、第１熱メモリ８１のアドレス６〜１２から読み出された６〜１２番目の第１蓄熱データと、第ｉラインの６〜１２番目の補正発熱データが演算回路３３に送られて、新たな９番目の第１蓄熱データが算出される。また、一方で第１バッファメモリ８１ａのアドレス１から読み出された新たな１番目の第１蓄熱データが第１熱メモリ８１のアドレス１に書き込まれる。そして、この後に、新たな９番目の第１蓄熱データが第１熱メモリ８１ａのアドレス９に書き込まれる。
【０１３０】
以下、同様にして順次に算出される新たな第１蓄熱データを第１バッファメモリ８１ａに書込み、第１バッファメモリ８１ａに書き込まれている第１蓄熱データを第１熱メモリ８１に書き込む。
【０１３１】
図９（ａ）に示すように、新たな７番目の第１蓄熱データが第１熱メモリ８１に書き込まれ、また新たな１５番目の第１蓄熱データが第１バッファメモリ８１ａのアドレス７に書き込まれた状態となると、次の１６番目の第１蓄熱データの熱履歴演算時では、先に第１バッファメモリ８１ａのアドレス０に書き込まれた８番目の新たな第１蓄熱データが読み出されて第１熱メモリ８１のアドレス８に書き込まれる。そして、この後に、新たに算出された１６番目の第１蓄熱データが第１バッファメモリ８１ａのアドレス０に書き込まれる。
【０１３２】
このようにして、第１バッファメモリ８１ａのアドレスを循環させながら新たな蓄熱データを順次に書き込むようにしながら、第１バッファメモリ８１ａに書き込んだ第１蓄熱データを第１熱メモリ８１に書き込む。
【０１３３】
上記各実施形態では、感熱プリンタを例にして説明したが、各種のサーマルプリンタにも利用できる。またラインプリンタの例について説明したが、本発明はシリアルプリンタにも利用することができる。
【０１３４】
【発明の効果】
本発明によれば、ラインメモリから読み出した所定のタップ数の蓄熱データを用いて拡散計算を含む熱履歴演算を行い、その結果をラインメモリに書き戻す際に、タップ数に応じたオフセットを付けてラインメモリに書き戻すようにするとともに、そのオフセットに応じてラインメモリの記憶容量を大きくしたから、バッファメモリを設けることなく蓄熱データをラインメモリに書き戻すことができるようになり、回路規模を小さくできる。
【０１３５】
また、タップ数に応じた小容量のバッファメモリを設け、順次に算出される熱履歴演算の結果をバッファメモリのアドレスを循環させながら順次に指定して書き込むようにしながら、その書き込むべきアドレスの蓄熱データをラインメモリに書き戻すようにしたから、回路規模を小さくできる。
【図面の簡単な説明】
【図１】本発明を実施したカラー感熱プリンタの概略を示すものである。
【図２】カラー感熱プリンタの電気的な構成を示すブロック図である。
【図３】サーマルヘッドの蓄熱補正と蓄熱状態の更新を行う蓄熱補正部の構成例を示すブロック図である。
【図４】メモリコントローラの構成を示すブロック図である。
【図５】熱メモリのアドレスと書き込まれている蓄熱データの関係を示す説明図である。
【図６】読出用と書込用のアドレスカウントを設けた例を示すものである。
【図７】小容量のバッファメモリを設けた例を示すものである。
【図８】熱メモリ，バッファメモリの各アドレスと書き込まれている蓄熱データの関係を示す説明図である。
【図９】バッファメモリのアドレスが循環的に指定される状態を示す説明図である。
【符号の説明】
７　サーマルヘッド
８　発熱素子
２２　蓄熱補正部
３３　演算回路
４１〜４５、８１〜８５　熱メモリ
４６，８６　メモリコントローラ
６５　読出用カウンタ
７５　書込用カウンタ
８１ａ〜８５ａ　バッファメモリ
【図１】
2004009326.tif 000005
【図２】
2004009326.tif 000006
【図３】
2004009326.tif 000007
【図４】
2004009326.tif 000008
【図５】
2004009326.tif 000009
【図６】
2004009326.tif 000010
【図７】
2004009326.tif 000011
【図８】
2004009326.tif 000012
【図９】
2004009326.tif 000013