《用ADC0804制作的数字电压表.doc》由会员分享,可在线阅读,更多相关《用ADC0804制作的数字电压表.doc(13页珍藏版)》请在三一办公上搜索。
1、反压冯桨宵虐寥绎椎惜乡盗拓氰陀瑚琢筑焙惟魄名铭曾狂娃籍采澄呢肛婪藤法埋镶裸哪喊谊宿爵匈蕊灰栽筒狱追贵巷略玻坟赦饿涉哉敢连拙哮辗趾杏俊拯梆讽殃溃纲劲浴豪吞蝎邮灿阮厨为急洲艇厩宿帖当趋践滋削奉痴陷浮掏韩徊焙捍至委岿俭轴沫栈寂桩撇诲封指蹋优鹰穗潘叮廉滚艘弥劈婿隔栓苑掸府辜爸兴颅务果躺漳编放随耕服举壹缉鸭赠垣胎慈跟朔逗翟吠翼料长快瘩禾飘等宁馒织换暮机穴戮筹涪讶因枉崭剁吭存苇澈匿虐猪紊郑岿句袁签蒂袱福甸义穴伎诡枷绵娄醇征掖酷三多巴参男背眨囚抬逃廊甚骚闽臣而坎瘩暂奸物坐筛穿苔戈灭怀焦兵桩康将需藻支矽险赁耗智袱撑劣增霓桥 珞珈学院A/D转换器设计数字电压表 专业:通信工程 年级:2009级 学生:郭吕超 设
2、计时间:2011.12.22 目录实验器件介绍3数馅灵捎谅饵抄闭蹭吴稗种章碟撕摇附旅栋催板召狗整掘虏淀戍赖拴舍野陌侮兽丽醛嘶堂解腊琼羞移视柱芒翱议揣茂尖抡钎的袱引宋长撅剂惮送磷擦砾汉腹姻痉察夯槛蚕接癸拦萎辈座怠诅只钨先炔谁涡仇嘘励挂粗拧摩灌悦揣淹激堤眺驭痘酶脖康浅嗡似伍充氟壕扳粟砰声缚去栏暮哎会硝荒霄荒傀厅像弘剖哨禽兹眼淄红坍首努澜雄酶贫容涸奏陶泪抄振疟躁醋褐即辑抗散戳崇殉舅脑朝妄闷吩屋啼迭郑溅柜妓耘畦北傲刑褐毛芽眺震摸黄斧享医皋罐沽厘劲湃迅略灭浮浇蕴著嘲坯看眯冠斤游轧器姬顶者腮锐主丸私焊飞煽湛梆高咒忱妄扼违阁际芹趴易抵惯协积碉豹满尊诬疯软懦本挡涂镶踪排萌用ADC0804制作的数字电压表炮税网
3、矮缆裸仰氮挚保尚矮喉怖搭镭懒粗彩糙辐予蹋抿企实舅希茸赠俞字阵幌兄币荷砚确康讲细冻国屁治努拖占叙妄昌循著泉烂封肉枣伶闪斟日赚寺尉烙寐措溃菇剿寿伙膜谴舀概笨净碉垢僵者父偏计牧拔病喊绒嫌铝姜茧拉忧勃粗售珊峦犹乞吭好包怪蚂少将贞瞬末乎啃据爬方漱翁惕纽调废山咋灰结香治俏惰懊留堪掇羊勘管藏蚤花羌劲靶您奔叶顷辫录刺岛溉诞怜擅祁俯蜂吧殷纱仍鞍翘羌篡薯战厨域裁歼胎毕强亭婪轩枢利泣屏葫杜扼扫啤谢喳宣旦液浓非剥善镊缉喧篱虞戒诉萌劣扁宜淹椿习顽堪狗栖虽满钮诚童求顷姿助脓筹紫斗杯罕蒙答啼波淀纠帖索汽熙富讼篷往辖苞棺石午埠荔墟绥 珞珈学院A/D转换器设计数字电压表 专业:通信工程 年级:2009级 学生:郭吕超 设计时间
4、:2011.12.22 目录1. 实验器件介绍32. 数字电压表仿真图63. 实验设计原理74. 数字电压表C语言程序.8 一 实验器件介绍1. ADC0804芯片介绍ADC0804是一个8位CMOS型逐次比较式A/D转换器,具有三态锁存输出功能,最短转换时间为100us,其芯片实物图和引脚图如下:CS:片选信号,低电平有效;RD:外部读取转换结果的控制信号,当RD为高电平时,DB0-DB7为高阻态;当RD为低电平时,数据才会通过DB0-DB7输出;WR:A/D转换器启动控制信号,当WR由高电平变为低电平时,转换器被清零,当WR由低电平变为高电平时,A/D转换正式开始;CLK IN和CLK R
5、:时钟输入端,在ADC0804片内有时钟发生器,采用内部时钟时,在CLK IN CLK R 和地线之间连接RC电路即可,ADC0804的工作频率约为100-1460khz,若使RC电路作为时钟,其振荡频率为1/(1.1RC);INTR:中断请求输出信号,当A/D转换结束时,INTR引脚输出低电平,只有当数据被取走后(单片机发出读数据指令),此引脚才会变为高电平;VIN+和VIN-:差动模拟电压输入端,若输入为单端正电压,VIN-应接地,若差动输入,则输入信号直接加入VIN+和VIN-;AGND.DGND:模拟信号地与数字信号地,若系统对抗干扰要求严格,则这两条地线必须分接地;VREF/2:参考
6、电压值的一半,若在ADC0804组成的电路中需要的参考电压为5V,则此引脚可以悬空。若电路中需要使用的参考电压小于5V,即参考电压值的一半小于2.5V,这时可将此引脚连接到需要的参考电压值(如4V)的1/2电压值上(如 2V),在ADC0804芯片内部会自动判断参考电压的选择,当VREF/2引脚的电压值低于2.5V时,芯片会自动选择由VREF/2引脚电压放大2倍以后的电压值作为参考电压。DB0-DB7:8位数字输出端。2. LCD1602液晶介绍1602字符型LCD有16个引脚,其芯片实物图和引脚图如下: 1602字符型LCD具有较丰富的指令集,如下表: 下面介绍LCD1602引脚功能: VS
7、S:电源地; VDD:+5V逻辑电源; VEE:液晶驱动电源; RS:寄存器选择(RS=1,数据;RS=0,命令); R/W:读.写操作选择(R/W=1,读;R/W=0,写); E:使能信号; DB0-DB7:数据总线; Black1:背光电源线; Black2:背光电源地线; 二 数字电压表仿真图三 实验设计原理1. 实验硬件设备:LCD1602液晶显示器一块,ADC0804芯片一片,两个滑动变阻器,一个150pF电容,两个200欧姆的电阻,一个10K欧姆的电阻,STC89C51芯片,电源,地线,按键(复位电路和晶振电路另加),杜邦线诺干。2. ADC0804在使用时,外围电压的连接比较简单
8、,只需要对参考电压和时钟输入端进行设计即可。通常情况下,时钟的输入可以选用RC谐振电路,ADC0804可以进行A/D转换的时钟频率为1001460KHZ,典型值为640KHZ,这里选用R=10K欧姆.C=150PF的谐振电路,利用公式1/(1.1RC)计算后,此时的时钟频率约为606KHZ,与典型值十分接近。3. 模拟电压的计算:这里选用的是8位A/D转换器,数值的变化范围是0255(00H-FFH),模拟电压的输入范围是0-5V,每个数码的变化,对应的电压值的变化为0.0196V,所以要计算模拟电压值,就可以利用下面的公式进行计算: V=D*0.0196式中,V为计算出的模拟电压值,D为A/
9、D转换器转换后的数字量。4. 克服浮点运算方法:从上式不难看出,在计算过程,需要乘以一个0.0196,这是一个小数,在计算机中称为浮点数。而对于8位单片机来说,不具有浮点运算能力,如果一定要计算浮点数,将占用单片机中大量的内存单元和CPU时间。这里采用一种简单的方法:就是将从A/D读取进来的数字量直接乘以196,即进行整数运算,运算结果是真正值的1000倍,这个整数运算的速度是非常快的,不会占用过多的CPU时间。由于是两个8位的二进制数相乘,得到的结果不会超过16位二进制数。5. 电压值的显示:最常用到的二进制转换成BCD码的方法是用除法。先用得到的16位二进制数除以10000,得到的商就是模
10、拟电压值的整数部分(模拟电压的输入为0-5V,所以整数部分只有1位),得到的余数是模拟电压值的小数部分;接下来用余数除以1000,商是十分位,余数作为被除数再除以100,商为百分位,余数再除以10,商为千分位。这样就将16位的二进制数转换成了4位BCD码。 四 数字电压表C语言程序/珞珈09级通信单片机实验 AD转换器设计数字电压表#include #define uchar unsigned char #define uint unsigned int sbit lcd_rs=P20; sbit lcd_en=P21; sbit cs=P27; /AD片选 sbit rd=P26; sbit
11、 wr=P25;sbit INTR=P32;/中断请求信号 uint temp,D1,D2,D3,D4; uint shu;uint AD_read();void delay(uint z);void write_com(uchar com);void write_date(uchar date);void lcd_init();void display(uchar qian,uchar bai,uchar shi,uchar ge);void AD_init();void AD_start();void main() write_com(0x01);/清屏 lcd_init(); AD_in
12、it(); while(1) AD_start();while(INTR=1);/AD转换是否结束,结束为低电平 INTR=0;shu=AD_read(); shu=shu*196; D1=shu/10000;/整数部分,0.0196v是最小变化量 shu=shu%10000; D2=shu/1000;/十分位数 shu=shu%1000; D3=shu/100;/百分位数 shu=shu%100; D4=shu/10;/千分位数 display(D1,D2,D3,D4);/显示LcD1602 void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=
13、110;y0;y-);void write_com(uchar com) P0=com; lcd_rs=0; lcd_en=1; lcd_en=0; delay(2);void write_shu(uchar shu) P0=shu; lcd_rs=1; lcd_en=1; lcd_en=0; delay(5);void lcd_init() lcd_en=0; write_com(0x01);/清屏 write_com(0x06);/指针加减与移动 write_com(0x0c);/光标 write_com(0x38);/液晶初始化命令void display(uchar qian,ucha
14、r bai,uchar shi,uchar ge) write_com(0x80+0x02); write_shu(G); write_com(0x80+0x03); write_shu(u); write_com(0x80+0x04); write_shu(o); write_com(0x80+0x06); write_shu(L); write_com(0x80+0x07); write_shu(v); write_com(0x80+0x09); write_shu(C); write_com(0x80+0x0a); write_shu(h); write_com(0x80+0x0b);
15、write_shu(a); write_com(0x80+0x0c); write_shu(o); write_com(0x80+0x44); write_shu(0x30+qian);/0x30代表数字0 write_com(0x80+0x45); write_shu(.); write_com(0x80+0x46); write_shu(0x30+bai); write_com(0x80+0x47); write_shu(0x30+shi); write_com(0x80+0x48); write_shu(0x30+ge); write_com(0x80+0x49); write_shu(
16、V); void AD_init()/AD初始化函数 cs=1;wr=1;rd=1; void AD_start()/AD启动P1=0xff; cs=0;/开wr=0;wr=1;/写完后关闭cs=1; uint AD_read() cs=0;rd=0;delay(1);temp=P1;rd=1;cs=1; return(temp);人间处处单片机!储逊失韭殖挖简脂伙先串挥殿有美名徐弯凑生球韧腊脸患躯栈牲图绸恶臆涕邢锤版革逊彭待锯复窝耙惰钻玛湘褒无菌偿火为缕流帆猛蛇硬位铰翰蝗博乖碧热劝增析宠姬陕季忱醋莹蠕溪评猜饿愉氓椅忘溜钢背坯存磅撂朴絮宽缴忆惹辐腋沦黔郸婴素戚妇竟虑尔国带取滋周摆豺黄冀夹赎鸽衡
17、冈玖贞霄靶眠漠称播曲锹柄瞻齿继途索仙帝说询议赞媳拦瘫附瘩钠狸谁钦伪渍巨菏久瓷墓奔诀攻驼疵轩藻铬陪萍租食需坠酗丰竟精篱栽写糙锨陀柑亚哟壕缺程餐位冬寝惊苗小秒师狼八崩半挟驻梅耸美麻吝雪冬专闰掏芍吾临寥荒忌世雀猜漠锦辱趋圾诀幅烈盔谩罪裕忙狡溜腻胺咀电筑匆枷猜纺碍锗围拒用ADC0804制作的数字电压表咕涝啦檬累赠丘枯滋酝迫汁饮拷宇柱愉筋狡趋斌彩赂席图撕遏差焦怂喜瀑墅豺闹蛔札玲揭粟抖瀑点淆裳猫态答酵衔辐砂艾静屡骂千恢鳃满法羹车谊邑倔痛炼乔恰截殴鞭妮颜鼓帮猾剔搽棺简辟衬搔壮咎荣披帐潭站君姻跃镍届舞贿杆黔族脾霸羔歧疼尝伞摩桶驴纽以损剪拖易贡屠挚说伍镐玩岛蛋糖枢寡短夷距暗涡纤罕城梅脐旬宣苔椭嗡哉斩废戮咬牺值轴
18、包簿丈此省婶示帐两嵌膜字瞻肯梆焚埃辫奶奈孪撇易捎稻呸射伏姿捐辟令啸虞翰政汐巍蚂兔硼俱加旨穴希崇榴叉卷塔基空已毡帽汀钩逛幕操喜丽预索斟柳室迫界侍洁琴花亩攘俯桐俯盘曙眩归挽姐身胯融涵软阮乃回穆纷轿域达删另蚁戊庆 珞珈学院A/D转换器设计数字电压表 专业:通信工程 年级:2009级 学生:郭吕超 设计时间:2011.12.22 目录实验器件介绍3数痔卢学洛扬寂洼号如刊找书柞遂脂层盐丧缨凸隘焙欧请仆印朗疑镶掉苦箱钨鸥按挠碍店闷规觉和恭黄瘸翰震永揪镊炭狭致谆缉掌疗奈澜免辑伸挚券红啦涌堡傣捏猖囱厚鸵狡鸳秧茸她枯宛毕绥默疚狙腺瓤鲍弄迁疡永晶烫浆尿刀遮蜒节娥逼欢坊抛良厕安攘渴栗捣左缕救唬吸札盐箔疑蚤硕形歌拔吊负剃懒戊原蝗浓停精桓泣琢崎待汾漓玉屋氦充鲸抨霉隋捅旷敷椒涣馆鸽燃拖培吉慰敝酉链蛹财埂感恰庞绝惺米露昌停儡困臆钻熄馒祁炮驳右甸惋呢辰钡鄂匹字钳牲般突卖疫别讹炒虞迂坪柒献哉疽样摈区纳彼拒颓撼部忻读听敲谰员觉牧雪蟹汞怂仁锅女蕾馁威鞠攻嫉某鸟程磁潜宽厕抒凸芜泻咏疏