首页 > 微机单片机 >单片机制作 > 用打印机端口做可编程频率发生器电路

用打印机端口做可编程频率发生器电路

来源: 互联网 更新时间: 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[16],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[k]; outportb(dport,out); printf("%d",c[k]); 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

推荐帖子 最新更新时间:2022-07-05 12:25

【GD32E231_DIY】②DS1302实时时钟模块资料
各位网友,端午节已过。论坛上看到好多网友都已经提交了成品,本次活动重在参与,在参与中不断学习进步才是本人的目的,获没获 ...
 yin_wu_qing模拟电子
Cadence Allegro 17.2 自带焊盘的命名
我打开Cadence Allegro 17.2的PCB Edit编辑器想要做封装。打开Padstack选项看到“自带的焊盘”;但是这么多焊盘真是&l ...
 bigbat模拟电子
视频无线传输的实现方式
通过无线方式在显示端显示图像,从技术层面来说,目前有两种途径予以解决。   第一种方式为传送视频数据。它的工作方式是, ...
 Jacktang模拟电子
单一封装、小尺寸驱动电机控制器来了
谈谈无刷直流电机中介绍一个简单的电机驱动芯片,下面来看一下吧。 PAC5xxx 系列器件:单一封装、小尺寸解决方案 ...
 alan000345模拟电子
谁知道怎么用AD打开.brd文件
谁知道怎么用AD打开.brd文件?根据网上说的方法搞了半天也没有搞好,不知道是不是版本的问题
 曹伟1993模拟电子
颁奖:Vicor 可最大限度提高 AI、HPC 和数据 计算性能的电源解决方案
【活动详情】Vicor 可最大限度提高 AI、HPC 和数据 计算性能的电源解决方案 请获奖者务必在2022年5月19日23:59前,按照下 ...
 EEWORLD社区模拟电子

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved