数码管显示AD转换的电压值数码管显示秒表_第1页
数码管显示AD转换的电压值数码管显示秒表_第2页
数码管显示AD转换的电压值数码管显示秒表_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子科技大学微电子与固体电子 学院实验报告实验名称现代电子技术综合实验:詹朋璇学号:评分:教师签字电子科技大学教务处制电子科技大学实验报告学生:詹朋璇学号:指导教师:熊万安实验地点:211大楼308实验时间:2014. 6.30 晚、实验室名称:单片机技术综合实验室、实验项目名称:数码管显示A/D转换的电压值&数码管显示秒表三、实验学时:12四、实验目的与任务:1、熟悉系统设计与实现原理2、掌握KEIL C51的基本使用方法3、熟悉实验板的应用4、连接电路,编程调试,实现各部分的功能5、完成系统软件的编写与调试五、实验器材1、PC机一台2、实验板一块六、实验原理、步骤及容试验要求:数码

2、管的第1位显示任务号1,第3位到第5位显示、A/D转换的电压值,可调节电压,第 7、8位显示两位学号;数码管 第2位和第6位显示“-”号;按按键keyl进行切换,此时数码管第1位显示任务号2,第7、 8位显示循环倒计时的秒表,围为 08秒到01秒后,再过01秒,秒 表又显示为08秒;(单片机系统中利用定时器/计数器计数秒表的值: 利用定时器T0延时1秒进行计数。),其它位显示不变,按按键key2 时,秒表停止计数,再按按键 key2时,秒表继续计数,按key1键, 又回到任务1的显示状态。当电压值大于2伏时,按按键不起作用。1、硬件设计(可打印)V实验原理图;TLC549串行ADC2、各部分硬

3、件原理(可打印)HB'OnHl 嵐站iCLF-rL,,C«iZI>M40 忙*rFBgjfDW 和鼻LAirlFB3gAHLgfFW朋6 670LWUDCW 上grnfH亦Rtjyi 1 w- omcMiU fAHl観5SICIJTIOIgLpCCPlfiCi>CtK;刖如丽FK 利 CrKUiEEJIWPU1l«MICRCBJFXiTK Rr?JRA/T!l parOT常IfF屮RB2f'P 沁 Rirarrm R冲F鉀*RunrraTiRZfPS?H BB3;»l Htl l:1J HBJ ”R«« F衬.数码管

4、动态扫描TLS549ADC工作时序图3、软件设计开始57 ,mJJT:1X用_ a i-iS7 1r-*i-:Ml初始化2按下Key1/2是否按下1按下1位显示任务号2,第7、8位显示循环倒计时的秒表,范围秒表停止计数为08秒到01秒后,再过01秒,秒表又显示为08秒,其它位显示不变。1 按下Key1/2是否按下按下2按下继续计数开始计数继续任务一开始计数1按下Key1/2是否按下思考题:按键改用外部中断模式,电路如何修改(画示意图)?程序如何修改,写出中断服务程序。答:将KEY1与KEY2键通过跳线分别接到INTO与INT1接口上。开启中断:Sys In it()EA=0; /禁止总中断EX

5、1=1; / 使能/INT1 中断EX0=1; / 使能/INTO 中断EA= 1; /使能总中断中断服务程序:void INT0SVC () in terrupt 0if(cnt<=31)t+;void INT1SVC () in terrupt 2 if(cnt>=17)t-;七、总结及心得体会1.利用单片机开发板上丰富的资源可以实现一个有一定功能的系统2.懂得利用中断可以使单片机的效率提高。八、对本实验过程及方法、手段的改进建议实在是没有,都挺好的。九、附录1、 程序/*利用TLC549 A/D转换器实现电压测量与显示*/包含8051的SFR寄存器定义头文/扩展并行接口所需的

6、绝对地址访#in elude <reg51.h> 件#in elude <absacc.h>问库函数#define LED_dig XBYTE0x9000#define LED_seg XBYTE0x8000 出控制#define KEY_IN XBYTE0x8000/8位数码管显示器的位选输出控制/8位数码管显示器的段码(字形码)输/定义TLC549操作接口 sbit ADC_CS = P1A7; sbit ADC_DATA = P"6;sbit ADC_CLK = P"5;/显示段码code un sig ned char disp_seg=0x

7、3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5f,0x79,0x71,0x40,0x00,0xff;/ 0123 456789 a b cd e f - bla nk,全亮unsigned char DispBuf8;/定义显示缓冲区(由定时中断程序自动扫描)un sig ned char key_value,flag;/定义键盘返回值,任务标志un sig ned char y1OOO,y1OO,y1O,y;定义秒表的个位,十分位,百分位,千分位un sig ned short mbiao;/定义秒表计数单

8、元void delay(int ms);/ 延时大约 1msunsigned char ReadAdc(void);/ 读取 A/D 转换结果 void AdcInit(void);/ 初始化 ADC接口void key_sca n( void);void mai n()un sig ned char i=0;unsigned char volt, x100, x10, x;TMOD &= OxOf;TMOD |= 0x10;TH1 = OxFC;TL1 = 0x66;TR1 = 1;ET1 = 1;TMOD &= 0xf0;TMOD |= 0x01;TH0 = 0xFC;TL

9、0 = 0x66;TR0 = 1;ET0 = 1;EA =1;AdcI nit();for(i=0; i<8; i+)DispBufi = 17;/全部8位显示灭y1000=9;y100=9;y10=9;y=9;mbiao=9999;flag=0;while(1)while(flag =0)0x000xff)volt = ReadAdc();/得到 A/D转换结果的数字量(volt = volt * 250/256;/ 转换成电压值,其中 Vr=2.5Vx100 = volt/100;x10 = (volt - x100*100)/10;x = (volt - x100*100)%10;

10、DispBuf0 = 4;DispBuf1 = 2;DispBuf2 = 16;DispBuf3 = x;DispBuf4 = x10;DispBuf5 = x100;DispBuf6 = 16;8&&volt<=200)flagII转换成电压值,其中Vr=2.5VDispBuf7 = 1; delay(IOO);if(key_value1;mbiao=9000;while(key_value = 8); while(flag=1)TR0=1;volt = ReadAdc();volt = volt * 250/256;x100 = volt/100;x10 = (vol

11、t - x100*100)/10;x = (volt - x100*100)%10;DispBuf0 = y1000;DispBuf1 = 0;DispBuf2 = 16;DispBuf3 = x;DispBuf4 = x10;DispBuf5 = x100;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);whil

12、e(flag=2)TR0=!TR0;if(key_value = 7)flag = 1;while(key_value = 7); /*函数:T1INTSVC()功能:定时器T1的中断服务函数*/void T1INTSVC() in terrupt 3code un sig ned char = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; static un sig ned char n = 0;TR1 = 0;TH1 = 0xFC;TL1 = 0x66;/暂停显示TR1 = 1;LED_dig = 0xFF; if(flag=0)if(n=5)LED_s

13、eg = (disp_segDispBuf n| 0x80);elseLED_seg = disp_segDispBuf n;更新扫描数据if(flag=1)if(n=5)LED_seg = (disp_segDispBuf n| 0x80); elseif(n=4)/更新扫描数据,/更新扫描数据/更新扫描数据LED_seg = ( disp_segDispBuf n); elseLED_seg = disp_segDispBuf n; if(flag=2)LED_seg = disp_segDispBuf n;LED_dig = n;/ 重新显示key_sca n();n+;n &=

14、 0x07;void delay(i nt ms)un sig ned int i,j;for(i=0; i<ms; i+)/ 延时大约 1ms (fosc=11.0592MHz)for(j=0; j<100; j+)/*函数:ReadAdc()功能:读取A/D转换结果返回:8位ADC代码*/ un sig ned char ReadAdc(void) /读取得ADC结果/ADC bit 位计数un sig ned char d;un sig ned char n;ADC_CS = 0;n = 5;while ( -n != 0 );/模拟tsu时间n = 8; dod <&

15、lt;= 1;/ 或 d+;if ( ADC_DATA ) d = d | 0x01;ADC_CLK = 1;ADC_CLK = 0;while ( -n != 0 );ADC_CS = 1; return d; /*函数:AdcInit()功能:初始化 ADC接 口*/void AdcI nit(void)ADC_CS = 1;ADC_CLK = 0;ADC_DATA = 1;A/D转换过程ReadAdc();/空读一次,用于启动一次void key_sca n(void)un sig ned char key_ in;key_in = KEY_IN;switch(key_i n)case

16、Oxff:key_value = 0;break;case 0x01:key_value = 1;break;case 0x02:key_value = 2;break;case 0x04:key_value = 3;break;case 0x08:key_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的中断服务函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论