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

共19条 2/2 1 2 跳转至
助工
2011-12-26 20:57:48     打赏
11楼

好啊,一定去给你顶一顶!


助工
2011-12-26 20:58:54     打赏
12楼
下面再贴出两个基本程序!欢迎继续关注

助工
2011-12-26 21:04:24     打赏
13楼

下面继续上面的帖子

接着继续是数码管的显示,2位数码管实现1分钟的循环计时
程序如下:
/*使用12M晶振,定时器1实现数码管前两位1分钟循环计时*/
/*J6跳接P37口,J16短接使能*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P3^7;
sbit we0=P2^0;
sbit we1=P2^1;
sbit we2=P2^2;
uchar num,num1;
uchar shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delayms(uint x)//延时x ms
{
 uint y,z;
 for(y=x;y>0;y--)
  for(z=110;z>0;z--);
}

void display(uchar shi,uchar ge)
{
 dula=1;
 P0=table[shi]; //送段选数据
 dula=0;
 P0=0xff;
 we2=0;
 we1=0;
 we0=0;
 delayms(5);

 dula=1;
 P0=table[ge]; //送段选数据
 dula=0;
 P0=0xff;
 we2=0;
 we1=0;
 we0=1;
 delayms(5);
}
void main()
{
 num=0;
 num1=0;
 TMOD=0x10;//设置定时器1为工作方式1
 TH1=(65536-50000)/256;
 TL1=(65536-50000)%256;
 EA=1;//开总中断
 ET1=1;
 TR1=1;
 while(1)
 {
  display(shi,ge);
  if(num==20)
     {
    num=0;
    num1++;
    if(num1==60)
     num1=0;
    shi=num1/10;
    ge=num1%10;
   }
 }
}

void time1() interrupt 3
{
 TH1=(65536-50000)/256;
 TL1=(65536-50000)%256;
 num++; 
}

图片如下:


助工
2011-12-26 21:05:48     打赏
14楼
两位数码管实现1分钟循环计时

再来两张图片


助工
2011-12-26 21:08:19     打赏
15楼

接下来是另外一个基本程序

矩阵键盘---一位数码管实现按键键值显示

程序如下:
/*使用12M晶振,1位数码管显示按键的键值0-F*/
/*J6跳接VCC口,J16短接使能,J11跳接P37口*/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit we0=P2^0;
sbit we1=P2^1;
sbit we2=P2^2;

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delayms(uint x)//延时x ms
{
 uint y,z;
 for(y=x;y>0;y--)
  for(z=110;z>0;z--);
}

uchar keyscan()
{
 uchar scode,rcode;
 P3=0x0f;  //发0扫描,列线输入
 if ((P3 & 0x0f) != 0x0f)  //有键按下
 {
  delayms(10);   //延时去抖动
  if ((P3&0x0f)!= 0x0f)
  {
   scode = 0xef;    //逐行扫描初值
   while((scode&0x01)!=0)
   {
       P3=scode;
    if((P3&0x0f)!=0x0f)
    {
        rcode=(P3&0x0f)|0xf0;
     return((~scode)+(~rcode));
     }
          else
     scode=(scode<<1)|0x01;
   }
  }
 }
 return 0;  //无键按下,返回0 
}

void main()
{
 
 uchar key;
 we2=0;
 we1=0;
 we0=0;
 //点亮第一位数码管
 while(1)
 {
  key=keyscan();
  if(key!=0);
  {
   switch(key)
   {
    case 0x81:P0=table[0];break;
    case 0x82:P0=table[1];break;
    case 0x84:P0=table[2];break;
    case 0x88:P0=table[3];break;

    case 0x41:P0=table[4];break;
    case 0x42:P0=table[5];break;
    case 0x44:P0=table[6];break;
    case 0x48:P0=table[7];break;

    case 0x21:P0=table[8];break;
    case 0x22:P0=table[9];break;
    case 0x24:P0=table[10];break;
    case 0x28:P0=table[11];break;

    case 0x11:P0=table[12];break;
    case 0x12:P0=table[13];break;
    case 0x14:P0=table[14];break;
    case 0x18:P0=table[15];break;

   }
  }
 } 
}

图片如下:


助工
2011-12-26 21:10:02     打赏
16楼

再来两张矩阵键盘按键键值的显示图片




过两天贴出和无线通信模块TC35的演示程序


助工
2011-12-29 20:52:33     打赏
17楼

实现的功能是1个TC35模块实现远端温湿度数据的采集,并可予以报警监测,数据中心端的TC35模块实现数据的接收,并且在PC端上面实时显示出来!

先来几张图片:关于数据中心端的


助工
2011-12-29 20:54:28     打赏
18楼

在实验室做的,没有带相机!图片凑合着看吧,代码会在接下来的楼层中贴出。

再来两张上位机的图片


助工
2011-12-29 20:57:11     打赏
19楼

关于楼上实现的功能的代码
——回复可见内容——
[/hid]


共19条 2/2 1 2 跳转至

回复

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