Programming the Intel MCS-48 Microcontrollers

The Intel series of MCS-48 family of microcontrollers, commonly known as the 8048 series were one of the most prominent microcontrollers 35 years back. All they feature is 64 bytes of RAM, and access to 4096 bytes of external program memory.


The first thing was to make sure that an EEPROM was loaded with the program; however they supported the D27256 series of eeprom instead of D2758 series. To solve the problem upper addressable bits were tied to ground and the solution worked. The program was written in assembly with Windows 7 as the developing platform since the programming tools are running on the Windows platform.

Early Intel processors combine the address and data bits onto the same lines and use two signals: ALE (Address Latch Enable) and PSEN (Program Store Enable) to signal what state the bus is in. This was done to save costs and keep pin count down. Unfortunately this complicates the connection to an external PROM. To solve the problem Andrew Rossignol used an external latch to store the address lines after the bus returned to a floating state.

Interfacing multiple LCDs using two wire interface

First thing that comes to the head is why use multiple small LCDs instead of on bigger. But you never know what situation may occur. For this purpose Jesus Echavarria have designed a special board – I2C I/O expander based on MCP23017. It is capable of expanding I2C to 16 I/Os.

LCDs using two wire interface

So he has plenty of these, so why not to try driving 8 LCD using single I2C interface. As driving MCU he uses AT89C51RE2 microcontroller board. Each expander board has its own I2C address by using three jumpers (total 8 possible slaves). The other is left for MCU software to talk to each slave and send LCD commands. I2C interface is more short distance communication interface, so if you wish to connect remote LCDs you may look for different solutions like RS485, CAN etc.


AT89C51RE2 based development board

Jesus Echavarriahave built pretty handy development board based on Atmel AT89C51RE2 microcontroller. This is a small board that packs few features that enable fast prototyping. First of all it is powered at 3.3V using low dropout regulator. So it can be powered from 5V USB port. Microcontroller is 8051 architecture with 128KB of Flash and 8KB of RAM.

AT89C51RE2 based development board

Development board carries TUSB3410 chip from Texas Instruments, which converts MCU serial interface to USB. It can be used on PC as virtual COM. There are also couple switches, buttons, LEDs and buzzer. They can speed up prototyping significantly. The list continues with External I2C bus which his isolated using ADUM1250. It also works as voltage level convertor from 3 to 5V. The nthere is a standard 1-wire temperature sensor DS18B20. To internal I2C interface there are RTC, EEPROM and ADC connected. As you can see it is quite powerful collection to do some serious projects.

Proportional liquid supply controller

Sammer has noticed about his latest project called liquid supply system. You can see a good example of such device when filling petroleum. It pours exact amount of it. The solution is pretty simple – it is based on time value rather than debit counter. So before usage, it needs a reference value which is taken by measuring 100% value. This is done by running pump as long as desired amount is pumped. Say its one litter than its 100%. Once the value is stored you can pour like 5 litters by setting value of 500% on LCD and starting the pump motor. Once liquid is poured, it stops automatically.

liquid supply system

This by far not the most accurate way of doing this, but if you get right reference value and pump flow is constant, then it serves pretty good. The most attractive thing here that it is setup is simple – microcontroller, and motor relay. No real measuring is done.