找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2298|回复: 4
打印 上一主题 下一主题
收起左侧

单片机驱动24*24点阵屏老是闪烁求大神帮忙

[复制链接]
跳转到指定楼层
楼主
ID:551339 发表于 2019-10-24 18:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
24*24点阵屏老是闪烁求大神帮忙,点阵屏采用三块128译码器和三块595


  1. #include "kaijitu.h"



  2. void InputTo595(u8 *displayBuff);


  3. void OutputFrom595();





  4. u8 code Math_1_1 [4][8]={{0x77,0xFF,0x07,0x0A,0x13,0x23,0x43,0x82},
  5.                                                  {0x20,0x30,0x30,0x30,0x30,0x30,0x30,0xF0},
  6.                                                  {0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0x30},
  7.                                                  {0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x98}
  8.                                         };

  9. u8 code Math_1_2 [4][8]={{0x03,0x03,0x02,0x07,0x07,0x02,0x03,0x03},
  10.                                                  {0xF0,0x60,0x00,0x00,0x80,0xC0,0x60,0x70},
  11.                                                  {0x18,0x18,0x18,0x18,0x98,0x98,0x18,0x18},
  12.                                                  {0xCC,0xC4,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0}
  13.                                         };


  14.                         
  15. u8 code Math_1_3 [4][8]={{0x82,0x43,0x23,0x13,0x0A,0x07,0xFF,0x77},
  16.                                                  {0x30,0x20,0x60,0xC0,0x80,0x00,0x00,0x00},
  17.                                                  {0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,0x00},
  18.                                                  {0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
  19.                                         };



  20. u8 code Math_2_1 [4][8]={{0xDB,0xFF,0x18,0x00,0x00,0x00,0x00,0x00},
  21.                                                  {0x00,0x00,0x00,0xC0,0xF0,0x7C,0x1F,0x07},
  22.                                                  {0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00},
  23.                                                  {0x0C,0x0E,0x47,0xC3,0xF1,0xF8,0xCC,0xCC}
  24.                                         };

  25. u8 code Math_2_2 [4][8]={{0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81},
  26.                                                  {0x03,0x78,0xFE,0x87,0x01,0x00,0x00,0x00},
  27.                                                  {0x00,0x00,0x89,0x49,0x4F,0x4F,0x49,0x89},
  28.                                                  {0xCC,0xCC,0xFF,0xFF,0xCE,0xCC,0xCC,0xCC}
  29.                                         };

  30. u8 code Math_2_3 [4][8]={{0x00,0x00,0x00,0x00,0x00,0x18,0xFF,0xDB},
  31.                                                  {0x00,0x00,0x00,0x00,0x01,0x03,0x86,0x7C},
  32.                                                  {0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00},
  33.                                                  {0xC4,0xC0,0xC0,0x40,0x00,0x00,0x00,0x00}
  34.                                         };

  35. u8 code Math_3_1 [4][8]={{0xEE,0xFF,0xE0,0x50,0xC8,0xC4,0xC2,0x41},
  36.                                                  {0x00,0x0C,0x0F,0x07,0x01,0x00,0x00,0x00},
  37.                                                  {0x00,0x00,0x00,0x00,0x08,0x1F,0x3F,0x00},
  38.                                                  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
  39.                                         };
  40. u8 code Math_3_2 [4][8]={{0xC0,0xC0,0x40,0xE0,0xE0,0x40,0xC0,0xC0},         //
  41.                                                  {0x00,0x00,0x00,0x01,0x03,0x06,0x0C,0x18},
  42.                                                  {0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x03},
  43.                                                  {0x00,0x00,0x7F,0x7F,0x00,0x00,0x00,0x00}
  44.                                         };
  45. u8 code Math_3_3 [4][8]={{0x41,0xC2,0xC4,0xC8,0x50,0xE0,0xFF,0xEE},
  46.                                                  {0x10,0x10,0x18,0x0C,0x06,0x03,0x01,0x00},
  47.                                                  {0x08,0x18,0x3F,0x1F,0x00,0x00,0x00,0x00},
  48.                                                  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
  49.                                         };

  50. void delay (u16 i)
  51. {
  52.         while(i--);
  53. }


  54. void Hc595SendByte(u8 *dat)
  55. {
  56.         u8 a,i;
  57.         SRCLK=0;
  58.         RCLK=0;
  59.         for(i=3;i>0;i--)
  60.         {
  61.         for(a=0;a<8;a++)
  62.         {
  63.                 SER=dat[i-1]>>7;
  64.                 dat[i-1]<<=1;

  65.                 SRCLK=1;
  66.                 _nop_();
  67.                 _nop_();
  68.                 SRCLK=0;        
  69.         }
  70.         }

  71. }

  72. void out595 ()
  73. {
  74.         RCLK=1;
  75.         _nop_();
  76.         _nop_();
  77.         RCLK=0;        
  78. }






  79. //void Hc595SendByte(u8 dat)
  80. //{
  81. //        u8 a;
  82. //        SRCLK=0;
  83. //        RCLK=0;
  84. //        for(a=0;a<8;a++)
  85. //        {
  86. //                SER=dat>>7;
  87. //                dat<<=1;
  88. //
  89. //                SRCLK=1;
  90. //                _nop_();
  91. //                _nop_();
  92. //                SRCLK=0;        
  93. //        }
  94. //
  95. //        RCLK=1;
  96. //        _nop_();
  97. //        _nop_();
  98. //        RCLK=0;
  99. //}

  100. //致敬祖国
  101. //爱我中华  普天同庆
  102. //成立七十年 奋进新时代
  103. //我和我的祖国
  104. //祖国万岁


  105. u8 displayBuff[3]={0,0,0};

  106. void DigDisplay(u8 len0[4][8],u8 len1[4][8],u8 len2[4][8],u8 n)
  107. {
  108.         u8 a;
  109.         
  110.         for(a=0;a<8;a++)
  111.         {
  112.                 displayBuff[0]=len0[1][a];
  113.                 displayBuff[1]=len1[1][a];
  114.                 displayBuff[2]=len2[1][a];


  115.                 switch(a)         //位选,选择点亮的数码管,
  116.                 {
  117.                         case(0):
  118.                                 LSA=0;LSB=0;LSC=0; break;//显示第0位
  119.                         case(1):
  120.                                 LSA=1;LSB=0;LSC=0; break;//显示第1位
  121.                         case(2):
  122.                                 LSA=0;LSB=1;LSC=0; break;//显示第2位
  123.                         case(3):
  124.                                 LSA=1;LSB=1;LSC=0; break;//显示第3位
  125.                         case(4):
  126.                                 LSA=0;LSB=0;LSC=1; break;//显示第4位
  127.                         case(5):
  128.                                 LSA=1;LSB=0;LSC=1; break;//显示第5位
  129.                         case(6):
  130.                                 LSA=0;LSB=1;LSC=1; break;//显示第6位
  131.                         case(7):
  132.                                 LSA=1;LSB=1;LSC=1; break;//显示第7位        
  133.                 }
  134.                

  135.                 nun=1;

  136.                 Hc595SendByte(displayBuff);//发送段码
  137.                 out595 ();
  138.                 nun=0;
  139.                 delay(100);
  140.                 out595 ();
  141. //                displayBuff[0]=0x00;
  142. //                displayBuff[1]=0x00;
  143. //                displayBuff[2]=0x00;
  144. //                Hc595SendByte(displayBuff);//发送段码
  145. //                out595 ();
  146. //                InputTo595(displayBuff);
  147. //                OutputFrom595();




  148. //                Hc595SendByte(len[n][i]);//发送段码
  149. //                delay(100); //间隔一段时间扫描        
  150. //                Hc595SendByte(0x00);//消隐
  151.         }
  152.         
  153. }

  154. void InputTo595(u8 *displayBuff)
  155. {
  156.     u8 i, j;

  157.     for (j = 3; j > 0; j--)
  158.     {
  159.         for (i = 0; i < 8; i++)
  160.         {
  161.             SER = displayBuff[j - 1] & 0x01 ;    //先输入最低位

  162.             displayBuff[j - 1] >>= 1;

  163.             SRCLK = 0;
  164.             _nop_();
  165.             SRCLK = 1;    //上升沿,输入到移位寄存器
  166.         }

  167.     }
  168. }

  169. void OutputFrom595()    //595输出
  170. {
  171.     RCLK= 0;
  172.             _nop_();
  173.     RCLK= 1;
  174.     RCLK= 0;
  175. }





  176. //void In_1_1 (u8 php)
  177. //{
  178. //                k1=1;                                 
  179. //                k2=0;
  180. //                k3=0;
  181. //
  182. //                k4=0;
  183. //                k5=1;
  184. //                k6=1;                        
  185. //                DigDisplay(Math_1_1,php);        
  186. //}
  187. //
  188. //void In_1_2 (u8 php)
  189. //{
  190. //                k1=0;
  191. //                k2=1;
  192. //                k3=0;
  193. //
  194. //                k4=0;
  195. //                k5=1;
  196. //                k6=1;
  197. //                DigDisplay(Math_1_2,php);
  198. //                        
  199. //}
  200. //
  201. //void In_1_3 (u8 php)
  202. //{
  203. //                k1=0;
  204. //                k2=0;
  205. //                k3=1;
  206. //
  207. //                k4=0;
  208. //                k5=1;
  209. //                k6=1;
  210. //                DigDisplay(Math_1_3,php);        
  211. //}
  212. //void In_2_1 (u8 php)
  213. //{
  214. //                k1=1;
  215. //                k2=0;
  216. //                k3=0;
  217. //
  218. //                k4=1;
  219. //                k5=0;
  220. //                k6=1;
  221. //                DigDisplay(Math_2_1,php);
  222. //}
  223. //
  224. //void In_2_2 (u8 php)
  225. //{
  226. //                k1=0;
  227. //                k2=1;
  228. //                k3=0;
  229. //
  230. //                k4=1;
  231. //                k5=0;
  232. //                k6=1;
  233. //                DigDisplay(Math_2_2,php);
  234. //}
  235. //
  236. //void In_2_3 (u8 php)
  237. //{
  238. //                k1=0;
  239. //                k2=0;
  240. //                k3=1;
  241. //
  242. //                k4=1;
  243. //                k5=0;
  244. //                k6=1;
  245. //                DigDisplay(Math_2_3,php);
  246. //}
  247. //
  248. //void In_3_1 (u8 php)
  249. //{
  250. //                k1=1;
  251. //                k2=0;
  252. //                k3=0;
  253. //
  254. //                k4=1;
  255. //                k5=1;
  256. //                k6=0;
  257. //                DigDisplay(Math_3_1,php);
  258. //}
  259. //
  260. //void In_3_2 (u8 php)
  261. //{
  262. //                k1=0;
  263. //                k2=1;
  264. //                k3=0;
  265. //
  266. //                k4=1;
  267. //                k5=1;
  268. //                k6=0;
  269. //                DigDisplay(Math_3_2,php);
  270. //}
  271. //
  272. //void In_3_3 (u8 php)
  273. //{
  274. //                k1=0;
  275. //                k2=0;
  276. //                k3=1;
  277. //
  278. //                k4=1;
  279. //                k5=1;
  280. //                k6=0;
  281. //                DigDisplay(Math_3_3,php);
  282. //}
  283. //
  284. //void xiaoyin ()
  285. //{
  286. //        k1=0;
  287. //        k2=0;
  288. //        k3=0;
  289. //        k4=1;
  290. //        k5=1;
  291. //        k6=1;        
  292. //}
  293. void kaijidonghua()
  294. {
  295.         u8 lat,x;
  296.         u16 i;
  297.         while(1)
  298.         {
  299. //                In_1_1 (lat);
  300. //
  301. //
  302. //                In_2_1 (lat);
  303. //
  304. //                In_3_1 (lat);
  305. //
  306. //
  307. //
  308. //                In_1_2 (lat);
  309. //
  310. //                In_2_2 (lat);
  311. //
  312. //                In_3_2 (lat);
  313. //
  314. //
  315. //
  316. //
  317. //
  318. //                In_1_3 (lat);
  319. //
  320. //                In_2_3 (lat);
  321. //
  322. //                In_3_3 (lat);

  323.                 for(x=0;i<3;x++)
  324.                 {        
  325.                         switch(x)
  326.                         {
  327.                                 case(0): k1=1;k2=0;k3=0;DigDisplay(Math_1_1,Math_2_1,Math_3_1,0); break;
  328.                                 case(1): k1=0;k2=1;k3=0;DigDisplay(Math_1_2,Math_2_2,Math_3_2,0); break;
  329.                                 case(2): k1=0;k2=0;k3=1;DigDisplay(Math_1_3,Math_2_3,Math_3_3,0); break;
  330.                         }        
  331.                 }
  332. //                DigDisplay(Math_1_1,Math_2_1,Math_3_1,0);
  333. //                i++;
  334. //                if(i>50)
  335. //                {
  336. //                        i=0;
  337. //                        lat++;
  338. //                        if(lat>3)
  339. //                        {
  340. //                                lat=0;
  341. //                         }
  342. //
  343. //                }





  344.                

  345.         }

  346. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:585414 发表于 2019-10-25 10:47 | 只看该作者
什么叫闪烁?
是一直闪着不进main函数吗
还是说你这个开机动画是三次闪烁就过了
请把问题描述清楚
回复

使用道具 举报

板凳
ID:123289 发表于 2019-10-25 16:38 | 只看该作者
是你对扫描显示的时序构思不合理。
回复

使用道具 举报

地板
ID:524818 发表于 2019-10-26 14:32 | 只看该作者
可能有两方面:1,供电不足
                     2,动态扫描时间不对或者没有消隐
回复

使用道具 举报

5#
ID:413383 发表于 2019-10-26 21:18 | 只看该作者
刚好在研究16*48点阵屏,显示3个汉字,24*24点阵屏有什么特别用途
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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