菜鸟学C写的第一个程序!<br />要求从PC用COM口下一个32位数据的字模到52缓存,然后用16X16LED点点阵显示!<br />目前程序还有问题下数据后 偶尔显示正确!<br />还请各路高手指教一下!<br />/////////////////////////////////////////////////////////////////////<br />/******************************************************************<br /><br />led.C file<br />Created by fengyeu<br />Date: 2007.10.5<br />Edit date:2007.10.6<br /> <br />*******************************************************************/<br /><br />#include "reg52.h"<br /><br />sbit G=P1^4; //P1.7为显示颜色控制信号端口<br />sbit R=P1^5; //P1.6为显示颜色控制信号端口<br />unsigned char radd=0x00; //接收计数<br />unsigned char data_buf[32];<br />long int i = 0x01;<br /><br />//------------延时函数--------//<br />void delay(unsigned int dt)<br />{<br /> register unsigned char bt;<br /> for(;dt>1;dt--)<br /> for(bt=0;bt<255;bt++);<br />}<br />//---------颜色控制------------//<br />color2()<br />{<br />G=0; //绿<br />R=1;<br />}<br />//------------串口中断部分-------//<br />void Init_Com(void)<br />{<br /> TMOD = 0x20;<br /> PCON = 0x00;<br /> SCON = 0x50; //;串口为方式1 8 UART<br /> TH1 = 0xfd;<br /> TL1 = 0xfd;<br /> TR1 = 1; //;波特率9600<br /> REN = 1;<br /> ES = 1;<br /> EA = 1;<br />}<br />void ComInt() interrupt 4<br />{<br /> unsigned char dat;<br /> ES = 0;<br /> RI = 0;<br /> dat = SBUF;<br /> radd++;<br /> data_buf = dat;<br /> i++;<br /> <br /> SBUF = dat;<br /> do{}while( TI == 0 );<br /> TI = 0;<br /> ES = 1;<br /> <br />}<br />//------------------------<br />void Com_start(void)<br />{<br /> <br /> Init_Com();<br /> if(radd>=32)<br /> {<br /> radd=0x00;<br /> while(1)<br /> {<br />//----------------------------<br /> int k=0xf0;<br /> char dd=1;<br />//------------------------------<br /> for(k=0xf0;dd<32;) //单字扫描;<br /> {<br /> P1=0xff;<br /> color2();<br /> P1=(P1&k);<br /> P0 = data_buf[dd]; //写上半屏<br /> dd++; //取表偏移变量 <br /> P2 = data_buf[dd];<br /> dd++; //取表偏移变量<br /> k++;<br /> if(k>0xff)<br /> {<br /> k=0xf0;<br /> } //取字偏移量 上16列 + 下16列 (32)<br /> delay(2); //此延时为显示一个字后 加亮LED<br /> P0=0x00; //去鬼影/去重影<br /> P2=0x00; //去鬼影/去重影<br /> } <br /> }<br /> }<br />}<br />//---------主函数 ---------//<br />void main(void)<br />{ <br /> P3=0xff; //io初始化<br /> P1=0xff;<br /> P0=0x00;<br /> P2=0x00;<br /> Com_start(); //开串口<br /> color2(); //绿 <br />} |
|