单片机课后答案解析9_第1页
单片机课后答案解析9_第2页
单片机课后答案解析9_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、习题91. 某系统片外 RAM的片选电路如图9-38所示:RAM共7路,有2KX8位和1KX8位两种芯 片,其片选信号都是低电平有效。请为各路RAM芯片注明它的容量和地址围。9 / 9Y0一Y11Y2%-%第一路片选端第二路片选端第三路片选端第四路片选端第五路片选端第六路片选端第七路片选端A15A14A13 A12A11A10E3E1E274LS138C图9-38 第1题图解:第一路芯片的地址为8000H-87FFH;第二路芯片的地址为8800H-8FFFH第三路芯片的地址为9000H-97FFH;第四路芯片的地址为A000H-A3FFH;第五路芯片的地址为A400H-A7FFH;第六路芯片的

2、地址为A800H-ABFFH;第七路芯片的地址为AC00H-AFFFH2. 对AT89C51单片机外扩4片静态RAM62128芯片,请画出硬件电路图,写出每片芯片的 地址。解:62128(1): 0000H-3FFFH, 62128(2): 4000H-7FFFH, 62128(3): 8000H-BFFFH62128(4): C000H-FFFFH3. 8255A有几种工作方式?如何进展选择?解:8255A共有三种工作方式,用方式控制字来选择。4. 现有一片AT89C51单片机,扩展了一片 8255A,假设把8255A的B 口用作输入,每一位 接一个开关,A 口用作输出,每一位接一个发光二极

3、管, 请用proteus软件画出电路原理图, 并编写出B 口某一位开关接低电平时, A 口相应位发光二极管被点亮的程序。解:电路如以下图:EC利心BnaffiTO-? i : 2 比血站讯JliA护"J 0 MB m ruti?帝側谓FT IMp? gq ds K'iiMS FEWMiLF>t pq I g ap R.2*rn. W.ltillP3 VTu im yn 巧q运Q * .C? Ai±心?!倉弓二二囂ITTif-TH TLmw 一-程序如下:#in elude <reg51.h>#in clude <absacc.h>#in

4、 clude vintrin s.h>#defi ne uint un sig ned int#defi ne uchar un sig ned charPA,PB,PC及命令端口地址定义#defi ne PA XBYTE0x0000#defi ne PB XBYTE0x0001#defi ne PC XBYTE0x0002#defi ne XBYTE0x0003 void mai n()uchar k;=0x82;/控制字while(1)k = PB;PA = k;5. 按照图9-18所示8255与AT89C52的连接图,用 8255C 口的PC3引脚向外输出连续的正方波信号,频率为

5、500Hz。试编程,并用 proteus仿真验证。解:利用定时器 0,每1ms中断一次,在中断效劳程序中改变PC3的状态。程序如下:#in clude <reg52.h>#in clude <Absacc.h>#define PA8255XBYTE0xe000 /* 定义 8255A 口地址 */#define PB8255XBYTE0xe001/* 定义 8255B 口地址 */#define PC8255XBYTE0xe002/* 定义 8255C 口地址 */#define 8255 XBYTE0xe003 /* 定义 8255 控制存放器地址 */void ti

6、mer0i nit();bit k;un sig ned char aa;void ini t8255(void);void main (void)timer0i nit();in it8255();8255=0x07;/*PC3 置 1*/k=0;while (1);void ini t8255(void) 8255=0x80;/*工作方式选择字送入8255控制存放器,设置 A、B、C 口为根本I/O输出方式*/void timer0i nit()TMOD=0x01; /设置T0为定时器模式,工作在方式1TH0=(65536-1000)/256;TL0=(65536-1000)%256;EA

7、=1; /开总中断ET0=1; /允许T0中断TR0=1; / 启动 T0void timerO() interrupt 1 / 定时器 0 每 1ms 中断一次TH0=(65536-1000)/256;TL0=(65536-1000)%256;if(k=O)8255=0x06;/*PC3 清 0*/k=k;else8255=0x07;/*PC3 置 1*/k=k;6. 为什么要进展按键消抖 ?按键消抖的方法有几种 ?解:按键是利用机械触点的合、断来实现键的闭合与释放,由于弹性作用,机械触点在闭合及断开瞬间会有抖动的过程,从而使键输入电压的信号也存在抖动现象。去除抖动的方法一般有硬件和软件两种

8、。硬件方法就是在按键输出通道上添加去抖动电路,从根本上防止电压抖动的产生,去抖动电路可以是单稳态电路或者滤波电路。软件方法通常是在检测到有键按下时延迟1020ms的时间,待抖动期过去后,再次检测按键的状态,如果仍然为闭合状态,才认为是有键按下,否那么认为是一个扰动信号。按键释放的过程与 此一样,都要利用延时进展消抖处理。由于人的按键速度与单片机的运行速度相比要慢很多, 所以,软件延时的方法简单可行,而且不需要增加硬件电路,本钱低,因而被广泛采用。7. 按键输入程序应具备哪些功能?解:具有以下功能:(1) 确定键是否闭合;2按键消抖处理;(3)确定闭合键的位置;(4)确定按键是否上访; (5)对

9、按键进展处理。8. 利用LED显示器设计一个统计按键次数的系统,能够实时将当前按键次数以十进制 形式显示在2位LED显示器上。(1)所设计的Proteus仿真电路如图5-13所示。图5-13计数器的仿真电路与效果图两位数码管与单片机相连时,可以采用静态显示方式,也可以采用动态显示方式。这里 采用动态显示方式,将两个数码管的段码连接到单片机的P0 口,P0 口通过470Q的上拉电阻接+5V,两个数码管的位选由 P2.6和P2.7选中。图5-13中数码管是共阴极的。(2) 程序设计如下:#in clude<reg51.h>#defi ne uchar un sig ned charsb

10、it key=P3A0;sbit ge=卩2人7;sbit shi=P2A6;uchar dd;/ dd为显示的数字uchar f0;/ f0为键按下过的标志uchar time=0,co un t=0;uchar code dis =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; 段码/*延时程序 *void delay(uchar N)uchar i,j;for(i=0;i<N;i+)for(j=0;j<125;j+);/*显示程序 *void display(void)P0=disdd%10;/显示个位ge=o;delay

11、(3);ge=1;P0=disdd/10;/显示十位shi=0; delay(3);shi=1;主程序 *未*void mai n()dd=0;/开场显示的数字为0f0=1;while(1)/f0为按下过键的标志位,如果按下过键,f0=0,否那么f0=1while (key=1)/键未按下,显示 display();if (f0=0)dd=dd+1;f0=1;while (key=0)键按下,显示,标志 f0=0display();f0=0;(3) 仿真效果099计数器的仿真效果图如图5-13所示,图中显示的是 23。9. LCD1602与AT89C52单片机连接的仿真电路如图 9-36所示。

12、用C语言编程,实现第一行 从右侧移入“ Hello everyo ne",同时第二行从右侧移入 “ Wele to here!",移入速度自定,然 后停留在屏幕上。解:程序设计如下: 程序如下:#in clude<reg52.h>#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar code table="Hello every on e"uchar code table1="Wele to here!"sbit Icden=卩3人4;液晶使能端sb

13、it lcdrs=P3A5; /液晶数据命令选择端uchar num;void delay(uint z)/ 延时子程序ui nt x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_(uchar )/ 写命令函数lcdrs=0;选择写命令模式P0=;将要写的命令字送到数据总线上lcden置为0delay(5);/稍微做延时以待数据稳定lcden=1;使能端给一个高脉冲,因为初始化函数中已将delay(5);/稍做延时lcden=0;将使能端置0以完成高脉冲void write_data(uchar date) lcdrs=1;P0=date;delay(5);Icden=1;delay(5);Icde n=0;void in it()Icde n=0;write_(0x38);设置16 X2显示,5 X7点阵,8位数据接口write_(0x0f); II设置开显示,不显示光标write_(0x06);写一个字符后地址指针加1write_(0x01);II显示清0,数据指针清0void mai n()ini t();write_(0x80+0x10);先将数据指针定位到第一行第一个字处fo

温馨提示

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

评论

0/150

提交评论