单片机——点阵

  • 1.心形图案
    • 演示
    • 讲解
    • 代码
  • 2. 方型扫描
    • 演示
    • 讲解
    • 代码
  • 3. 循环显示数字0-9图形。
    • 演示
    • 代码

基础在这里单片机——点阵1

1.心形图案

演示

讲解

实现上图有两种方法

  1. 按照每个来循环

    找到每个点的行和列,让行和列分别组成一个数组

    uchar code col[]={0x04,0x08,0x20,0x40,0x02,0x10,0x80,0x04,0x40,0x08,0x20,0x10};//列
    uchar code row[]={0xbf,0xbf,0xbf,0xbf,0xdf,0xdf,0xdf,0xef,0xef,0xf7,0xf7,0xfb};//行
    

    然后再主函数中进行循环

  2. 按照以行为标准,列循环(或者:以列为标准,行循环)

    那么,计算机是如何扫描的呢,请看下图:

代码

  1. 方法一:

    #include<reg51.h>
    #include<intrins.h>
    #define uint unsigned int
    #define uchar unsigned charvoid delay(int xms){uint i,j;for(i=xms;i>0;i--){for(j=110;j>0;j--);}
    }uchar code col[]={0x04,0x08,0x20,0x40,0x02,0x10,0x80,0x04,0x40,0x08,0x20,0x10};//列
    uchar code row[]={0xbf,0xbf,0xbf,0xbf,0xdf,0xdf,0xdf,0xef,0xef,0xf7,0xf7,0xfb};//行void main(){uint i,j;while(1){for(i=0;i<12;i++){P2=row[i];P3=col[i];delay(1);}}
    }
    
  2. 方法二

    #include<reg51.h>
    #include<intrins.h>#define uint unsigned int
    #define uchar unsigned charvoid delay(int xms){uint i,j;for(i=xms;i>0;i--){for(j=110;j>0;j--);}
    }uchar code col[]={0x00,0x6c,0x92,0x44,0x28,0x10,0x00,0x00};//列void main(){uint i;P2=0xfe;while(1){for(i=0;i<8;i++){P2=_cror_(P2,1);P3=col[i];delay(1);}}
    }
    

2. 方型扫描

演示

讲解

代码很多我们一步一步来讲解

  1. 我们先来分析图案
    我们可以观察到,他是由一个一个图案组成的,并不能由单纯的循环所能演示出
    图案如下,大家可以用上面的方法自己写一写数组里的值

    就直接将列的代码给大家了

    uchar code tab[]={0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,//图一0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,//图二0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,//图三0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff //图四
    };
    
  2. 图案循环(内到外)
    先上代码

    uint i,j=0,t=0;
    P2=0xfe;for(i=0;i<8;i++){P2=_cror_(P2,1);P3=tab[j*8+i];delay(1);
    }
    t++;
    if(t==100){j++;t=0;if(j=4)j=0;
    }
    

    解释一:与心形图案的方法二比较发现,P3=tab[j*8+i];多了一个j,是由于:数组中有四个图案,当j=0时,循环第一个图案,j=2时循环第二个图案,依次类推
    解释二: 与之前的代码相比较多了一个t,那么t是用来干什么的?t是用来延时的,每当t+到100时,就换一个图案。为什么不用delay延时? 你可以试试,当delay运行时,for循环就需要等待delay运行完,那么点阵就会什么都不显示。

  3. 加上由外到内
    进行到第二步点阵就可以由内到外循环,如何由外到内呢
    方法一: 在数组中在写两个图案(图二和图三的值),可行
    方法二: 加一个flag,控制j的值,可行

代码

#include<reg51.h>
#include<intrins.h>#define uint unsigned int
#define uchar unsigned charuchar code tab[]={0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
};void delay(uint xms){uint i,j;for(i=0;i<xms;i++){for(j=0;j<110;j++);}
}void main(){uint i;uint j=0,t=0;uint flag=0;P2=0xfe;while(1){for(i=0;i<8;i++){P2=_cror_(P2,1);P3=tab[j*8+i];delay(1);}t++;if(t==100){t=0;if(flag==0)j++;else j--;}if(j==3)flag=1;else if(j==0)flag=0;}
}

3. 循环显示数字0-9图形。

演示

代码

#include<reg51.h>
#include<intrins.h>#define uint unsigned int
#define uchar unsigned charvoid delay(int xms){uint i,j;for(i=xms;i>0;i--){for(j=110;j>0;j--);}
}
uchar code imges[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,//00x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,//10x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00,//20x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,//30x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,//40x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00,//50x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00,//60x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00,//70x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,//80x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00 //9 };void main(){uint i,j=0,t=0;P3=0x01;while(1){for(i=0;i<8;i++){P3=_crol_(P3,1);P2=~imges[j*8+i];delay(1);}t++;if(t==100){j++;t=0;if(j==10)j=0;}}
}

单片机——点阵2(Proteus和KeilC51)相关推荐

  1. 单片机——点阵1(Proteus和KeilC51)

    单片机--点阵 知识点 点阵的模样 常用知识点 简单练习题 行扫描&&列扫描 演示 讲解 代码 点扫描(按行&&按列) 演示 讲解 代码 知识点 点阵的模样 名字:ma ...

  2. 单片机———LED灯(Proteus和KeilC51)

    单片机----LED灯(Proteus和KeilC51) LED灯的简单介绍 练习 led灯两灯闪烁 8盏花样流水灯 1357,2468轮流点亮 从下到上两遍,从下到上两遍,中间到两头两遍 两边到中间 ...

  3. 基于51单片机点阵汉字显示程序设计

    文章目录 基于51单片机点阵汉字显示程序设计 一.实践目的 二.实践依托的实验设备与软件 1.设备 2.软件 二. 系统或装置的设计 1. 硬件原理图设计 2.印制板图绘制 三.程序框架及主要算法流程 ...

  4. C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-下)

    系列文章目录 提示:本文章为系列文章,系列文章的所有文章的目录后期会时刻更新,喜欢的朋友请收藏好 <第一章 C语言极速学习开发--51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学 ...

  5. c语言 字体点阵取模,[汉字取模软件怎么用]单片机点阵汉字显示需要用

    [汉字取模软件怎么用]单片机点阵汉字显示需要用汉字取模软件吗 通常,用汉字取模软件生成工程所需所有汉字点阵信息.也可利用字库芯片,根据汉字内码计算字模地址,并从字库芯片中导出相关汉字的点阵信息.前者容 ...

  6. 基于51单片机篮球计分器proteus仿真设计

    本设计是51单片机篮球计分器proteus仿真(源码+原理图+PCB+仿真+报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0004 资料文件下载 ...

  7. 基于51单片机简易数字示波器Proteus仿真

    功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...

  8. 51单片机 AT24C04+蜂鸣器+Proteus仿真

    51单片机 AT24C02+蜂鸣器+Proteus仿真 Proteus仿真截图 由于是音频效果,只能以截图展示基本电路 实例代码 #include <reg52.h> #include & ...

  9. 51单片机模拟电子琴+Proteus仿真

    51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h>#define uchar u ...

最新文章

  1. 谷歌创始人“退位”,印度CEO独挑大梁
  2. Java注释@interface的用法
  3. sql server 存储过程 拼接SQL 超过8000
  4. 学python的好处-python有什么优点
  5. on条件与where条件的区别
  6. linux+删除乱码的文件,linux 下删除乱码文件-乾颐堂
  7. HH SaaS电商系统的拼团系统设计
  8. 微信小程序—day01
  9. mysql数据库1对n_MySQL数据库InnnoDB引擎事务说明
  10. 照片有灵异鬼影?伯克利 x 陈启峰培育高能FCN“除灵师” | CVPR论文
  11. 服务和服务帐户安全规划指南
  12. 401 un[Authorize]
  13. Less/Sass 定制私人常用方法库
  14. PLUPLOAD插件 ━━ 上传总结(分片上传,php后端处理)
  15. Android 密码丢了,丢失密钥库密码
  16. 天琴协议_天琴座:新秀背后
  17. 幼儿园调查过程怎么写_如何写幼儿园调查问卷总结
  18. C++类与对象——封装
  19. 知识图谱-KGE-第三方库:OpenKE库【清华开源】
  20. c语言程序设计哈尔滨,2017春C语言程序设计 上(哈尔滨金融学院)

热门文章

  1. 2021-03-03 地理配准
  2. 维吉尼亚密码破解(Python完整详细源码)
  3. 使用Vue写一个登录页面
  4. Linux 下rsync命令详细整理
  5. R语言机器学习 格兰杰因果关系检验(Granger cointegratance)
  6. 酒精测试仪方案开发PCBA
  7. CCC之I类设备、II类设备、III类设备的对比
  8. java 数字 汉字_Java提取字符串中的汉字、字母、数字
  9. 强制删除windows文件的终极解决方法
  10. 算法导论之排序算法(1)