1、单片机原理与应用试题及答案单片机原理与应用试卷及答案-、填空题1、 B作为无字符数时,十进制数值为182;作为补码时,十进制数值为一74.2、 原码 01101011B 的反码为 01101011B 补码为 01101011B3、 由8051的最小系统电路除芯片外,外部只需要复位电路和时钟(晶 振)电路,如果由8031的最小系统,还需要扩展外部 ROM电路。4、 若已知8051RAM勺某位地址为09H,则该位所处的单元地址为5、 C51语言中,指令#define ADC XBYTEQXFFEO能够正确编译的前提是包含头文件,该指令的作用是定义一个外部地址单元为 OXFFE O二、选择题1、 程
2、序和常数都是以(二进制)的形式存放在单片机程序的存储器中。2、 下列哪一个选项的指令语句不是任何时候都可以被 C51正确编译(uchar; k=ox20)3、 当PSW勺RS0和 RS1位分别为1和0时,系统选用的寄存器组为(1 组)4、若某存储器芯片地址线为12根,那么它的存储容量为(4KB5、已知 Tosc=12MHZTH1 = 177 TL1=224, TMOD=ox1,则从定时器启动到正常溢出的时间间隔为(20mS简答题1、请简述TTL电平和CMO电平的区别TTL电平临界值CMO电平临界值(没有电源电压为+5v)VOHnVOLaxVIHminVIL maxCMO电平能驱动TTL电平,但
3、TTL电平不能驱动CMO电平,需要上 拉电阻。2、请简述利用keil开发程序的操作步骤答:新建工程项目配置工程项目属性创建源文件将源文件加入项目保存项目3、PSW寄存器有何作用其各位是如何定义的答:标志寄存器PSW是一个8位的寄存器,它用于保存指令执行结果的状态,以供工程查询和判别。PSWCACFORSRS0OVP1F0():用户标志位RS1 RSO(、):寄存器组选择位 0V():溢出标志位P():奇偶标志位4、为什么MC55单片机的并行口用作输入端时先要给引脚置 1答:并行口输入端接下拉电阻,将场效应管截止,防止输出端接地四、 编程题1请用C51编写一段程序,利用定时中断法使 P1 口外接
4、的8盏LED 小灯实现亮灯状态间隔为 2 秒的流水灯效果。答: #include #include / 中 定 义 了 空 指 令 、位 测 试 指 令 及 环 移 、出 入 栈 等 51 汇 编 中 有 而 标 准 c 中 没 有 的 指 令#define uint unsignedint; / 简化 无 符 号 变 量 的 声 明 关键 字#define uchar unsigned char;uchar sec_counter,led_statue; / 定 义 两 个 变 量 ,一个用于秒计数,一个用于保存LED当前的亮灯状态main()SP=0x60;TH0=0x3C;12MHz 的
5、 50ms 初值,6MHz 的/ 转 移 堆 栈 区100ms 初 值TL0=0xB0;TMOD=0x01;/ 设 置 TMOD, 使 T0 为 定时 方 式 1led_statue=0x0fe;/ 初始化共阳极亮灯状态,如 果外部 LED 小 灯 接 法 为 共 阴 极 , 这 里 值 为 0x01sec_counter=40;/秒计数(12MHz时,40*50=2000ms )ET0=1;/T0 中 断允许EA=1;/ 总中 断允许TR0=1;/ 启 动 T0 开 始 计时while(1);/ 等 待 中 断void intt0() interrupt 1 TH0=0x3C;/ 恢 复 T
6、0 初 值TL0=0xB0;if (sec_counter-=0) / 如 果 没 到 1s , 则 返 回 ,到 了 1s , 则 循 环 移 位 亮 灯 状 态P1=led_statue;led_statue=_crol_(led_statue,1);sec_counter=40; / 恢 复 2s 初 值2、某系统需要扩展 3*3 的键盘陈列,当 9个按键依次按下时可分别 在7位LED数码管输出A b C d E F L H O ,试设计硬件电路图,并 用C51编写程序实现上述功能。答: #include #include #define uchar unsigned char#defi
7、ne uint unsigned intsbit dula二P2八6;sbit wela=P2A7;/共阴极数码管AbCdEFLH(编码 uchar code NumTab=0x88,0x83,0xc6,0xa1,0x86,0x8e, 0xc7,0x89,0xa3;*毫秒延时函数 */void delayms(uint tms)uint i,j;for(i=tms;i0;i-)for(j=110;j0;j-);void display(uchar num)P0=NumTabnum;dula=1;dula=0;/*键反转法扫描子函数 *void key_CV_Scan()/ 键反转法,先获取低u
8、char i, j,temp,key;3 位信息,再获取高 3 位信息while(1)/ 然后将高低 3 位组合成一个完整的 8 位键码P3=0x0F;temp=P3;if(temp&0x0F)!=0x0F)switch(temp) / 判断按下的键在 哪一行,得到行号case 0x0b: i=2; break;case 0x0d: i=1; break;case 0x0e: i=0; break;default: break;P3=0xF0; / 平temp=P3;if(temp&0xF0)!=0xF0)列,得到列号switch(temp)case 0xb0: j=2; break;case 0xd0: j=1; break;case 0xe0: j=0; break;default: break;key= 3*i+j;反转行和列上的电/ 判断按下的键在 哪一/通过行列号来计算键值display(key);/ 显示键值/*主函数 *void main()P0=0x3f;wela=1;wela=0;P0=0xff;dula=1;dula=0;while(1)key_CV_Scan();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1