这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » whlgzf的MCU DIY进程贴

共4条 1/1 1 跳转至

whlgzf的MCU DIY进程贴

菜鸟
2011-12-13 21:49:08     打赏
(一)流水灯 到目前为止咱们可以进行的开发就是流水灯了,但是花样很多也很漂亮,这里仅展示之一吧: #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--); }



关键词: whlgzf     进程     LedOut    

院士
2011-12-14 08:27:11     打赏
2楼
whlgzf1,这是你的第一帖吗?

助工
2011-12-14 09:42:25     打赏
3楼

菜鸟
2011-12-14 21:16:36     打赏
4楼
之前的whlgzf帐号死活登陆不上,就重新注册个,发帖名称还是使用之前的,抱歉了!

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]