Home >
Microcontroller >Microcontroller Production > Use printer port to make programmable frequency generator circuit
Use printer port to make programmable frequency generator circuit
Source: InternetPublisher:张三叔 Updated: 2018/04/15
#include
#include
#include
#include
#include
#define CLK1 0x04 /* Clock Pulse High*/
#define CLK0 0xfb /* Clock Pulse Low*/
#define CS1 0x01 /* Chip Select high to deactivate DAC*/
#define CS0 0xfe /* Chip Select low to activate DAC*/
#define DATA1 0x02 /* Data Pulse High*/
#define DATA0 0xfd /* Data Pulse low*/
int c,dport,ACTUALDATA,out,k; /*Global Declarations*/
float VOUT;/*DAC OUTPUT*/
void d2b(unsigned int x, int*c)/*Routine for Decimal to Binary Conversion*/
{
int i;
for(i=0;i<=15;i++)
*(c++)=(x>>i) %26;amp; 0x1;
}
float ftov() /*Hertz to DAC output Conversion Routine*/
{
int HERTZ;
printf("\n \nEnter the frequency within 0 to 10000Hz:");
scanf("%d",%26;amp;HERTZ);
VOUT=0.00040955*HERTZ;
printf("\n VOUT=%f\n",VOUT);
return VOUT;
}
void CLOCK_DAC(void)/*Routine for clocking the DAC*/
{
out|=CLK1;
outportb(dport,out);/*Setting the clock high*/
delay(1);
out%26;amp;=CLK0;
outportb(dport,out);/*Setting the clock low*/
delay(1);
}
void LOAD_DACDATA(int*c)/*Routine for loading actual data into the DAC*/
{
out|=CS1;
outportb(dport,out);/*Chip Select high to disable DAC*/
delay(1);
out%26;amp;=CS0;
outportb(dport,out);/*Chip Select low to enable DAC*/
delay(1);
printf("\nDATA loaded into the DAC=");
for(k=15;k>=0;k--)
{
out|=c;
outportb(dport,out);
printf("%d",c);
delay(1);
CLOCK_DAC();
}
out|=CS1;
outportb(dport,out);
delay(1);
}
main()
{
int v,inc;
float y;
unsigned int x;
double fraction, integer, number;
clrscr();
printf("\tUse Your Printer Port as a Programmable Frequency Generator");
printf("\n\t\t\t by\n");
printf("\tK.Suresh,MSD,IGCAR,Kalpakkam,TamilNadu-603102,India");
dport= peek(0x40,8);/*Check up for availability of Printer Port*/
if (dport==0)
{
printf("\n\n LPT NOT AVIAILABLE! EXITING........");
exit(1);
}
printf("\n\nAddress of the printer port found =0x%X",dport);
ftov();
y=(VOUT*8192)/(2.5*1.6384);
v=y/1;
number=y;
fraction = modf(number, %26;amp;integer);
if (fraction<0.44)
inc=0;
els
Latest Microcontroller Circuits
- AD8351 and SAW filter interface circuit
- Using 89C2051 to make a four-way digital display water level controller circuit
- How to use ESP32 to implement the design of air quality monitoring system
- Serial debugger circuit implemented with several discrete components
- USB-serial port conversion circuit made with CP2102 chip
- Microcomputer motherboard reset part circuit diagram
- 815e motherboard
- Communication conversion circuit diagram of RS232 and RS485
- M16 Experimental Board
- Computer remote control circuit