pdf viewer control without acrobat reader installed c# : Add picture to pdf SDK Library service wpf asp.net windows dnn PICMatlabPaper0-part2682

“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
Session 2220 
Development of a Matlab-Based Graphical User Interface 
Environment for PIC Microcontroller Projects
Sang-Hoon Lee, Yan-Fang Li, and Vikram Kapila 
Department of Mechanical, Aerospace, and Manufacturing Engineering 
Polytechnic University, Brooklyn, NY 11201 
Email: [slee05@utopia, yli14@utopia, vkapila@duke].poly.edu
Abstract 
Peripheral Interface Controllers (PICs) are inexpensive microcontroller units with built-in 
serial  communication  functionality.  Similarly,  Matlab,  a  widely  used  technical  computing 
software,  allows  serial  communication  with  external  devices.  In  addition,  Matlab  provides 
graphical design tools such as Simulink and Dials and Gauges Blockset. This paper exploits the 
serial communication capability of PIC microcontrollers and the Matlab software along with 
graphical  design  tools  of  Matlab  to  create  a  Matlab-based  graphical  user  interface  (GUI) 
environment for PIC microcontroller projects. Three examples are included to illustrate that the 
integration of low-cost PIC microcontrollers with the Matlab-based GUI environment allows 
data acquisition, data processing, data visualization, and control. 
1. Introduction 
Peripheral  Interface  Controllers  (PICs),  developed  and  marketed  by  Microchip 
Technology, Inc. [1], are inexpensive microcontroller units that include a central processing unit 
and peripherals such as memory, timers, and input/output (I/O) functions on an integrated circuit 
(IC).  There  are  more  than  100  varieties  of  PIC  microcontrollers  available,  each  providing 
functionality  for  different  types  of  applications  [2],  making  PICs  one  of  the  most  popular 
microcontrollers  for  educational,  hobby,  and  industrial  applications.  Similar  to  other 
microcontrollers, PICs are usually not designed to interface with human beings; instead they are 
directly  embedded  into  automated  products/processes.  Thus,  graphical  user  interface  (GUI) 
capabilities, which have become a mainstay of many personal computer (PC) applications, are 
nonexistent for PICs. 
Add picture to pdf - insert images into PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sample C# code to add image, picture, logo or digital photo into PDF document page using PDF page editor control
adding an image to a pdf file; add image field to pdf form
Add picture to pdf - VB.NET PDF insert image library: insert images into PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide VB.NET Programmers How to Add Images in PDF Document
add an image to a pdf with acrobat; how to add image to pdf form
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
Endowing PIC-based projects with GUI tools can speed the development process in data 
driven  applications  such  as  feedback  control,  smart  sensors,  etc.  Microchip  Technology’s 
emulator  and  debugger  products  (e.g.,  MPLAB  IDE,  MPLAB-ICE)  are  very  helpful  in 
debugging PIC source code and emulating user-written programs. However, these tools do not 
provide data co-processing and advanced data visualization capabilities. 
Fortunately, PIC microcontrollers include serial communication functionality to facilitate 
data communication with external devices such as analog-to-digital converters (ADC), 1-wire 
sensors, etc. Similarly, Matlab, a commercially available interactive mathematical programming 
software, also provides serial data communication functionality on PCs. In addition, Simulink, 
Matlab’s  interactive  icon-based  programming  environment,  enables  users  to  simulate  and 
analyze dynamic system models. Finally, the Dials and Gauges Blockset of Simulink allows 
users to embed control objects (e.g., sliders, knobs) and display objects (e.g., graphs, gauges) in 
Simulink models to develop an interactive GUI environment. In this paper, we exploit the serial 
communication  functionality  of  Matlab  to  enable  a  PC  to  communicate  with  PIC 
microcontrollers to transmit control commands and receive sensory data. In addition, we utilize 
Matlab, Simulink, and Dials and Gauges Blockset to develop an interactive GUI environment for 
PIC projects, allowing enhanced data processing and visualization. 
In this paper, we use a PIC16F74, 40-pin, 8-bit CMOS FLASH dual inline package IC.  
To facilitate serial communication between PIC and PC, we interface a RS232 driver/receiver 
with the PIC16F74. The effectiveness of our Matlab-based GUI environment to interact with PIC 
microcontroller projects is demonstrated by using three examples: (1) export user commands 
from a Simulink GUI to an actuator interfaced to the PIC, (2) import signals from a sensor 
interfaced to the PIC into a Simulink GUI, and (3) use Simulink GUI to export user commands to 
the PIC and import sensory data from the PIC to control a device and monitor its status. 
2. Hardware Environment 
The hardware environment  for  this paper consists of  a PIC microcontroller, a PC,  a 
RS232 driver/receiver,  and  a  DB-9  serial  cable. The  PIC microcontroller  is  interfaced  with 
external  devices  such  as  sensors  (e.g.,  photoresistors)  and  actuators  (e.g.,  servomotors).  In 
addition, the PIC microcontroller performs embedded computing. The PC is used to write user 
specified embedded programs to be executed by the PIC microcontroller. Furthermore, the PC 
hosts an interactive GUI for the user to manipulate control variables and visualize sensory data. 
The PIC microcontroller and the PC communicate using a serial interface. A PIC development 
board (see section 2.4) and a light refraction experiment test bed (see section 2.5) are used to 
illustrate our PIC-based data acquisition and control approach. 
2.1. Peripheral Interface Controller 
PIC microcontrollers are small, low-cost controllers that include a processor and a variety 
of peripherals. PICs are significantly easier to use vis-à-vis embedded microprocessors. As an 
C# TIFF: How to Insert & Burn Picture/Image into TIFF Document
Support adding image or picture to an existing or new new REImage(@"c:\ logo.png"); // add the image powerful & profession imaging controls, PDF document, tiff
add an image to a pdf in preview; adding images to pdf
VB.NET Image: Image Cropping SDK to Cut Out Image, Picture and
VB.NET image cropper control SDK; VB.NET image cropping method to crop picture / photo; you can adjust the size of created cropped image file, add antique effect
add photo to pdf online; how to add image to pdf document
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
example, users can assign desired functionality (e.g., ADC, USART
1
) to I/O pins of PICs. PICs 
can  be  operated  at  various  clock  speeds  (32  kHz  to  20  MHz).  PIC’s  memory  architecture 
separates its data memory from its program memory with the program memory available as One-
Time Programmable (OTP), Erasable Programmable Read-Only Memory (EPROM), or FLASH. 
PICs are programmed in the PIC assembly language using a 35 single-word instruction set. See 
[3] for more details on hardware and software features of PIC microcontrollers. 
The user specified embedded PIC program is written on the PC and downloaded from the 
PC to the PIC microcontroller using the DB-9 serial cable connection between the PC and a PIC 
Development Programmer on which the PIC microcontroller is installed. Commonly available 
PIC Development Programmers include PICSTART Plus [4] from Microchip, Inc., and PIC-
PG2B, a handy, low-cost programmer [5] from Olimex Ltd., among others. In this paper, we use 
the PICSTART Plus programmer that requires MPLAB Integrated Development Environment, a 
free software available on the Microchip website, for programming PICs. 
In this paper, we employ a PIC16F74, a 40-pin CMOS FLASH-based, 8-bit, mid-range 
(14-bit  instruction  word  length)  microcontroller  (see  Figure  1).  PIC16F74  has  4  Kbytes  of 
FLASH program memory and 192 bytes of data memory. Furthermore, it has 33 digital I/O pins 
organized in 5 groups of I/O ports that can be assigned as 8-bit ADC, Capture/Compare/PWM
2
(CCP), the 3-wire Serial Peripheral Interface (SPI), the 2-wire Inter-Integrated Circuit (I
2
C) bus, 
USART ports, etc. We use an external 20 MHz high-speed crystal oscillator to supply operating 
clock cycles. The PIC16F74 can be powered using a wide range of voltage sources, e.g., 2-volt 
direct current (VDC) to 5.5VDC, and each of its I/O pin can sink or source up to 25mA of 
current. It is ideal not only for laboratory data acquisition (the application considered in this 
paper), but also for automotive, industrial, and consumer applications. 
2.2. Personal Computer 
In this paper, an IBM-compatible Pentium 3 PC running Microsoft Windows NT 4.0 
operating system is used. As previously mentioned, the PC is used to write, debug, and download 
1
Universal synchronous/asynchronous receiver and transmitter. 
2
Pulse width modulation. 
(a) 
(b) 
Figure 1: (a) PIC16F74 (b) Pin diagram of PIC16F74 
VB.NET TIFF: How to Draw Picture & Write Text on TIFF Document in
drawing As RaterEdgeDrawing = New RaterEdgeDrawing() drawing.Picture = "RasterEdge" drawing provide powerful & profession imaging controls, PDF document, tiff
add picture to pdf file; add jpg to pdf preview
VB.NET Image: VB.NET Codes to Add Antique Effect to Image with .
mature technology to replace a picture's original colors add the glow and noise, and add a little powerful & profession imaging controls, PDF document, image
add picture to pdf; add image to pdf online
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
embedded PIC programs. One of the serial ports on the PC is reserved for serial communication 
with the PIC microcontroller. MPLAB, Matlab (version 6.1), Simulink, and Dials and Gauges 
Blockset are installed on the PC. Control variables are manipulated via the PC by interacting 
with control panels embedded in the Simulink program. In addition, all experimental data is 
collected and displayed on the PC in display panels embedded in the Simulink program. 
2.3. RS232 Driver/Receiver 
MAX232  (see  Figure 2)  is  a 2-channel,  RS232  driver and  receiver  manufactured by 
Maxim Integrated Products, Inc. It requires a 5VDC power supply and converts voltage levels 
between PC-based logic and PIC microcontroller-based logic. Specifically, whereas the voltage 
levels of logic high and logic low for the PC correspond to –12VDC and 12VDC, respectively, 
like many other microcontrollers the logic high and low for the PICs correspond to 5VDC and 
0VDC, respectively. The MAX232 is used with five 1µF capacitors to adjust the voltage level 
differences between the PC-based logic and the PIC-based logic. See [6] for more details of the 
MAX232 hardware features. 
2.4. PIC Development Board 
The PIC development board (see Figure 3) consists of a sensor (photoresistor), a 3-pin 
header for  a servomotor  connection,  a  20MHz  crystal oscillator, a  MAX232 with five  1µF 
capacitors,  a  PIC16F74  microcontroller,  a  breadboard,  and  two  DB-9  connectors.  The 
photoresistor sensor provides light intensity measurement and is interfaced to a pin allocated as 
an 8-bit ADC in port A of the PIC16F74 microcontroller. The circuit diagram of Figure 3(c) 
illustrates how various sensors and actuators of the light refraction experiment test bed (see 
section 2.5) are interfaced to the PIC microcontroller. The PIC transmits/receives sensory data 
to/from the PC via the MAX232. A red reset button is connected to the Master Clear (MCLR) 
pin of the microcontroller. 
(a)
(b) 
Figure 2: (a) MAX232 (b) Pin diagram of MAX232 
VB.NET Image: Image Scaling SDK to Scale Picture / Photo
Framework application; VB.NET sample code for how to scale image / picture; Frequently asked questions about RasterEdge VB.NET image scaling control SDK add-on.
add picture to pdf form; adding an image to a pdf
VB.NET Image: Create Code 11 Barcode on Picture & Document Using
file, apart from above mentioned .NET core imaging SDK and .NET barcode creator add-on, you also need to buy .NET PDF document editor add-on, namely, RasterEdge
add jpg to pdf; add an image to a pdf in preview
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
2.5. Light Refraction Test Bed 
The light refraction test bed (see Figure 4) is a mechatronics-aided physics experiment 
developed under  a National Science Foundation  (NSF)  sponsored  Science  and Mechatronics 
Aided Research for Teachers (SMART) program [7] at Polytechnic University. This experiment 
is designed to demonstrate the law of light refraction. It consists of a light source, a light sensor, 
a linear potentiometer, two limit switches, a servomotor, a DC motor, a liquid reservoir, and 
necessary circuitry. A liquid reservoir on the top of the test bed can store various liquid media 
whose index of refraction needs to be determined. For simplicity, in this paper, we use water 
from a water fountain as the test liquid. 
(a)
(b)
(c) 
Figure 3: (a) PC and PIC development board (b) Larger view of the PIC development board     
(c) Circuit diagram of the PIC development board 
Pentium class PC
DB-9 serial cable
DB-9 connector to 
light refraction test bed 
PIC
MAX232
Reset button 
Photoresistor 
3-pin 
servomotor 
connector 
C# Word - Paragraph Processing in C#.NET
Add references: C# users can set paragraph properties and create content such as run, footnote, endnote and picture in a paragraph.
add signature image to pdf; add an image to a pdf form
VB.NET Image: Image Resizer Control SDK to Resize Picture & Photo
NET Method to Resize Image & Picture. Here we this VB.NET image resizer control add-on, can provide powerful & profession imaging controls, PDF document, image
add image to pdf acrobat; add image to pdf preview
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
On one side of the tank, as shown in Figure 4(b), a laser pointer, used as the light source, 
is mounted on the arm of the servomotor that sets the angular position of the light source to the 
incidence angle specified by the user. On the other side of the tank, a general Cadmium Sulfide 
(CdS) photoresistor, used as the light sensor, is mounted on the wiper of the linear potentiometer. 
It monitors the refracted light coming out from the liquid reservoir (see Figure 5). A DC motor 
drives the light sensor along the linear potentiometer by turning a motor shaft connected to a 
brass screw rod thereby transforming rotary motion into linear motion. Limit switches at each 
end of the  linear potentiometer indicate sensor travel  limit. The photoresistor and  the linear 
potentiometer output analog voltage signals between 0VDC and 5VDC. 
3. Software Environment 
The software environment for this paper consists of the PIC assembly language, Matlab, 
Simulink,  and  Dials  and  Gauges  Blockset.  The  PIC  assembly  language  is  a  primitive 
programming language consisting of a 35 single-word instruction set. Matlab is an interactive 
technical  computing  software.  Simulink  is  Matlab’s  model-based,  system-level,  visual 
programming environment that is widely used to simulate and analyze dynamic system models 
using icon-based tools. Finally, the Dials and Gauges Blockset of Simulink provides an ability to 
(a)                                                                                     (b) 
Figure 4: (a) Light refraction experiment test bed (b) Light source mounted on the servomotor 
Figure 5: Detailed view of the light sensor traveling along the linear potentiometer 
Light sensor
Limit switches 
Linear 
potentiometer
Light source
DC motor
Servomotor
Reservoir
H-Bridge
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
embed visual, realistic-looking, virtual instrumentations in Simulink models. In this paper, these 
software tools are judiciously synthesized to produce an effective, interactive GUI environment. 
In the sequel, we summarize key instructions of the PIC assembly language and Matlab that 
enable serial communication between PIC microcontroller and Matlab GUI running on the PC. 
3.1. PIC Assembly Program 
As indicated above, the PIC assembly language consists of a 35 single-word instruction 
set (see datasheets [8] for details). The PIC data memory is partitioned into several banks (e.g., 5 
banks for PIC16F74) that contain the general-purpose registers and the special-function registers. 
The special-function registers are used to set up special operations (e.g., ADC, USART, and 
PWM) and to watch the status of the special operations (e.g., the availability of transmission or 
reception of the USART). Below, we review key PIC instructions and special function registers 
used for serial communication functionality. 
3.1.1. Key PIC instructions
BCF: Bit clear f 
Syntax: [label] BCF f, b 
BCF literally means that the b
th
bit in the register ‘f’ is cleared. BCF sets the b
th
bit in the register 
‘f’ to zero, logic low. 
BSF: Bit set f 
Syntax: [label] BSF f, b 
BSF instruction does the opposite of BCF, i.e., it sets the b
th
bit in the register ‘f’ to one, logic 
high. 
MOVLW: Move literal to w 
Syntax: [label] MOVLW k 
The literal ’k’ is loaded into the working register. The literal ‘k’ can be expressed in terms of an 
8-bit  binary,  decimal, or  hexadecimal number.  For  example, b’00101111’  in  8-bit binary  is 
equivalent to 0x2F in hexadecimal. Note that the prefixes b, 0x, and d declare the data type to be 
binary, hexadecimal, and decimal, respectively. 
MOVWF: Move w to f 
Syntax: [label] MOVWF f 
MOVWF transfers data from the working register to the specified register ‘f.’ Since the literal ‘k’ 
cannot be directly assigned into the specified register ‘f,’ the literal ‘k’ is first assigned to the 
working register (e.g., MOVLW k) and then moved into the register ‘f’ (e.g., MOVWF f). 
BTFSS: Bit test f, skip if set 
Syntax: [label] BTFSS f, b 
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
BTFSS checks the b
th
bit in the specified register ‘f,’ and executes the next instruction if this bit 
is  zero.  Alternatively,  if  the  bit  is  one,  the  next  instruction  is  skipped,  and  the  following 
instruction is executed. 
3.1.2. Special function registers used for serial communication functionality
MOVLW d’value’ 
MOVWF SPBRG 
The  special  function  register  ‘SPBRG’  contains  the  user-specified  baud  rate  for  serial 
communication. In particular, the command MOVLW d'129' places 129 in the working register. 
Next, the command MOVWF SPBRG moves the content of the working register to the special 
function register ‘SPBRG.’ The placement of ‘value’ 129 in the ‘SPBRG’ register sets the baud 
rate to 9,600. 
MOVLW b’clock source select bit, 9-bit transmit enable bit, transmit enable bit, usart mode 
select bit, unimplemented, high baud rate select bit, transmit shift register status bit, 9th bit of 
transmit data’ 
MOVWF TXSTA   
The special function  register  ‘TXSTA’ contains information for the  data-transmit status and 
control in an 8-bit binary expression. In particular, the use of commands MOVLW b'00100100' 
and MOVWF TXSTA, sets up the ‘TXSTA’ register to enable 8-bit, high speed asynchronous 
serial data transmission. 
MOVLW b’serial port enable bit, 9-bit receive enable bit, single receive enable bit, continuous 
receive enable bit, unimplemented, framing error bit, overrun error bit, 9th bit of received data’ 
MOVWF RCSTA  
The  special  function  register  ‘RCSTA’  contains  information  for  the data-receive  status  and 
control in an 8-bit binary expression. In particular, the use of commands MOVLW b'10010000' 
and MOVWF RCSTA, sets up the ‘RCSTA’ register to enable 8-bit, continuous asynchronous 
serial data reception. 
3.2. Matlab Program 
Matlab  is  a  commercially  available,  widely  used,  interactive,  technical  computing 
software.  Matlab’s  versions  6.1  and  higher  provide  serial  communication  functionality.  To 
serially  communicate  with an external  device  from  Matlab, the  following  steps  need  to  be 
performed. First, create a serial port object to identify the specific serial port of the PC connected 
to the external device. In addition, specify how this serial port is to be configured (i.e., baud rate, 
number of data bits, etc.). Second, connect the serial port object created above to the external 
device. Third, send command signals to the external device and receive data from the external 
device. Fourth, disconnect serial communication connection from the external device and close 
the serial port object. Finally, release control of the serial port. Next, we list the key Matlab 
instructions used for serial communication. See [9] for further details. 
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
serial (the PC serial port, the baud rate, the number of data bits) 
This command is used to create a new serial port object. In addition, it configures the serial port 
properties. In this paper, we used the COM2 serial port of the PC with 9,600 baud rate. 
fopen (object) 
This  command opens the serial port object just created and  connects the PC to the external 
device for actual serial communication. 
fread/fwrite (object, size, precision) 
The ‘fread’ command enables the PC to read binary data from the external device. Alternatively, 
the ‘fwrite’ command enables the PC to send control data in binary format to the external device. 
fclose (object) 
This command closes the serial port object, thereby disconnecting serial communication between 
Matlab and the external device. 
freeserial(port) 
Once Matlab establishes a data link with the serial port, it assumes complete control of the serial 
port. The ‘freeserial’ command is used, after closing the port object using the ‘fclose’ command, 
to force Matlab to relinquish control of the serial port. The command takes on one argument, the 
port  that  was  used  for  data  communication.  This  command  is  executed  from  the  Matlab 
command line after the termination of experiment. 
3.2.1. Simulink
Simulink is Matlab’s interactive, icon-based programming environment [10]. It enables 
users to build block diagrams to simulate and analyze dynamic system models. Designers can 
effortlessly transfer paper designs of dynamic systems into Simulink block diagrams. Simulink 
block diagrams can be modified as easily as paper models of dynamic systems. In addition, 
Simulink allows for detailed monitoring of dynamic system outputs at any point in the block 
diagram using various tools (e.g., Scope, Display, etc.). Finally, data processing tasks such as 
signal scaling, filtering, etc., can be easily performed in Simulink. 
3.2.2. Dials and Gauges Blockset
The  Dials  and  Gauges  Blockset  [11]  provides  enriched  views  of  graphical,  3-D 
instruments called virtual instruments. It has various templates that can be customized to create 
realistic virtual instruments for electrical, aerospace, automotive, medical, and process control 
systems.  The  virtual  instruments  created  using  the  Dials  and  Gauges  Blockset  dynamically 
interact with Matlab and Simulink,  thus providing an  interactive  interface  for  users  to enter 
command inputs and visualize sensory outputs.  
“Proceedings of the 2004 American Society for Engineering Education Annual Conference & Exposition  
Copyright 
2004, American Society for Engineering Education” 
4. Examples of Serial Communication between PIC and PC 
4.1. Serial Communication from PC to PIC: Servomotor Position Control 
This example illustrates one-directional serial communication from the PC to the PIC 
microcontroller. In particular, it demonstrates that the user commands from a Simulink block 
diagram  can be  exported to an  actuator interfaced  to  the PIC  microcontroller.  The  example 
focuses on servomotor position control. 
The Simulink block diagram for this example is shown in Figure 6. It consists of a dial, 
from the Dials and Gauges Blockset, denoted as the servo angle knob. The user interacts with the 
dial to enter servomotor position control command. The dial has a range from 0 to 90 degrees 
with one-degree resolution. The value of the angle commanded by  the user is shown in the 
middle of the knob. The Matlab m-function block next to the knob contains a Matlab m-file to 
perform serial communication from the PC to the PIC. The user specified servomotor position 
control command is transmitted to the PIC via a serial cable connection between the PC and the 
PIC. When the PIC receives the command angle, it assigns the angle to a variable in the PIC 
code. Next, the PIC utilizes the command angle to compute, generate, and apply pulse trains for 
servomotor position control. In  this example, we used  a  6VDC  standard  servomotor that  is 
interfaced to the 3-pin servomotor connection header on the PIC development board (see Figure 
3). The PIC assembly code corresponding to this example is available in Appendix A. 
%Matlab function serial_out.m for serial communication from PC to PIC 
function serial_out(angle) 
%serial_out function defined 
ser_obj=serial('COM2','baudrate',9600);  
%create and configure a serial port object 
fopen(ser_obj);  
%connect the serial port object to the device 
ServoCommand=round(angle+107.3);   
%input for servomotor where 107.3 refers to offset 
fwrite(ser_obj,[ServoCommand],'async'); 
%send user command, i.e., dial input, to the PIC 
pause(1); 
fclose(ser_obj);  
%disconnect the serial port object from the device 
Figure 6: Simulink block diagram and m-function for PC to PIC serial communication 
Documents you may be interested
Documents you may be interested