久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4536|回復: 1
打印 上一主題 下一主題
收起左側

單片機跑馬燈控制系統仿真

[復制鏈接]
跳轉到指定樓層
樓主
一、單片機基礎知識
單片機又稱單片微控制器它不是完成某一個邏輯功能的芯片而是把一個計算機系統集成到一個芯片上。概括的講一塊芯片就成了一臺計算機。
單片機具有體積小、功能強、應用面廣等優點目前正以前所未見的速度取代著傳統電子線路構成的經典系統蠶食著傳統數字電路與模擬電路固有的領地。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時學習使用單片機了解計算機原理與結構的最佳選擇。
   現在這種單片機的使用領域已十分廣泛。彩電、冰箱、空調、錄像機、VCD、遙控器、
游戲機、電飯煲等無處不見單片機的影子單片機早已深深地融入我們每個人的生活之中。  單片機能大大地提高這些產品的智能性易用性及節能性等主要性能指標給我們的生活帶來舒適和方便的同時在工農業生產上也極大地提高了生產效率和產品質量。單片機按用途大體上可分為兩類一種是通用型單片機另一種是專用型單片機。
  MCS-51 單片機是美國 INTEL 公司于 1980 年推出的產品與 MCS- 48 單片機相比它的
結構更先進功能更強在原來的基礎上增加了更多的電路單元和指令指令數達111 條 MCS-51 單片機可以算是相當成功的產品一直到現在MCS-51 系列或其兼容的單片機仍是
應用的主流產品各高校及專業學校的培訓教材仍與 MSC-51 單片機作為代表進行理論基礎學習。MCS-51 系列單片機主要包括 8031、8051 和 8751 等通用產品。
2 單片機的發展趨勢
   單片機現在可以說是百花齊放百家爭鳴的時期世界上各大芯片制造公司都推出了自己的單片機從 8 位、16 位到 32 位數不勝數應有盡有有與主流 C51 系列兼容的也
有不兼容的但它們各具特色互成互補為單片機的應用提供了廣闊的天地。現在常規的單片機普遍都是將中央處理器CPU、隨機存取數據存儲RAM、只讀程序存儲器ROM、
并行和串行通信接口中斷系統、定時電路、時鐘電路集成在一塊單一的芯片上增強型的單片機集成了如 A/D 轉換器、PMW脈寬調制電路、WDT看門狗、有些單片機將 LCD
液晶驅動電路都集成在單一的芯片上這樣單片機包含的單元電路就更多功能就越強大。甚至單片機廠商還可以根據用戶的要求量身定做制造出具有自己特色的單片機芯片。  此外現在的產品普遍要求體積小、重量輕這就要求單片機除了功能強和功耗低外還要求其體積要小。現在的許多單片機都具有多種封裝形式其中 SMD表面封裝越來越受歡迎使得由單片機構成的系統正朝微型化方向發展。現在雖然單片機的品種繁多各具特色但仍以 89C51 為核心的單片機占主流。
2.1 框圖設計




2.4軟件設計
要求用 AT89S52 芯片控制跑馬燈流水燈整個系統有 8 種跑馬燈模式可以選擇K1 是選擇模式鍵同時將相應的模式在 LED 七段數碼管中顯示出來K2 可以對跑馬燈
的速度進行加速K3 可以對跑馬燈的速度進行減速。整個系統可以實現對跑馬燈模式的多層控制還有加減速。

  本課程設計是采用80C51單片機設計的可以調控的跑馬燈通過keil進行c語言編程 通過protues進行軟件硬件仿真。本設計成果主要通過按鍵開關對跑馬燈進行控制包括跑馬燈模式的選擇、跑馬燈模式的顯示、跑馬燈速度變化控制。
1、C語言編程 1定義
#include<reg52.h>
#define uchar unsigned char                                                                 
#define uint unsigned int  uchar ModeNo; uint Speed;
uchar TCount=0;  uchar Idx; uchar mb_Count=0;  bit Dirtect=1;
2段碼表
uchar code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
3調速表
uint codesTable[]={0,1,3,5,7,9,15,100,200,230,300,350};
4延時
void Delay(uint x)   {   uchar i;  while(x--) for(i=0;i<120;i++);
}
5檢測按鍵
uchar GetKey()
{
   .............    return K;  }
616支LED顯示
void Led_Demo(uint Led16)
{
.................
P0=(uchar)(Led16>>8);
}
7定時器2
void T0_INT() interrupt 1
{
...................
mb_Count=(mb_Count+1)%16;
}
8鍵盤處理
void KeyProcess(uchar Key)
{  switch(Key)   {
     ....................
     if(Idx<15) Speed=sTable[++Idx];
  }  
}
  9主程序
     void main()
{     uchar Key;
   P0=P1=P2=P3=0xFF;
    ModeNo=0;Idx=4;     P3=DSY_CODE[ModeNo];
    IE=0x82;    TMOD=0x00;     TR0=1;     while(1)
   {
      Key=GetKey();       if(Key!=0) KeyProcess(Key);
   }
}

2、軟件硬件仿真      軟件調試是通過對程序的匯編、連接、執行來發現程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。本設計通過protues進行軟件硬件仿真設計的原理圖            




六、附錄
本課程設計的源程序
  1. #include<reg52.h>
  2. #define uchar unsigned char                                                                        
  3. #define uint unsigned int ucharModeNo; uint Speed; uchar TCount=0; uchar Idx; uchar mb_Count=0;
  4. bit Dirtect=1;                                                                                                  
  5.       
  6. uchar code DSY_CODE[]={0xC0,0XF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uint codesTable[]={0,1,3,5,7,9,15,100,200,230,300,350};
  7.       
  8.       
  9. void Delay(uint x)                                                                                            
  10. { uchar i; while(x--)for(i=0;i<120;i++);
  11. }                                                                                                                     
  12.       
  13. uchar GetKey() { uchar K;if(P2==0xFF) return 0;
  14. Delay(10);
  15. switch(P2)
  16. {                                                                                                                       
  17. case 0xFE: K=1;break;         case 0xFD: K=2;break;     case0xFB: K=3;break;         
  18. default:   K=0;
  19. }                                                                                                                       
  20. while (P2!=0xFF);                                                                                             
  21. return K; }  void Led_Demo(uint Led16) {
  22. P1=(uchar)(Led16&0x00FF);
  23. P0=(uchar)(Led16>>8);
  24. }
  25.       
  26. void T0_INT() interrupt 1
  27. {if(++TCount<Speed) return; TCount=0; switch(ModeNo) { case0:Led_Demo(0x0001<<mb_Count);break; case1:Led_Demo(0x8000>>mb_Count);break; case2:if(Dirtect)Led_Demo(0x000F<<mb_Count);
  28. Else
  29. Led_Demo(0xF000>>mb_Count);if(mb_Count==15) Dirtect=!Dirtect;break; case3:if(Dirtect)Led_Demo(~(0x000F<<mb_Count)); else         
  30. Led_Demo(~(0xF000>>mb_Count));if(mb_Count==15) Dirtect=!Dirtect; break; case4:if(Dirtect)Led_Demo(0x003F<<mb_Count);
  31. else                                                                                                                  
  32. Led_Demo(0xFC00>>mb_Count);if(mb_Count==15) Dirtect=!Dirtect;break; case5:if(Dirtect)Led_Demo(0x0001<<mb_Count);
  33. else                                                                                                                  
  34. Led_Demo(0x8000>>mb_Count);if(mb_Count==15) Dirtect=!Dirtect; break; case6:if(Dirtect)Led_Demo(~(0x0001<<mb_Count));
  35. else                                                                                                                  
  36. Led_Demo(~(0x8000>>mb_Count));if(mb_Count==15) Dirtect=!Dirtect;break; case7:if(Dirtect)Led_Demo(0xFFFE<<mb_Count);
  37. else                                                                                                                  
  38. Led_Demo(0x7FFF>>mb_Count);if(mb_Count==15) Dirtect=!Dirtect;break; default:break; }mb_Count=(mb_Count+1)%16;
  39. }
  40.   void KeyProcess(uchar Key)
  41. { switch(Key) {     
  42. case 1:
  43. Dirtect=1;mb_Count=0;
  44. ModeNo=(ModeNo+1)%8;
  45. P3=DSY_CODE[ModeNo];break;                                                                     
  46. case 2:
  47. if(Idx>1)Speed=sTable[--Idx];break;                                                               
  48. case 3:
  49. if(Idx<15) Speed=sTable[++Idx];
  50. }
  51. }
  52.   void main() { uchar Key;
  53. P0=P1=P2=P3=0xFF;
  54. ModeNo=0;Idx=4;
  55. P3=DSY_CODE[ModeNo];
  56. IE=0x82;
  57. TMOD=0x00; TR0=1;while(1) { Key=GetKey(); if(Key!=0) KeyProcess(Key);
  58. }
  59. }
復制代碼

全部資料51hei下載地址:
基于單片機的跑馬燈控制系統設計.zip (566.11 KB, 下載次數: 15)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:243748 發表于 2017-12-28 18:35 來自觸屏版 | 只看該作者
很受用的資料
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区三 | 成人在线观看中文字幕 | 精品视频www | 欧美a在线看 | 狠狠操你| 黄色在线免费网站 | 羞羞色在线观看 | 国产精品免费一区二区三区四区 | 亚洲综合大片69999 | 日日夜夜免费精品视频 | 91精品国产91久久久久久不卞 | 日本电影韩国电影免费观看 | 精品人伦一区二区三区蜜桃网站 | 日韩av大片免费看 | 91免费小视频 | 97天天干 | 国产精品日韩欧美一区二区三区 | 9久久 | 一区二区视屏 | 国产小u女发育末成年 | a级片在线| 日本不卡一区二区三区 | 在线视频亚洲 | 99热精品在线观看 | 黄色成人国产 | 国产欧美精品一区二区 | 久久伊人免费视频 | 色婷婷av777| 欧美一级在线观看 | 日本大香伊一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 男女视频在线观看网站 | 日韩视频在线观看 | 国产yw851.c免费观看网站 | 日韩一区二区三区在线 | 日韩电影免费观看中文字幕 | 国产成人精品免高潮在线观看 | av中文字幕在线播放 | 黑人精品欧美一区二区蜜桃 | 日韩一区二区av | 99精品久久久久 |