找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3521|回复: 0
收起左侧

光立方实例静态显示一个字

[复制链接]
ID:212875 发表于 2017-6-20 10:39 | 显示全部楼层 |阅读模式
光立方的显示来一波
单片机源程序如下:
  1. #include <STC12C5A60S2.H>
  2. #include "STC12C5A.H"
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
  6. sbit L1602_RS_POW=P4^4;                 //定义电源功能接口 低电平
  7. /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
  8. sbit M_HR_DS0=P1^4;          //模拟数据发送端口
  9. sbit M_LR_DS0=P1^5;          //模拟数据发送端口
  10. sbit M_HG_DS0=P1^6;          //模拟数据发送端口
  11. sbit M_LG_DS0=P0^7;          //模拟数据发送端口

  12. sbit CLK=P1^3;    //模拟时钟控制端口
  13. sbit SUO=P1^2;          //模拟锁存信号端口

  14. /*$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$*/
  15. sbit a=P3^4;          //行数据扫描信号
  16. sbit b=P3^5;          //行数据扫
  17. sbit c=P3^6;          //行数
  18. sbit d=P3^7;          //行数据
  19. sbit en=P1^7;           //行数据
  20. /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

  21. unsigned int CYCLE=100,PWM_LOW=1110,shan=0,saom=0,shuzi1=0,shuzi2=0,shuzi3=0,shuzi4=0;//定义周期并赋值
  22. unsigned int code tab[]= //在此显示一个字,根据取字模软件进行提取 。将取模软件最后一行八个字节复制过来,
  23.                                                 //再将每个字节复制在其后面,形成16个字节,最后将这一行复制8行。
  24.                                                 //
  25. {
  26. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
  27. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
  28. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
  29. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
  30. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
  31. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
  32. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
  33. 0xDF, 0xDF,0xDF,0xDF, 0xDF,  0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,

  34. };
  35. void Delay(unsigned int t)
  36. {
  37. while(--t);
  38. }

  39. void init()
  40. {
  41. P4SW=0xff;                //定义P4口为I/O口
  42. P0M1=0x00;                                         //I/O口0模式控制器0     
  43. P0M0=0xff;                //定义P0为强上拉输出.
  44. P2M1=0x00;
  45. P2M0=0xff;                //定义P2为强上拉输出.
  46. P4M1=0x00;
  47. P4M0=0xff;                //定义P4为强上拉输出.
  48. }
  49. /*##########################################################################################*/
  50. //************************************伟泽电子科技************************************
  51. //函数名称:void sendbyte(unsigned int byte);
  52. //功    能:根据byte值的大小,取出对应tab数组中的值,模拟SPI发送出去一个字节
  53. //入口参数:byte值,范围0-65535
  54. //出口参数:无
  55. //编 写 人:伟泽电子科技
  56. //编写日期:2015-08-02
  57. //修改历史:V1.0
  58. //************************************伟泽电子科技************************************
  59. void sendbyte(unsigned int byte)
  60. {   
  61.    unsigned char num;                 //定义需要发送的数据
  62.    unsigned char c;                  //定义发送一个字节的变量
  63.    num=tab[byte];                         //根据byte值取出tab数组中的数据,存入发送数据变量中
  64.    for(c=0;c<8;c++)                         //循环发送一个字节
  65.    {
  66.       CLK=0;                                  //时钟置低电平启动
  67.       M_LR_DS0=num&0x80;                         //取出需要发送数据的最高位
  68.           M_LG_DS0=num&0x80;                         //取出需要发送数据的最高位
  69.           M_HR_DS0=num&0x80;                         //取出需要发送数据的最高位
  70.           M_HG_DS0=num&0x80;                         //取出需要发送数据的最高位
  71.       CLK=1;                                  //时钟置高电平结束数据发送
  72.       num<<=1;                         //将需要发送的数据左移一位
  73.    }
  74. }
  75. /*##########################################################################################*/
  76. //************************************伟泽电子科技************************************
  77. //函数名称:void hansao(unsigned char hs);
  78. //功    能:根据入口参数hs的值,进行判断选择哪一行,选通1-16行的选通
  79. //入口参数:hs的值,范围0-15
  80. //出口参数:无
  81. //编 写 人:上升沿电子科技
  82. //编写日期:2015-08-02
  83. //修改历史:V1.0
  84. //************************************上升沿电子科技************************************
  85. void hansao(unsigned char hs)     
  86. {
  87.         if(hs<16)                          //判断hs的值是否在行扫描的值范围内,不在范围内不执行任何操作
  88.         {
  89.                 if(hs==0)                  //选通第1行
  90.                 {
  91.                 a=0;b=0;c=0;d=0;   return;
  92.                 }
  93.                 if(hs==1)                  //选通第2行
  94.                 {
  95.                 a=1;b=0;c=0;d=0;   return;
  96.                 }
  97.                 if(hs==2)                  //选通第3行
  98.                 {
  99.                 a=0;b=1;c=0;d=0;   return;
  100.                 }
  101.                 if(hs==3)                  //选通第4行
  102.                 {
  103.                 a=1;b=1;c=0;d=0;   return;
  104.                 }
  105.                 if(hs==4)                  //选通第5行
  106.                 {
  107.                 a=0;b=0;c=1;d=0;   return;
  108.                 }
  109.                 if(hs==5)                  //选通第6行
  110.                 {
  111.                 a=1;b=0;c=1;d=0;   return;
  112.                 }
  113.                 if(hs==6)                  //选通第7行
  114.                 {
  115.                 a=0;b=1;c=1;d=0;   return;
  116.                 }
  117.                 if(hs==7)                  //选通第8行
  118.                 {
  119.                 a=1;b=1;c=1;d=0;   return;
  120.                 }
  121.         }
  122. }      
  123. //ps:(a=1,b=2,c=4)
  124. /*##########################################################################################*/
  125. void main()
  126. {
  127. unsigned char p=0,k=0,l=1,m=1;          //定义
  128. L1602_RS_POW=0;    //开机打开电源指示灯
  129. init();
  130. Delay(100);

  131.         while (1)
  132.     {
  133.                 for(p=0;p<100;p++)               
  134.                 {
  135. ……………………

  136. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
实例静态显示一个字.rar (48.47 KB, 下载次数: 14)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表