本人单片机、C语言,初学者菜鸟一枚,有什么需要改进的希望大家多给意见。
上位机是自己用E语言编写的,不知道什么原因个别安全软件会报毒(不放心的慎用)
废话不多说直接上附(码)。
视频:
上位机运行界面:
单片机源码:
- #include"STC15W4K.H"
- #define uchar unsigned char
- #define uint unsigned int
- uchar xx,yy,zz,layer,icnt,rxcnt;
- uchar display[8][8];
- void init()
- {
- AUXR |= 0x01; //串口1选择定时器2为波特率发生器
- AUXR &= 0xFB; //定时器2时钟为Fosc/12,即12T
- T2L = 0xFC; //设定定时初值 11.0592MHz 波特率57600
- T2H = 0xFF; //设定定时初值
- AUXR |= 0x10; //启动定时器2
-
- TH0=0xfa; //0.5微秒@11.0592MHz
- TL0=0xff; //0.5微秒@11.0592MHz
-
- TR0=1; //定时器0开始计时
- TMOD &= 0xF0; //设置定时器模式
-
- SCON=0X50;//串口工作于方式1 可接收REN=1
- PCON|=0x80;//波特率加倍
- EA=1; //开全局中断
- ES=1; //开串口中断
- ET0=1; //开定时器0中断
- PS=1; //配置串口中断优先
- }
- void main()
- {
-
- P0M1=0x00; P0M0=0xff;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0xff;P3M1=0x00; P3M0=0x00;
- P4M1=0x00; P4M0=0xff;P5M1=0x00; P5M0=0xff;P6M1=0x00; P6M0=0xff;P7M1=0x00; P7M0=0xff;
- rxcnt=0;
- init();
- while(1);
- }
- void rxd() interrupt 4 //串口中断服务程序
- {
- uchar temp=0;
- RI=0;
- ++rxcnt;
- if(rxcnt>=2)
- {
- temp=SBUF; //读出接收到的数据
- display[xx][yy]=temp; //按顺序存入显示数组中
- xx++;
- if(xx>=8)
- {
- xx=0;
- yy++;
- if(yy>=8)
- yy=0;
- }
- }
- if(rxcnt>=65)
- rxcnt=0;
- }
- /*****************************************************************/
- void timer0_isr(void) interrupt 1
- {
- uchar i;
- static uchar layer=0;
- P1=0;
- for (i=0;i<8;i++)
- {
- P2=1<<i;
- P0=display[layer][i];
- }
- P1=1<<layer;
- if (layer<7)
- layer++;
- else
- layer=0;
- }
复制代码
全部资料51hei下载地址:
效果预览.7z
(5.29 MB, 下载次数: 41)
|