keil+proteus
第二个51程序 : 跑马灯 流水灯
这是一个AT89c51单片机教程,我们每次都会提供博文教程以及附带资料下载。
单片机就是一个小型CPU,在电子领域应用广泛,电视、冰箱、洗衣机、空调等产品中都能见到他们的身影。它是一个可编程的mcu,根据代码的不同可实现非常多功能
今天要走入第二个程序,跑马灯,按步骤,先硬件,后软件的顺序,先绘制原理图
建立好之后开始编写代码
#include
void delayms(unsigned int t)
{
unsigned int i,j;
for(i=0; i } void main(void)//主函数 { int n; unsigned char a[8] = { //取表数组 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; while(1) { for(n=0; n<8; n++)//循环取表 流水灯
{ P1 = a[n]; delayms(500); } } } 写入keil工程,编译生成hex文件 进入proteus仿真,烧录hex文件,点击运行… 仿真开始运行跑马灯。 keil工程代码以及proteus仿真原理图资料包:http://download.csdn.net/download/mbs520/12118172 *代码解读 1、 #include 包含头文件 2、 void delayms(unsigned int t)//延时函数 { int a,b; for(a=0; a } 延时函数就是让CPU反复执行一条空指令来消耗时间,这段时间CPU仍然在工作,各寄存器的值保持不变。 3、 void main(void) 这是主函数,程序从这里开始执行 另外,51单片机不用循环语句while,也会循环执行main函数中的内容 4、 int n; unsigned char a[8] = { //取表数组 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; int n; //这里定义一个n用来for循环的计数 unsigned char a[8] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; 这个数组是干嘛的?我把它转为二进制你就差不多明白了,它们分别是 0000 0001 0000 0010 0000 0100 0000 1000 0001 0000 0010 0000 0100 0000 1000 0000 你会发现有一个1在向左移动,我们把这个1想做是亮着的灯,0是灭的灯,按照这个规律流动,就成了流水灯 5、 while(1) { for(n=0; n<8; n++)//循环取表 流水灯
{ P1 = a[n]; delayms(500); } } while(1)是一个死循环,会循环执行里面的内容 for(n=0; n<8; n++)//循环取表 流水灯
{undefined P1 = a[n]; delayms(500); } 这个才是跑马灯的真正代码,利用for循环n自增,就可以一次输出数组里面的内容。 P1:在头文件里定义,为单片机IO口寄存器,8bit,每一位由低到高分别存储P1_0-P1_7的高低电平0或1。 依次对P1口输出a[0] a[1] 、a[2]、 a[3]、 a[4]…实现跑马灯效果 百度网盘链接:https://pan.baidu.com/s/18cVVHyE6O1AzvUvZMsApZA 提取码:22pi (有问题欢迎留言,第一次发帖,不到之处希望各位大神指点) (也可以私信我问题,看到否可以为为大家耐心解答,很高兴跟大家交流技术问题。范围:电路设计 电路仿真 PCB设计 51单片机 msp430 arduino stm32 luinx)
关键字: 编辑:什么鱼 引用地址: