欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数码管显示AD转换的电压值数码管显示秒表精编版.docx

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

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

    数码管显示AD转换的电压值数码管显示秒表精编版.docx

    1、数码管显示AD转换的电压值数码管显示秒表精编版电子科技大学 微电子与固体电子 学院实 验 报 告实验名称 现代电子技术综合实验姓名:詹朋璇学号:2011031030024 评分:教师签字电子科技大学教务处制电 子 科 技 大 学实 验 报 告学生姓名:詹朋璇 学号: 2011031030024 指导教师:熊万安实验地点: 211大楼308 实验时间:2014. 6.30 晚一、 实验室名称: 单片机技术综合实验室二、 实验项目名称:数码管显示A/D转换的电压值&数码管显示秒表 三、 实验学时: 12四、 实验目的与任务:1、 熟悉系统设计与实现原理2、 掌握KEIL C51的基本使用方法3、

    2、熟悉实验板的应用4、 连接电路,编程调试,实现各部分的功能5、 完成系统软件的编写与调试五、 实验器材1、 PC机一台2、 实验板一块六、 实验原理、步骤及内容试验要求:数码管的第1位显示任务号1,第3位到第5位显示、A/D转换的电压值,可调节电压,第7、8位显示两位学号;数码管第2位和第6位显示“-”号;按按键key1进行切换,此时数码管第1位显示任务号2,第7、8位显示循环倒计时的秒表,范围为08秒到01秒后,再过01秒,秒表又显示为08秒;(单片机系统中利用定时器/计数器计数秒表的值:利用定时器T0延时1秒进行计数。),其它位显示不变,按按键key2时,秒表停止计数,再按按键key2时,

    3、秒表继续计数,按key1键,又回到任务1的显示状态。当电压值大于2伏时,按按键不起作用。1、 硬件设计(可打印)2、 各部分硬件原理(可打印) 数码管动态扫描 TLS549ADC工作时序图3、 软件设计 2按下 1按下 1按下 1按下 2按下 思考题: 按键改用外部中断模式,电路如何修改(画示意图)?程序如何修改,写出中断服务程序。答:将KEY1与KEY2键通过跳线分别接到INT0与INT1接口上。开启中断:SysInit() EA=0; /禁止总中断 EX1=1; /使能/INT1 中断 EX0=1; /使能/INT0 中断 EA1; /使能总中断 中断服务程序: void INT0SVC

    4、() interrupt 0 if(cnt=17) cnt-; 七、 总结及心得体会1.利用单片机开发板上丰富的资源可以实现一个有一定功能的系统。2.懂得利用中断可以使单片机的效率提高。八、 对本实验过程及方法、手段的改进建议 实在是没有,都挺好的。九、 附录1、 程序/* 利用TLC549 A/D转换器实现电压测量与显示*/#include /包含8051的SFR寄存器定义头文件#include /扩展并行接口所需的绝对地址访问库函数#define LED_dig XBYTE0x9000 /8位数码管显示器的位选输出控制#define LED_seg XBYTE0x8000 /8位数码管显示

    5、器的段码(字形码)输出控制#define KEY_IN XBYTE0x8000/定义TLC549操作接口sbit ADC_CS = P17;sbit ADC_DATA = P16;sbit ADC_CLK = P15;code unsigned char disp_seg= /显示段码 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5f,0x79,0x71,0x40,0x00,0xff; / 0 1 2 3 4 5 6 7 8 9 a b c d e f - blank,全亮unsigned char Di

    6、spBuf8; /定义显示缓冲区(由定时中断程序自动扫描)unsigned char key_value,flag;/定义键盘返回值,任务标志unsigned char y1000,y100,y10,y;/定义秒表的个位,十分位,百分位,千分位unsigned short mbiao;/定义秒表计数单元void delay(int ms); /延时大约1msunsigned char ReadAdc(void);/读取A/D转换结果void AdcInit(void); /初始化ADC接口void key_scan(void);void main() unsigned char i=0; un

    7、signed char volt, x100, x10, x; TMOD &= 0x0f; TMOD |= 0x10; TH1 = 0xFC; TL1 = 0x66; TR1 = 1; ET1 = 1; TMOD &= 0xf0; TMOD |= 0x01; TH0 = 0xFC; TL0 = 0x66; TR0 = 1; ET0 = 1; EA =1; AdcInit(); for(i=0; i8; i+) DispBufi = 17; /全部8位显示灭 y1000=9; y100=9; y10=9; y=9; mbiao=9999; flag=0; while(1) while(flag

    8、=0) volt = ReadAdc(); /得到A/D转换结果的数字量(0x000xff) volt = volt * 250/256; /转换成电压值,其中Vr=2.5V x100 = volt/100; x10 = (volt - x100*100)/10; x = (volt - x100*100)%10; DispBuf0 = 4; DispBuf1 = 2; DispBuf2 = 16; DispBuf3 = x; DispBuf4 = x10; DispBuf5 = x100; DispBuf6 = 16; DispBuf7 = 1; delay(100); if(key_val

    9、ue = 8&volt=200)flag = 1;mbiao=9000;while(key_value = 8); while(flag=1) TR0=1; volt = ReadAdc(); volt = volt * 250/256; /转换成电压值,其中Vr=2.5V x100 = volt/100; x10 = (volt - x100*100)/10; x = (volt - x100*100)%10; DispBuf0 = y1000; DispBuf1 = 0; DispBuf2 = 16; DispBuf3 = x; DispBuf4 = x10; DispBuf5 = x10

    10、0; DispBuf6=16; DispBuf7=2; if(key_value = 8&volt=200)flag = 0;while(key_value = 8); else if(key_value = 7&volt=200)flag = 2;while(key_value = 7); while(flag=2) TR0=!TR0; if(key_value = 7)flag = 1;while(key_value = 7); /*函数:T1INTSVC()功能:定时器T1的中断服务函数*/void T1INTSVC() interrupt 3 code unsigned char co

    11、m = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; static unsigned char n = 0; TR1 = 0; TH1 = 0xFC; TL1 = 0x66; TR1 = 1; LED_dig = 0xFF; /暂停显示 if(flag=0) if(n=5) LED_seg = (disp_segDispBufn|0x80); else LED_seg = disp_segDispBufn;/更新扫描数据 if(flag=1) if(n=5) LED_seg = (disp_segDispBufn|0x80); else if(n=4) LE

    12、D_seg = ( disp_segDispBufn ); /更新扫描数据, else LED_seg = disp_segDispBufn; /更新扫描数据 if(flag=2) LED_seg = disp_segDispBufn; /更新扫描数据 LED_dig = comn; /重新显示 key_scan(); n+; n &= 0x07; void delay(int ms) unsigned int i,j; for(i=0; ims; i+) /延时大约1ms (fosc=11.0592MHz) for(j=0; j100; j+) ; /*函数:ReadAdc()功能:读取A/

    13、D转换结果返回:8位ADC代码*/unsigned char ReadAdc(void) unsigned char d; /读取得ADC结果 unsigned char n; /ADC bit位计数 ADC_CS = 0; n = 5; while ( -n != 0 ); /模拟tsu时间 n = 8; do d = 1; if ( ADC_DATA ) d = d | 0x01; /或d+; ADC_CLK = 1; ADC_CLK = 0; while ( -n != 0 ); ADC_CS = 1; return d;/*函数:AdcInit()功能:初始化ADC接口*/void A

    14、dcInit(void) ADC_CS = 1; ADC_CLK = 0; ADC_DATA = 1; ReadAdc(); /空读一次,用于启动一次A/D转换过程void key_scan(void) unsigned char key_in; key_in = KEY_IN; switch(key_in) case 0xff: key_value = 0; break; case 0x01: key_value = 1; break; case 0x02: key_value = 2; break; case 0x04: key_value = 3; break; case 0x08: k

    15、ey_value = 4; break; case 0x10: key_value = 5; break; case 0x20: key_value = 6; break; case 0x40: key_value = 7; break; case 0x80: key_value = 8; break; default: break; /*函数:T1INTSVC()功能:定时器T0的中断服务函数*/void T0INTSVC() interrupt 1 TR0 = 0; TH0 = 0xFC; TL0 = 0x66; TR0 = 1; if(mbiao=9000&TR0=1)mbiao=mbiao-1; if(mbiao=0)mbiao=9000; y1000=mbiao/1000; y100=(mbiao-y1000*1000)/100; y10=(mbiao-y1000*1000-y100*100)/10; y=(mbiao-y1000*1000-y100*100)%10;


    注意事项

    本文(数码管显示AD转换的电压值数码管显示秒表精编版.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开