标题: 关于单片机数码管移位和闪烁程序思路问题 [打印本页]

作者: lkkkk坤    时间: 2022-3-24 16:24
标题: 关于单片机数码管移位和闪烁程序思路问题
请问这些功能怎么实现啊,我是有些思路的但就是用代码实现的时候写不来,不知道该怎么写。
(我想实现的功能在下面的图片里)
(我的思路是  :   数码管要闪烁的话就显示一段时间,然后再关闭一段时间。  数码管移位的话我只会让数码管依次往左移动 或往后移动   但下面图片里的我都没有一点头绪)

IMG_20220324_161012.jpg (996.73 KB, 下载次数: 143)

IMG_20220324_161012.jpg

IMG_20220324_160959.jpg (1.01 MB, 下载次数: 157)

IMG_20220324_160959.jpg

作者: lkc8210    时间: 2022-3-24 18:27
  1. typedef         unsigned char        u8;  //0 to 255
  2. typedef         unsigned int        u16;  //0 to 65535
复制代码



作者: lkkkk坤    时间: 2022-3-24 19:38
lkc8210 发表于 2022-3-24 18:27

???
作者: percy    时间: 2022-3-24 20:38
提问都懒了还是提问都不会?应该是想让某一个位闪吧?
作者: lkkkk坤    时间: 2022-3-24 21:26
percy 发表于 2022-3-24 20:38
提问都懒了还是提问都不会?应该是想让某一个位闪吧?

这个图片里面不是说了吗
作者: lkc8210    时间: 2022-3-25 00:44
lkkkk坤 发表于 2022-3-24 19:38
???

代码被吞了
  1. u8 Min = 0, Sec = 0;
  2. bit Flash_bit = 0;
  3. u8 Flash_Mode = 0;
  4. //*****显示函数,放到1ms中断里**********
  5. void disp()
  6. {
  7.                 static u8 i = 0;
  8.                 P2 = 0xFF;
  9.                 P0 = smgduan[Disp_Buff[i]];
  10.                 if((Flash_Mode-1) == i)//Flash_Mode=0不闪,1闪第0位,2闪第1位。。。
  11.                         if(Flash_bit)//Flash_bit=1不显示,500ms跳动一次
  12.                                         P0 = 0x00;
  13.                 P2 &= ~(1 << i);
  14.                 i = (++i) %4;
  15. }

  16. //*****取位*****************************
  17. void GetDigi()
  18. {
  19.                 Disp_Buff[0] = Sec/10;
  20.                 Disp_Buff[1] = Sec%10;
  21.                 Disp_Buff[2] = Min/10;
  22.                 Disp_Buff[3] = Min%10;
  23. }
复制代码




作者: Y_G_G    时间: 2022-3-25 21:29
1,你要先会写一个扫描显示数码管的程序
2,用一个bit来标志是不是在设定模式,用一个全局变量来标志菜单位置
3,显示的时候就通过检测bit来决定,闪不闪,通过全局变量来决定哪个灯闪




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1