单片机复习参考解答.doc_第1页
单片机复习参考解答.doc_第2页
单片机复习参考解答.doc_第3页
单片机复习参考解答.doc_第4页
单片机复习参考解答.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1. 8051单片机的所含有的资源, 是几位单片机8位2. 晶振频率与机器周期之间关系时钟周期即晶振的单位时间发出的脉冲数,12MHZ=1210的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒。一个机器周期等于12个时钟周期,所以是1微秒。3. STC89C52单片机的引脚位置与名称4. 8051五个中断号的作用INT0,INT1为引脚输入外部中断源,定时器T0,T1溢出中断源,RI/TI串行口的发送与接受中断源5. 8051的定时器/计数器四种工作模式,如何选择、如何设定(TMOD各位的含义)TMOD方式寄存器的高4位(Bit7-Bit4)用以设置T1的工作方式,低4位(Bit3-Bit0)用以设置T0的工作方式!其它门控位,切换开关自动设为0。Bit 7 Bit 6 Bit5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0门控位切换开关TMOD1TMOD0门控位切换开关MOD1MOD000000000010110101111例如,设TMOD=0x10(即0001 0000),说明你选择的是定时器1(低4位全为0),并且使用工作方式01;而选择方式00(自动重装16位),01(16位),10(自动重装8位),11(8位)主要是考虑到它们的计数范围。其值对定时器0或1都是一样的;6. 8051的定时器/计数器如何计算初值对于定时器的初值,有一条通杀的简单计算公式:看19题哈fOSC晶振频率,机器周期T=12/ fOSC= t=持续时间t = (定时器/计数器最大范围-x)T求x,x是十进制数,然后转换成十六进制得出高位与低位7. 8051的串行口工作方式有几种,SCON各位的含义SCON各位的含义,书说得更加清楚哦!REN允许串行接收控制位。8. 单片机串行通讯的单工、双工、半双工含义1、单工单工是指数据传输仅能沿一个方向,不能实现反向传输。2、半双工半双工是指数据传输可以沿两个方向,但需要分时进行。3、全双工全双工是指数据可以同时进行双向传输。9. 8051两机能够异步串行通讯的条件是什么(1,波特率相同 2,帧格式也要相同)10. 8051单片机最小系统原理图11. 8051控制74HC164, PCF8563, DS18B20 , TLC549 ,数码管要几根线(分别为2根,2根,1根,3根,)12. 异步串行通讯标准波特率是哪些值(11520,12800,14400,19200,28800,38400,57600,115200)13. REG52.H文件的作用是什么(定义了一些宏,把单片机中的寄存器地址封装)14. display.h ,pcf8563.h , ds18B20.h, tlc549.h文件中一般有什么内容display.hvoid shift(unsigned char n,flag);void display(unsigned char j0,j1,j2,j3,j4,j5,j6,j7);sbit sda=P05;sbit scl=P06;code char led_code19= /display code0x11,0xd7,0x32,0x92,0xd4,/0,1,2,3,40x98,0x18,0xd3,0x10,0x90,/5,6,7,8,90x50,0x1c,0x39,0x16,0x38,/a,b,c,d,e0x78,0xfe,0xef,0xff / f - dot dark;pcf8563.hsbit sda_8563 = P03;sbit scl_8563 = P02;unsigned char year,mon,day,hou=0x16,min=0x16,sec=0x20,week,last_week=7;const unsigned char time7=0x09,0x11,0x20,0x05,0x11,0x14,0x30; /设置初值:年.月.日.星期.时.分.秒/与PCF8563有关的函数声明void start(void); /开始子程序void stop(void);/结束子程序unsigned char writebyte_8563(unsigned char );/写一个字节=unsigned char readbyte_8563(void); /读一个字节void read_time_8563(void);/读日期,数据放于year,mon,day,hou,min,sec,weekvoid write_time_8563(void); /写日期初值ds18B20.hsbit DQ = P04;void delay(unsigned int );void init_DS18B20(void);uchar read_one_char(void);void write_one_char(unsigned char);int read_temperature(void);tlc549.hSbit cs_549=P37;Sbit sda_549=P36;Sbit scl_549=P35;Void delay(unsigned char);unsigned char read_549();15. 手工推导数码管显示代码首先运行数组LED=0x00,0x01,0x02,0x40,0x08,0x10,0x20,0x40,0x80,0xff然后标出顺序,根据顺序计算代码16. 延时约约1秒左右的程序void delay1s(void) /延时1000000us,误差 0us unsigned char a,b,c; for(c=167;c0;c-) for(b=171;b0;b-) for(a=16;a0;a-); 17. 接P2口的发光二极管显示花样程序#include void delay_1s(unsigned int x);main() while(1) P2=0xfe; /11111110 delay_1s(42000); P2=0xfd; /11111101delay_1s(42000); P2=0xfb; /11111011delay_1s(42000); P2=0xf7; /11110111delay_1s(42000); P2=0xef; /11101111delay_1s(42000); P2=0xdf; /11011111delay_1s(42000); P2=0xbf; /10111111delay_1s(42000); P2=0x7f; /01111111delay_1s(42000); 18. 数码管移位程序(使用74HC164芯片)void shift(uchar n)uchar m,i;m=tablen;scl=0;for(i=0;i8;i+)if(m&0x80)sda=1;elsesda=0;scl=1;scl=0;m=1;19. 写出8个数码管显示(使用74HC164芯片)#include void delay_1s(unsigned int x);void shift(unsigned char);sbit sda=P00; / must modifysbit scl=P01; / must modifycode char led_code12= 0xff, 0xff, 0xff, 0xff,0xfe, 0xfd, 0xfb, 0xf7,0xef,0xdf, 0xbf, 0x7f, ;main() unsigned char i; while(1) for(i=0;i10;i+) shift(i);shift(i);shift(i);shift(i);shift(i);shift(i);shift(i);shift(i);delay_1s(42000);delay_1s(42000); void shift(unsigned char n) unsigned char m,i; m=led_coden; scl=0; for(i=0;i8;i+) if (m & 0x80) sda=1; else sda=0; scl=1; scl=0; m=1; void delay_1s(unsigned int x) while(x- -) 20. 写出一个60以内整数变成可以用两个数码管十进制显示的拆分程序Separate(int i)For(i=0;i60;i+)I0=i/10;I1=i%10;21. 写出一个255以内整数变成可以用两个数码管(十六进制)显示的拆分程序Separate(unsigned int a) A0=a/16; A1=a%16;22. 设单片机晶振频率为4MHZ,使用定时器1以工作方式2产生周期为200微秒的等宽的方波脉冲,并在P16端输出, 写出完整程序计算:机器周期为T=12/4=3(us)现在要产生200us的等宽方波脉冲,Main()Sbit out=P1.6TMOD=0x20;/定时器1与工作方式2TH1=(256-66)/16;TL1=(256-66)%16; EA=1;ET1=1;TR1=1;While(1);Void time1()interuppt 2TH1=(256-66)/16;TL1=(256-66)%16;P1.6=!P1.6;这道题用定时器很难得到完全准确的时间,这里是用大概的时间!23. 写出两机通讯程序#includevoid Serial_Send(unsigned char Sdata);main() while(1) unsigned char i;TMOD=0x20; /TH1=0xfa; /TL1=0xfa; /SCON=0x50; / PCON=0x80; /Buad doubleTR1=1; / for(i=0;i0;i-) scl_8563 = 1; dat=dat0;i-) if(dat&0x80)sda_8563 = 1; else sda_8563 = 0; scl_8563 = 1; scl_8563 = 0; dat=1; sda_8563 = 1;scl_8563 = 1; while(sda_8563)i+;if(i=50000)break;ack = sda_8563;scl_8563 = 0;return(ack); /有应答则返回0,无的返回1 4. 读PCF8563年月日时分秒程序void read_time_8563(void) /读日期unsigned char i;for(i=0;i4&0x0f)*10+(sec&0x0f);min=(min&0xf0)4&0x0f)*10+(min&0x0f);hou=(hou&0xf0)4&0x0f)*10+(hou&0x0f);day=(day&0xf0)4&0x0f)*10+(day&0x0f);mon=(mon&0xf0)4&0x0f)*10+(mon&0x0f);year=(year&0xf0)4&0x0f)*10+(year&0x0f);/BCD码转换成10进制数25. 根据1Wire总线协议与给出DS18B20波形图,写出DS18B20:1. 启动总线程序void init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay(35);2. 写一个字节程序void write_one_char(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; 3. 读两个字节程序uchar read_one_char(void) unsigned char i = 0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; /先进行移位操作,以免最后一位不能读出 DQ = 1; /给脉冲信号 if (DQ) dat |= 0x80; delay(4); return dat;4. 字节合并与折分程序int read_temperature(void) unsigned char a=0; unsigned char b=0; int t=0; init_DS18B20(); /初始化 write_one_char(0xCC); / 跳过读序号列号的操作 write_one_char(0x44); / 启动温度转换 init_DS18B20(); write_one_char(0xCC); /跳过读序号列号的操作 write_one_char(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a = read_one_char(); b = read_one_char(); t = b; t 8;TEMP_L=Temp;high_T=(TEMP_H4)&0x0f); /整数部分ow_T =(unsigned

温馨提示

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

最新文档

评论

0/150

提交评论