AQM0802AをMPLAB X IDE 6.2/MCC ClassicからJH7UBC畠さんのプログラムをXC8(v2.00)でコンパイルしてAQM0802Aの表示テストを行いました。
AQM0802Aは回路的にはプルアップ抵抗10KΩが入っているが、SDA SCL にプルアップ抵抗10KΩを入れないとAQM0802Aが表示しない。
参考サイト
●PIC勉強と製作の軌跡
●PIC勉強と製作の軌跡
回路図
PIC16F1827ブレットボード用基板
基板にピンヘッダーハンダ後、絶縁座を端子先端に移動してICソケット足を曲げてピンヘッダーと曲げた足にハンダを流し、導通チェックしてからピンヘッダー根本に絶縁座を戻しました。
※ブレッドボード供給5V・GNDピンヘッダーピンを追加
AQM0802A
I2C接続の小型LCD搭載ボード(5V版)
回路的にはプルアップ抵抗10KΩが入っているが、SDA SCL にプルアップ抵抗10KΩを入れないと表示しない。
MPLAB X IDE 6.20インストール
●MPLAB ®開発エコシステム ダウンロード アーカイブ
【MPLAB X v6.20】ダウンロード
画面に従ってインストールを行う
●XC8(v2.00)ダウンロード:MPLAB ® XC8 コンパイラ アーカイブ【https://www.microchip.com/en-us/tools-resources/archives/mplab-ecosystem#xc8】
Project Name
Project Name:任意
※Encoding修正【Tools】【Options】【Enbeded 】【 Default Charset】【Shift JIS】
MCC Classic
MCC Classicに切替OSC
I2C
MSSP1
Interrupt Module
Pin Manager
Generate
main.c ※下記サイトのコードと異なる部分があります。
//http://jh7ubc.web.fc2.com/pic/MCC/PIC16F1705_MCC_AQM0802A.html
#include "mcc_generated_files/mcc.h"
#include "mcc_generated_files/examples/i2c1_master_example.h"
#define I2CLCD_AQM0802A 0x3e
//-------- send character ------------------------
void LCD_dat(uint8_t chr)
{
I2C1_Write1ByteRegister(I2CLCD_AQM0802A, 0x40, chr);
__delay_us(30); // 30us
}
//-------- send command -------------------------
void LCD_cmd(uint8_t cmd)
{
I2C1_Write1ByteRegister(I2CLCD_AQM0802A, 0x00, cmd);
if(cmd & 0xFC) // bit6 = 1
__delay_us(30); // 30us
else
__delay_ms(2); // 2ms Clear or Home
}
//-------- clear LCD--------------------------
void LCD_clr(){
LCD_cmd(0x01);
}
//--------- Home -----------------------------
void LCD_home(){
LCD_cmd(0x02);
}
//--------- Cursor X,Y -----------------------
void LCD_cursor(uint8_t x,uint8_t y){
if (y == 0)
LCD_cmd(0x80 + x);
if (y == 1)
LCD_cmd(0xc0 + x);
}
//-------- write 1 character to LCD ----------------
void putch(uint8_t ch){
LCD_dat(ch);
}
//-------- LCD initialize ---------------------------
void LCD_init(){
__delay_ms(40); //40ms wait
LCD_cmd(0x38); //8bit,2line
LCD_cmd(0x39); //IS=1 : extention mode set
LCD_cmd(0x14); //Internal OSC Frequency
LCD_cmd(0x77); //Contrast set
LCD_cmd(0x5D); //Power/ICON/Contrast Control
LCD_cmd(0x6C); //Follower control
__delay_ms(200);//200ms wait
LCD_cmd(0x38); //IS=0 : extention mode cancel
LCD_cmd(0x0C); //Display ON
LCD_cmd(0x01); //Clear Display
__delay_ms(2); //wait more than 1.08ms
}
void main(void)
{
// initialize the device
SYSTEM_Initialize();
// Enable the Global Interrupts
INTERRUPT_GlobalInterruptEnable();
// Enable the Peripheral Interrupts
INTERRUPT_PeripheralInterruptEnable();
__delay_ms(500);
LCD_init();
LCD_cursor(0,0);
printf("AQM0802A");
LCD_cursor(0,1);
printf("count");
uint8_t count = 0;
while (1)
{
LCD_cursor(5,1);
printf("%3d",count);
count++;
__delay_ms(1000);
}
}

.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
0 件のコメント:
コメントを投稿