|
分享2个简单的单片机跑马灯 流水灯Proteus仿真下面是原理图:
单片机跑马灯源程序:
- /********************************************************************
- 51黑电子论坛
- *********************************************************************/
- #include<reg52.h> //库文件
- #define uchar unsigned char//宏定义无符号字符型
- #define uint unsigned int //宏定义无符号整型
- /********************************************************************
- 初始定义
- *********************************************************************/
- uchar temp; //定义字符型变量
- uchar a,b,i;
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay()//延时程序
- {
- uchar m,n,s;
- for(m=20;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
- /********************************************************************
- 主函数
- *********************************************************************/
- void main()
- {
- while(1)
- {
- temp=0xfe; //11111110定义每次一个灯亮
- P3=P2=P0=P1=temp;//直接对1/0口赋值,使批输出低电平。
- delay();//延时
- for(i=1;i<8;i++)//实现广告灯的从右到左移动
- {
- a=temp<<i; //左移i位
- b=temp>>(8-i); //右移8-i位
- P3=P2=P0=P1=a|b;//相与求值
- delay();
- }
- for(i=1;i<8;i++)//实现广告灯的从左到右移动
- {
- a=temp>>i; //右移i位
- b=temp<<(8-i); //左移8-i位
- P3=P2=P0=P1=a|b;//相与求值
- delay();
- }
- }
- }
-
- /********************************************************************
- 结束
- *********************************************************************/
复制代码
单片机流水灯源程序:
- /********************************************************************
- 51黑电子论坛
- *********************************************************************/
- #include<reg52.h> //库文件
- #define uchar unsigned char//宏定义无符号字符型
- #define uint unsigned int //宏定义无符号整型
- /********************************************************************
- 初始定义
- *********************************************************************/
- uchar temp; //定义字符型变量
- uchar a,b,i;
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay()//延时程序
- {
- uchar m,n,s;
- for(m=20;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
- /********************************************************************
- 主函数
- *********************************************************************/
- void main()
- {
- temp=0xfe; //11111110定义每次一个灯亮
- while(1)
- {
- P3=P2=P0=P1=temp;//直接对1/0口赋值,使批输出低电平。
- delay();//延时
- for(i=1;i<8;i++)//实现广告灯的从右到左移动
- {
- a=temp<<i; //左移i位
- P3=P2=P0=P1=a;//相与求值
- delay();
- }
- }
- }
-
- /********************************************************************
- 结束
- *********************************************************************/
复制代码
所有资料包含仿真工程文件和源码下载:
流水灯.rar
(49.86 KB, 下载次数: 59)
跑马灯.rar
(41.95 KB, 下载次数: 38)
|
|