- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
74ls164串行输出扩展运用课程设计
单片机课程设计报告
74ls164串行输出扩展运用
班 级:09移动1班
姓 名:王家树、黄志豪
学 号09112003
指导老师: 陈海松
课题的提出
选择这个课程设计,是由于陈老师在课程上曾提到过74ls164芯,并且对串口通信比较喜欢,通过老师的咨询,便提出做一个关于74ls164的串行通信程序应用设计的报告。
二、设计任务和要求
任务:设计一个能够由数码管显示,编写一个关于74ls164的串输入并行输出一串数字。
要求:利用单片机的并行串行I/O口,利用C语言中的指针函数,编写一段好用又简洁的设计代码。
三、设计方案的论证
1、首先从参考文献中可以查到54/74164是 8 位移位寄存器(串行输入,并行输出) ,是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
2、 功能图
图 1. 逻辑符号
?符号 ?引脚 ?说明 ?DSA ?1 ?数据输入 ?DSB ?1 ?数据输入 ?Q0~Q3 ?3~6 ?输出 ?GND 7? ?地 (0 V) ?CP ?8 ?时钟输入(低电平到高电平边沿触发) ?/M/R ?9 ?中央复位输入(低电平有效) Q4~Q7 10~13 输出
(AT89C51控制)
(74ls164级联)
(数码管显示)
(整图分布)
主程序:
1、第一次编写的程序
#include reg51.h
#define __DISP_LED_h__
void Disp_LED(unsigned int *key_num);
void DelayNS(unsigned int dly);
void main()
{
int numb[6]={1,5,8,3,1,2};
Disp_LED(numb);
DelayNS(20);
}
void Disp_LED(unsigned int *key_num)
{
Unsigned char code LED_Val[] =
{0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//0-9
unsigned char data num[6];
unsigned char k;
num[0]=*key_num;
num[1]=*(key_num+1);
num[2]=*(key_num+2);
num[3]=*(key_num+3);
num[4]=*(key_num+4);
num[5]=*(key_num+5);
for(k=0;k=5;k++)
{
SBUF=LED_Val[num[5-k]];
while(TI==0);
TI=0;
}
}
void DelayNS(unsigned int dly)
{
int i,j;
for(i=0;i10000;i++)
for(j=0;jdly;j++);
}
2、第二次自学的头文件编写的程序:
//Disp_LED.c 主程序
#include reg51.h
#include DISP_LED.h
void main()
{
int numb[6]={1,5,8,3,1,2};
Disp_LED(numb);
DelayNS(20);
}
//DISP_LED.h 自编头文件
#ifndef __DISP_LED_h__
#define __DISP_LED_h__
void Disp_LED(unsigned int *key_num);
void DelayNS(unsigned int dly);
/*
函数名称: Disp_LED
函数功能: 数码管显示
输入参数: key_num
*/
void Disp_LED(unsigned int *key_num)
{
unsigned char code LED_Val[] =
{0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//0-9
unsigned char data num[6];
unsigned char k;
您可能关注的文档
- 2014高中地理学业考试模拟卷一.doc
- 2015年高考一轮复习资料(数学理)常用逻辑用语_01_命题及其关系充分条件与必要条件.doc
- 2015年北京东城春季化学会考考前练习.doc
- 2014年浦东新区高三地理一模试卷.doc
- 2015高考历史二轮通史复习配套学案第一部分中国古代通史专题二中国古代文明的初步发展-秦汉魏晋南北朝doc.doc
- 2015高考地理一轮复习限时规范训练1-3宇宙中的地球和太阳对地球的影响[来源学优高考网645632].doc
- 2015高考复习基本初等函数复习(学生).doc
- 20CrMnTi的工艺路线分析.doc
- 20章电与磁导学案.doc
- 2015高考电化学高考真题.doc
文档评论(0)