




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图4.7是STC15系列单片机的ADC逻辑图,从图中可以看出,ADC0-7的模拟量输入通过模拟多路开关传送到比较器,在比较器中将数/模转换器(DAC)提供的模拟量与输入的模拟量进行比较,将比较结果保存到逐次比较寄存器作为转换结果。A/D转换结束后,最终的转换结果保存到结果奇存器ADC_RES和ADC_RESL,同时,ADC控制奇存器ADCCONTR中的A/D转换结束标志位ADC_FLAG置位,以供程序查询。图STYLEREF1\s4.SEQ图\*ARABIC\s17STC15系列单片机ADC逻辑电路如果设置ADRJ=0,可以使用下面公式计算10位转换结果:ADC_RES如果设置ADRJ=1,可以使用下面公式计算10位转换结果:ADC_RESL式中,Vin为模拟输入通道的输入电压,V4.3.2程序示例:A/D电压检测下面给出使用单片机片上ADC模块测量工作电源电压Vcc的程序,经实际测试,输出数值约为4.86,电压读数随USB接口的松紧变化而上下浮动。程序分析:使用ADC通道0检测电源电压,并采用查询法逐次查询ADC转换结果,然后控制数码管最右侧三位显示电压数值。#defineMAIN_Fosc 11059200L #include "STC15Fxxxx.H"#defineDIS_DOT 0x20#defineDIS_BLACK 0x10#defineDIS_ 0x11#defineP1n_pure_input(bitn) P1M1|=(bitn), P1M0&=~(bitn)#defineLED_TYPE0x00 //数码管类型,0x00共阴,0xFF共阳#define Timer0_Reload (65536UL-(MAIN_Fosc/1000)) //Timer0中断频率,1000次/秒u8codet_display[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,//0-9A-F 0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,//全黑-HJKLNoPUtGQrMy 0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46//0.1.2.3.4.5.6.7.8.9.-1};u8codeT_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位码sbit P_HC595_SER=P4^0; //pin14 SER datainputsbit P_HC595_RCLK=P5^4; //pin12 RCLk store(latch)clocksbit P_HC595_SRCLK=P4^3; //pin11 SRCLK Shiftdataclocku8 LED8[8]; //显示缓冲u8 display_index; //显示位索引bit B_1ms; //1ms标志u8 msecond;u16 Get_ADC10bitResult(u8channel); //channel=0~7voidmain(void){ u8 i; u16 j; //设置为准双向口 P0M1=0; P0M0=0; P1M1=0; P1M0=0; P2M1=0; P2M0=0; P3M1=0; P3M0=0; P4M1=0; P4M0=0; P5M1=0; P5M0=0; P6M1=0; P6M0=0; P7M1=0; P7M0=0; display_index=0; P1ASF=0; //对内部基准做ADC ADC_CONTR=0xE0; //90T,ADCpoweron AUXR=0x80; //定时器0设为:不分频,16位自动重载 TH0=(u8)(Timer0_Reload/256); TL0=(u8)(Timer0_Reload%256); ET0=1; //Timer0interruptenable TR0=1; //Tiner0run EA=1; //打开总中断 for(i=0;i<8;i++) LED8[i]=0x10; //上电消隐 while(1){ if(B_1ms){ //1ms到 B_1ms=0; if(++msecond>=200){ //200ms到 msecond=0; for(j=0,i=0;i<16;i++) j+=Get_ADC10bitResult(0); //读内部基准ADC,P1ASF=0,读0通道 j=(u32)128000UL*16/j; //ADC=1024*Uref/Ux,则Ux=1024*Uref/ADC=1024*1.25/ADC=1280/ADC LED8[5]=j/100+DIS_DOT; //显示MCU电压值,计算时放大了100倍,电压有两位小数. LED8[6]=(j%100)/10; LED8[7]=j%10; } } }}//查询法读一次ADC结果.u16 Get_ADC10bitResult(u8channel){//channel=0~7 ADC_RES=0; ADC_RESL=0; ADC_CONTR=(ADC_CONTR&0xe0)|0x08|channel; //启动ADC NOP(4); while((ADC_CONTR&0x10)==0) ; //等待ADC转换结束 ADC_CONTR&=~0x10; //清除ADC结束标志 return (((u16)ADC_RES<<2)|(ADC_RESL&3));}voidSend_595(u8dat){ u8 i; for(i=0;i<8;i++){ dat<<=1; P_HC595_SER=CY; P_HC595_SRCLK=1; P_HC595_SRCLK=0; }}voidDisplayScan(void){ Send_595(~LED_TYPE^T_COM[display_index]); //输出位码 Send_595(LED_TYPE^t_display[LED8[display_index]]); //输出段码 P_HC595_RCLK=1; P_HC595_RCLK=0; //锁存输出数据 if(++display_index>=8) display_index=0; //8位结束回0}voidtimer0(void)interruptTIMER0_VECTOR{ DisplayScan(); //1ms扫描显示一位 B_1ms=1; //1ms标志}4.3.4实验任务实验目的:熟悉KeilC整体编程环境以及MCU程序开发流程;了解A/D模块的工作原理以及编程结构;学习A/D模块的编程技术。实验内容:基本实验1:使用单片机内部的A/D转换功能实现ADC键盘,键盘一共有4个有效按钮,分别对应4盏LED。当按下按钮1时,切换第1盏LED灯的熄灭或亮起状态;其他按钮的控制规律与此类似。(提示:可用P1ASF=0x10;设置引脚P1.4为ADC模拟输入端口)基本实验2:设计程序实现ADC键盘,键盘一共有10个有效按钮,分别对应0-9共10个数字,用户按下按键后,数码管显示相应数字。基本实验3:设计程序实现ADC键盘,令数码管高四位与低四位作为两个独立计数器的显示器。初始状态下,两个计数器都是0,数码管显示“00000000”,按键0、1分别为高四位的加、减按键,按键2、3分别为低四位的加、减按键。当计数器为0时,减按键无效。4.4单片机综合实验(3学时)实验目的:熟悉KeilC51编程开发环境和单片机程序的开发流程;考察综合运用单片机知识,解决较复杂问题的能力。自行完成设计性实验,培养独立创新意识。实验内容:反应测试游戏请使用2个按键、3位数码管、1盏LED指示灯,实现反映测试游戏功能。游戏规则如下:设置1个准备按钮、1个停止按钮。游戏开始时按住准备按钮,等待一段时间后(由程序随机确定),点亮LED灯并立即开始计时,3位数码管动态显示持续时间。用户应迅速释放被按下的准备按钮,按下停止按钮。当停止键被按下时,计数立即停止,数码管中显示的数字保持不变作为反应时间。当准备按钮被再次按下时,计时显示清零,游戏重新开始。乒乓球游戏请使用4个按键、2位数码管、4盏LED指示灯,实现兵乓球游戏功能。4个按键分别定义为“左击球”、“右击球”、“开始比赛”、“游戏重置”;亮起的LED表示乒乓球的位置,数码管显示当前双方的比分。游戏规则如下:按下1个按键后,游戏开始,此时如果按动左击球键,则最左边的LED亮起,并且从左边开始不断向右边移动,当最右侧的LED亮起时,如果此时右击球键按下,则LED从右边又不断向左边移动,如果提前按下了“右击球”按钮,或者LED灯到达左边之后还没按下“右击球”按钮,则左边数码管加1。同理如果左边出现了失误,右侧数码管加1。每局游戏结束后,再次按下“开始比赛”键,重新开始新一轮比赛,但比分保持。在球打向右边的过程中,“左击球”键没有作用,反之亦然。在游戏过程中如果按下了“游戏重置”键则游戏停止并且比分清零。有能力的同学可以考虑在每一次球被击打后,小幅提高球的移动速度,以增加游戏的对抗性和趣味性。自行设计实验要求使用中断、AD转换和I/O引脚基本操作,具有一定的趣味性并保证一定的实现难度。总结单片机原理实验课程是电子科学、测控技术及自动化等专业学生的重要实践课程,也是培养动手能力、创新能力、适应能力、团队合作等综
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年监理工程师考试要点回顾试题及答案
- 存货计价方法及其影响试题及答案
- 如何应对数字化转型带来的挑战试题及答案
- 电子商务行业的竞争策略分析试题及答案
- 2024年人力资源管理师复习干货试题及答案
- 中职电子商务行业项目开发试题及答案
- 中职电子商务教师就业前景试题及答案
- 2025江西省安全员考试题库及答案
- 2025年-浙江省建筑安全员《C证》考试题库及答案
- 投资咨询工程师考试特色试题及答案点评
- 雷锋叔叔你在哪里评课稿
- 《IP地址和域名》-高中信息技术人教-中图版(2019)必修2
- (完整word版)高考英语作文练习纸(标准答题卡)
- 中南大学湘雅医院进修汇报演示文稿
- 《艺术学概论考研》课件艺术本体论-模仿论
- 南站二期标识设计变更003精神堡垒施工图
- 电厂防腐涂装培训ppt课件
- 履带-轮式爬楼梯电动轮椅设计【带图纸】
- 设计费投标报价表
- 全矿井风量测定及风表操作
- 中国历朝历代地图大全
评论
0/150
提交评论