光立方的显示来一波
单片机源程序如下:
- #include <STC12C5A60S2.H>
- #include "STC12C5A.H"
- #define uint unsigned int
- #define uchar unsigned char
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- sbit L1602_RS_POW=P4^4; //定义电源功能接口 低电平
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- sbit M_HR_DS0=P1^4; //模拟数据发送端口
- sbit M_LR_DS0=P1^5; //模拟数据发送端口
- sbit M_HG_DS0=P1^6; //模拟数据发送端口
- sbit M_LG_DS0=P0^7; //模拟数据发送端口
- sbit CLK=P1^3; //模拟时钟控制端口
- sbit SUO=P1^2; //模拟锁存信号端口
- /*$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$*/
- sbit a=P3^4; //行数据扫描信号
- sbit b=P3^5; //行数据扫
- sbit c=P3^6; //行数
- sbit d=P3^7; //行数据
- sbit en=P1^7; //行数据
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-
- unsigned int CYCLE=100,PWM_LOW=1110,shan=0,saom=0,shuzi1=0,shuzi2=0,shuzi3=0,shuzi4=0;//定义周期并赋值
- unsigned int code tab[]= //在此显示一个字,根据取字模软件进行提取 。将取模软件最后一行八个字节复制过来,
- //再将每个字节复制在其后面,形成16个字节,最后将这一行复制8行。
- //
- {
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
-
- };
- void Delay(unsigned int t)
- {
- while(--t);
- }
- void init()
- {
- P4SW=0xff; //定义P4口为I/O口
- P0M1=0x00; //I/O口0模式控制器0
- P0M0=0xff; //定义P0为强上拉输出.
- P2M1=0x00;
- P2M0=0xff; //定义P2为强上拉输出.
- P4M1=0x00;
- P4M0=0xff; //定义P4为强上拉输出.
- }
- /*##########################################################################################*/
- //************************************伟泽电子科技************************************
- //函数名称:void sendbyte(unsigned int byte);
- //功 能:根据byte值的大小,取出对应tab数组中的值,模拟SPI发送出去一个字节
- //入口参数:byte值,范围0-65535
- //出口参数:无
- //编 写 人:伟泽电子科技
- //编写日期:2015-08-02
- //修改历史:V1.0
- //************************************伟泽电子科技************************************
- void sendbyte(unsigned int byte)
- {
- unsigned char num; //定义需要发送的数据
- unsigned char c; //定义发送一个字节的变量
- num=tab[byte]; //根据byte值取出tab数组中的数据,存入发送数据变量中
- for(c=0;c<8;c++) //循环发送一个字节
- {
- CLK=0; //时钟置低电平启动
- M_LR_DS0=num&0x80; //取出需要发送数据的最高位
- M_LG_DS0=num&0x80; //取出需要发送数据的最高位
- M_HR_DS0=num&0x80; //取出需要发送数据的最高位
- M_HG_DS0=num&0x80; //取出需要发送数据的最高位
- CLK=1; //时钟置高电平结束数据发送
- num<<=1; //将需要发送的数据左移一位
- }
- }
- /*##########################################################################################*/
- //************************************伟泽电子科技************************************
- //函数名称:void hansao(unsigned char hs);
- //功 能:根据入口参数hs的值,进行判断选择哪一行,选通1-16行的选通
- //入口参数:hs的值,范围0-15
- //出口参数:无
- //编 写 人:上升沿电子科技
- //编写日期:2015-08-02
- //修改历史:V1.0
- //************************************上升沿电子科技************************************
- void hansao(unsigned char hs)
- {
- if(hs<16) //判断hs的值是否在行扫描的值范围内,不在范围内不执行任何操作
- {
- if(hs==0) //选通第1行
- {
- a=0;b=0;c=0;d=0; return;
- }
- if(hs==1) //选通第2行
- {
- a=1;b=0;c=0;d=0; return;
- }
- if(hs==2) //选通第3行
- {
- a=0;b=1;c=0;d=0; return;
- }
- if(hs==3) //选通第4行
- {
- a=1;b=1;c=0;d=0; return;
- }
- if(hs==4) //选通第5行
- {
- a=0;b=0;c=1;d=0; return;
- }
- if(hs==5) //选通第6行
- {
- a=1;b=0;c=1;d=0; return;
- }
- if(hs==6) //选通第7行
- {
- a=0;b=1;c=1;d=0; return;
- }
- if(hs==7) //选通第8行
- {
- a=1;b=1;c=1;d=0; return;
- }
- }
- }
- //ps:(a=1,b=2,c=4)
- /*##########################################################################################*/
- void main()
- {
- unsigned char p=0,k=0,l=1,m=1; //定义
- L1602_RS_POW=0; //开机打开电源指示灯
- init();
- Delay(100);
- while (1)
- {
- for(p=0;p<100;p++)
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
实例静态显示一个字.rar
(48.47 KB, 下载次数: 14)
|