(一)流水灯 到目前为止咱们可以进行的开发就是流水灯了,但是花样很多也很漂亮,这里仅展示之一吧: #include<reg52.h> Typedef unsigned char uchar; Uchar code num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; Void delay() { For (int i=0;1!=100;i++) For(int j=0;j!=1000;j++){}; } Void main() { While(1) { For(int i=0;i!=15;i++) { P1=num[i]; Delay();} } } |
当然,实现方法很多种,这里举例的是一种,还可以使用_crol_(,)函数的调用来实现,这里不进行举例了。 (二)七位数码管: 这里原理就不多讲了,主要一点是数码管是共阴还是共阳的,主要和74HC573和74HC138有关系了,我们以共阴数码管为例进行测试:注意J6需要2、3短接上,J16上把两端口短接上。 测试程序如下: #include <reg51.h> #include <intrins.h> sbit LS138A = P2^0; //定义138译码器的输入A脚由P2.0控制 sbit LS138B = P2^1; //定义138译码器的输入脚B由P2.1控制 sbit LS138C = P2^2; //定义138译码器的输入脚C由P2.2控制 void delay(unsigned int i); //函数声名 char DelayCNT; //此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; /************主函数**********************/ main() { unsigned int i,LedNumVal=1 ; unsigned int LedOut[10]; DelayCNT=0; while(1) //进入循环状态 { if(++DelayCNT>=50) { DelayCNT=0; //延时计数 每扫描一次加一次 ++LedNumVal; //每隔50个扫描周期加一次 } LedOut[0]=Disp_Tab[LedNumVal%10000/1000]; LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80; LedOut[2]=Disp_Tab[LedNumVal%100/10]; LedOut[3]=Disp_Tab[LedNumVal%10]; LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位 LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点 LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位 LedOut[7]=Disp_Tab[LedNumVal%10]; //个位 for( i=0; i<9; i++) //实现8位动态扫描循环 { P0 = LedOut[i]; //将字模送到P0口显示 switch(i)//使用switch 语句控制位选 { case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break; case 3:LS138A=1; LS138B=1; LS138C=0; break; case 4:LS138A=0; LS138B=0; LS138C=1; break; case 5:LS138A=1; LS138B=0; LS138C=1; break; case 6:LS138A=0; LS138B=1; LS138C=1; break; case 7:LS138A=1; LS138B=1; LS138C=1; break; } delay(150); } } } /********************************************************************** 延时子程序 *********************************************************************/ void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); } |
共4条
1/1 1 跳转至页
whlgzf的MCU DIY进程贴
关键词: whlgzf 进程 LedOut
共4条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |