动态数码管——小白的单片机笔记

138译码器控制LED数码管使能 138译码器的ABC接口接线:

A=P2^2;
B=P2^3;
C=P2^4;

74H245与P0口通讯控制数码管显示内容。

*******************************************************************

教程视频的控制内容:

是数码管自右向左依次显示01234567

程序如下:

#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;

sbit YMQA=P2^2;
sbit YMQB=P2^3;
sbit YMQC=P2^4;   //定义138译码器接口与单片机接口
u8 code smgd[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71}; //利用数组来存储数码管码表

//延时函数

void delay(u16 i)
{
while(i--);

}

//循环扫描显示函数
void digDisplay()
{
u8 i;
  for(i=0;i<8;i++)
{
  switch(i)
    {case(0): YMQA=0;YMQB=0;YMQC=0;break;
    case(1): YMQA=1;YMQB=0;YMQC=0;break;
    case(2): YMQA=0;YMQB=1;YMQC=0;break;
    case(3): YMQA=1;YMQB=1;YMQC=0;break;
    case(4): YMQA=0;YMQB=0;YMQC=1;break;
    case(5): YMQA=1;YMQB=0;YMQC=1;break;
    case(6): YMQA=0;YMQB=1;YMQC=1;break;
    case(7): YMQA=1;YMQB=1;YMQC=1;break;
    }
    P0=smgd[i];
  delay(200);//此处必须加延时,保证人眼能识别亮度同时延时不能太长,产生段落感(此程序意在快速循环扫描,让人产生八个数码管同时显示的错觉)
  P0=0x00;
}

}

void main()
{

while(1)
{

digDisplay();

}
}

***************************************

以下为个人改变可以控制某个数码管循环显示0——F

#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgd[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00
} ;
sbit ymqA=P2^2;
sbit ymqB=P2^3;
sbit ymqC=P2^4;
void delay(u16 i)
{
while(i--);

}

void display(u8 value,u8 No) //显示函数控制第No个数码管,显示value。
{
switch(No)
{
case 1:ymqA=0;ymqB=0;ymqC=0;break;
case 2:ymqA=1;ymqB=0;ymqC=0;break;
case 3:ymqA=0;ymqB=1;ymqC=0;break;
case 4:ymqA=1;ymqB=1;ymqC=0;break;
case 5:ymqA=0;ymqB=0;ymqC=1;break;
case 6:ymqA=1;ymqB=0;ymqC=1;break;
case 7:ymqA=0;ymqB=1;ymqC=1;break;
case 8:ymqA=1;ymqB=1;ymqC=1;break;
}
P0=smgd[value];
delay(100);//加入延时
}

void main()
{
u8 i=0;
for(i=0;i<16;i++)
{
display(i,5);
delay(50000);
}

}

时间: 2024-10-16 09:10:21

动态数码管——小白的单片机笔记的相关文章

静态数码管——小白的单片机笔记

数码管按照接线方式分为:共阴和共阳. 对于实验板的数码管器工作过程如下: 单片机通过接口(在此为P2^2,P2^3,P2^,4)与138译码器通讯,译码器Y0接口使最后一个LED数码管工作. P0口发送数据显示. *************************************** 程序如下: #include"reg52.h"typedef unsigned char u8;typedef unsigned int u16; sbit YMQA=P2^2; sbit YMQ

无源蜂鸣器——小白的单片机笔记

蜂鸣器分类:有源蜂鸣器,无源蜂鸣器. 这里的"源"不是指电源.而是指震荡源. 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫. 而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它. 有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路. 无源蜂鸣器的优点是:1.便宜2.声音频率可控,可以做出"多来米发索拉西"的效果.3.在一些特例中,可以和LED复用一个控制口有源蜂鸣器的优点是:程序控制方便 .****************

一天:51单片机从入门到一个动态数码管显示数字控制

最近进的公司是一个做路由器的..很多嵌入式工程师.有个项目( 智能空调控制)是跟嵌入式工程师对接,我做APP+PHP..他做服务器.我们用MQTT(由于emqtt是用erlang写的,所以我也学了点erlang,后期有时间分享一下,这个语言很好,很强大.特别抽象).这个项目激发了我对嵌入式的兴趣,于是乎.开始从51单片机搞起了..所以就有了这篇文章...今天搞得东西挺多.我最近都是笔记形式,不想以前写的那么详细...因为学的东西太多,白天在公司搞项目,没时间写太具体... 今天学了什么呢? >k

AVR第7课:动态数码管

以下是动态数码管的电路图. 代码:动态数码管. /* *author:ChenLu *date:2014.11.20 */ //input the head file so that the program can work normally //iom16v---know the register //macros---know the BIT(x) #include<iom16v.h> #include<macros.h> //use those can make your s

led流水灯 动态数码管 52单片机

#include "reg52.h" #include<intrins.h> void delay(int i) { while(i--); } void main() { char i; led=0xfe; delay(50000); while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1); delay(50000); } for(i=0;i<7;i++) { P2=_crled_(P2,1); delay(50000);

【黑金教程笔记之008】【建模篇】【Lab 07 数码管电路驱动】—笔记

实验七的目的是设计实现最大为99数字在2个数码管上.采用同步动态扫描.即行信号和列信号同步扫描.这里数码管是共阳极的.选择端口也是共阳极的. 模块: 1 /************************************* 2 module name: number_mod_module.v 3 function: generate ten-bit and one-bit 4 number. 5 6 by yf.x 7 2014-11-11 8 9 *******************

【动态树问题】LCT学习笔记

我竟然还不会LCT QAQ真是太弱了 必须学LCT QAQ ------------------线割分是我www------------ LinkCut-Tree是基于Splay(因为Splay可以很快的支持合并和分离,当然fhqTreap也可以但是复杂度会多一个log)的一种动态维护树的权值形态的方法.基本做法是基于轻重链(注意这里的轻重链和树链剖分的轻重链定义并不一样)将树分成若干Splay森林,然后对这个Splay森林进行各种鬼畜的操作. 由Sleator和Tarjan发明,操作和查询的复

2016.3.11_JS动态创建div和span【笔记】

1.动态创建div. <html> <body>   <a href="javascript:click();">click here</a>  </body></html><script language=javascript>        var divId=1;         function click()        {            var obj=document.creat

Java小白入门学习笔记demo1输出helloworld

public class Hello{//公共   类     类名  public static void main(String[] args){ //     公共   静态  无返回值 主方法(字符串[] 参数)   System.out.println("helloworld"); //   系统.输出.打印换行(输出内容); // 输出语句,首字母必须大写,println为输出内容后自动换行,print输出内容不换行 }}