串行口的扩展及74LS164的应用

串行口的扩展及74LS164的应用
串行口的扩展及74LS164的应用

串行口扩展应用

摘要:本文主要是单片机串行口在方式0下发送数据,外接一片8位串行输入并行输出的同步移位芯片——74LS164。通过开关控制相应的LED灯亮灭。

关键字:单片机74LS164 串行口

74LS164介绍:

8 位移位寄存器(串行输入,并行输出)

电特性的典型值如下:

型号fm Pn

54/74164 36MHz 185mW

54/74LS164 36 MHz 80mW

当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。

串行数据输入端(A,B)可控制数据。当A、B 任意一个为低电平,则禁

止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。当A、B

有一个为高电平,则另一个就允许输入数据,并在CLOCK 上升沿作用下决定

Q0 的状态。

引出端符号

CLOCK 时钟输入端

CLEAR 同步清除输入端(低电平有效)

A,B 串行数据输入端

QA-QH 输出端极限值

电源电压………………………………… 7V

输入电压………………………………… 5.5V

工作环境温度

54LS164…………………………………… -55~125℃

74LS164…………………………………… -0~70℃

储存温度…………………………………… -65℃~150℃

74LS164是八位并出串行移位寄存器.功能是将数据串行移入,并行输

出.P!4=VCC,P7=GND.

P1=A,P2=B,两脚是数据串行移入口. P8=时钟. P9=清除.

P3=QA,P4=QB,P5=QC,P6=QD,P10=QE,P11=QF,P12=QG,P13=QH是并行输出口.

下图为74LS164与数码管的连接图。

1.系统分析

(1)要求:通过开关控制相应的LED灯的亮灭。

(2)根据:MCS-51单片机内部有一个功能很强的全双工串行口:RXD/ P3.0 ,TXD/P3.5,可同时发送和接收数据。发送和接收数据均可工作在查询方式和中断方式,使用十分灵活,可很方便地与其它计算机或串行传送信息的设备实现双机、多机通信。方式0(SM0=0、SM1=0)方式0为移位寄存器方式,数据从RXD引脚上接收或发送。一帧信息由8位数据组成,低位在前,波特率固定,为fosc/12。同步脉冲从TXD引脚上输出。首先将P3口指拨开关数据载入SBUF,然后经由TXD将数据传送给74LS164,通过74LS164控制LED灯的状态。

(3)需要元件:

2.原理图设计

3.程序设计

(1)程序流程图

(2) 源程序

ORG 0100H AJMP START START: MOV SP,#60H

MOV SCON,#00H

;方式0设置

MOV 30H,#0FFH ;缓存(30H —7FH)

READ: MOV A,P1

CJNE A,30H,SA VE ;与缓存比较,看拨码开关是否有变化 JMP READ

SA VE: MOV 30H,A ;写缓存

MOV SBUF,A ;写入SBUF,发送

WAIT: JBC TI,READ

;发完,继续读,否则等待

AJMP W AIT END

4. 调试与仿真

打开Keil 程序,执行菜单命令“Project ”

“New project ”创建“串行口扩展(二)”项目,并选择单片机型号为A T89C51。

执行菜单命令“File ” “New ”创建文件,输入汇编源程序,保存为“串行口扩展(二).ASM ”。在Project 栏的File 项目管理窗口中右击文件组,选择“Add File to Group …source Group1?,将源程序“串行口扩展(二).ASM ”添加到项目中。

执行菜单命令“Project ” “Option for Target ?Target1? ”, 在弹出的对话框中选择“Output ”选项卡,选中 “Create HEX file ”。在“Debug ”选项卡中,选中“Use:Proteus VSM Simulator ”。

执行菜单命令“Project ” “Build Target ”,编译源程序。如果编译成功,则在“Output Window ”窗口中显示没有错误,并创建了“串行口扩展(二).HEX ”文件。 在以绘制好的原理图的Proteus ISIS 菜单栏中,执行菜单命令“Debug ” “Use Remote Debug Monitor ”将该选项选中,使Proteus 与Keil 真正连接起来,使它们联合调试。 单击运行图标进入调试状态现象如图:

5.结束语

MCS-51串行口的方式0可以用于I/O扩展,其前题是串行口未被占用。用串行口扩展I/O接口时,既不占用片外的RAM地址,又能节省硬件开销,经济、实用。

6.存在问题和心得

通过学习扩展进一步的学习了解了单片机,通过实践加深对单片机的兴趣。现在感觉虽然学会了很多东西,但看看一些事例感觉学的只是冰山一角,有一些硬件电路要是自己设计根本不会,可能是学的时间太短,电路方面也没学太深,简单的懂复杂的就看不懂了,所以只能借鉴现成的例子,我会在课下多学这方面的知识,本次作业是自己对立完成。

7.期望成绩

优秀

单片机第六章课后习题答案

2. 80C51单片机内部有几个定时/计数器?它们由哪些功能寄存器组成?怎样实现定时功能和计数功能? 答:80C51单片机内部有两个16位的可编程定时/计数器,由TH0,TL0,TH1,TL1,TMOD和TCON功能寄存器组成。通过TMOD中的C/T位选择对机器周期计数实现计数功能,选择对外部脉冲计数实现计数功能。 6. 何为同步通信?何为异步通信?各自的特点是什么? 答:异步通信方式的特点是数据在线路上传送时是以一个字符(字节)为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。 同步通信方式的特点是数据在线路上传送时以字符块为单位,一次传送多个字符,传送时须在前面加上一个或两个同步字符,后面加上校验字符。特点是对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复杂,传送速度快。 7. 单工、半双工和全双工有什么区别? 答:单工方式只有一根数据线,信息只能单向传送;半双工方式也只有一根数据线,但信息可以分时双向传送;全双工方式有两根数据线,在同一个时刻能够实现数据双向传送 9. 串行口数据寄存器SBUF有什么特点? 答:发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存器SBUF(串行口数据寄存器),执行MOV SBUF,A发送时为发送数据寄存器,执行MOV A, SBUF接收时为接收数据寄存器。 10. MCS-51单片机串行口有几种工作方式?各自特点是什么? 答:有四种工作方式,分别是方式0、方式1、方式2和方式3。其中: 方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。 方式1,称为8位的异步通信方式,通常用于双机通信。 方式2和方式3,称为9位的异步通信方式,通常用于多机通信。 12. 怎样来实现利用串行口扩展并行输入/输出口? 答:利用串行口在方式0时,当外接一个串入并出的移位寄存器,就可以扩展并行输出口;当外接一个并入串出的移位寄存器时,就可以扩展并行输入口。 13. 什么是中断、中断允许和中断屏蔽? 答:在计算机中,由于计算机内外部的原因或软硬件的原因,使CPU从当前正在执行的程序中暂停下来,而自动转去执行预先安排好的为处理该原因所对应的服务程序。执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个过程称为中断,实现中断的硬件系统和软件系统称为中断系统。中断允许是允许中断请求送CPU产生中断,中断屏蔽是禁止中断请求信号送CPU产生中断。 14. 8051有几个中断源?中断请求如何提出? 答:MCS-51单片机提供5个硬件中断源:两个外部中断源INT0(P3.2)和INT1(P3.3),两个定时/计数器T0和T1中断;1个串行口中断。 外部中断源INT0和INT1的中断请求信号从外部引脚P3.2和P3.3输入;两个定时/计数器T0和T1的溢出中断TF0和TF1定时/计数器T0(或T1)溢出时提出;串行口中断由发送中断标志T1和接收中断标志R1产生。

74LS164动态扫描数码管与proteus传真及C程序

74ls164 为8 位移位寄存器,其主要电特性的典型值如下: 当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。当A、B 有一个为高电平,则另一个就允许输入数据,并在CLOCK 上升沿作用下决定Q0 的状态。 引脚功能: CLOCK :时钟输入端 CLEAR:同步清除输入端(低电平有效) A,B :串行数据输入端 QA-QH:输出端

极限值 电源电压7V 输入电压…… 5.5V 工作环境温度74164….. -55~125℃74164…… -0~70℃储存温度….. -65℃~150 真值表:

时序图: 建议操作条件:

应用实例: C程序: #include #include #define uchar unsigned char #define uint unsigned int sbit DA T=P2^3;//A,B端接一块后接入DA T sbit CLK=P2^2; sbit W A1=P2^4; sbit W A2=P2^5; uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; //共阴数码管无小数点void delayms(uint time) { uchar i,k; for(k=time;k>0;k--) for(i=110;i>0;i--); } void sendchar(ch)

单片机原理及接口技术 课后习题答案 第六 七章

单片机原理及接口技术课后习题答案李朝青 课后习题答案2009-11-22 15:07 阅读510 评论1 字号:大中小https://www.360docs.net/doc/b214198423.html,第六章 第6章习题答案 1、定时器模式2有什么特点?适用于什么场合? 答: (1)模式2把TL0(或TL1)配置成一个可以自动重装载的8位定时器/计数器。TL0计数溢出时不仅使溢出中断标志位TF0置1,而且还自动把 TH0中的内容重新装载到TL0中。TL0用作8位计数器,TH0用以保 存初值。 (2)用于定时工作方式时间(TF0溢出周期)为,用于计数工作方式时,最大计数长度(TH0初值=0)为28=256个外部脉冲。 这种工作方式可省去用户软件重装初值的语句,并可产生相当精确定时时间,特别适于作串行波特率发生器。 2、单片机内部定时方式产生频率为100KH Z等宽矩形波,假定单片机的晶振频率为12MH Z,请编程实现。 答: T0低5位:1BH T0高8位:FFH MOV TMOD,#00H ;设置定时器T0工作于模式0

MOV TL0,#1BH ;设置5ms定时初值 MOV TH0,#0FFH SETB TR0 ;启动T0 LOOP:JBC TF0,L1 ;查询到定时时间到?时间到转L1 SJMP LOOP ;时间未到转LOOP,继续查询L1:MOV TL0,#1BH ;重新置入定时初值 MOV TH0,#0FFH CPL P1.0 ;输出取反,形成等宽矩形波 SJMP LOOP ;重复循环 3、89C51定时器有哪几种工作模式?有何区别? 答:有四种工作模式:模式0,模式1,模式2,模式3 (1)模式0:选择定时器的高8位和低5位组成一个13位定时器/计数器。 TL低5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并 申请中断。 定时时间t=(213-初值)×振荡周期×12;计数长度位213=8192个外部脉冲 (2)模式1:与模式0的唯一差别是寄存器TH和TL以全部16位参与操作。 定时时间t=(216-初值)×振荡周期×12;计数长度位216=65536个外部 脉冲 (3)模式2:把TL0和TL1配置成一个自动重装载的8位定时器/计数器。 TL用作8位计数器,TH用以保存初值。TL计数溢出时不仅使TF0 置1,而且还自动将TH中的内容重新装载到TL中。 定时时间t=(28-初值)×振荡周期×12;计数长度位28=256个外部脉冲 (4)模式3:对T0和T1不大相同 若设T0位模式3,TL0和TH0被分为两个相互独立的8位计数器。TL0为8位计数器,功能与模式0和模式1相同,可定时可计数。 TH0仅用作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1控制。 定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为0~2。

I0口驱动74LS164数码管静态显示程序

74LS164 1、器件功能作用 8 位串入,并出移位寄存器 2. 概述 74HC164、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 3. 特性 ?门控串行数据输入 ?异步中央复位 ?符合 JEDEC 标准 no. 7A ?静电放电 (ESD) 保护: ·HBM EIA/JESD22-A114-B 超过 2000 V ·MM EIA/JESD22-A115-A 超过 200 V 。 ?多种封装形式 ?额定从 -40 °C 至+85 °C 和 -40 °C 至+125 °C 。 4. 功能图

图 1. 逻辑符号 图 2. IEC 逻辑符号 图 3. 逻辑图

图 4. 功能图 5. 引脚信息 图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置引脚说明 6. 功能表(真值表)

H = HIGH(高)电平 h = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 HIGH(高)电平L = LOW(低)电平 l = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 LOW(低)电平q = 小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入(referenced input) 的状态 ↑ = 低-至-高时钟跃变 7. 电器特性

74LS164在单片机中的使用

74LS164在单片机中的使用 作者:huqin 来源:本站原创点击数:406 更新时间:2014年02月15日【字体:大中小】 在单片机系统中,如果并行口的IO资源不够,那么我们可以使用74LS164来扩展并行IO口,节约单片机IO资源。74LS164是一个串行输入并行输出的移位寄存器,并带有清除端。 74LS164的引脚可以查看数据手册。 proteus仿真图和代码附上。

#include #define HIGH 1 #define LOW 0 #define SEG_PORT P0 sbit DATA = P0^4; sbit CLK = P0^5; unsigned char Timer0IRQEvent = 0; unsigned char Time1SecEvent = 0; unsigned int TimeCount = 0; unsigned char SegCurPosition = 0; code unsigned char SegCode[10] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x 07,~0x7F,~0x6F}; code unsigned char SegPosition[4] = {0xFE,0xFD,0xFB,0xF7}; unsigned char SegBuf[4] = {0}; void LS164_DATA(unsigned char x) { if(x) { DATA = 1; } else { DATA = 0; }

void LS164_CLK(unsigned char x) { if(x) { CLK = 1; } else { CLK = 0; } } /********************************************************** *函数名称:LS164Send *输入:byte单个字节 *输出:无 *功能:74LS164发送单个字节 ***********************************************************/ void LS164Send(unsigned char byte) { unsigned char j; for(j=0;j<=7;j++) { if(byte&(1<<(7-j))) {

单片机控制74LS164驱动数码管

单片机控制74LS164驱动数码管 利用74LS164驱动数码管, 我们首先来弄清74LS164的工作方式,然后学习如何在自己板子上连接线路。 我们来讲一讲数码管的基础知识: 使用数码管时,要注意区分这两种不同的接法:共阴极和共阳极。共阴极时,为1则亮;共阳极时,为0则亮。

为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。 比如共阴极的方式接数码管,显示“1”,则编码为0x3f,即00111111(dp g f e d c b a )。 ================================================================================================== 静态显示程序如下: /*----------------------------------- 功能:数码管静态显示0-F 单片机:AT89S52 ------------------------------------*/ #include "reg52.h" #define uint unsigned int #define uchar unsigned char sbit DAT=P0^3; sbit CLK=P0^2; void sendbyte(uchar byte); void delay(uint z); uchar code tab[]={ 0xed,0x09,0xbc,0x9d,0x59,0xd5, 0xf5,0x0d,0xfd,0xdd,0x7d,0xf1, 0xe4,0xb9,0xf4,0x74,0x00} ; //0-F, 全灭 /*======================== 主函数 =========================*/ void main() { unsigned char h; while(1) { for(h=0;h<17;h++) { delay(500); //延时大约是0.5s sendbyte(h); delay(500); } h=0;

第六章单片机串行口及应用

微机原理及应用 第六章 单片机串行口及应用

P2 6.1 MCS-51 单片机串行接口 6.1.1 基本概念 1.串行通信与并行通信 并行通信:数据的各位同时进行传送的通信方式。并行通信的优点是传送速度快,缺点是需要的传输线多,不适宜远距离通信。并行通信通过并行口实现。 串行通信:数据逐位按顺序传送的通信方式。串行通信的优点是只需要一对传输线,特别适用于远距离通 信。其缺点是传送速度低。串行通信通过串行口实现。 2.异步通信和同步通信 (1)异步通信 在异步通信中,数据以字符为单位进行传送,一个字符也叫一帧信息。每帧数据数用一起始位(低电平)表 示传送字符的开始,接着由数据的低位开始逐位传送。 最后以一个停止位(高电平)表示该字符结束。

异步通信字符帧的格式 无空闲位字符帧: 带空闲位字符帧: P3D70/1D1D0D1D2D3D4 D5D6D70/1D01010停 止 位 起始位停止位起始位第n-1字符 第n+1字符第n 字符帧8个数据位校验位停止位起始位D00第n+1字符D0D1D2D3D4 D5D6D70/1101起 始 位 第n-1字符 第n 字符帧 8个数据位111空闲位空闲位校验位

(2) 同步通信 同步通信是一种连续串行传送数据的通信方式。每次通信连读传送若干个数据字符。在数据传送前,发送方先发送1个或2个同步符作起始标志,接收方不断采样传输线,确认接收到同步符后便开始接收后面的数据。数据紧跟同步符之后,个数不受限制,每个数据不需起始位和停止位,数据之间无间隙。所以同步通信的传输速率要比异步通信高,可达56000bps。为使发送方和接收方的时钟保持严格同步,要求发送方除发送数据外,还要同时发送时钟脉冲到接收端。 同步字符1同步字符2 数据1数据2数据3数据…… 同步字符 数据1数据2数据3数据……

(完整版)74ls164动态驱动多位数码管

74ls164 能否动态驱动多位数码管void display() //数码显示 { SCON=0; //初始化串行口方式SBUF=dispcode[ge]; while(!TI); TI=0; led4=0; delay(2); led4=1; SBUF=dispcode[shi]; while(!TI); TI=0; led3=0; delay(2); led3=1; SBUF=dispcode[bai]; while(!TI); TI=0; led2=0; delay(2);

SBUF=dispcode[qian]; while(!TI); TI=0; led1=0; delay(2); led1=1; SBUF=dispcode[wan]; while(!TI); TI=0; led0=0; delay(2); led0=1; } 74ls164数码管驱动(第二个程序) #define clock PORTD.1 #define date PORTD.0 #define clock_en DDRD.1 #define date_en DDRD.0 unsigned char lab[2][10]={ 0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09, 0x02,0x9E,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08}; void send(unsigned char w) { unsigned char i; for(i=0;i<8;i++) { clock=0; date=w&1;

(完整版)第六章80C51的串行口习题及答案

第六章80C51的串行口习题及答案 1、80C51单片机串行口有几种工作方式?如何选择?简述其特点? 答:80C51单片机串行口有4种工作方式。各方式的特点: 方式0:串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。波特率固定为晶振频率的1/12。 方式1:为10位数据异步通信口。波特率可变。 方式2或方式3:为11位数据的异步通信口。方式2波特率固定,相对于固定的晶振频率只有两种波特率。方式3波特率可变。 使用时,根据需要和各方式的特点配合选择。 2、串行通信的接口标准有哪几种? 答:串行通信接口标准有:1.RS_232C接口;2.RS_422A接口;3. RS_485接口。 3、在串行通信中,通信速率与传输距离之间的关系如何? 答:在串行通信中,传输距离与传输速率的关系:当传输线使用每0.3m(约1ft)有50pF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。 5、利用单片机串行口扩展24个发光二极管和8个按键,要求画出电路图并编 写程序,使24个发光二极管按照不同的顺序发光(发光的时间间隔为1s)。答:实现电路图如下: 扩展I/O口时使用方式0,波特率固定,实现程序如下: BOOT:CLR EA

MOV SCON,#10H CLR P1.0 ;关闭I0扩展口 CLR P1.1 CLR P1.2 CLR P1.3 ;对键盘扩展芯片165使能 MAIN: SETB P1.0 ;对第一个扩展IO口芯片使能 ACALL DISPLAY CLR P1.0 SETB P1.1 ;第一个扩展IO口顺序显示完毕,对第二个扩展IO芯片使能 ACALL DISPLAY CLR P1.1 SETB P1.2 ACALL DISPLAY CLR P1.2 SJMP MAIN ;循环显示 DISPLAY: MOV A,#00000001b ;从第一个开始 MOV R4,#8 ;送显示长度 LOOP: MOV SBUF, A CALL DELAY1S DJNZ R4, LOOP RET END 6、编制图6.30的中断方式的数据接收程序。

单片机原理及应用课后习题答案第六章作业(李传锋)

第6章MCS-51的定时器/计数器 1.如果晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大的定时时间各 为多少? 2.定时器/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关? 3.定时器/计数器作计数器模式使用时,对外界计数频率有何限制? 4.定时器/计数器的工作方式2有什么特点?适用于什么应用场合? 5.一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定 时? 6.定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为 6MHz,求允许测量的最大脉冲宽度是多少? 7.判断下列说法是否正确? (1)特殊功能寄存器SCON,与定时器/计数器的控制无关。 (2)特殊功能寄存器TCON,与定时器/计数器的控制无关。 (3)特殊功能寄存器IE,与定时器/计数器的控制无关。 (4)特殊功能寄存器TMOD,与定时器/计数器的控制无关。 8.设定1ms的定时,可以在P1.0引脚上产生周期为2ms的方波输出,设晶体振荡器的频率 为6MHz,分别写出在方式0和方式1时,赋给T0的常数。 9.设MCS-51单片机的晶振频率为12MHz,请编程使P1.O端输出频率为20kHz的方波。 10.要求采用定时中断的方式,实现下图所示流水灯的双向循环(D1—D8—D1)流动功能。 其中流水灯的闪烁速率为每秒1次。 11.设单片机的fosc = 12MHz,使P1.O和P1.1分别输出周期为1ms和lOms的方波,请用定时器TO方式2编程实现。

附录2:作业及答案 1.如果晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大的定时时间各 为多少?(12/3×8192=32.768ms;12/3*65636=262.144ms; 12/3*256=1.024ms) 2.定时器/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关? (定时的计数脉冲来自于单片机内部,即每个机器周期产生一个计数脉冲,也就是每个机器周期计数器加1。定时时间与定时器的工作模式、定时器的初值选择有关。) 3.定时器/计数器作计数器模式使用时,对外界计数频率有何限制? (计数脉冲的频率不能高于振荡脉冲频率的1/24;由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。)4.定时器/计数器的工作方式2有什么特点?适用于什么应用场合? (自动重装的8位计数器,TLx读数溢出时,溢出标志位置1的同时,自动将THx中的常数送到TLx中,使TLx从初值开始计数。多用于串口通信精确定时,产生波特率用) 5.一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定 时? (1)2个定时/计数器共同处理; (2)1个定时/计数器配合软件计数方式处理。 6.定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为 6MHz,求允许测量的最大脉冲宽度是多少? (采用方式1定时工作方式,最大脉冲宽度为131.072ms) 7.判断下列说法是否正确? (5)特殊功能寄存器SCON,与定时器/计数器的控制无关。(对) (6)特殊功能寄存器TCON,与定时器/计数器的控制无关。(错) (7)特殊功能寄存器IE,与定时器/计数器的控制无关。(错) (8)特殊功能寄存器TMOD,与定时器/计数器的控制无关。(错) 8.设定1ms的定时,可以在P1.0引脚上产生周期为2ms的方波输出,设晶体振荡器的频 率为6MHz,分别写出在方式0和方式1时,赋给T0的常数。 (方式0:13位计数器(最大计数8192),TH0=1EH,TL0=0CH; 方式1为16位计数器(最大计数65536),TH0=0FEH,TL0=0CH) 7192=213-1000=7192=1111000001100 a=213-5000×12/12=3192= 1100 0111 1000B 9.设MCS-51单片机的晶振频率为12MHz,请编程使P1.O端输出频率为20kHz的方波。 解:fosc = 12MHz,所以机器周期为1us。20kHz的方波周期为1/(20×1000)=50us,方波即高电平和低电平和时间相等,所以只需设一个定时器定时25us将P1.O求反一次即可。由于题目没有规定,所以可以用查询方式,也可以用中断方式进行编程实现。 方法一:采用查询方式实现 #include sbit P1_0=P1^0;//定义输出引脚变量

74ls164串行输出扩展运用课程设计

单片机课程设计报告74ls164串行输出扩展运用 班级:09移动1班 姓名:王家树、黄志豪 学号:09112002、09112003 指导老师: 陈海松 一、课题的提出 选择这个课程设计,是由于陈老师在课程上曾提到过74ls164芯,并且对串口通信比较喜欢,通过老师的咨询,便提出做一个关于74ls164的串行通信程序应用设计的报告。 二、设计任务和要求 任务:设计一个能够由数码管显示,编写一个关于74ls164的串输入并行输出一串数字。

要求:利用单片机的并行串行I/O口,利用C语言中的指针函数,编写一段好用又简洁的设计代码。 三、设计方案的论证 1、首先从参考文献中可以查到54/74164是 8 位移位寄存器(串行输入,并行输出),是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 2、功能图 图 1. 逻辑符号

3、引脚说明 符号引脚说明 DSA 1 数据输入 DSB 1 数据输入 Q0~Q3 3~6 输出 GND 7 地 (0 V) CP 8 时钟输入(低电平到高电平边沿触发) /M/R 9 中央复位输入(低电平有效) Q4~Q7 10~13 输出 四、硬件资源及其分配 关键元件:89C51芯片,74ls164芯片、数码管、复位电路 主要用到的硬件:P3口、数码管、串行输出输入口; 硬件分配: 1.串行输出输入口(单片机51的10、11脚)分别接第一个74ls164的8脚1、2脚,第二第三第四第五第六个进行级联; 2. 74ls164的9脚复位端接高电平; 3.每个数码管(a、b、c、d、e、f、g)接74ls164并行输出口(3、4、5、6、10、 11、12、13); 五、硬件图

单片机-第六章-习题参考答案复习进程

单片机-第六章-习题 参考答案

第六章习题参考答案 一、填空题 1、当定时器T0工作在方式3时,要占用定时器T1 的 TR1 和 TF1 两个控制位。 2、在定时器T0工作方式3下,TH0溢出时, TF1 标志将被硬件置1去请求中断。 3、在定时器T0工作方式3下,欲使TH0停止工作,应执行一 条 CLR TR1 的指令。 4、使用定时器/计数器1设置串行通信的波特率时,应把定时器/计数器1设定作方式 2 ,即自动重新加载方式。 5、当计数器产生计数溢出时,把定时器/计数器的TF0(TF1)位置“1”。对计数溢出的处理,在中断方式时,该位作为中断标志位使用;在查询方式时,该位作状态位使用。 6、在定时器工作方式1下,计数器的宽度为16位,如果系统晶振频率为6MHz,则最大定时时间为 131.072ms ,

若系统晶振频率为12MHz,则最大定时时间 为 65.536ms 。 7、8051单片机内部设有两个16位定时器/计数器, 即 T0 和 T1 。 8、T0由两个8位特殊功能寄存 器 TH0 和TL0 组成,T1 由 TH1 和 TL1 组成。 9、定时时间与定时器的工作方式、计数初值及振荡周期有关。 10、MCS-51的定时器/计数器作计数器时计数脉冲由外部信号通过引脚 P3.4 和 P3.5 提供。 11、MCS-51的定时器/计数器T0的门控信号GATE设置为1时,只有 INT0 引脚为高电平且由软件使 TR0 置1时,才能启动定时器/计数器T0工作。 12、当T0为方式 3 ,T1为方式 2 的时候,8051单片机的定时器可提供3个8位定时器/ 计数器。 二、选择题 1、在下列寄存器中,与定时/计数控制无关的是( C )

单片机串口连接两个74LS164驱动两个LED数码管

单片机应用设计 课题:串口连接两个74LS164驱动2个LED 数码管显示 班级学号:xx 姓名:xx

1设计要求 设计内容 设晶体为12MHz,将拨码开关数据串行输入到74LS164,并行输出到2个LED 数码管进行相应的数码显示。 设计包括:系统设计分析、系统原理图设计、程序流程图设计、源程序设计、系统调试与仿真及调试结果分析、对本课程学习的感想与收获、对老师的意见与建议、期望成绩等。 学习目的 该作业具有较强的实用性,许多同学已经认识到自己完全有能力设计一个实用的单片机应用系统,对单片机设计由感兴趣已经变为爱好了,为后面的实际应用系统设计奠定了较好的基础。 2 系统设计分析 单片机最小系统+串口+74LS164+LED数码管 单片机的最小系统是单片机能够工作的最小硬件组合,对于8051系列单片机,其电路的最小系统大致相同,主要包括电源、晶体振荡电路、复位电路等。 串口 数据通信方式包括并行通信和串行通信两种。并行通信就是多条数据线上同时传送,其优点:速度快,只适于近距离通信。串行通信就是数据以为以为的顺序传送,其优点:线路简单,成本低,适合远距离通信。 串行通信方式包括:异步串行通信和同步串行通信。异步方式,数据传送不连续,时间间隔任意。同步方式,发送与接收同步。数据传送方式:单工、半双工、全双工、多工。常见的串行通讯有:RS-232、RS-485、CAN总线等。 串行口控制寄存器包括:串行口控制寄存器SCON(控制工作方式)、电源控制寄存器PCON(控制波特率)。SM0、SM1选择工作方式,SM2用于多机通信,REN允许接收控制位,TB8/RB8发送/接收数据D8位,TI/RI为发送/接收中断标志位。

使用74LS164制作流水灯

使用74LS164制作流水灯 单片机初学者对于流水灯实验一定特别的熟悉,这个实验逻辑清晰,效果明显,在各类单片机以及微机控制相关材料中都会进行讲解。当我们学习了一段时间单片机之后,或者在进行单片机系统设计时,会发现51单片机的引脚有时并不是很够用,有时候需要尽量节省单片机I/O引脚。如何节省I/O引脚是我们在设计单片机系统时,经常需要考虑的一个问题。 下面以8个LED组成的流水灯效果的实现为例,讲解如何节省单片机的I/O引脚。 通常我们会采用如图1所示的电路图,通过单片机直接驱动8个LED,但是这种控制方式消耗了8个单片机引脚。 图1 常规流水灯电路

我们也可以使用三八译码器来完成流水灯的效果。其控制电路图如图2所示(这种控制方式在我之前上传的文档中有详细介绍,感兴趣读者可以查看)。这种控制方式虽然可以在一定程度上可以节省单片机I/O接口的使用,如下图所示,最少只需要使用3个I/O口。但是这种方式也存在一定的缺点,这种控制方式只能同时点亮1个LED 灯,如果想实现两个以及以上的LED灯点亮的效果,那么这种电路将无法直接实现效果。 图2 三八译码器拓展I/O口 下面我们看一下能够使用其他的芯片,来进一步降低单片机I/O 口的消耗。使用串行转并行芯片74LS164来制作流水灯效果,其控制原理图如图3所示。从原理图中可以看出,使用了74LS164芯片控制流水灯之后,只占用了单片机的两个I/O口。一个用于输出时钟脉冲,另外一个用于输出串行数据。

图3 74LS164控制流水灯原理图 与前面采用译码器控制的流水灯相比,使用74LS164控制的流水灯效果具有如下两个显著优点: 1.占用单片机I/O口少,最少仅为2个。 2.控制功能强大,74LS164驱动的流水灯点亮的个数没有限制,可以任意数量点亮。 编程思路:单片机以最快的速度通过串口控制8个LED灯的点亮状态,由于此过程极短,人眼无法分辨,通过延时函数稳定输出效果,并延时一定时间,再次以最快的速度通过串口控制8个LED灯的亮灭状态,并执行延时函数实现等待效果,如此反复,就可以实现流水灯的效果,且可以实现任意的流水灯的效果。 编程技巧:由于需要反复执行“单片机通过串口控制8个LED灯”的程序,可以将该程序通过子函数来实现简化程序的效果。 下面给出笔者编写的程序参考,读者可以根据自己的编程思路,完成不同的控制程序的编写。

单片机 第六章 习题参考答案

第六章习题参考答案 一、填空题 1、当定时器T0工作在方式3时,要占用定时器T1 的 TR1 和 TF1 两个控制位。 2、在定时器T0工作方式3下,TH0溢出时, TF1 标志将被硬件置1去请求中断。 3、在定时器T0工作方式3下,欲使TH0停止工作,应执行一 条 CLR TR1 的指令。 4、使用定时器/计数器1设置串行通信的波特率时,应把定时器/计数器1设定作方式 2 ,即自动重新加载方式。 5、当计数器产生计数溢出时,把定时器/计数器的TF0(TF1)位置“1”。对计数溢出的处理,在中断方式时,该位作为中断标志位使用;在查询方式时,该位作状态位使用。 6、在定时器工作方式1下,计数器的宽度为16位,如果系统晶振频率为6MHz,则最大定时时间为 131.072ms ,若系统晶振频率为12MHz,则最大定时时间 为 65.536ms 。 7、8051单片机内部设有两个16位定时器/计数器,

即 T0 和 T1 。 8、T0由两个8位特殊功能寄存 器 TH0 和TL0 组成,T1 由 TH1 和 TL1 组成。 9、定时时间与定时器的工作方式、计数初值及振荡周期有关。 10、MCS-51的定时器/计数器作计数器时计数脉冲由外部信号通过引脚 P3.4 和 P3.5 提供。 11、MCS-51的定时器/计数器T0的门控信号GATE设置为1时,只有 INT0 引脚为高电平且由软件使 TR0 置1时,才能启动定时器/计数器T0工作。 12、当T0为方式 3 ,T1为方式 2 的时候,8051单片机的定时器可提供3个8位定时器/ 计数器。 二、选择题 1、在下列寄存器中,与定时/计数控制无关的是( C ) A、 TCON B、 TMOD C、 SCON D、 IE 2、在工作方式0下,计数器是由TH的全部8位和TL的5位组成,因此其计数范围是( A )

第六章 串行通信

第六章串行通信技术 总学时 6学时 教学目的:(1)了解通信的概念,熟悉串行通信和并行通信原理; (2)掌握串行通信的标准; (3)掌握80C51串行口的通信原理和通信方法; 教学重点:(1)串行通信的原理和数据帧格式; (2)80C51串行口的通信方式设置及波特率设置方法; 教学难点:(1)串行通信协议 (2)80C51单片机间的通信和单片机与PC机的通信程序设计方法;教学手段:教授法 教学过程: 第六章串行通信技术 一、概述 1、通信:计算机与计算机之间,计算机与外设之间的数据交换称为通信。 2、并行通信:信息的各位数据被同时传送的通信方法称为并行通信。 并行通信依靠并行I/O接口实现。在并行通信中,数据有多少位就需要多少条信号传输线,这种通信方式的速度快,但由于传输线数较多,成本高,仅适合近距离通信,通常传送距离小于30米。 3、串行通信:串行通信是指信息的各位数据被逐位顺序传输的通信方式。这种通信方式较之并行通信而言,具有:传输距离长,可达数千公路;抗干扰能力强,串行通信信号间的相互干扰可以忽略不计;通信成本低;对于单片机来说,其所占用的引脚资源少等优点。 4、异步串行通信和同步串行通信: 串行通信中根据信息传送的格式分为:异步串行通信和同步串行通信。 同步串行通信:顾名思义,“同步通信”的通信双方必须先建立同步,即双方的收发时钟要调整到同一个频率。在收发时钟频率相同的基础上,同步串行通信是按软件识别同步字符来实现数据的传送。同步通信在数据开始处用一两个同步字符来指示发送的开始,由同一频率的时钟脉冲来实现发送和接收的同步。在同步通信中,在发送时要插入同步字符,接收端在检测到同步字符后,就开始接收任意的串行数据,这就是说,“同步”是指发送和接收方应具有相同的频率,并不是指在某一时刻收发双方必须同时进行。 异步串行通信:异步通信是指发送和接收设备使用各自的时钟控制数据的传送的通信。是以字符(或字节)为单位组成的字符帧进行数据传送的。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。字符与字符之间的间隙(时间间隔)任意,但每个字符中的各位是以固定时间传送的,即字符之间是异步的(各帧之间不一定由“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间均为“位间隔的整数倍”)。 异步通信是一种利用字符的再同步技术的通信方式,为使收发双方协调,要求发送和接收设备的时钟频率尽可能的一致(误差在允许的范围内)。 5、字符帧格式

单片机课程设计——74LS164实现串入并出

目录 1. 题目设计要求.................................................................. 2.系统的硬件设计.................................................................. 2.1系统采用的元器件.......................................................... 2.2器件选择.................................................................. 2.2.1 AT89C51概述及引脚功能.............................................. 2.2.2 74164的技术指标及工作原理.......................................... 3.系统硬件电路图设计.............................................................. 3.1振荡电路及复位电路设计.................................................... 3.2电路原理图................................................................ 4.系统的软件设计................................................................. 4.1编程语言选择.............................................................. 4.2发送字符串模块设计........................................................ 4.4源代码.................................................................... 4.5编译结果.................................................................. 5.系统仿真调试 ................................................................... 5.1仿真调试的过程............................................................ 5.2仿真调试的结果............................................................ 6.总结 ........................................................................... 7参考文献........................................................................

74LS164和74LS165工作原理及其单片机中的应用(基于Proteus仿真)

74LS164和74LS165工作原理及其在单片机中的应用 基于Proteus仿真 前言:本文详细介绍了74LS164和74LS165工作原理,并分别举例它们在单片机中的应用,所举例子包含proteus仿真电路图,源程序,程序注释详细清楚。 1、74LS164在单片机中应用举例 本例在单片机串行口外接一片8位串入并出移位寄存器74LS164芯片,构成单片机输出接口电路,控制8只LED滚动显示。 (1)74LS164芯片如右图所示,它是8位串入并出移位寄存器,串行输入数据, 然后并行输出。各引脚功能如下: A、B(1、2引脚):数据输入端,数据通过这两 个输入端之一串行输入;任一输入端可以用作高电平 使能端,控制另一输入端的数据输入。当其中任意一 个为低电平,则禁止新数据输入;当其中有一个为高 电平,则另一个就允许输入数据。因此两个输入端或 者连接在一起,或者把不用的输入端接高电平,一定 不要悬空。 Q0~Q7(3~6,10~13引脚):数据输出端 CP(8号引脚):时钟输入端。CP每次由低变高时,数据右移一位,输入到Q0,Q0 是两个数据输入端的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 MR:复位清除端,当MR为低电平时,其它所有输入端都无效,同时所有输出端均为低电平。 GND(7号引脚,在proteus中已隐藏):接地端 VCC(14号引脚,在proteus中已隐藏):电源端,接+5V电源

74LS164 内部逻辑图 (2)如下图所示,本例单片机串行口工作于方式0,即移位寄存器输入/输出模式。串行数据通过RXD输出,TXD则用于输出移位时钟脉冲。数据输入端1接高电平,数据输入端2接单片机RXD引脚。时钟输入端接TXD引脚,复位端悬空。数据输出端通过限流电阻接8只LED灯。 C程序如下: #include #include #define uint unsigned int #define uchar unsigned char void delay(uint x) {uchar i; while(x--) for(i=0;i<120;i++); } void main() {uchar c=0x80; SCON=0x00; //串行口工作在方式0 while(1) {c=_crol_(c,1); SBUF=c; while(TI==0); //等待发送结束 TI=0; //发送结束,TI置0 delay(400); } }

相关文档
最新文档