登錄|立即注冊(cè)|使用QQ帳號(hào)登錄
論壇 > 單片機(jī)仿真論壇
發(fā)帖|
看3261|回1|收藏
樓主 ID:585660 只看他
2019-7-20 10:01
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
ZBMZ)%4OXGT{FBG)E[E%`NF.png

單片機(jī)源程序如下:

代碼:

  1. #include <reg52.h>                         //此文件中定義了單片機(jī)的一些特殊功能寄存器

  2. typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
  3. typedef unsigned char u8;
  4. long int Num=23456789;
  5. unsigned char SEG_Num[8]={0,0,0,0,0,0,0,0};
  6. sbit LSA=P2^2;
  7. sbit LSB=P2^3;
  8. sbit LSC=P2^4;
  9. sbit P30=P3^0;//定義要實(shí)現(xiàn)第一位的靜態(tài)數(shù)碼管
  10. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  11.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
  12. //子函數(shù)
  13. void Delay1ms();
  14. void DelayNms(unsigned int n);
  15. void DigDisplay();


  16. void main()
  17. {        
  18.         SEG_Num[0]=smgduan[Num/10000000];
  19.         SEG_Num[1]=smgduan[Num/1000000%10];
  20.         SEG_Num[2]=smgduan[Num/100000%10];
  21.         SEG_Num[3]=smgduan[Num/10000%10];
  22.         SEG_Num[4]=smgduan[Num/1000%10];
  23.         SEG_Num[5]=smgduan[Num/100%10];
  24.         SEG_Num[6]=smgduan[Num/10%10];
  25.         SEG_Num[7]=smgduan[Num%10];
  26.         while(1)
  27.         {        
  28.                 DigDisplay();  //數(shù)碼管顯示函數(shù)        
  29.         }               
  30. }
  31. //子函數(shù)聲明
  32. void Delay1ms()                //@12.000MHz
  33. {
  34.         unsigned char i, j;

  35.         i = 2;
  36.         j = 239;
  37.         do
  38.         {
  39.                 while (--j);
  40.         } while (--i);
  41. }
  42. void DelayNms(unsigned int n)
  43. {
  44.         while(n--)
  45.         Delay1ms();
  46. }

  47. /*******************************************************************************
  48. * 函 數(shù) 名         : DigDisplay
  49. * 函數(shù)功能                   : 數(shù)碼管動(dòng)態(tài)掃描函數(shù),循環(huán)掃描8個(gè)數(shù)碼管顯示
  50. *******************************************************************************/
  51. void DigDisplay()
  52. {
  53.         u8 i;
  54.         for(i=0;i<8;i++)
  55.         {
  56.                 switch(i)         //位選,選擇點(diǎn)亮的數(shù)碼管,
  57.                 {
  58.                         case(0):
  59.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  60.                         case(1):
  61.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  62.                         case(2):
  63.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  64.                         case(3):
  65.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  66.                         case(4):
  67.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  68.                         case(5):
  69.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  70.                         case(6):
  71.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  72.                         case(7):
  73.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位        
  74.                 }
  75.                 P0=SEG_Num[i];//發(fā)送段碼
  76.                 DelayNms(1); //間隔一段時(shí)間掃描        
  77.                 P0=0x00;//消隱
  78.                 P3=0x06;//通過(guò)靜態(tài)數(shù)碼管顯示學(xué)號(hào)第一個(gè)個(gè)數(shù)
  79.         }
  80. }
全部資料51hei下載地址:
靜態(tài)顯示學(xué)號(hào).zip (83.24 KB)
(下載次數(shù): 16, 2019-7-20 10:01 上傳)

下載積分: 黑幣 -5


沙發(fā) ID:588220 只看他
2019-7-23 10:45
proteus上按鍵干嘛的?看程序沒(méi)有按鍵

51黑電子論壇

Powered by Discuz! X3.1

首頁(yè)|標(biāo)準(zhǔn)版|觸屏版|電腦版