标题:
16X64点阵屏上位机软件与下位机单片机程序(串口改字与频谱)
[打印本页]
作者:
阿飞132
时间:
2018-2-20 17:23
标题:
16X64点阵屏上位机软件与下位机单片机程序(串口改字与频谱)
此点阵屏与控制卡的电路原理图与详细制作资料详见:
http://www.51hei.com/bbs/dpj-107584-1.html
上位机字幕软件采用VB.NET编写,所以用此软件需先安装dotnet2.0平台 需要自己去下载
针对16*64点阵,上位机取模大小为16*16的汉字,STC12C5A32S2 内部有32K EEP 可存储1000个汉字,把你需要的字输入文本框点生成字幕后
点发送数据,此时要保证串口与控制卡连接正常。下载完成字幕后 点下设置发送 方可显示,显示过程中可通过设置改变移动速度和显示颜色。
0.png
(18.12 KB, 下载次数: 66)
下载附件
2018-2-20 17:17 上传
附带2个下位机源码:高级--加放大16分频与64分频16X64双色点阵频谱程序与
串口改字16X64点阵单片机源程序如下:
/****************************************
下位机程序:Fucp
上位机软件:Zhanggr
主控芯片;STC12C5A32S2 晶振:18.432M
通信波特率:9600
使用点阵屏 :16*64双色
串口除了下载程序外,也是配置字幕数据的接口,
用USB转串口方便小巧
下面见视频效果:
程序实现功能:
通过上位机字幕软件生成的字幕数据下载到单片机内部的EEPROM
此款单片机内部有32K的EEPROM 所以可以存储1000 个16*16汉字
字幕软件配置16*16字体
其中字体可设置显示颜色 红 绿 黄 三种
可设置移动速度
移动方式目前只有一种左移 往后继续加
其他功能待开发
上位机使用见说明
祝大家学习进步!
*****************************************/
#include "NEW_8051.H"
#include "main.h"
#define light 3 //定义亮度
uchar code hanzi[]; //汉字字模
uchar code hanzi1[]; //汉字字模
// uchar code sw[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};/*16行段码*/
//如果用自己的单片机实验板连接A B C D 一一对应,则用这个扫描数据
//uchar code sw[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,};/*16行段码*///138驱动数据
//下面的A B C D行扫描数据是反向的 配套我们的控制卡用
uchar code sw[16]={0X00,0X08,0x04,0x0C,0X02,0X0A,0X06,0X0E,0X01,0X09,0X05,0X0D,0X03,0X0B,0X07,0X0F};/*16行段码*///138驱动数据
#define DataOut P0
sbit STR=P1^7; //锁存
sbit SCK=P1^6; //时钟
sbit SERr= P0^4; //红色数据
sbit SERg= P0^5; //绿色数据
uchar Move,Speed,line; //时间变量
uint zimuo; //字模计数器
uchar BUFF[20]; //缓存
uchar ucTimeOut;
uchar i;
uint uiBaseAddress=0;
uint uiFontNumber=0;
//void DelayMs(void); // 延时
void in_data(); // 调整移动数据
void rxd_data(); // 串口发送移动数据
/******************************************************/
uchar ucSetSpeed=0;
uchar ucSpeed=3;
uchar ucSetPlateNum=0;
uchar ucPlateNum=0;
uchar ucSetShowMode=0;
uchar ucShowMode=0;
uchar ucSetFontSize=0;
uchar ucFontSize=0;
uchar BuffCount=0;
uchar ucSetFontColor=0;
uchar ucFontColor=0;
uchar DelayMs=0;
uchar l=0;
bit bDelayMsOver=0;
uchar ucEEPArray=0;
uchar ucUdateTime=0;
/*************************/
void DelayMss(void)
{
uchar TempCyc;
for(TempCyc=150;TempCyc>1;TempCyc--)
{;}
}
/**************************延时***********************/
void InitTimer0(void)
{
TMOD|= 0x01;
TH0 = 0x0C4;
TL0 = 0x00;
EA = 1;
ET0 = 1;
TR0 = 1;
}
/***********************************/
void Send_data(unsigned char d) /*从串口发送数据*/
{
ES=0;
SBUF=d;
while(TI==0); //等待发送完毕
TI=0;
ES=1;
}
/*****************************************/
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x0C4;
TL0 = 0x00;
if( ucTimeOut )
{
ucTimeOut--;
if( !ucTimeOut )
{
//bEanle=0;
LED4=1;
}
}
if(ucUdateTime)
{
ucUdateTime--;
if(!ucUdateTime)
{
//uiBaseAddress=0;
//bEanle=0;
}
}
/**************************************/
}
/****************************************/
void LED_Display(void)
{
ucSetPlateNum=byte_read(0x0003);//读取EEPROM里设置的点阵屏块数量(16*64一块)
switch ( ucSetPlateNum )
{
case 0X01:
ucPlateNum=8; //1块
break;
case 0X02:
ucPlateNum=16; //2块
break;
case 0X03:
ucPlateNum=24;//3块
break;
case 0X04:
ucPlateNum=32;//4块
break;
case 0X05:
ucPlateNum=40; //5块
break;
default:
ucPlateNum=8; //1块
break;
}
/***********************************/
ucSetShowMode=byte_read(0x0004); //显示方式
switch ( ucSetShowMode )
{
case 0X01:
ucShowMode=1; //左移
break;
case 0X02:
ucShowMode=2;
break;
case 0X03:
ucShowMode=3;
break;
case 0X04:
ucShowMode=4;
break;
case 0X05:
ucShowMode=5;
break;
default:
ucShowMode=2;
break;
}
/***********************************/
ucSetSpeed=byte_read(0x0000); //移动速度
switch ( ucSetSpeed )
{
case 0X01:
ucSpeed=2;
break;
case 0X02:
ucSpeed=4;
break;
case 0X03:
ucSpeed=6;
break;
case 0X04:
ucSpeed=8;
break;
case 0X05:
ucSpeed=10;
break;
default:
ucSpeed=5;
break;
}
/********************************************/
ucSetFontSize=byte_read(0x0001); //字体大小
switch ( ucSetFontSize )
{
case 0X01:
ucFontSize=16;
break;
default:
ucFontSize=16;
break;
}
/**************************************************/
ucSetFontColor=byte_read(0x0002); //字体颜色
switch ( ucSetFontColor )
{
case 0X01:
ucFontColor=1; //红
break;
case 0X02:
ucFontColor=2; //绿
break;
case 0X03:
ucFontColor=3; //黄
break;
default:
ucFontColor=1;
break;
}
uiFontNumber=(byte_read(0x0100)<<8)+byte_read(0x0101);
}
/*主函数*/
void main()
{
InitTimer0();
uart_init();
Move=0;
zimuo=0;
LED_Display();
//uart_rBIT=1;
/*******************************************/
while(1)
{
while(zimuo<uiFontNumber+64)
{
if(ucShowMode==0x01)
{
while(Move<ucFontSize) //数据移位。
{
for(Speed=0;Speed<ucSpeed;Speed++) //移动速度
{
for(line=0;line<16;line++)
{
in_data(); //调整移动数据
rxd_data();
DataOut=sw[line];
STR=1;//锁存
STR=0;
STR=1;
DelayMss(); //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。
}
}
/****************************************************/
l++;
if(l==16)l=0;
Move++; //移动一步
}
Move=0;
zimuo=zimuo+32;
}
/**********************************************************/
else if(ucShowMode==0x02)
{
}
}
zimuo=0;
}
}
/**********************************************************/
void in_data(void) //调整数据
{
char s;
if(ucShowMode==0x01)//左移
{
if( ucFontSize==16 )//如果字体是16*16
{
for(s=8;s>=0;s--) //i为向后先择字节计数器,zimuoo为向后先字计数器
{
BUFF[2*s+1]=byte_read(0x200+zimuo+1+32*s+2*line); //把第一个字模的第一个字节放入BUFF0中,第二个字模和第一个字节放入BUFF2中
BUFF[2*s]=byte_read(0x200+zimuo+32*s+2*line); //把第一个字模的第二个字节放入BUFF1中,第二个字模的第二个字节放入BUFF3中
}
}
}
}
/***********************发送移动的数据****************************/
void rxd_data(void) //串行发送数据
{
uchar s;
uchar inc,tempyid,temp,k;
if(Move<8)
{
inc=0;
}
else
{
inc=1;
}
for(s=0+inc;s<8+inc;s++) //发送ucSePlateNum字节数据
{
if(l<8)
tempyid=l;
else
tempyid=l-8;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
更新日志:
2012-6-29 10:13:00__Start
2012-6-29 10:13:37__参数设置失败,速度3,16*16,红色,屏数2,左移
2012-6-29 10:13:44__字模数据发送失败---读串口超时
2012-6-29 10:13:55__字模数据发送失败---读串口超时
2012-6-29 10:15:38__参数设置失败,速度3,16*16,红色,屏数2,左移
2012-6-29 10:15:44__字模数据发送成功---( 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓
,潦倒新停浊酒怀。)
2012-6-29 10:15:46__参数设置成功,速度3,16*16,红色,屏数2,左移
2012-6-29 10:38:22__字模数据发送失败---读串口超时
2012-6-29 10:38:32__字模数据发送失败---读串口超时
2012-6-29 10:38:37__参数设置成功,速度2,32*32,红色,屏数2,左移
2012-6-29 10:38:51__字模数据发送成功---( 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓
,潦倒新停浊酒怀。)
2012-6-29 10:54:14__参数设置成功,速度2,32*32,红色,屏数2,左移
2012-6-29 10:58:25__参数设置成功,速度2,32*32,红色,屏数2,左移
2012-6-29 10:58:31__字模数据发送成功---( 《登高》风急天高猿啸哀,渚清沙白鸟飞回。)
2012-6-29 10:59:22__参数设置失败,速度2,16*16,红色,屏数2,左移
2012-6-29 10:59:27__参数设置失败,速度2,16*16,红色,屏数2,左移
2012-6-29 10:59:41__参数设置失败,速度2,16*16,红色,屏数2,左移
2012-6-29 10:59:49__参数设置失败,速度2,16*16,红色,屏数2,左移
2012-6-29 10:59:52__参数设置成功,速度2,16*16,红色,屏数2,左移
2012-6-29 11:00:01__字模数据发送成功---( 《登高》风急天高猿啸哀,渚清沙白鸟飞回。)
2012-6-29 11:00:31__参数设置失败,速度2,32*32,红色,屏数2,左移
2012-6-29 11:00:36__参数设置成功,速度2,32*32,红色,屏数2,左移
2012-6-29 11:01:12__字模数据发送成功---( 《登高》风急天高猿啸哀,渚清沙白鸟飞回。)
2012-6-29 11:01:18__参数设置失败,速度2,32*32,绿色,屏数2,左移
2012-6-29 11:01:22__参数设置成功,速度2,32*32,绿色,屏数2,左移
2012-6-29 11:01:32__参数设置成功,速度2,32*32,黄色,屏数2,左移
2012-6-29 11:01:44__参数设置失败,速度1,32*32,绿色,屏数2,左移
2012-6-29 11:01:55__参数设置成功,速度1,32*32,绿色,屏数2,左移
2012-6-29 11:02:34__字模数据发送成功---( 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓
,潦倒新停浊酒怀。)
2012-6-29 11:02:51__参数设置成功,速度1,32*32,红色,屏数2,左移
2012-6-29 11:04:55__Close
2012-7-26 01:42:44__Start
2012-7-26 01:44:03__字模数据发送成功---( 欢迎光临DIY视界 祝大家制作成功! 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。)
2012-7-26 01:44:14__参数设置失败,速度3,16*16,红色,屏数1,左移
2012-7-26 01:44:19__参数设置失败,速度3,16*16,红色,屏数1,左移
2012-7-26 01:44:24__参数设置失败,速度3,16*16,红色,屏数1,左移
2012-7-26 01:44:35__参数设置失败,速度3,16*16,红色,屏数1,左移
2012-7-26 01:44:47__参数设置失败,速度3,16*16,红色,屏数1,左移
2012-7-26 01:44:53__Close
2012-7-26 01:49:09__Start
2012-7-26 01:50:24__字模数据发送成功---( 欢迎光临DIY视界,祝大家制作成功 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓,潦倒新停浊酒怀。)
2012-7-26 01:50:26__参数设置成功,速度3,16*16,红色,屏数1,左移
2012-7-26 01:52:01__参数设置失败,速度2,16*16,红色,屏数1,左移
2012-7-26 01:52:09__参数设置失败,速度2,16*16,红色,屏数1,左移
2012-7-26 01:52:57__参数设置成功,速度2,16*16,红色,屏数1,左移
2012-7-26 01:53:40__字模数据发送成功---( 欢迎光临DIY视界,祝大家制作成功! 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓,潦倒新停浊酒怀。)
2012-7-26 01:54:03__字模数据发送成功---( 欢迎光临DIY视界,祝大家制作成功! 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓,潦倒新停浊酒怀。)
2012-7-26 01:55:56__字模数据发送成功---( 欢迎光临DIY视界,祝大家制作成功! 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓,潦倒新停浊酒怀。)
2012-7-26 01:56:41__字模数据发送成功---( 欢迎光临DIY视界,祝大家制作成功! 《登高》风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓,潦倒新停浊酒怀。)
2012-7-26 01:57:18__参数设置成功,速度2,16*16,绿色,屏数1,左移
2012-7-26 01:57:54__参数设置成功,速度2,16*16,黄色,屏数1,左移
2012-7-26 01:58:23__参数设置成功,速度1,16*16,黄色,屏数1,左移
2012-7-26 01:59:19__参数设置成功,速度1,16*16,绿色,屏数1,左移
2012-7-26 01:59:58__参数设置成功,速度1,16*16,红色,屏数1,左移
2012-7-26 02:00:07__Close
0.png
(9.97 KB, 下载次数: 67)
下载附件
2018-2-20 17:20 上传
全部资料51hei下载地址:
http://www.51hei.com/bbs/dpj-107584-1.html
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1