1、 试 题 答 案- 1 -2006 2007 学年第 1 学期课程名称:单片机及其应用 使用班级:电子、通信、控制 2004 级命题系别:电子基础教学实验中心 命题人:赵建一、分析简答题(17 分)2、0XA000 或 A000H二、程序分析题(8 分)、定时方式 2 (4 分)、400us 或 0.4ms ( 4 分)三、编程题(75 分)1、程序初始化正确(设置 I/O 口的初值)、程序结构正确(基本的程序框架正确合理)、程序结果正确(循环的结果灯亮灭的情况正确)21、程序初始化正确(中断的设置等正确)、按键检测正确(中断服务程序书写正确)、数码管结果正确(总线扩展数码管操作正确)、整体结
2、果正确(程序结构及加减数据正确)22、程序初始化正确(中断的设置等正确)、按键检测正确(中断服务程序书写正确)、数码管结果正确(I/O 口扩展数码管操作正确)、整体结果正确(程序结构及加减数据正确)3、定时器初始化正确(TMOD,中断,定时器初值正确)、程序结构正确(程序结构,中断服务程序编写正确)、程序结果及数据存放正确(频率算法和结构存放的地址正确)4、程序初始化正确(总线地址正确)、ADC0804 操作正确(启动 AD 转换数据正确)、程序结果及数据存放正确(转换结束检测数据存放地址正确)5、试 题 答 案- 2 -、程序初始化正确(定时器及串口初始化正确)、数据发送操作正确(发送数据出
3、正确)、程序结果整体正确(程序框架正确合理)附:程序范例,只做评分参考使用,由于思维方式不同,所以,程序的判分以上面的评分细则为准,只要功能正确,就判为正确程序。1、#includevoid Delay()unsigned int i=100;while(i-);void main()unsigned char Dat = 0x7f;unsigned char i = 8;P0 = 0x0ff;while(1)if(i-)P0 = Dat;Delay();Dat = 1;Dat += 0x80;elseDat = 0x7f;i = 8;试 题 答 案- 3 -2、 (1)#include#in
4、clude/*总线地址定义区*/#define LED_DIG XBYTE0x9000 /定义数码管的段选总线地址#define LED_SEL XBYTE0x8000 /定义数码管的位选总线地址/*全局变量定义区*/unsigned char code DisCode = 0x0C0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF;/共阳极数码管码表,定位在 ROM 中unsigned char Counter = 30; /定义一全局变量/*显示延时*/void Delay()unsigned char i = 10;while(i-);
5、/*带参数传递的显示程序*/void Display(unsigned char *Dat)LED_DIG = DisCode*Dat; /送段选LED_SEL = 0x01; /选通第一个数码管Delay();LED_SEL = 0; /消隐LED_DIG = DisCode*(Dat+1);LED_SEL = 0x02; /选通第二个数码管Delay();LED_SEL = 0;试 题 答 案- 4 -/*主函数*/void main(void)unsigned char Disbuf = 0,3; /存放欲显示的数据IT0 = IT1 = 1; /开中断EX0 = EX1 = 1;EA
6、= 1;while(1)Disbuf0 = Counter%10; /十六进制数分解成十进制数进行显示Disbuf1 = Counter/10;Display(Disbuf);/*外部中断 0 的中断服务子程序*/void INT0_Ser() interrupt 0 /循环加操作if(Counter+=59)Counter = 0;/*外部中断 1 的中断服务子程序*/void INT1_Ser() interrupt 2 /循环减操作if(Counter-/*总线地址定义区*/sbit LED_DIG = P13;sbit LED_COM = P12;unsigned char code
7、DisCode = 0x0C0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF;/共阳极数码管码表,定位在 ROM 中unsigned char Counter = 30;/*显示延时*/void Delay(void)unsigned char i = 10;while(i-);/*带参数传递的显示程序*/void Display(unsigned char Dat2)static unsigned char i = 0;unsigned LED_Posit = 0x10;for(i = 0;i=59)Counter = 0;/*外部中断
8、1 的中断服务子程序*/void INT1_Ser() interrupt 2 /循环减操作试 题 答 案- 7 -if(Counter-unsigned char counter = 0;unsigned char FRQU = 0;/*主函数*/void main()TMOD = 0x51;TH0 = 500008; /一次定时 50msTL0 = 50000;TL1 = 0;TR0 = TR1 =ET0 = EA = 1;while(1);/*T0 中断服务子函数*/void T0_SR() interrupt 1TH0 = 500008; /一次定时 50msTL0 = 50000;i
9、f(counter+=20) /定时一秒counter = 0;TR1 = 0;FRQU = TL1; /读取本次所测频率值TL1 = 0;TR1 = 1;试 题 答 案- 8 -4、#include#include/*总线地址定义区*/#define ADC0804 XBYTE0xB000 /定义 ADC0804 的总线地址sbit ADC_INT = P32;/*全局变量定义区*/unsigned char ADCTemp = 0; /定义一全局变量/*延时*/void Delay(void)unsigned char i = 30;while(i-);/*主函数*/void main(v
10、oid)while(1)ADC0804 = 0xFF; /启动 A/D 转换Delay();while ( ADC_INT ); /等待 A/D 转换完毕ADCTemp = ADC0804; /读取 A/D 转换结果Delay();试 题 答 案- 9 -5、#include/*发送数组,只能一个一个的发*/void Send()unsigned char j;unsigned char Dat=1,2,3,4;for(j=0;j4;j+)SBUF = Datj;while(TI=0);TI = 0;/*/void main(void)unsigned char i=0;TMOD = 0x20;TH1 = TL1 = -11059200L/12/32/4800;TR1 = 1;SCON = 0x50;Send();while(1);
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。