找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1789|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

求程序編寫思路 按下S2實(shí)現(xiàn)8個(gè)數(shù)碼管從左往右依次顯示1357EFHL

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:977510 發(fā)表于 2021-11-24 20:29 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在線求助,這個(gè)咋寫,拜托了
按下S2實(shí)現(xiàn)8個(gè)數(shù)碼管從左往右依次顯示1357EFHL(時(shí)間間隔是1秒,要求從左往右依次顯示時(shí),已經(jīng)顯示完的數(shù)字或者字母依舊顯示)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:752974 發(fā)表于 2021-11-25 10:18 | 只看該作者
開一個(gè)緩沖區(qū),將“1357EFHL”的段碼按要求依次換位,再送顯就可以。
回復(fù)

使用道具 舉報(bào)

板凳
ID:311903 發(fā)表于 2021-11-25 13:49 | 只看該作者
先實(shí)現(xiàn),從左往右依次顯示功能(動(dòng)態(tài)掃描),實(shí)現(xiàn)后按鍵就是個(gè)出發(fā)條件了
回復(fù)

使用道具 舉報(bào)

地板
ID:123289 發(fā)表于 2021-11-25 15:56 | 只看該作者
1、設(shè)置8個(gè)變量:S1,S2...S8。
2、編寫程序,8個(gè)數(shù)碼管分別從S1-S8中取數(shù)據(jù),譯碼并顯示。
3、當(dāng)你需要移位時(shí),只需要做:A=S1,S2=S1,S3=S2,S4=S3...,S1=A。就行了,而且只做一次。
記。篖ED1只從S1中取數(shù)據(jù)顯示(含譯碼),不要直接給數(shù)據(jù)到LED1顯示(不靈活)。想改變LED1,改變S1就可以了。

更高階:再設(shè)置X1-X8,專門放置S1-S8的譯碼值,只樣顯示就從X1-X8取碼直接顯示。如果你要改變顯示內(nèi)容,就改變S1-S8,并做一次譯碼譯成X1-X8。
這樣的顯示方案:機(jī)動(dòng)靈活,只在顯示內(nèi)容變動(dòng)時(shí),做一次譯碼就可以了,更改顯示內(nèi)容就與掃描顯示無關(guān)了。
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2021-11-27 04:44 | 只看該作者
按一次鍵,開始按秒速依次顯示1357EFH,再按一次鍵清屏,如此反復(fù)。


  1. #include <reg51.h>
  2. typedef unsigned int u16;
  3. typedef unsigned char u8;

  4. sbit S2=P3^0;

  5. u8 code display[]={0x06,0x4F,0x6D,0x07,0x79,0x71,0x76,0x38};//1357EFHL
  6. u16 i;
  7. u8 j,s;
  8. bit KeySec;
  9. bit flag;

  10. void InitTimer0()
  11. {
  12.     TMOD = 0x01;
  13.     TH0 = 0xFC;
  14.     TL0 = 0x18;
  15.     EA = 1;
  16.     ET0 = 1;
  17.     TR0 = 1;
  18. }

  19. void key_scan()
  20. {
  21.         static bit sign;
  22.         static u8 count;       

  23.         if(!S2)
  24.         {
  25.                 if(++count>=10&&sign==0)
  26.                 {                       
  27.                         sign=1;
  28.                         KeySec=~KeySec;
  29.                 }
  30.         }
  31.         else
  32.         {
  33.                 sign=0;
  34.                 count=0;
  35.         }
  36. }

  37. void main()
  38. {
  39.         InitTimer0();
  40.         while(1)
  41.         {
  42.                 if(flag)
  43.                 {
  44.                         flag=0;
  45.                         key_scan();
  46.                         if(KeySec)
  47.                         {
  48.                                 P0=0x00;
  49.                                 P2=~(0x01<<j);
  50.                                 if(j<=s)
  51.                                         P0=display[j];
  52.                                 else P0=0x00;
  53.                         }
  54.                         else
  55.                         {
  56.                                 P0=0x00;
  57.                                 s=0;
  58.                                 i=0;
  59.                         }
  60.                 }
  61.         }
  62. }

  63. void Timer0Interrupt(void) interrupt 1
  64. {
  65.         TH0 = 0xFC;
  66.         TL0 = 0x18;
  67.         if(++i>=1000)
  68.         {
  69.                 i=0;
  70.                 if(++s>=7)
  71.                         s=7;
  72.         }
  73.         flag=1;
  74.         j=++j%8;
  75. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

6#
ID:332444 發(fā)表于 2021-11-27 06:33 | 只看該作者
到我博客去找有眾多例子https://blog.csdn.net/xianfajushi
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表