欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    AD0809简易数字电压表.ppt

    • 资源ID:64014253       资源大小:216KB        全文页数:19页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    AD0809简易数字电压表.ppt

    AD0809简易数字电压表简易数字电压表一一AD0809电压表设计要求电压表设计要求要求要求:设计一个简易的数字电压表,用来测量我们焊接的单片机开发板中AD0809模块前端电位器R40的实时电压值,并用电路板中左位数码管的前三位显示当前模拟电压的十进制数字量值,同时用右数码管显示当前的模拟电压值附加要求:附加要求:为了防止数字电压表使用时出现测量值与实际值存在误差的问题,须增加能通过按键对十进制数字量测量值进行100以内补偿值设定的功能.二、转换的流程图开始左右数码管显示十进制初始化在中显示数码管中的数值判断是否按键按下?判断是加1还是减1?否是加1减1结束三、设计中的问题三、设计中的问题n1、串口在线下载问题;、串口在线下载问题;n2、数码管的显示问题;、数码管的显示问题;n3、用周立公芯片实现按键加一;、用周立公芯片实现按键加一;n4、LCD的显示;的显示;n5、调试中遇到显示不稳定;、调试中遇到显示不稳定;四、解答上述问题四、解答上述问题硬件问题:串口不能下载程序,通过一步步检测MAX232是否与串口连通,是否 与单片机接受和发送的端口连接上,借助万用表查看电阻、电容以及芯片是否正常工作。软件问题:经过了解zlg7290.h文件、zlg7290.c文件、VIIC_C51.h文件以 及 VIIC_C51.c文件,主要是zlg7290.c文件中Test_Key子函数、DispValue子函数、ZLG7290_Download子函数。通过在主函数中调用子函数,并且多处的运用for、while、if语句,经过编译,再一步步排查问题。五、程序五、程序#include#includeZLG7290.h#includeI2C.h#include/#include#define data_point P0#define uchar unsigned chartypedef unsigned char BYTE;/重新定义typedef unsigned int WORD;/重新定义typedef bit BOOL;/重新定义BYTE code disp21=V;BYTE code disp33=.-+;BYTE code disp4=Stander:;sbit rs=P13;/定义P13端口为rssbit ep=P15;sbit rw=P14;/lcdsbit EOC=P33;sbit ADDA=P20;sbit ADDB=P21;sbit ADDC=P22;sbit OE=P25;sbit START=P26;/sbit CLK=P27;volatile bit FlagINT=0;unsigned char AD=0;char count=0;unsigned char disp7=0,0,0,0,0,0,0;unsigned int t0count=0;void delay(unsigned char t)doTH1=0 xD8;TL1=0 xf0;TR1=1;while(!TF1);TF1=0;TR1=0;while(-t);BOOL lcd_bz()BOOL result;rs=0;rw=1;ep=1;_nop_();_nop_();_nop_();_nop_();result=(BOOL)(P0&0 x80);ep=0;return result;lcd_wcmd(BYTE cmd)while(lcd_bz()=1);rs=0;rw=0;ep=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;lcd_pos(BYTE pos)lcd_wcmd(pos|0 x80);lcd_wdat(BYTE dat)while(lcd_bz();rs=1;rw=0;ep=0;P0=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;lcd_init()lcd_wcmd(0 x38);lcd_wcmd(0 x0c);lcd_wcmd(0 x06);/lcd_wcmd(0 x00);/delay(1);/lcd_wcmd(0 x14);/delay(1);lcd_wcmd(0 x01);/lcd_pos(12);/lcd_wdat(disp21);void INT0_SVC()interrupt 0FlagINT=1;void SystemInit()I2C_Init();TMOD=0 x01;delay(1);/等待ZLG7290复位完毕void ClearAll()unsigned char x;for(x=0;x8;x+)ZLG7290_Download(x,0,0,31);void display()unsigned int i,j,k=0 xfb;for(i=0;i=1;for(j=200;j0;j-);/P1=0 xff;unsigned int ADC0809()unsigned int d;ADDC=0;ADDB=0;ADDA=0;TR1=1;START=1;START=0;while(EOC=0);OE=1;d=data_point;OE=0;TR1=0;return d;void covert(unsigned char x)unsigned int X;char code dispcode=0 x00,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09;X=x*(1.0)*5000/255;/x=(x*100*1.0)/51;disp0=dispcodeX/1000;disp1=dispcodeX%1000/100;/x/50 x/100;/disp0=disp0+0 x80;disp2=dispcodeX%1000%100/10;/x/10 x%100/10;disp3=dispcodeX%1000%100%10;/x%100%10;/disp4=k/100;/disp5=k%100/10;/disp6=k%100%10;void DispValue(char x,unsigned char dat)unsigned char d;d=dat/100;ZLG7290_Download(x+2,0,0,d);d=dat%100/10;ZLG7290_Download(x+1,0,0,d);d=dat%100%10;ZLG7290_Download(x,0,0,d);disp4=dat/100;disp5=dat%100/10;disp6=dat%100%10;void Test_Key()char fuhao;unsigned char KeyValue;/BYTE i;/i=0;unsigned char i=0,k=0,l=0;/unsigned char RepeatCnt;/unsigned char FnKeyValue;ClearAll();EA=0;IT0=1;/负边沿触发中断EX0=1;/允许外部中断EA=1;for(;)if(FlagINT)/如果有键按下/清除中断标志FlagINT=0;/读取键值、连击计数器值、功能键值ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);/ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);/ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);/显示键值、连击计数器值、功能键值 if(KeyValue=2)count+;/DispValue(0,count);if(KeyValue=3)count-;/DispValue(0,count);if(count=100)count=100;if(count=0)/AD=ADC0809();/DispValue(0,KeyValue);/DispHexValue(3,RepeatCnt);/DispHexValue(6,FnKeyValue);lcd_pos(0);/for(i=0;i6;i+)/AD=ADC0809();covert(AD+count);display();DispValue(5,AD+count);while(disp4i!=0)lcd_wdat(disp4i);i+;lcd_pos(0 x09);lcd_wdat(0 x30+disp0);lcd_pos(0 x0A);lcd_wdat(disp30);/0 x30+lcd_pos(0 x0B);lcd_wdat(0 x30+disp1);lcd_pos(0 x0C);lcd_wdat(0 x30+disp2);lcd_pos(0 x0D);lcd_wdat(0 x30+disp3);lcd_pos(0 x0E);lcd_wdat(disp20);/0 x30+lcd_pos(0 x46);for(l=4;l7;l+)lcd_wdat(0 x30+displ);/lcd_wdat(0 x30+disp5);/lcd_wdat(0 x30+disp6);delay(100);i=0;/PCON|=0 x01;/使CPU进入空闲状态,任一中断可唤醒void main()BYTE i;i=0;TMOD=0 x10;/TH1=(65536-10000)/256;/TL1=(65536-10000)%256;/TH1=256-2;/TL1=256-2;/ET0=1;/ET1=1;/EA=1;/TR0=1;OE=0;START=0;EOC=1;SystemInit();lcd_init();while(1)Test_Key();/delay(100);/if(t0count=100)/t0count=0;/covert(ADC0809();/delay(500);/display();/void time0()interrupt 3/TH1=(65536-10000)/256;/TL1=(65536-10000)%256;/t0count+;/void time1()interrupt 3/CLK=CLK;

    注意事项

    本文(AD0809简易数字电压表.ppt)为本站会员(赵**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开