• 締切済み

RTCで取得した値をLCDに表示したい

H8SX/1655に接続したRTCからの値をLCDに表示させて 時計を作りたいんですけど、値の受け渡しの方法がいまいちわかりません>< 言語は、C言語を使ってHEWでプログラムを作っています・・・ LCDの1列目と2列目に文字は、表示できました。 RTCの使い方が、わかるサイトとか教えてもらえると幸いです。。。。

みんなの回答

noname#137556
noname#137556
回答No.3

ANo.2 の補足について 内蔵の I2C インターフェイスを使うなら,初期化(レジスタの設定)が必要です。 ポートを直接操作しても出来なくはないですが,面倒なだけです。 rtc_write から rtc_write を呼んだりしていますが,大丈夫なのでしょうか? 読んできたデータはどこかに保存されているのでしょうか? ↓前掲のアプリケーションノートのソースコードです。 http://japan.renesas.com/support/downloads/download_results/C2009701-C2009800/an_rjj06b0790_h8sx_iic.jsp 参考にしてください。

noname#137556
noname#137556
回答No.2

基本的には,I2C デバイス上のアドレスを指定して, そこのデータを読み書きします。 I2C の概要は↓が分かりやすいでしょうか。 http://wiki.livedoor.jp/yamamaya_com/d/I2C%A5%D0%A5%B9%A4%F2%BB%C8%A4%C3%A4%C6%A4%DF%A4%E8%A4%A6 どこのアドレスに何があるかは,RTC のデータシートやマニュアルを参照してください。 http://www.epsontoyocom.co.jp/product/RTC/set03/rtc8564je_nb/ マイコン側は,内蔵の I2C バスインターフェイスを使うことになると思います。 アプリケーションノートが出ているので,参考にしてください。 http://documentation.renesas.com/jpn/products/mpumcu/apn/rjj06b0790_h8sxap.pdf

TTaruruTT
質問者

お礼

ありがとうございます^^ I2Cの概要が、ものすごくわかりやすかったです。

TTaruruTT
質問者

補足

ここに書いてある内容をもとにプログラムを組んでみました。 /**************************ここからRTC***********************************/ //STARTコンディション void start(void) { P1.DR.BIT.B6 = 1;//SDA=1 P1.DR.BIT.B7 = 1;//SCL=1 if(P1.DR.BIT.B7 = 1) { P1.DR.BIT.B6 = 0;//SDA=1 } } //STOPコンディション void stop(void) { P1.DR.BIT.B7 = 1;//SCL=1 P1.DR.BIT.B6 = 0;//SDA=0 if(P1.DR.BIT.B7 = 1) { P1.DR.BIT.B6 = 1;//SDA=1 } } //データビットはSCLが1レベルの間に確定される。 //RTCからLCDへ書き込むアドレスとデータ void rtc_write(unsigned char address , unsigned char data) { //Write用アドレス0xA2 P1.DR.BIT.B7=0xA2; rtc_write(0x02 , 0x01);//秒 rtc_write(0x03 , 0x01);//分 rtc_write(0x04 , 0x01);//時 rtc_write(0x05 , 0x17);//日 rtc_write(0x06 , 0x03);//曜日 rtc_write(0x07 , 0x01);//月 rtc_write(0x08 , 0x7DB);//年 } //RTCの読み込むアドレスとデータ void rtc_read(unsigned char address) { //Read用アドレス0xA3 P1.DR.BIT.B7=0xA3; rtc_read(0x02); rtc_read(0x03); rtc_read(0x04); rtc_read(0x05); rtc_read(0x06); rtc_read(0x07); rtc_read(0x08); } //I/Oポートの初期化 void port_init() { PH.DDR=0xff;//PHを出力に設定LCD P1.DDR=0x00;//P1を入力に設定スイッチ、RTC } //LCDに表示 void main(void) { void start(); void rtc_read(); void rtc_write(); initLCD(); cur_pos(0,0); print_lcd(rtc_read); while(1) {} } RTCに関するところだけですけど・・・ これだと、LCRにわけのわからない文字が表示されちゃいます>< これは、表示する形が違うためなんでしょうか? LCDに表示するプログラムの部分は、print_lcd();の中身です。 読み込んだ値をそのまま入れただけなんですけど・・・ 何か、アドバイスをください。。。

noname#137556
noname#137556
回答No.1

RTC そのものというより,RTC にアクセスするための I/F, 例えば IIC とか SPI とかの使い方がわからない,ということなのでしょうか? RTC の型式や I/F の種類,具体的にどこが分からないのかを,補足したほうが良いと思います。

TTaruruTT
質問者

補足

RTCの型番は、RTC-8564NBを使っています。 今は、I2Cを使ってマイコンに接続しています。 が、I2Cの使い方がよくわかりません>< SCLとSDAを接続して、プログラムのほうでどうやったら この2線から時間が取得できるのでしょうか? ちぐはぐな質問ですみません。。。

関連するQ&A

専門家に質問してみよう