单片机——点阵2(Proteus和KeilC51)
单片机——点阵
- 1.心形图案
- 演示
- 讲解
- 代码
- 2. 方型扫描
- 演示
- 讲解
- 代码
- 3. 循环显示数字0-9图形。
- 演示
- 代码
基础在这里单片机——点阵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};//行
然后再主函数中进行循环
按照以行为标准,列循环(或者:以列为标准,行循环)
那么,计算机是如何扫描的呢,请看下图:
代码
方法一:
#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);}} }
方法二
#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. 方型扫描
演示
讲解
代码很多我们一步一步来讲解
我们先来分析图案
我们可以观察到,他是由一个一个图案组成的,并不能由单纯的循环所能演示出
图案如下,大家可以用上面的方法自己写一写数组里的值
就直接将列的代码给大家了
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 //图四 };
图案循环(内到外)
先上代码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运行完,那么点阵就会什么都不显示。加上由外到内
进行到第二步点阵就可以由内到外循环,如何由外到内呢
方法一: 在数组中在写两个图案(图二和图三的值),可行
方法二: 加一个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(Proteus和KeilC51)
单片机--点阵 知识点 点阵的模样 常用知识点 简单练习题 行扫描&&列扫描 演示 讲解 代码 点扫描(按行&&按列) 演示 讲解 代码 知识点 点阵的模样 名字:ma ...
- 单片机———LED灯(Proteus和KeilC51)
单片机----LED灯(Proteus和KeilC51) LED灯的简单介绍 练习 led灯两灯闪烁 8盏花样流水灯 1357,2468轮流点亮 从下到上两遍,从下到上两遍,中间到两头两遍 两边到中间 ...
- 基于51单片机点阵汉字显示程序设计
文章目录 基于51单片机点阵汉字显示程序设计 一.实践目的 二.实践依托的实验设备与软件 1.设备 2.软件 二. 系统或装置的设计 1. 硬件原理图设计 2.印制板图绘制 三.程序框架及主要算法流程 ...
- C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-下)
系列文章目录 提示:本文章为系列文章,系列文章的所有文章的目录后期会时刻更新,喜欢的朋友请收藏好 <第一章 C语言极速学习开发--51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学 ...
- c语言 字体点阵取模,[汉字取模软件怎么用]单片机点阵汉字显示需要用
[汉字取模软件怎么用]单片机点阵汉字显示需要用汉字取模软件吗 通常,用汉字取模软件生成工程所需所有汉字点阵信息.也可利用字库芯片,根据汉字内码计算字模地址,并从字库芯片中导出相关汉字的点阵信息.前者容 ...
- 基于51单片机篮球计分器proteus仿真设计
本设计是51单片机篮球计分器proteus仿真(源码+原理图+PCB+仿真+报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0004 资料文件下载 ...
- 基于51单片机简易数字示波器Proteus仿真
功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...
- 51单片机 AT24C04+蜂鸣器+Proteus仿真
51单片机 AT24C02+蜂鸣器+Proteus仿真 Proteus仿真截图 由于是音频效果,只能以截图展示基本电路 实例代码 #include <reg52.h> #include & ...
- 51单片机模拟电子琴+Proteus仿真
51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h>#define uchar u ...
最新文章
- 谷歌创始人“退位”,印度CEO独挑大梁
- Java注释@interface的用法
- sql server 存储过程 拼接SQL 超过8000
- 学python的好处-python有什么优点
- on条件与where条件的区别
- linux+删除乱码的文件,linux 下删除乱码文件-乾颐堂
- HH SaaS电商系统的拼团系统设计
- 微信小程序—day01
- mysql数据库1对n_MySQL数据库InnnoDB引擎事务说明
- 照片有灵异鬼影?伯克利 x 陈启峰培育高能FCN“除灵师” | CVPR论文
- 服务和服务帐户安全规划指南
- 401 un[Authorize]
- Less/Sass 定制私人常用方法库
- PLUPLOAD插件 ━━ 上传总结(分片上传,php后端处理)
- Android 密码丢了,丢失密钥库密码
- 天琴协议_天琴座:新秀背后
- 幼儿园调查过程怎么写_如何写幼儿园调查问卷总结
- C++类与对象——封装
- 知识图谱-KGE-第三方库:OpenKE库【清华开源】
- c语言程序设计哈尔滨,2017春C语言程序设计 上(哈尔滨金融学院)