2025年12月2日火曜日

PIC16F1827 - MCC設定 ADCテスト

MPLAB X IDE 6.2/XC8(v2.00)/MCC ClassicからJH7UBC畠さんのADCプログラムを基にしてPIC16F1827によるADCテスト。
Vin値 0~5V → 0~1023







●PIC12F1840 ADCテスト
●PIC16F1705 MCC ADCテスト
●Curiosity PWMで明るさを変化 - MCC

回路図

























PICKit3プログラミングキット
互換器
※MPLAB X IDE 6.20までPICKit3が使用できる







PIC16F1827ブレットボード用基板

・USB Type-C(5V)→PIC電源供給
・Pickit3接続端子






基板にピンヘッダーハンダ後、絶縁座を端子先端に移動してICソケット足を曲げてピンヘッダーと曲げた足にハンダを流し、導通チェックしてからピンヘッダー根本に絶縁座を戻しました。
※ブレッドボード供給5V・GNDピンヘッダーピンを追加






AQM0802A
スイッチサイエンス
I2C接続の小型LCD搭載ボード(5V版)
回路的にはプルアップ抵抗10KΩが入っているが、SDA SCL にプルアップ抵抗10KΩを入れないと表示しない。

●同ブログ【PIC16F1827 - MCC設定 AQM0802A表示テスト】










MPLAB X IDE 6.20インストール
●MPLAB ®開発エコシステム ダウンロード アーカイブ









【MPLAB X v6.20】ダウンロード
画面に従ってインストールを行う

New Project












Select Device














Select Compiler


※AQM0802AのコードがXC8(v3.10)だとコンパイルエラーになるので、バージョンを合わせてXC8(v2.00)に変更。
●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


















ADC




















Interrupt Module




























Pin Module










Pin Manager















Generate















printf関数→C90













main
#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("ADC"); 
     LCD_cursor(0,1);
     printf("Vin");   
     while (1)
    {
    LCD_cursor(4,1);
    printf("%4d",ADC_GetConversion(0));
    __delay_ms(100);    
    }
}


PICKit3 Power設定




0 件のコメント:

コメントを投稿

SI4732 - ESP32制御 DSPラジオモジュール

aitendo : SI4732 DSPラジオ モジュールを使用して、ESP32制御DSPラジオをブレッドボードに組立。スケッチはPU2CLR 氏:pu2clr/SI4735 ライブラリーESP32【OLED_ALL_IN_ONE】を選択、AM放送・7MHz SSB CW・FM放...