工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoを介したAtmelAT89シリーズのプログラミング

コンポーネントと消耗品

>
Arduino UNO
× 1
LED(汎用)
× 1

必要なツールとマシン

>
はんだごて(汎用)

アプリとオンラインサービス

>
Arduino IDE
8051SPIプログラマー

このプロジェクトについて

このチュートリアルでは、ArduinoUnoを使用して16進ファイルをAT89c52に書き込む方法をいくつかの簡単な手順で説明します。このためには、AT89c52をArduino Unoに接続し、LEDをAt89c52に接続することでLED表示を提供する必要があります。

ステップ1:部品表

  • Arduino UNO
  • AT89C52マイクロコントローラー
  • 10uFコンデンサ
  • ジャンパー線
  • 8.2kΩ抵抗
  • 510オームコンデンサ
  • LED
  • 12MHzクリスタル
  • 2 x33pFコンデンサ

ステップ2:マイクロコントローラーを接続する

<図>

以下のようにマイクロコントローラーを接続します:

  • At89c52 Arduino Uno
  • ピン6ピン5
  • ピン7ピン4
  • ピン8ピン3
  • ピン9ピン2

ステップ3:クリスタル

<図>

Atmelのピン18と19の間にCrystalを接続してから、ピン18と19の2つの33pfコンデンサをAtmelのグラウンドに接続します。完全な回路図については、回路図のセクションを参照してください。

ステップ4:VCCとGND

<図>

Arduino Unoの5vピンをAtmelの40番目のピンに接続し、GNDピンをAtmelの20番目のピンに接続します。

ステップ5:LEDのインターフェース

<図> <図>

回路図セクションで提供される回路図の助けを借りてLEDをインターフェースします。

ステップ6:ソフトウェア

<図>

16進ファイルを89c52に書き込むには8051SPIプログラマーが必要です。リンクはソフトウェアセクションで提供されます。 Arduino UNOに提供されたコードをアップロードすると、プログラマーの準備が整います。

コード

  • 無題のファイル
無題のファイル C / C ++
 #defineダミーデータ0xAA#define RDY 75#define NRDY 76const int _MISO =4; const int _MOSI =5; const int _CLK =3; const int RST =2; / *変数定義ブロック* / byte data; byte AL 、AH; // 16ビットアドレスバイトlockByte; //ロックビットをここに埋め込みますbyteSigH、SigL; //署名Bytesvoidsetup(){pinMode(_MISO、INPUT); pinMode(_MOSI、OUTPUT); pinMode(_CLK、OUTPUT); pinMode(RST、OUTPUT); Serial.begin(115200); //ホストPCの設定に依存します} void loop(){while(!Serial.available()); //文字を待つif(Serial.available()> 0)switch(Serial.read()){case'p ':Serial.write(progEnable());壊す;ケース 'r':readProgmem(); Serial.write(data);壊す;ケース 'a':while(!Serial.available()); AL =Serial.read();壊す;ケース 'A':while(!Serial.available()); AH =Serial.read();壊す;ケース 'd':while(!Serial.available()); data =Serial.read();壊す;ケース 'S':AH =0; AL =0; SigH =readSign(); Serial.write(SigH);壊す;ケース 's':AH =2; AL =0; SigL =readSign(); Serial.write(SigL); AH =1; AL =0; SigL =readSign(); Serial.write(SigL);壊す; // SigLケース 'o'を読み取ります:digitalWrite(RST、1); break;ケース 'c':digitalWrite(RST、0); break;ケース 'e':eraseChip(); Serial.write(RDY);壊す;ケース 'j':ブレーク;ケース 'w':writeProgmem();壊す; }} unsigned char SendSPI(unsigned char data){uint8_t retval =0; uint8_t intData =データ; int t; for(int ctr =0; ctr <7; ctr ++){if(intData&0x80)digitalWrite(_MOSI、1);それ以外の場合、digitalWrite(_MOSI、0); digitalWrite(_CLK、1); delayMicroseconds(1); t =digitalRead(_MISO); digitalWrite(_CLK、0); if(t)retval | =1;それ以外の場合、retval&=0xFE; retval <<=1; intData <<=1; delayMicroseconds(1); } if(intData&0x80)digitalWrite(_MOSI、1);それ以外の場合、digitalWrite(_MOSI、0); digitalWrite(_CLK、1); delayMicroseconds(1); t =digitalRead(_MISO); digitalWrite(_CLK、0); if(t)retval | =1;それ以外の場合、retval&=0xFE; retvalを返します。 } byte progEnable(){SendSPI(0xAC); SendSPI(0x53); SendSPI(dummyData); SendSPI(dummyData);} void destroyChip(){SendSPI(0xAC);を返します。 SendSPI(0x9F); SendSPI(dummyData); SendSPI(dummyData); delay(520);} void readProgmem(){SendSPI(0x20); SendSPI(AH); SendSPI(AL); data =SendSPI(dummyData);} void writeProgmem(){SendSPI(0x40); SendSPI(AH); SendSPI(AL); SendSPI(data);} void writeLockBits(){SendSPI(0xAC); SendSPI(lockByte); SendSPI(dummyData); SendSPI(dummyData);} void readLockBits(){SendSPI(0x24); SendSPI(dummyData); SendSPI(dummyData); lockByte =SendSPI(dummyData);} byte readSign(){SendSPI(0x28); SendSPI(AH); SendSPI(AL); SendSPI(dummyData);} 
を返します

回路図


製造プロセス

  1. Arduinoを介したAtmelAT89シリーズのプログラミング
  2. Arduinoを使用したRCレシーバーPPM信号の読み取り
  3. Arduino-シリアル経由でWebに温度を送信
  4. ThimbleKrox-指でマウスを操作する
  5. IntelCurieによるモーションセンシティブな回路制御
  6. BLUE_P:ワイヤレスArduinoプログラミングシールド
  7. Arduino-FacebookMes​​sengerを介してドアが開くのを監視
  8. Arduino-ステップモーターコントローラーを使用したWeb経由の描画
  9. Arduino Calculator
  10. Arduino制御の人工キャンドルライト
  11. ArduinoUnoを使用した25kHz4ピンPWMファン制御