标题: 51单片机 点阵 电机 数码管 键盘 [打印本页]

作者: heicad    时间: 2014-6-17 16:14
标题: 51单片机 点阵 电机 数码管 键盘
[size=13.333333969116211px]1)      单个按键与多个数码管—点阵(位操作—输入与字节操作—输出)—动态
[size=13.333333969116211px]1.  多个按键 → 键盘与多个LED灯—最小系统—输出扩展与扫描输入口
[size=13.333333969116211px]a)       多个按键,单个LED灯—动态输入—扫描函数
[size=13.333333969116211px]b)       多个按键,多个LED灯—动态—扫描函数—数组对照
[size=13.333333969116211px]c)         多个按键,多个LED灯—单数码管—扫描函数—数组对照
[size=13.333333969116211px]d)       键盘,多个LED灯—单数码管
[size=13.333333969116211px]2. 多个按键 键盘与多个LED灯最小系统输出扩展与扫描输入口
[size=13.333333969116211px]1)       多个按键,单个LED灯—动态输入—扫描函数
[size=13.333333969116211px]2)       多个按键,多个LED灯—动态—扫描函数—数组对照
[size=13.333333969116211px]3)       多个按键,多个LED灯—单数码管—扫描函数—数组对照
[size=13.333333969116211px]4)       键盘,多个LED灯—单数码管
[size=13.333333969116211px]3.              多个按键 → 键盘、数码管与点阵—最小系统—输入与输出扫描
[size=13.333333969116211px]a)         多个按键,多个LED灯—多数码管—扫描函数—数组对照
[size=13.333333969116211px]b)        键盘,多个LED灯—单数码管—扫描函数—数组对照
[size=13.333333969116211px]c)         多个按键,多个LED灯—单点阵—扫描函数—数组对照
[size=13.333333969116211px]d)        键盘,多个LED灯—多点阵—扫描函数—数组对照
[size=13.333333969116211px]2. 多个按键 键盘、数码管与点阵最小系统输入与输出扫描
[size=13.333333969116211px]1) 多个按键,多个LED灯多数码管扫描函数数组对照
[size=13.333333969116211px]LED灯是由发光二极管制成的,它的工作原理与标准或说普通二极管相同—单向导电性。将多个发光二极管按照8字形安排,则构成一个7段数码管;按照米字形则构成13段数码管。后者在字节处理方面不是8的倍数,则会带来一些麻烦。前者虽缺一位,但加上小数点位则恰到好处。
[size=13.333333969116211px]
[size=13.333333969116211px]//源程序—4个一组的数码管实现:
[size=13.333333969116211px]#define LEDS 4
[size=13.333333969116211px]#include"reg51.h"
[size=13.333333969116211px]//led T选iffl1号
[size=13.333333969116211px]//unsigned char code Select[]={0x01,0x02,0x04,0x08,0x10,0x20};
[size=13.333333969116211px]unsigned char code Select[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,};
[size=13.333333969116211px]unsigned char code LED_CODES[]=
[size=13.333333969116211px]{ 0xc0,0xF9,0xA4,0xB0,0x99,//0-4
[size=13.333333969116211px]0x92,0x82,0xF8,0x80,0x90,//5-9
[size=13.333333969116211px]0x88,0x83,0xC6,0xA1 ,0x86,//A,b,C,d,E
[size=13.333333969116211px]0x8E,0xFF,0x0C,0x89,0x7F,0xBF//F,空格,P,H,.,-
[size=13.333333969116211px]};
[size=13.333333969116211px]void main()
[size=13.333333969116211px]{
[size=13.333333969116211px]char i=0;
[size=13.333333969116211px]long int j;
[size=13.333333969116211px]long int n;
[size=13.333333969116211px]while(1)
[size=13.333333969116211px]{
[size=13.333333969116211px]P2=0;
[size=13.333333969116211px]P2=LED_CODES[n];
[size=13.333333969116211px]//P1=1;
[size=13.333333969116211px]P1=Select;
[size=13.333333969116211px]for(j=3000;j>0;j--); //该LED 模型靠脉冲点亮,第 i 位靠脉冲点亮后,会自动熄来头。
[size=13.333333969116211px]//修改循环次数,改变点亮下一位之前的延时,可得到不同的显示效果。
[size=13.333333969116211px]i++;
[size=13.333333969116211px]if(i>5) i=0;
[size=13.333333969116211px]n++;
[size=13.333333969116211px]if(n>16) n=0;
[size=13.333333969116211px]}
[size=13.333333969116211px]}
[size=13.333333969116211px]
[size=13.333333969116211px]l  多数码管循环移动
[size=13.333333969116211px]
[size=13.333333969116211px]#include
[size=13.333333969116211px]#include
[size=13.333333969116211px]#define uchar unsigned char
[size=13.333333969116211px]#define uint unsigned int
[size=13.333333969116211px]uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
[size=13.333333969116211px]0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//0—F字符阳极管
[size=13.333333969116211px]uchar code DUA_CODE[]={0x08,0x04,0x02,0x01,0x08,0x04,0x02,0x01,
[size=13.333333969116211px]0x08,0x04,0x02,0x01,0x08,0x04,0x02,0x01};//右向左移动
[size=13.333333969116211px]uchar code DUA_CODE[]={0x01,0x02,0x04,0x08 };//左向右移动
[size=13.333333969116211px]
[size=13.333333969116211px]******关于移位函数的使用—P3=_crol_(P3,1);或P3=_cror_(P3,1);左右移位*******
[size=13.333333969116211px]//延时
[size=13.333333969116211px]void DelayMS(uint x)
[size=13.333333969116211px]{
[size=13.333333969116211px]uchar t;
[size=13.333333969116211px]while(x--) for(t=0;t<120;t++);
[size=13.333333969116211px]}
[size=13.333333969116211px]//主程序
[size=13.333333969116211px]void main()
[size=13.333333969116211px]{
[size=13.333333969116211px]uchar i;
[size=13.333333969116211px]while(1)
[size=13.333333969116211px]{
[size=13.333333969116211px]for(i=0;i<16;i++)
[size=13.333333969116211px]{
[size=13.333333969116211px]P2=0x00;
[size=13.333333969116211px]P2=DSY_CODE; //发送段码
[size=13.333333969116211px]P3=DUA_CODE; //发送位码  
[size=13.333333969116211px]DelayMS(10);
[size=13.333333969116211px]}
[size=13.333333969116211px]}
[size=13.333333969116211px]}
[size=13.333333969116211px]
[size=13.333333969116211px]2) 键盘,多个LED灯单数码管扫描函数数组对照
[size=13.333333969116211px]
[size=13.333333969116211px]3) 多个按键,多个LED灯单点阵扫描函数数组对照
[size=13.333333969116211px]
[size=13.333333969116211px]4) 键盘与点阵
[size=13.333333969116211px]字母输入与实现技术
[size=13.333333969116211px]文本显示技术
[size=13.333333969116211px]多个LED灯,多个按键 键盘
[size=13.333333969116211px]A) 单“位”P口1位--单个灯位输出,单个按键控制硬控制与软控制
[size=13.333333969116211px]一个按键,一盏照明灯,一个继电器。硬件接口问题—线路连接、硬件硬驱动问题(程序称为软驱动)。
[size=13.333333969116211px]说明:
[size=13.333333969116211px]硬件特性,驱动与控制信号,程序编写
[size=13.333333969116211px]由继电器引出的强电驱动电器的控制问题,如电动机交流电机、直流电机、步进电机、伺服电机;单项或多项
[size=13.333333969116211px]






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1