云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 西南科技大学单片机上机考试题答案

西南科技大学单片机上机考试题答案

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 9:27:06

num=3; moto(num); }

/****************************************************************************************

* @file 步进输出模拟电压 * @author 秘密作战实验室 * @version v1.0

* @date 2015-06-26

* 功 能: 利用0832在按键控制下步进输出模拟电压(硬件电路参见DA_BUF1_1.DSN)。要求每

按键一次递增或递减0.1V。设输出最大值为4V,最小值为1V。

***************************************************************************************/

#include\#include\sbit Key2=P1^6; sbit Key1=P1^7;

#define DA_S XBYTE[0x3c00] unsigned char DAVAL=128; void delay(unsigned int time) { unsigned int i=0,j=0; for(i=0;i

void signal(unsigned char num) { WR=0; DA_S=num; }

void main(void) { while(1) { if(Key1==0) { delay(10); if(Key1==0) DAVAL+=5; //按键加减5个数字量,会小些误差,因为0.1v对应的数字量是5.1,会有累计误差 while(!Key1); //但word上面要求加减5个数字量,如果老师问起你还可以将这个问题,会有加分哦 } //^-^~ 嘿嘿~ if(Key2==0) { delay(10); if(Key2==0) DAVAL-=5; while(!Key2); } DAVAL=DAVAL>200?200:DAVAL; //三目运算符,对DAVAL进行限幅

DAVAL=DAVAL<50?50:DAVAL; signal(DAVAL); } }

/****************************************************************************************

* @file 单个模拟电压等级识别 * @author 秘密作战实验室 * @version v1.0

* @date 2015-06-26

* 功 能: 利用0809采集单路模拟电压,将其分级(10级),并将分级数(0~9)显示在LED

显示器上。(硬件电路参见AD_CH1_1.DSN)。

***************************************************************************************/

#include //宏定义

#define TIMER1DEF ( 65536 - 50000 ) #define AD_Convert(i) (*((unsigned char volatile xdata *) (0x3c00 + i)) = 0) #define AD_Read(i) (*((unsigned char volatile xdata *) (0x3c00 + i))) //全局变量定义

int bAD_Val = 0; // 转换结果

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; /*********************************************************************** ** 函数名称: delay()

** 功 能: 延时n毫秒 ** 入口参数: 无 ** 出口参数: 无

***********************************************************************/ void delay(int time) {

int i=0,j=0;

for(i=time;i>0;i--) for(j=114;j>0;j--); }

/*********************************************************************** ** 函数名称: TimeT1()

** 功 能: 定时器1初始化,定时50ms ** 入口参数: 无 ** 出口参数: 无

***********************************************************************/ void TimeT1() {

TMOD=0X10; //定时器1 方式1 TH1=TIMER1DEF/256; TL1=TIMER1DEF%6;

PT1=1;//定时器1 中断优先级 高 ET1=1;//定时器1 中断控制位 TR1=1; }

/*********************************************************************** ** 函数名称: main() ** 功 能: 程序入口 ** 入口参数: 无 ** 出口参数: 无

***********************************************************************/ void main(void) { P1=0Xff; // 初始化 TimeT1(); IT1=1; //脉冲触发方式 EX1=1; EA =1; // 开中断 delay(500); while( 1 ) // 主循环 { delay(50); P1=table[10*bAD_Val/256]; } }

/*********************************************************************** ** 函数名称: INT_INT1()

** 功 能: INT1中断服务程序,使用工作寄存器组1 ** 入口参数: 无 ** 出口参数: 无

***********************************************************************/ void INT_INT1(void) interrupt 2 using 1 {

bAD_Val=AD_Read(4); }

/*********************************************************************** ** 函数名称: INT_T1()

** 功 能: T1中断服务程序,使用工作寄存器组1 ** 入口参数: 无 ** 出口参数: 无

***********************************************************************/ void INT_T1() interrupt 3 using 1 { static int bCount = 2; TH1=TIMER1DEF/256; TL1=TIMER1DEF%6; if( --bCount == 0) // 判断100毫秒时间到 { bCount=2; AD_Convert(4); } }

/****************************************************************************************

* @file 单个模拟电压监测 * @author 秘密作战实验室 * @version v1.0

* @date 2015-06-26

* 功 能: 在VoltageMonitor_1.DSN的电路中测量由电位器产生的模拟电压,当电压小于1V时,

使连接在P1.0上的(黄)色LED亮;当电压大于4V时,使连接在P1.1上的(红)色 LED亮当电压在1~4V时,所有LED熄灭。

要求:当信号变化后,必须在100毫秒内做出响应。

****************************************************************************************/

#include //宏定义

#define TIMER1DEF ( 65536 - 50000 ) #define AD_Convert(i) (*((unsigned char volatile xdata *) (0x2000 + i)) = 0) #define AD_Read(i) (*((unsigned char volatile xdata *) (0x2000 +i))) //全局变量定义 int bAD_Val = 0; // 转换结果 sbit P1_0=P1^0; sbit P1_1=P1^1;

/*********************************************************************** ** 函数名称: delay()

** 功 能: 延时n毫秒 ** 入口参数: 无 ** 出口参数: 无

***********************************************************************/ void delay(int time) { int i,j;

for(i=0;i

/*********************************************************************** ** 函数名称: TimeT1()

** 功 能: 定时器1初始化,定时50ms ** 入口参数: 无 ** 出口参数: 无

***********************************************************************/ void TimeT1() {

TMOD=0X10; //定时器1 方式1 TH1=TIMER1DEF/256; TL1=TIMER1DEF%6;

PT1=1;//定时器1 中断优先级 高 ET1=1;//定时器1 中断控制位 TR1=1; }

搜索更多关于: 西南科技大学单片机上机考试题答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

num=3; moto(num); } /**************************************************************************************** * @file 步进输出模拟电压 * @author 秘密作战实验室 * @version v1.0 * @date 2015-06-26 * 功 能: 利用0832在按键控制下步进输出模拟电压(硬件电路参见DA_BUF1_1.DSN)。要求每 按键一次递增或递减0.1V。设输出最大值为4V,最小值为1V。 *****************************************

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com