/******************************************************************
led.C file
Created by .... Date: 2007.10.5 Edit date:2007.10.5 *******************************************************************/
#include "reg52.h" //sbit _led = 0x97; sbit G=P1^4; //P1.7为显示颜色控制信号端口 sbit R=P1^5; //P1.6为显示颜色控制信号端口 sbit _led=0x97; //用送缓冲寄存器SBUF里面的内容
//------------延时函数--------// void delay(unsigned int dt) { register unsigned char bt; for(;dt>1;dt--) for(bt=0;bt<255;bt++); }
//---------颜色控制------------//
color2() { G=0; //绿 R=1; } /* color1() { G=0; //粉红 R=0; } color3() { G=1; //红 R=0; }*/
//---------汉字表函数-----------//
led_tab() { //--------------------字模表数组---------------- unsigned char code bmp[]= { 0x10, 0x80, 0x10, 0x43, 0xF0, 0x22, 0x1F, 0x14, 0x10, 0x0C, 0xF0, 0x73, 0x80, 0x20, 0x82, 0x00, 0x82, 0x40, 0x82, 0x80, 0xF2, 0x7F, 0x8A, 0x00, 0x86, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0x07, 0x04, 0x02, 0x04, 0x02, 0xFC, 0x07, 0x00, 0x00, 0x82, 0x04, 0xFA, 0x05, 0x82, 0x04, 0x82, 0x04, 0x82, 0x04, 0x82, 0x44, 0xFE, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00,
//-----------------结束标志表--------------------- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; //------------------------------------------------- //------------------接收缓存------------------// //unsigned char idata buf[]={b1, b2, b3, b4, b5, b6, b7, b8,}; //------------------接收缓存------------------//
while(1) { unsigned char a1=0x00,a3=0x00,a4=0x00,a6=0x00;//变量初始化 long int i=0x00,k=0x00,a2=0x00,a5=0x00; while(1) { for(a1=0;a1<20;a1++) //字移动速度; { for(i=a2,k=0xf0;i<a2+32;) //单字扫描; { P1=0xff; //初始化 color2(); //调用颜色函数 P1=(P1&k); P0=bmp; //写上半屏 i++; //取表偏移变量 P2=bmp; //写下半屏 a4=bmp; //结尾取样 i++; //取表偏移变量 k++; if(k>0xff) { k=0xf0; } //取字偏移量 上16列 + 下16列 (32) delay(2); //此延时为显示一个字后 加亮LED P0=0x00; //去鬼影/去重影 P2=0x00; //去鬼影/去重影 } } a2++; //汉字移动 偏移变量 a2++; //-------------------------------------- if(a4==0x00) //汉字结束标志判断 { a5++; if(a5==16) { a5=0x00; //注意K变量不能清除否则后面会乱 i=0x00, a2=0x00; a3=0x00,a4=0x00,a6=0x00; //变量初始化 } } else { a5=0x00; } //--------------------------------------- } } } //------------串口中断部分------------------------------------- //////////////////////////////////////////////////////////////
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; SBUF = dat; //-------------------------------------- //--------------------------------------
do{}while( TI == 0 ); _led = 0; TI = 0; ES = 1; } void Delay_xMs(unsigned int x) { unsigned int i,j; for( i =0;i < x;i++ ) { for( j =0;j<1000;j++ ); } } void Com_start(void) { Init_Com(); /*while(1) { Delay_xMs(5); //_led = 1; }*/ }
////////////////////////////////////////////////////////////////////
//---------主函数 ---------// void main(void) { P3=0xff; //io初始化 P1=0xff; P0=0x00; P2=0x00; Com_start(); //开串口 //颜色花样控制 可用定时控制----- //color1(); //粉红 color2(); //绿 //color3(); //红 led_tab(); //调用显示函数; } //-------------------------------------------------- |