proteus仿真51流水灯和点阵(心形)

使用SDCC,不能简单套用keil环境下的语法,以下是SDCC中8051.h头文件与keil环境下reg51.h头文件的区别:

关于如何在proteus上调用在codeblocks上编写好的C51代码:

  • 在proteus上双击51单片机或右击51单片机点击编辑属性

浏览到codeblocks编译后的hex文件即可。

现在开始流水灯:

原理图:

代码:

#include <mcs51/8051.h>

void delay()
{
    for(int i=0;i<100;i++)
        for(int j=0;j<100;j++);
}

int main()
{
    while(1)
    {
    for(P1=0x01;P1<=0x80;P1=P1<<1)
       delay();
    }
}

运行结果:只能进行一次流水作用

原因分析:代码运行到P1=0x80时,进行左移后P1=0x00,在进行左移时P1一直为0x00,导致程序一直运行在for循环中。

解决方法(不唯一):

//将for循环改为如下形式
   for(P1=0x01;P1>0x00;P1=P1<<1)

点阵(心形):

点阵:就是LED阵列,点亮通过操作行和列的电平来实现。列为共阳,行为共阴。

原理图:

代码:

#include <mcs51/8051.h>

int a[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int b[8]={0xf3,0xed,0xdd,0xbb,0xbb,0xdd,0xed,0xf3};

void delay()
{
    for(int i=0;i<100;i++);
}

void main(void)
{
    while(1)
    {
        for(int i=0;i<8;i++)
        {
            P2=a[i];
            P1=b[i];
            delay();
        }
    }
}

实现效果:

原文地址:https://www.cnblogs.com/xing-2/p/11147890.html

时间: 2024-11-11 05:23:35

proteus仿真51流水灯和点阵(心形)的相关文章

proteus仿真51流水灯(汇编)

本文为<proteus仿真51流水灯和点阵(心形)>的后续文章,上文链接:https://www.cnblogs.com/xing-2/p/11147890.html 流水灯的原理图同上文 汇编代码如下: ORG 0000H MOV R1,#01H LCALL movbit delay: MOV R7,#00H delayloop: DJNZ R7,delayloop DJNZ R6,delayloop RET movbit: MOV A,R1 RL A MOV R1,A MOV P1,R1

51流水灯实验

  课程名称:_单片机原理与应用 专业班级: 嵌入式14103班 姓    名:_赵存档       _ __ 学    号:_14160310317    __     2015-- 2016   学年第  1 学期     实验项目( 一 ) — 预习报告 项目 名称 LED高低电平交替闪烁程序 实验 目的 及 要求 1. 正确安装keil软件 2. 在 Proteus 的环境下,设计硬件原理图: 3.在keil 集成环境下设计C语言程序: 4. 在 Proteus 的环境下,将硬件原理图与

51单片机300个proteus仿真实例下载

51单片机300个proteus仿真实例下载,不仅有230个51单片机的proteus仿真实例,还有59个经典案例,50个经典电路制作实例,下面只是部分截图和资料,还有更多的proteus仿真/程序在闯客网可以找到,并且免费下载,有需要的朋友可以下载学习,还有技术交流群:613377058 下载链接:https://bbs.usoftchina.com/thread-201293-1-1.html 100000秒以内的计时程序.DSN 10秒的秒表 (2).DSN 10秒的秒表.DSN 1286

[51单片机] EEPROM 24c02 [I2C代码封装-保存实现流水灯]

这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC >_<:i2c.c 1 /*----------------------------------------------- 2 名称:IIC协议 3 内容:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 4 周期,即晶振频率要小于12MHZ) 5 ---------------------------------------

51单片机第一弹---流水灯

转行搞硬件..acm算是走到头了,毕竟电子是自己专业的特色.. 初撸单片机,买的板子是STC89C52(某宝58大洋淘来的..) 郭天祥新概念的那本书(好像有点不配套不过凑活着弄了也..) 说一下容易犯的错误吧. 1.串口驱动搞了1个多小时..一直安装不上,后来跟着教程做的 2.书上写的控制LED端口的是P1 ,但实际上买的这快板子是P2 ,最开始搞了半天老是点不亮灯,后来一想会不会端口错了,换成0试试?换了不行,又换了2..亮了(这是个问题,以后要找学长问问,怎么根据开发板看出来每个模块的端口

呼吸灯和花样流水灯 51单片机实现

1.用C51单片机实现花样流水灯,代码如下: #include <reg52.h> #define LED_All P1 //led灯所用的接口,单片机接口不同,led灯不同void delayms(){unsigned char x = 0; unsigned char i;unsigned char y = 0;while(y < 0.001) //定义led灯的切换的延时时间,越小越快{   //i,x,y均可以修改x = 0; while(x<100){i = 0;whil

Proteus仿真+C8051源码(100例)+红外线遥控仿真

从百度网盘下载,提取码:di7r 目录结构 ├─Proteus仿真+C8051源码(100例) │ │ 源码解释.doc │ │ │ └─基于8051+Proteus仿真 │ │ 案例压缩包相关说明.txt │ │ │ ├─第 01 篇 基础部分 │ │ ├─01 闪烁的LED │ │ │ │ Last Loaded 闪烁的LED.DBK │ │ │ │ 闪烁的LED.DSN │ │ │ │ 闪烁的LED.PWI │ │ │ │ │ │ │ ├─code │ │ │ │ led │ │ │ │

毕业回馈-89C51之GPIO使用(流水灯)

今天分享一个89c51制作的8位流水灯案例.使用Proteus仿真. 同上一遍文章不同.上一篇文章中对于GPIO操作主要是位操作,即sbit led1=P0^0;其中P0^0代表p0.0这个引脚,然后在这样位定义以后就可以对led1这个变量进行赋值操作,控制led灯的亮灭闪烁.今天要分享的是一次性对P1.0-P1.7进行操作. 89c51单片机是以51为内核的8位处理器,可以很方便的实现8位数据的操作. 所使用的电路原理图如下: 使用200Ohm的电阻进行限流,LED灯采用阴极接法,即LED灯的

3. 戏说VHDL之入门游戏一:流水灯

一.   流水灯 1.1流水灯原理 流水灯是每个学电子的入门“游戏” ,示意图如图1,其原理极其简单,但是可玩性却极强,可以就8个LED写出不同花样的程序.在1.2中我们列出两个不同思路的代码作为VHDL的入门例程. 图1 流水灯电路图 1.2 流水灯例程 这里提供两个不同的代码. 第一个代码的思路是先对系统时钟分频,产生1s信号(即变量count取值到25000000,这样分频时间=20ns*25000000*2=1s),然后使用移位操作符指令进行操作.该指令是在VHDL93中引入的,包括sl