100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【蓝桥杯单片机3】共阳数码管的静态显示

【蓝桥杯单片机3】共阳数码管的静态显示

时间:2022-07-08 18:03:03

相关推荐

【蓝桥杯单片机3】共阳数码管的静态显示

本节要完成的实验现象:8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

训练重点:

1、弄清楚数码管的段码与显示数值之间关系。

2、共阳数码管的基本控制方法,特别是弄清楚COM端与显示码的关系。

1、电路分析

2、共阳数码管F3461BH(4位8段)

显示内容的编码思路:

3、代码实现

/**************************************************************实验现象:8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复***************************************************************/#include "reg52.h"#include "intrins.h"//1-9;A-Funsigned char code SMG_duanma[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};void HC138_state(unsigned char n){switch(n){case 4:P2 = (P2 & 0x1f)|0x80;break;case 5:P2 = (P2 & 0x1f)|0xa0;break;case 6:P2 = (P2 & 0x1f)|0xc0;break;case 7:P2 = (P2 & 0x1f)|0xe0;break;}} //延时函数void Delay500ms()//@11.0592MHz{unsigned char i, j, k;_nop_();_nop_();i = 22;j = 3;k = 227;do{do{while (--k);} while (--j);} while (--i);}//初始化关外设void InitSystem(){HC138_state(5);P0=0x00;//蜂鸣器,继电器都关闭}//数码管显示内容与位置的函数void SMG_Show_Bit(unsigned char dat,unsigned pos){HC138_state(6); //数码管的位置 P0 = 0x01 << pos;HC138_state(7); //数码管的内容 P0 = dat;}void SMG_Static(){//数码管分别单独显示0-9unsigned char i,j,k; for(i=0;i<8;i++){for(j=0;j<10;j++){SMG_Show_Bit(SMG_duanma[j],i);Delay500ms();}}//数码管同时显示0-ffor(k=0;k<16;k++){HC138_state(6);//数码管的位置 P0 = 0xff;HC138_state(7); //数码管的内容 P0 = SMG_duanma[k];Delay500ms();}}void main(){InitSystem();while(1){SMG_Static();}}

4、代码分析

1.显示内容

//1-9;A-F;-;.一共18个字符unsigned char code SMG_duanma[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};

2.控制数码管的显示内容与位置的函数

//数码管显示内容与位置的函数void SMG_Show_Bit(unsigned char dat,unsigned pos){HC138_state(6); //数码管的位置 P0 = 0x01 << pos;HC138_state(7); //数码管的内容 P0 = dat;}

其中显示内容dat=SMG_duanma[i];位置pos=0~7,对应板子第0~7位。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。