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

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

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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;

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档