打印

国庆!菜鸟学C写的第一个程序!

[复制链接]
1994|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fengyeu|  楼主 | 2007-10-7 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
菜鸟学C写的第一个程序!
要求从PC用COM口下一个32位数据的字模到52缓存,然后用16X16LED点点阵显示!
目前程序还有问题下数据后 偶尔显示正确!
还请各路高手指教一下!
/////////////////////////////////////////////////////////////////////
/******************************************************************

led.C  file
Created by fengyeu
Date: 2007.10.5
Edit date:2007.10.6
            
*******************************************************************/

#include "reg52.h"

sbit G=P1^4;                    //P1.7为显示颜色控制信号端口
sbit R=P1^5;                    //P1.6为显示颜色控制信号端口
unsigned char radd=0x00;        //接收计数
unsigned char data_buf[32];
long int   i = 0x01;

//------------延时函数--------//
void delay(unsigned int dt)
{
  register unsigned char bt;
  for(;dt>1;dt--)
  for(bt=0;bt<255;bt++);
}
//---------颜色控制------------//
color2()
{
G=0;        //绿
R=1;
}
//------------串口中断部分-------//
void Init_Com(void)
{
     TMOD = 0x20;
     PCON = 0x00;
     SCON = 0x50;    //;串口为方式1    8 UART
     TH1 = 0xfd;
     TL1 = 0xfd;
     TR1 = 1;       //;波特率9600
     REN = 1;
     ES = 1;
     EA = 1;
}
void ComInt() interrupt 4
{
    unsigned char dat;
    ES = 0;
    RI = 0;
    dat = SBUF;
    radd++;
    data_buf = dat;
    i++;
    
    SBUF = dat;
    do{}while( TI == 0 );
    TI = 0;
    ES = 1;
    
}
//------------------------
void Com_start(void)
{
  
  Init_Com();
  if(radd>=32)
  {
   radd=0x00;
   while(1)
  {
//----------------------------
   int    k=0xf0;
   char dd=1;
//------------------------------
    for(k=0xf0;dd<32;) //单字扫描;
       {
        P1=0xff;
        color2();
         P1=(P1&k);
        P0 = data_buf[dd];        //写上半屏
        dd++;                    //取表偏移变量       
        P2 = data_buf[dd];
        dd++;                    //取表偏移变量
        k++;
        if(k>0xff)
        {
         k=0xf0;
        }                    //取字偏移量  上16列 + 下16列 (32)
        delay(2);            //此延时为显示一个字后 加亮LED
        P0=0x00;            //去鬼影/去重影
        P2=0x00;            //去鬼影/去重影
       }      
  }
  }
}
//---------主函数  ---------//
void main(void)

  P3=0xff;    //io初始化
  P1=0xff;
  P0=0x00;
  P2=0x00;
  Com_start();    //开串口
  color2();       //绿      
}

相关帖子

沙发
123654789| | 2007-10-7 16:25 | 只看该作者

楼主 的 程序 是 51系列

为什么 发表 到 ARM

难道 ???

使用特权

评论回复
板凳
fengyeu|  楼主 | 2007-10-7 16:34 | 只看该作者

因为ARM里高手多

因为ARM里高手多
原理图

使用特权

评论回复
地板
fengyeu|  楼主 | 2007-10-7 16:50 | 只看该作者

本来想有2440做的但是没有外扩接口

本来想用2440做的但是没有外扩 接口 排线。(小的那种)
还有如果用2440的话是不是需要,加3.3转5V借口电路啊?
还有如果用2440的话是不是需要,加3.3转5V借口电路啊?

现在主要是把C练好?

使用特权

评论回复
5
阿南| | 2007-10-7 17:38 | 只看该作者

专门学C的最好方法还是脱离硬件,在PC机上为好,

windows、Linux都可以!
为了更好更快的得到别人的解答,楼主去侃单片版发帖会比较合适,呵呵!祝好

使用特权

评论回复
6
sodwell| | 2007-10-7 18:55 | 只看该作者

re

没事就写C语言库函数!

使用特权

评论回复
7
fengyeu|  楼主 | 2007-10-7 20:03 | 只看该作者

阿南说的也对看来我要把51换成2440了

阿南说的也对看来我要把51换成2440了
我前些日子,
买2440是因为2440开发板,的硬件资源丰富。
IIC IIS  COM SPI等等都有,软硬件一起学
我就一个人,没有精力自己做。
只有买开发板了
除了论坛 也,没有人可问了!
孤独中。。。。。。。。。。。

使用特权

评论回复
8
fengyeu|  楼主 | 2007-10-8 12:42 | 只看该作者

大跃进??

我只是想有那位同志!
能够帮我看看问题错在那里!
我自己也在检查。在想,
每个人的学习方法不同!(给我点自由吧)?
呵呵!
哎我还是去单片机栏去吧?

使用特权

评论回复
9
arder| | 2007-10-10 14:30 | 只看该作者

学习开发板

http://www.myesw.cn
电子方案网,提供各种廉价学习开发板。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

446

帖子

0

粉丝