找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機RAM讀寫實驗程序Proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1150871 發(fā)表于 2025-5-18 22:47 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一、實驗?zāi)康?
1、 掌握RAM的讀寫方法;
2、 理解RAM和ROM的作用;
3、 熟練Proteus仿真軟件的使用;
4、 熟練單片機實驗箱的實驗操作。

二、實驗預(yù)習(xí)要求
1、主要知識點概述:掌握單片機RAM的結(jié)構(gòu);學(xué)會RAM的讀寫。
2、實驗效果說明:將存入的RAM的數(shù)值讀出用數(shù)碼管顯示出來。

三、實驗設(shè)備和器件
一臺PC 機  
一套 PROTEUS 仿真軟件
一臺實驗箱  
一臺ISP 下載器
一臺51單片機仿真器 (可選)

四、實驗要求
  1、在 DATA區(qū)定義一個字符變量并寫入數(shù)據(jù),把寫入RAM中的數(shù)據(jù)讀出來并用數(shù)碼管顯示出來。

五、實驗原理
      數(shù)據(jù)存儲器用于存放中間運算結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)識位等。80C51系列單片機的片內(nèi)數(shù)據(jù)存儲器除RAM塊外。還有特殊功能寄存器(SFR)塊。 通過查詢AT89C52的數(shù)據(jù)手冊可以知道:
      AT89C52 有 256 個字節(jié)的內(nèi)部RAM,80H-FFH 高128 個字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM 和特殊功能寄存器的地址是相同的,但物理上它們是分開的。
      當(dāng)一條指令訪問7FH以上的內(nèi)部地址單元時,指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問高128字節(jié)RAM 還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。

六、原理圖設(shè)計
總原理圖:

1.在Proteus 中繪制單片機最小系統(tǒng),包括主控芯片、晶振電路和復(fù)位電路。
2. 添加4位共陽數(shù)碼管,段選A-DP利連接到P0口,P0口需要用排阻上拉,位選C0-C1利用標(biāo)號連接到P2.0-P2.1口。

七、參考程序(含擴展實驗,見附件)
八、實驗思考題
1、將存儲單元擴大到50,然后向RAM中連續(xù)寫入數(shù)據(jù),計算出這些數(shù)的累加和后顯示在數(shù)碼管上。

  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit C0 = P2^0;
  6. sbit C1 = P2^1;

  7. code uchar discode[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

  8. uchar idata ram_value = 68;

  9. void delay_ms(uint ms)
  10. {
  11.    uint i, j;
  12.    for(i = 0; i < ms; i++)
  13.    for(j = 0; j < 120; j++);
  14. }

  15. void main()
  16. {
  17.     uchar ten, one;
  18.    
  19.     ten = ram_value / 10;
  20.     one = ram_value % 10;

  21.     C0 = 0;
  22.     C1 = 0;
  23.     P0 = 0xFF;

  24.     while(1)
  25.                 {
  26.                         P0 = 0xFF;
  27.                         C0 = 1;
  28.                         C1 = 0;
  29.                         P0 = discode[ten];
  30.                         delay_ms(2);

  31.                         P0 = 0xFF;
  32.                         C0 = 0;
  33.                         C1 = 1;
  34.                         P0 = discode[one];
  35.                         delay_ms(2);
  36.     }
  37. }
復(fù)制代碼
  1. #include <reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4.        
  5. uchar code seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

  6. void delay(uint t)
  7. {
  8.         while(t--);
  9. }

  10. void main()
  11. {
  12.         uchar idata buffer[50]; //RAM expand to 50
  13.         uint sum = 0;
  14.         uchar i, digits[4];


  15.         for(i = 0; i <=50; i++)
  16.         {
  17.                 buffer[i] = i;
  18.         }

  19.         for(i = 0; i <=50; i++)
  20.         {
  21.                 sum += buffer[i];
  22.         }

  23.         digits[0] = sum / 1000;
  24.         digits[1] = (sum / 100) % 10;
  25.         digits[2] = (sum / 10) % 10;
  26.         digits[3] = sum % 10;
  27.        
  28.         P2=0xaa;
  29.        
  30.         while(1)
  31.         {
  32.                
  33.                 P0=seg[digits[0]];
  34.                 P2=0x01;
  35.                 delay(5);
  36.                 P2=0x0;
  37.                 P0=0xff;
  38.                
  39.                 P0=seg[digits[1]];
  40.                 P2=0x02;
  41.                 delay(5);
  42.                 P2=0x0;
  43.                 P0=0xff;
  44.                
  45.                 P0=seg[digits[2]];
  46.                 P2=0x04;
  47.                 delay(5);
  48.                 P2=0x0;
  49.                 P0=0xff;
  50.                
  51.                 P0=seg[digits[3]];
  52.                 P2=0x08;
  53.                 delay(5);
  54.                 P2=0x0;
  55.                 P0=0xff;

  56.         }
  57. }
復(fù)制代碼




以上2個文件程序下載:
Proteus仿真:無

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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