8盏流水灯反向闪烁c语言,课程设计(论文)_利用8255A芯片实现流水灯闪烁设计.doc...

课程设计(论文)_利用8255A芯片实现流水灯闪烁设计

利用8255A芯片实现流水灯闪烁设计

27 -

目录

摘要······················································2

第1章 利用8255A芯片实现流水灯闪烁设计的概述···········2

第2章 三种方案的论述与最终方案的确定····················2

2.1 第一种方案的论述··································2

2.2 第二种方案的论述··································5

2.3 第三种方案(最终方案)的论证·······················10

第3章 测试结果及体会心得·······························13

第4章 致谢·············································14

第5章 参考文献·········································14

附录1 方案一 Proteus仿真电路效果图·····················15

附录2 方案一 源程序代码································16

附录3 方案二 Proteus仿真电路效果图·····················18

附录4 方案二 源程序代码································19

附录5 方案三(最终方案) Proteus仿真电路效果图·········20

附录6 方案三(最终方案) 源程序代码····················21

摘要:

8255A是一种通用的可编程并行I/O

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、一盏一盏:第一盏先亮--延时--熄灭--延时--下一盏; 2、利用数组方法点亮:定义一个数组(即0xfe,0xfd,0xfb,0xf7,0xef,oxdf,0xbf,0x7f:依次代表只有第一盏,第二盏....亮),再利总线,按顺序点亮八盏; 3、利用移位方法点亮:(1)、利用移位运算和按位或运算,依次点亮八盏; (2)、包含intrins头文件(里面含有移位函数),使用相应的左移或右移函数进行移位, 下面是代码和注释,详细解释了点亮流水的思路,附件含有源代码和仿真文件,有需要的可以下载 //方式0控制流水循环点亮 #include //包含51单片机寄存器定义的头文件 #include //包含函数_nop_()定义的头文件 unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水控制码,该数组被定义为全局变量 sbit P17=P1^7; /************************************************************** 函数功能:延时约150ms **************************************************************/ void delay(void) { unsigned char m,n; for(m=0;m<200;m++) for(n=0;n<250;n++) ; } /************************************************************** 函数功能:发送一个字节的数据 **************************************************************/ void Send(unsigned char dat) { P17=0; //P1.7引脚输出清0信号,对74LS164清0 _nop_(); //延时一个机器周期 _nop_(); //延时一个机器周期,保证清0完成 P17=1; //结束对74LS164的清0 SBUF=dat; //将数据写入发送缓冲器,启动发送 while(TI==0) //若没有发送完毕,等待 ; TI=0; //发送完毕,TI被置“1”,需将其清0 } /******************************************* 函数功能:主函数 ******************************************/ void main(void) { unsigned char i; SCON=0x00; //SCON=0000 0000B,使串行口工作于方式0 while(1) { for(i=0;i<8;i++) { Send(Tab[i]); //发送数据 delay(); //延时 } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值