1、智能装置与仪表归总第一章作业思考题1. 数码管动态显示,静态显示有什么不同? LED数码管显示按扫描方式分有动态显示和静态显示2种。(1) 动态显示: 一般需要占用8个段码线和4位以上的位码线,即一般至少要占用12条以上的I/O口资源。 优点是节省芯片;但亮度可能不够,或者显示有断续的闪烁现象,同时要占用CPU动态扫描时间。(2)静态显示 每一位数码管需要有一个芯片来驱动。优点是亮度够,显示质量好;缺点是所需芯片多,电路一般采用多个芯片首尾相接串联而成。2. 使用串行芯片与并行芯片各有什么优缺点?串行芯片比并行芯片节省I/O资源(串行一般2-3条线),并行比串行速度快。3. 专用显示键盘芯片C
2、H451有什么功能和特点?功能和特点: 可以自行动态驱动8位8段的数码管显示,或者8x864位发光指示灯。段电流可达30毫安,字电流可达160毫安; 支持8x8按键输入; 内置看门狗电路,可以对CPU实行监控; 与CPU可以4线串行接口; 其他的辅助功能还有: 可选数码管显示的段码为不译码方式或者BCD 译码方式; 字数据可以左移、右移、左循环、右循环显示; 各数字可以独立闪烁控制。 通过占空比设定,提供16 级亮度控制。; 支持段电流上限调整,可以省去所有限流电阻; 键盘内置去抖电路,提供按键释放标志 有键盘中断,低电平有效; 4. CH451时钟线DCLK有什么作用?DCLK用于提供串行时
3、钟,CH451在其上升沿从DIN输入数据,在其下降沿从DOUT输出数据。此外,看门狗计时器也是通过观察DCLK信号来使CPU正常工作的。 CH451在启用看门狗功能后,只要输入引脚DCLK没有信号变化,看门狗计时器就会计时,当计满溢出周期时,就会产生看门狗复位脉冲信号。 所以CPU必须定时、有规律的输出DCLK信号,清除看门狗计时器。所以,一旦CPU工作混乱,就会被CH451强制复位。5. CH451读取按键代码的步骤是怎样的?CPU收到键盘中断,开始读按键代码:(1)CPU向DIN输出读取按键代码的命令 命令为:7H(2) 向LOAD输出低电平脉冲,其中包括一个上升沿使CH451加载串行数据
4、,CH451接受并判别是读取按键命令后,立即在DOUT输出按键代码;(3) CPU按位读取7位数据; 6. 组成CH451的键码的各个比特有什么实际含义?CH451所提供的按键代码为7位,位2-位0位是列扫描码,位5-位3是行扫描码,位6是状态码(键按下为1,键释放为0).7. 请编写串行写12比特数据到CH451的程序,其中低8位在30H,高4位在31H中。DIN BIT P1.0;DCLK BIT P1.1;DOUT BIT P3.3;LOAD BIT P1.2;BYTE_H DATA 30H;BYTE_L DATA 31H;WRITE:PUSH ACC;PUSH R7;CLR EX1;C
5、LR LOAD;MOV R7, #08H;MOV A, BYTE_L;WRITE_L:RRC A;CLR DCLK;MOV DIN,C;SETB DCLK;DJNZ R7 WRITE_L;MOV A, 31H;MOV R7, #04H;WRITE_H:RRC A;CLR DCLK;MOV DIN,C;SETB DCLK;DJNZ R7, WRITE_H;SETB LOAD;SETB EX1;POP R7;POP ACC;RET8. 请编写串行读CH451按键代码的子程序,键码放到32H中。KEY DATA 32HREAD_KEY:PUSH ACC;PUSH R7;CLR EX1;CLR LOA
6、D;MOV A, #07H;MOV R7, #04H;READ_4:RRC ACLR DLCK;MOV DIN C;SETB DCLK;DJNZ R7, READ_4;SETB LOAD;CLR A;MOV R7, #07HREAD_7:MOV C, DOUT;CLR DCLK;RLC A;SETB DCLK;DJNZ R7, READ_7;CLR C;SUBB A, #40H;MOV KEY, A;CLR IE1;SETB EX1;POP R7;POP ACC;RET9. 什么叫BCD码?什么叫显示段码?即BCD代码。Binary-Coded Decimal,简称BCD,称BCD码或二-十进
7、制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。10. 请写出字符“U”和“n”的段码。U:0111110B n:1010100B第2章 作业思考题:1 仪表状态的含义是什么?状态仪表每时每刻工作在某种状态下,当一个消息到达之后,仪表将做出对应的反应:执行一项任务,并从一种状态迁移到新状态下。仪表中的状态是指仪表接受了一个消息驱动后,系统所处的位置及状况。2 状态转移法编程的优点是什么?状态法优点:用“状态转移法”设计键控程序时,其程序基本框架是相同的,对不同的应用实例只
8、需更改状态表和子程序功能即可。因此程序具有通用性强、修改方便、便于阅读等优点。 3 程序状态表的结构是如何组成的?状态表:状态表就是反映状态、键码、子程序、次态之间关系的表格程序状态表:将状态表写成程序数据表的形式,用于程序查表使用4 广义来看,消息可以有哪些来源?消息: 主要是按键,也可以定时器溢出,外部中断信号,I/O输入信号,脉冲信号等.5 写出查状态表要用到的下态和任务号地址的计算公式。状态的转移和程序的执行过程是通过查状态表来实现的。设按键DOWN,PARA,UP对应的数值分别为0,1,2,已知当前状态为ST,当某个按键按下后,查找下态和要执行的任务号地址的公式为:下态地址=#ST_
9、TAB+ ST*6 + KEY*2任务号地址=#ST_TAB+ ST*6+ KEY*2+ 1 = 下态存放地址1 其中 ST_TAB为程序中状态表的首地址。也就是程序中数据表的标号。乘6是因为3键时,每行数据为6个;如果是4键,则每行数据为8个,就需要乘8。6 在4个按键情况下,编写程序查状态表获得下态和任务号。MOV A, STATE;原状态号MOV B, #8;状态乘以8MUL ABADD A, KEY;键值乘2ADD A, KEYMOV R0, A;保存偏移量MOV DPTR, #ST;取状态表首地址MOVC A, A+DPTRMOV STATE, A;得到新状态号MOV A, R0;恢
10、复偏移量INC A;指向任务号地址MOVC A, A+DPTR;得到任务号于A中7 根据已知任务号,编写散转程序,转去执行对应程序。MOV A PR;任务号送AMOV B #03H;乘3,每个LJMP为3字节MUL AB;任务号于A中MOV DPTR #TASK;散转,去执行对应任务JMP A+DPTRTASK: LJMP P_0;空操作 LJMP P_1显示100/P LJMP P_2;显示AAAA LJMP P_3;XX=YY,并且显示XX LJMP P_4;XX-1并且显示XX LJMP P_5;XX+1并且显示XX LJMP P_6;YY=XX 并且显示P- LJMP P_7;显示BB
11、B8. 改写课堂讲述的状态键盘实验程序:(1)适当增补12种以上状态;(2)增加若干个功能子程序;(3)对应修改状态表中的内容。 状态键号0次态号任务号011122233300TASK:LJMP P_0; 跳转子程序0LJMP P_1; 跳转子程序1LJMP P_2; 跳转子程序2LJMP P_3; 跳转子程序3P_0:;子程序略P_1:;子程序略P_2:;子程序略P_3:;子程序略;状态表 ;K0 ;ST,PRSTAB: DB 1,1 ;stat0 DB 2,2 ; stat1 DB 3,3 ; stat2 DB 0,0 ; stat3 自动化装置设计 课外作业第3章作业思考题:1. C51
12、是一种什么语言?与标准C有什么主要区别?C51是在51系列单片机上使用一种简单的高级语言,语法符合标准C语言规范。编写程序和调试程序的时间大大缩短。区别:C51是兼容ANSI的编译器,但为了支持8051系列MCU加入了一些扩展的内容。C51编译器的扩展内容包括 数据类型 存储器类型指针重入函数中断服务程序实时操作系统和PL/M及A51源程序的接口。2.与汇编程序相比,C51有什么主要优缺点?采用汇编语言编程,优点是程序运行效率高,但程序设计周期长,设计工作效率低,程序调试困难,不利于程序维护和升级。C51编写程序和调试程序的时间大大缩短。3. 在C51程序设计中,有哪些主要的存储器类型?存储器
13、类型 code 程序空间(64 Kbytes), 通过 MOVC A+DPTR 访问。data 直接访问的内部数据存储器, 访问速度最快(128 ytes)。idata 间接访问的内部数据存储器,可以访问所有的内部存储器空间(256 bytes)。bdata 可位寻址的内部数据存储器, 可以字节方式也可以位方式访问(16 bytes, 20H-2FH)。xdata 外部数据存储器(64 Kbytes), 通过MOVX DPTR访问。pdata 分页的外部数据存储器(256 bytes), 通过 MOVX Rn 访问(固定住P2高8位地址线内容)。4. 写出C51中断服务程序的基本格式。创建中断
14、服务程序。需要关心中断号和寄存器组的选择。编译器自动产生中断向量和程序的入栈及出栈代码。 用interrupt,定义一个中断服务程序 用using定义此中断服务程使用的寄存器组unsigned int interruptcnt; / 定义变量unsigned char second; / 定义变量void timer0 (void) interrupt 1 using 2 / 定义中断 if (+interruptcnt = 4000) / count to 4000 second+; / second counter interruptcnt = 0; / clear int counter
15、 5. 用C51编写一个简单计算器程序,要求能够完成个位数加减运算的功能。按键包含数字键09。其他键定义如下:A代表加号,B代表减号,C代表清除前1字符输入,D无定义,E 代表等于号;F代表全部清空,重新开始。 第4章作业思考题:1. 电子音乐的音频和节拍是靠什么实现的?音乐的基本构成:音符、节拍(1)乐谱中不同的音符由不同频率的正弦波产生(2)音的节拍由延时子程序实现 要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器进行半周期计时,每当半周期计时到,就将输出脉冲的I/O口反相,如此重复,就可在I/O口上得到对应频率的脉冲。再通过硬件电路对脉
16、冲滤波,得到近似的正弦波信号,送给小喇叭发出音乐声。 电子音乐的生成原理:音乐的旋律是由几百几KHz的音频波形合成的。例如二胡,由于钢丝带动蛇皮振动而发声,小提琴也是由钢丝带动音响盒振动发声。计算机的发声原理是按特定旋律,定时产生周期的方波来生成的。2. 在单片机程序中如何存储一首音乐的乐谱?1)先把乐谱的音符由低到高找出,然后按顺序建立T值表,编制简谱码。再按照T值表建立数据表TABLE1; 2)编制节拍码,如表3.6所示。设定1/4拍的延时时间(167ms),由延时子程序完成;DELAY:MOV R7,#02DEL2: MOV R4,#167DEL3: MOV R3,#248 DJNZ R
17、3,$ DJNZ R4,DEL3 DJNZ R7,DEL2 RET(3)乐谱描述:A、采用单字节描述时:每个音符使用一个字节,字节的高4位为简谱码(音符),低四位为节拍码(节拍),按照乐谱建立数据表TABLE.B、采用双字节描述时:每个音符使用2个字节,1字节为简谱码,1字节为节拍码。3. 如何利用定时器实现不同频率的脉冲输出?要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器进行半周期计时,每当半周期计时到,就将输出脉冲的I/O口反相,如此重复,就可在I/O口上得到对应频率的脉冲。再通过硬件电路对脉冲滤波,得到近似的正弦波信号,送给小喇叭发出
18、音乐声。 利用8051的内部定时器让其工作在方式1下,改变定时器的计数初值TH0及TL0,就可以产生不同频率的音频脉冲。计数脉冲与频率的关系如下推导如下,设:Fr:要产生的音乐频率;则音频周期: T=1/Fr , 音频半周期:T/2=1/(2Fr) Fi:定时器计数频率; 12M晶振时,内部计时1次需时1s,故其频率为Fi 1MHz;6M晶振时,内部计时一次需时2s,频率则为Fi 0.5MHz。N: 半周期内计数器的计数次数;则 N = (1/(2Fr)(1/Fi) = Fi/(2Fr )计数器是递增的,计满溢出,所以计数初值计算公式如下: T65536N65536Fi/(2Fr) 65536
19、500000/Fr (12M晶振) T65536N65536 Fi /(2Fr) 65536 250000 /Fr (6M晶振)4. 计数器的初值大小与频率的大小是什么样的关系?利用8051的内部定时器让其工作在方式1下,改变定时器的计数初值TH0及TL0,就可以产生不同频率的音频脉冲。计数脉冲与频率的关系如下推导如下,设:Fr:要产生的音乐频率;则音频周期: T=1/Fr , 音频半周期:T/2=1/(2Fr) Fi:定时器计数频率; 12M晶振时,内部计时1次需时1s,故其频率为Fi 1MHz;6M晶振时,内部计时一次需时2s,频率则为Fi 0.5MHz。N: 半周期内计数器的计数次数;则
20、 N = (1/(2Fr)(1/Fi) = Fi/(2Fr )计数器是递增的,计满溢出,所以计数初值计算公式如下: T65536N65536Fi/(2Fr) 65536500000/Fr (12M晶振) T65536N65536 Fi /(2Fr) 65536 250000 /Fr (6M晶振)5. 编写一程序,可以输出规定频率F0 =1K的脉冲。设为12M晶振,计时频率1K,算初值T=65035(FE0BH)OUTPLUSE BIT P3.7ORG OOHSJMP STARTORG 0BHLJMP TIM0_INTORG 30HSTART:MOV TMOD, #01H;定时器工作方式1MOV
21、 IE, #82H;允许T0中断MOV TH0, #0FEHMOV TL0, #0BH;SETB TR0JMP $TIM0_INT: MOV TL0, #0BH MOV TH0,#FEHCPL OUTPLUSERETIEND6. 参照实验程序的数据表TABLE1,试写出记录如下一节乐谱的乐谱数据表。音符发音音符码T值2中音RE1646843中音MI2647775中音SO3648986中音LA464968TABLE1: DW 64684, 64777, 64898, 64968TABLE:DB 22H, 42H, 42H, 32H,26H,12H 第5章作业思考题:1. I2C总线有什么特点?I
22、C总线是器件与器件或Inter Ic Bus之间的通信总线,它采用总线寻址方式查询外围接口器件,不需要片选地址,接口电路简单,可以在总线上挂接多个外围接口器件。I2C总线为二线制串行扩展总线,它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。IC总线规范中的传送速度可达400Kb/s,总线驱动能力400pf,可带电插拔。计算机外围器件市场上有许多带IC总线的外围芯片可用。如:串行EEPROM,串行ADC/DAC,串行时钟芯片,串行数字电位器,串行微处理器监控芯片,串行温度传感器等等。2. SDA和SCL为什么采用漏极开路形式并且要接上拉电阻?IC总线结构 I2C总线
23、规定SDA线和SCL线是各设备对应输出状态相“与”的结果,IC总线上接口芯片的输出必须是漏极开路或集电极开路结构。输出端必须接上拉电阻。 为了使总线上所有电路输出实现“与”的逻辑功能,使其能够线与,用以实现总线的仲裁(即判断多个器件的主从关系),否则只能输出低电平。总线上数据的有效性:I2C总线规定,SCL的一个时钟周期传送一位数据,并且在SCL的高电平期间,SDA上的数据必须保持稳定的逻辑电平状态,即高电平位数据1,低电平位数据0.只有在时钟SCL为低电平时,才允许数据线上的电平状态变化。3. I2C总线的开始信号和结束信号的逻辑时序是什么? 起始信号:在时钟线SCL保持高电平期间,数据线S
24、DA出现由高电平向低电平变化时,启动IC总线。称之为IC总线的起始信号。 终止信号:在时钟线SCL保持高电平期间,数据线SDA出现由低电平向高电平变化时,停止IC总线数据传送。称之为IC总线的终止信号。4. 在E2PROM的访问中,I2C的应答和非应答信号如何使用?I2C总线数据传送时,每传送一个字节数据后都必须有应答信号,与应答信号相对应的时钟由主控器产生,这时,发送器必须在这一时钟位上释放数据线,使其处于高电平状态,以便接收器在这一位上送出应答信号。应答信号在第九个时钟位上出现,接收器输出低电平为应答信号(A),输出高电平则为非应答信号(/A)。5. 在I2C总线上,数据的传送方向如何决定
25、?数据传送和传送方向 IC总线规定,起始信号代表一次数据传送的开始,其后为寻址字节,寻址字节由高7位地址和最低1位方向位组成。方向位表明是“读”或“写”操作,方向位为“0”时表明主控器对被控器的写操作,为1时表明主控器对被控器的读操作。在寻址字节后是读或写的数据字节与应答位。在数据传送完成后主控器都必须发送终止信号。6. 在I2C器件的访问中,器件地址和偏移地址各有什么含义?器件地址:选择该写外挂的哪个器件偏移地址:是选中器件内存储空间的地址。与普通的I2C器件访问指令相比,由于E2PROM器件中有多个单元,为了访问到特定单元,所以必须指定要访问的单元的地址(WordAdr)。为了与器件地址(
26、或设备号,SLA)相区别,这个具体的单元地址称为偏移地址。7. 为访问I2C器件E2PROM,请写出写入N字节的指令格式。/ Offset ;要访问的目的器件数据的偏移地址/Size;要访问的单元字节个数/*RamBuf; 要写的数据存放在内存中的起始地址void E2prom Write(uchar Offset,uchar Size,uchar *RamBuf )12cStart(); /发起始信号 WrtByte(EEPROM); /写入器件地址WrtByte(Offfset); /写入要访问的单元地址While(Size-) WrtByte(*RamBuf+); /写1字节I2cSto
27、p(); 一般I2C指令格式 (a) I2C指令中,时钟信号SCL由主CPU发出; (b) 数据信号SDA由读写方向决定主或从器件发出; 写N字节指令(对当前地址,无偏移) 数据由CPU发出,响应信号A由被写芯片发出。SLAW是器件地址(例如A0H) 读N字节指令(对当前地址,无偏移) 数据由被读芯片发出,响应信号A和/A由CPU发出。SLAR是器件地址+1(例如A1H) E2PROM的I2C指令中通常还要包含存储器内部单元的偏移地址。 写N字节指令 数据由CPU发出,响应信号A由被写芯片发出。SLAW是器件地址(A0H),WordAdr是单元偏移地址DataN。 读N字节指令 数据由被读芯片
28、发出,响应信号A和/A由CPU发出。 SLAW是器件地址(A0H), SLAR是器件地址+1(A1H), WordAdr是单元偏移地址。 注意:读指令有2次开始信号(4)与普通的I2C器件访问指令相比,由于E2PROM器件中有多个单元,为了访问到特定单元,所以必须指定要访问的单元的地址(WordAdr) 。为了与器件地址(或设备号,SLA )相区别,这个具体的单元地址称为偏移地址。 E2PROM的读指令,相当于先通过一条写指令来指定单元偏移地址,然后再用一条读当前地址的指令来完成读过程。8. 编写向E2PROM写入1字节数据时的子程序。(5)写1字节到E2PROM void WrtByte(u
29、nchar TempB) unchar i; /写1字节 for(i=0; i8; i+) if(TempB & 0x80) /数据由高位到低位 SDA=1; else SDA=0; _nop_(); SCL=1; TempB=TempB1; SCL=0; SDA=1; / 准备读应答信号 SCL=1; _nop_(); while(SDA=1); / 等待低电平应答信号 SCL=0; 9. 编写从E2PROM读出1字节数据时的子程序读1字节内容 unchar ReadByte() / 读1字节内容 unchar i, DataByte; SDA=1; / 准备读管脚 DataByte = 0; for(i=0;i8;i+) SCL=1; DataByte=DataByte1; if(SDA=1) / 读取1位数据,由高到低 DataByte |= 0x01; SCL=0; return DataByte; / 返回1字节数据
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1