The Image craft iARM-2103 is a highly integrated, RoHS-compliant, single board computer based on a Philips LPC2103 ARM7 microcontroller. It can be powered via USB port, eliminating the need for an extra power supply. Firmware upgrades can be downloaded via USB, thus allowing "plug-and-go" immediate development without additional hardware investment.

The iARM-2103 not only satisfies the needs of development and experimentation, but also is meant to follow through to production as a professional and reliable single board computer solution. Manufactured in a U.S. production house meeting military and NASA standards, the iARM-2103 is of the highest quality.
The iARM-2103 includes many features not found in comparably priced boards, such as lead-free/RoHS compliant components, DIP switch for configuration instead of jumpers, JTAG header, 64 Kbit I²C EEPROM, brown-out protection, firmware upgrades via USB, free USB drivers, RTC with 32.768 kHz clock and battery backup support, A/D converter, all I/O signals brought out to headers, and much more.
The iARM-2103 measures 2.6" x 1.9" and can be used either as a plug-in module or a standalone single board computer. In the standalone configuration, the iARM-2103 is mounted easily with standoffs, and the header pins plug directly into standard 0.1" cable connectors. The iARM-2103 is fully supported by the ImageCraft ICCARM C compiler. The ICCARM demo is perfect for iARM-2103 development. It is fully functional for 45 days, and becomes 10K code limited for non-commercial use after 45 days. Flash programming can be done using the free Philips-provided serial downloader over the USB port.
The product comes with many example programs for the Imagecraft ICCARM compiler to speed development, including a variety of iARM-2103 programs and Windows applications demonstrating communication between the PC and the iARM-2103 over USB.
Programming in C:
/*****************************************************/
/* Target MCU : Philips ARM7-LPC2119 */
/* : X-TAL : 19.6608 MHz */
/* : Run Speed 58.9824MHz (With PLL) */
/* Compiler : GCC ARM V3.31 */
/*****************************************************/
#include "LPC2103.H" // LPC2119 MPU Register
#include
#include "timer.H"
#include "config.H"
#include "lcd.h"
#include "serial0.h"
#define RED_PIN PIN19
#define GREEN_PIN PIN21
#define Blue_PIN PIN20
#define row1 PIN24
#define row2 PIN5
#define row3 PIN7
#define row4 PIN9
#define column1 PIN11
#define column2 PIN13
#define column3 PIN15
#define column4 PIN3
#define wrong 0x00
#define correct 0x01
const ulint column[4]={column1,column2,column3,column4};
const uchar row_table[4][4]={{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};
const unsigned int LED_PORTS[10]={0x1c07,0x0006,0x2c03,0x2407,0x3006,0x3405,0x3c05,0x0007,0x3c07,0x3407};
void delay(unsigned long int count){
while(count>1)count--;
}
uchar const code[]={"12AB54CD"};
uchar code_buffer[8];
uchar row,key,buffer_count=8,new=1;
void timer0_intrruppt(){
++row;
key='N';
if ((row)==4) row=0;
IOCLR|=(column1|column2|column3|column4);//clear all pin
delay(10);
IOSET|=column[row];//
delay(10);
if((IOPIN& row1) ==row1)key=row_table[row][0];
else if((IOPIN& row2) ==row2)key=row_table[row][1];
else if((IOPIN& row3) ==row3)key=row_table[row][2];
else if((IOPIN& row4) ==row4)key=row_table[row][3];
if(key=='N'){ if(++new>5)new=5;}
else {
if(new==5){
++buffer_count;
if(buffer_count>7)buffer_count=0;
code_buffer[buffer_count]=key;
}
new=0;
}}
int main(){
uchar password;
uchar reg=8,i;
PINSEL0=0;
PINSEL1=0;
init_serial0();
if(!lcd_init())printf("lcd erorr");
init_timer();
//IODIR|=0x7c070000; //define all led ports as out put
// IOSET|=0x7c070000; //turn off all leds
IODIR|=(GREEN_PIN|Blue_PIN|RED_PIN);//define RGB pins as out put
IOSET|=(GREEN_PIN|Blue_PIN|RED_PIN);//turn RGB off
// IOCLR|=RED_PIN;//turn on the red LED
IODIR|=(column1|column2|column3|column4);
key='N';
lcd_putsf("Enter Password: ",16);
lcd_gotoxy(0,1);
while(1){
if(reg!=buffer_count){
putchar(code_buffer[buffer_count]);
lcd_putchar(code_buffer[buffer_count]);
reg=buffer_count;
if(buffer_count==7){
password=correct;
for(i=0;i<8;i++)if(code_buffer[i]!=code[i]){
printf("wrong password\n");
lcd_gotoxy(0,0);
lcd_putsf("wrong password ",16);
delay(50000000);
lcd_gotoxy(0,0);
lcd_putsf("Enter Password: ",16);
lcd_gotoxy(0,1);
lcd_putsf(" ",16);
lcd_gotoxy(0,1);
password=wrong;
i=9; }
if(password==correct){
lcd_gotoxy(0,0);
lcd_putsf("correct!!!!!! ",16);
IOCLR|=(GREEN_PIN|Blue_PIN|RED_PIN);//turn RGB 0n
delay(50000000);
IOSET|=(GREEN_PIN|Blue_PIN|RED_PIN);//turn RGB off
lcd_gotoxy(0,0);
lcd_putsf("Enter Password: ",16);
lcd_gotoxy(0,1);
lcd_putsf(" ",16);
lcd_gotoxy(0,1);
printf("password is correct!!!!!!!!!!!!!!\n");}
reg=buffer_count=8;
}}}}
.jpg)








