五脚18.8数码管显示

今天抽空用将五脚的18.8数码管驱动程序研究了一下,将其过程记录如下:


数字1到5表示对应的数码管引脚,利用二极管的单向导通性来点亮单独的LED

数码管需要亮灯的高低电平点亮,不亮灯的IO口一定要设为高阻。

例如:点亮B3段,数码管2脚(单片机P3.3设置为推挽输出模式)高电平;数码管1脚(单片机P3.2设置为准双向口模式)低电平;在将P3.2设置为低电平输出就可以点亮B3段了;

自己总结:
高电平推挽输出模式;
低电平准双向口模式;
其余不亮的设置高阻输入模式;

用笨办法,一段一段点亮``,

以下是测试段位的测试程序:

# include <STC8G.H>
//3位6脚的,原理差不多,用笨办法,一段一段点亮,用switch,组成段码,小数点,STC8G1K08,接的P32-P36
/************************************************************************************/
#define DELAY       1   //设置每一个点显示的时间长度(1~20)
#define uchar unsigned char
#define uint unsigned intvoid delay (uint a)//延时{ uint i;while( a-- != 0){ for(i = 0; i < DELAY; i++); }
}/****测试段码函数*****/
void DG1()
{     P3M1 = 0xCF;  P3M0 = 0x10;  P3 = 0xDF;   delay(x);    //1BP3M1 = 0xD7;  P3M0 = 0x08;  P3 = 0xDF;   delay(x);    //1C P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2AP3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2BP3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0xB7;  P3M0 = 0x40;  P3 = 0xF7;   delay(x);    //2EP3M1 = 0xAF;  P3M0 = 0x40;  P3 = 0xEF;   delay(x);    //2F P3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2G   P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3AP3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3BP3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3CP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3DP3M1 = 0xDB;  P3M0 = 0x04;  P3 = 0xDF;   delay(x);    //3E P3M1 = 0xDB;  P3M0 = 0x20;  P3 = 0xFB;   delay(x);    //3FP3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3GP3M1 = 0xAF;  P3M0 = 0x10;  P3 = 0xBF;   delay(x);    //IP3M1 = 0xB7;  P3M0 = 0x08;  P3 = 0xBF;   delay(x);    //JP3M1 = 0x9F;  P3M0 = 0x20;  P3 = 0xBF;   delay(x);    //HP3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP}void main (void){ //主程序 init();while (1){DG1(); //测试代码}
}

下面是将其用switch,组成段码,小数点;
从18.8倒减,

# include <STC8G.H>
单片机STC8G1K08,PIN1-PIN5接的P32-P36
/************************************************************************************/
#define DELAY       1   //设置每一个点显示的时间长度(1~20)
#define uchar unsigned char
#define uint unsigned int
uint TIME_SS=188;
uint C=0;
uint x=100;void delay (uint a)//延时{ uint i;while( a-- != 0){ for(i = 0; i < DELAY; i++); }
}
/************************************************************************************/
void init (void){ //上电初始化TMOD = 0x01;         // 定时/计数器0,1工作于方式1   TH0 = 0xcd;          // 预置产生50ms时基信号   TL0 = 0xd4;   EA  = 1;             // 开总中断   ET0 = 1;             // 定时/计数器0允许中断   TR0 = 1;             // 开闭定时/计数器0
}/**第一位显示,只显示1**/void DG1(int a)
{P3M1 = 0xCF;  P3M0 = 0x10;  P3 = 0xDF;   delay(x);    //1BP3M1 = 0xD7;  P3M0 = 0x08;  P3 = 0xDF;   delay(x);    //1C
}/**第二位显示含小数点,只显示0.-9.**/void DG2(int a)
{switch(a){  case 0:{P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A   //0.P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2BP3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0xB7;  P3M0 = 0x40;  P3 = 0xF7;   delay(x);    //2EP3M1 = 0xAF;  P3M0 = 0x40;  P3 = 0xEF;   delay(x);    //2F P3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP            break;}case 1:{P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2B   //1.P3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2C P3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP              break;} case 2:{P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A   //2.P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2BP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0xB7;  P3M0 = 0x40;  P3 = 0xF7;   delay(x);    //2EP3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2G  P3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP             break;}     case 3:{P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A   //3.P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2BP3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2G P3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP              break;}case 4:{P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2B   //4.P3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xAF;  P3M0 = 0x40;  P3 = 0xEF;   delay(x);    //2F P3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2G P3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP               break;} case 5:{P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A   //5.P3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0xAF;  P3M0 = 0x40;  P3 = 0xEF;   delay(x);    //2F P3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2GP3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP              break;} case 6:{P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A   //6.P3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0xB7;  P3M0 = 0x40;  P3 = 0xF7;   delay(x);    //2EP3M1 = 0xAF;  P3M0 = 0x40;  P3 = 0xEF;   delay(x);    //2F P3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2G P3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP                break;} case 7:{P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A   //7.P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2BP3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP break;} case 8:{P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A  //8.P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2BP3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0xB7;  P3M0 = 0x40;  P3 = 0xF7;   delay(x);    //2EP3M1 = 0xAF;  P3M0 = 0x40;  P3 = 0xEF;   delay(x);    //2F P3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2GP3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP             break;} case 9:{    P3M1 = 0xE7;  P3M0 = 0x08;  P3 = 0xEF;   delay(x);    //2A  //9.P3M1 = 0xE7;  P3M0 = 0x10;  P3 = 0xF7;   delay(x);    //2BP3M1 = 0xCF;  P3M0 = 0x20;  P3 = 0xEF;   delay(x);    //2CP3M1 = 0xD7;  P3M0 = 0x20;  P3 = 0xF7;   delay(x);    //2DP3M1 = 0xAF;  P3M0 = 0x40;  P3 = 0xEF;   delay(x);    //2F P3M1 = 0x9F;  P3M0 = 0x40;  P3 = 0xDF;   delay(x);    //2G P3M1 = 0xBB;  P3M0 = 0x04;  P3 = 0xBF;   delay(x);    //DP         break;}                                                  }
}
/**第三位显示,只显示0-9**/void DG3(int a)
{switch(a){  case 0:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A   //0P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3BP3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3CP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3DP3M1 = 0xDB;  P3M0 = 0x04;  P3 = 0xDF;   delay(x);    //3E P3M1 = 0xDB;  P3M0 = 0x20;  P3 = 0xFB;   delay(x);    //3Fbreak;}   case 1:{ P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3B  //1P3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3Cbreak;}case 2:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A  //2P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3BP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3DP3M1 = 0xDB;  P3M0 = 0x04;  P3 = 0xDF;   delay(x);    //3E P3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3Gbreak;}   case 3:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A  //3P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3BP3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3CP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3D  P3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3Gbreak;} case 4:{ P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3B  //4P3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3C P3M1 = 0xDB;  P3M0 = 0x20;  P3 = 0xFB;   delay(x);    //3FP3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3Gbreak;}  case 5:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A  //5P3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3CP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3DP3M1 = 0xDB;  P3M0 = 0x20;  P3 = 0xFB;   delay(x);    //3FP3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3Gbreak;}   case 6:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A  //6P3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3CP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3DP3M1 = 0xDB;  P3M0 = 0x04;  P3 = 0xDF;   delay(x);    //3E P3M1 = 0xDB;  P3M0 = 0x20;  P3 = 0xFB;   delay(x);    //3FP3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3Gbreak;} case 7:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A  //7P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3BP3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3Cbreak;}case 8:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A  //8P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3BP3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3CP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3DP3M1 = 0xDB;  P3M0 = 0x04;  P3 = 0xDF;   delay(x);    //3E P3M1 = 0xDB;  P3M0 = 0x20;  P3 = 0xFB;   delay(x);    //3FP3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3Gbreak;}case 9:{P3M1 = 0xF3;  P3M0 = 0x04;  P3 = 0xE7;   delay(x);    //3A  //9P3M1 = 0xF3;  P3M0 = 0x08;  P3 = 0xFB;   delay(x);    //3BP3M1 = 0xEB;  P3M0 = 0x04;  P3 = 0xEF;   delay(x);    //3CP3M1 = 0xEB;  P3M0 = 0x10;  P3 = 0xFB;   delay(x);    //3D         P3M1 = 0xDB;  P3M0 = 0x20;  P3 = 0xFB;   delay(x);    //3FP3M1 = 0xBB;  P3M0 = 0x40;  P3 = 0xFB;   delay(x);    //3Gbreak;}  }
}/**第四位显示,点亮H段**/void DG4()
{P3M1 = 0x9F;  P3M0 = 0x20;  P3 = 0xBF;   delay(x);    //H
}/**第五位显示,点亮I段**/void DG5()
{P3M1 = 0xAF;  P3M0 = 0x10;  P3 = 0xBF;   delay(x);    //I
}/**第六位显示,点亮J段**/void DG6()
{P3M1 = 0xB7;  P3M0 = 0x08;  P3 = 0xBF;   delay(x);    //J
}void main (void){ //主程序 init();while (1){DG1(TIME_SS/100);DG2(TIME_SS%100/10);DG3(TIME_SS%100%10); DG4();DG5();DG6();  }
}   /***********************************************************************************/
void tiem0(void) interrupt 1  // 中断服务程序(产生500ms时基信号)   {   C++;                  if(C>50){                C = 0;              TIME_SS--;              if(TIME_SS <0){    TIME_SS = 188;          }  }       TH0 = 0xcd;                TL0 = 0xd4;
}

五脚18.8数码管显示相关推荐

  1. 8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。

    8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8. 程序: #include<reg51.h> #include<absacc.h> #def ...

  2. PLC实验五(LED数码管显示控制)

    PLC实验五(LED数码管显示控制)

  3. FPGA初探(五)之两位数码管显示

    两位数码管显示 目标: 共阳极数码管实现动态显示 实现过程规划(功能分解,分步实现): 取得两位数0~99, 第一步,分成个位十位, 第二步,将个位十位转换为数码管编码, 第三步,数码管显示模块: 1 ...

  4. 【Arduino实验10 数码管显示】

    目录 一.实验目的 二.实验设备与环境 三.实验重点 四.实验难点 五.实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一.实验目的 (1)掌握1位数码管模块的 ...

  5. 【正点原子FPGA连载】第三十一章RTC实时时钟数码管显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  6. FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

    2019级电子科学与技术专业FPGA课程设计 报   告 2022  年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用ED ...

  7. arduino数码管显示0到9_少儿Python程序第十二讲:单片机控制数码管

    本讲继续学习用Python控制单片机,并用单片机连接和控制其它硬件,具体目标是利用开发板控制四位数码管,显示指定的数字.实验效果如图12.1所示: 图12.1 单片机控制四位数码管显示数字 注意:请先 ...

  8. c语言编写闹钟主程序流程图,基于STC15W4K58S4单片机的电子万年历设计源码与报告(数码管显示)...

    基于STC15W4K58S4单片机的电子万年历(数码管显示)该压缩包包含源码TXT文件 源工程文件(Keil uVision4文件)和课程设计报告 电子时钟的设计 -单片机综合设计报告 目录 1  任 ...

  9. python turtle 绘制七段数码管以及14段数码管显示字母和时间

    目录 书上的7段数码管,显示时间 书上的7断数码管显示应功都看过了,这里顺便提供一下` 看看显示原理 14段模型 14位数码管,画英文,和数字 书上的7段数码管,显示时间 书上的7断数码管显示应功都看 ...

最新文章

  1. php文件的标准格式化,PHP获取文件大小并格式化的几种方法
  2. mybaits二十九:mybatis工作原理以及源码分析
  3. se30分析程序运行时间实例
  4. mllib调参 spark_从Spark MLlib到美图机器学习框架实践
  5. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...
  6. linux实验之文件与文件,linux实验报告文件系统与文件管理.doc
  7. 递归 与 动态规划 区别
  8. mybatisplus 操作另一个数据库的数据_实例分析:python操作数据库项目
  9. 有了这款低代码工具,开发可以告别996啦
  10. android的GCM研究
  11. Xshell“所选的用户密钥未在远程主机上注册”解决办法
  12. 熊猫压缩怎么使用_您应该可以使用熊猫库做的几件事
  13. 利用Python脚本给图片批量添加文字水印
  14. Java POI 导出Excel,设置单元格无法编辑, 开启工作表保护后,依然可以筛选, 冻结行列不移动
  15. Google GMS包中的applist
  16. 天津春考计算机知识,2014天津春季高考计算机基础考试大纲
  17. gitlab Push 异常:commiter(xxx)不是GitLab中的中文名
  18. MFC Windows程序设计 读书笔记2
  19. php函数echo,PHP echo()函数讲解
  20. 219二队老虎全程直击报道野外生存挑战赛

热门文章

  1. SMIL 2.0 基础教程[转]
  2. 清华大学OpenBMB正式开源部署至OpenI启智社区:让大模型飞入千家万户
  3. 【算法基础】一维前缀和 + 二维前缀和
  4. 机器学习指南_机器学习项目的研究指南
  5. HTML 基本选择器
  6. DEM数据(ASTER GDEM|SRTM|GLS2005|ALOS DEM|NASA DEM)下载
  7. STM32入门-学习STM32要掌握的内容
  8. Unity3D 游戏引擎之构建简单的游戏世界(三)
  9. java实现的五子棋
  10. ISP pipeline之lens shading correction