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

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号