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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

Multisim仿真51單片機(jī)正弦波/方波360度移向 數(shù)碼管顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真原理圖如下(Multisim仿真工程文件可到本帖附件中下載)

截圖不太清楚,盡力了,,,不得不說(shuō),用multisim仿真51單片機(jī)效果實(shí)在是一言難盡!
出現(xiàn)了一些問(wèn)題,主要是multisim的鍋,51單片機(jī)在計(jì)算的時(shí)候引腳電平會(huì)亂閃,這也就導(dǎo)致了這個(gè)時(shí)候數(shù)碼管會(huì)顯示亂碼。
需要等一段時(shí)間,仿真運(yùn)行才能穩(wěn)定下來(lái),可以通過(guò)示波器觀看仿真運(yùn)行速度以及仿真跑到哪了。
它果然只能仿真點(diǎn)小電路。。


單片機(jī)源程序如下:
  1. #include <reg51.h>       //調(diào)用51單片機(jī)的頭文件

  2. #define uint unsigned int
  3. #define ulint unsigned long int
  4. #define uchar unsigned char
  5.         
  6. #define AMing_T  10                //測(cè)量周期數(shù)宏定義
  7. #define AMing_F  50                //測(cè)量信號(hào)頻率宏定義

  8. //數(shù)碼管字形表,供顯示時(shí)查詢
  9. unsigned char code AMing_LED[10]=
  10.         {                          //定義表格一定要使用code,這樣會(huì)做到程序存儲(chǔ)區(qū)中
  11.     0x00,                  //"0"的字形表,0B00111111
  12.     0x01,                  //"1"的字形表,0B00000110
  13.     0x02,                  //"2"的字形表,0B01011011
  14.     0x03,                  //"3"的字形表,0B01001111
  15.     0x04,                  //"4"的字形表,0B01100110
  16.     0x05,                  //"5"的字形表,0B01101101
  17.     0x06,                  //"6"的字形表,0B01111101
  18.     0x07,                  //"7"的字形表,0B00000111
  19.     0x08,                  //"8"的字形表,0B01111111
  20.     0x09,                  //"9"的字形表,0B01101111
  21.         };

  22. ulint AMing_n=0;                        //計(jì)數(shù)
  23. uint AMing_k=0;                         //用于標(biāo)記n的變化.控制數(shù)碼管刷新頻率
  24. char AMing_k_Flag=0;                   //用于標(biāo)記k的變化

  25. //延時(shí)函數(shù)
  26. void AMing_Delay(uint z)
  27.         {
  28.          uint x,y;
  29.                          for(x=z;x>0;x--)
  30.                                 for(y=50;y>0;y--);
  31.         }

  32. //定時(shí)器0初始化
  33. void AMing_time_init(void)                                                   //定時(shí)器初始化函數(shù)
  34.         {
  35.         TMOD=0x02;                                                          //選擇方式2
  36.         TH0=56;                                                          //重裝初值為156    200us
  37.         TL0=56;                                                          //運(yùn)行值為156
  38.         EA=1;                 //使能總中斷                                                         //開(kāi)總中斷
  39.         PT0 = 0;                                 //設(shè)為低優(yōu)先級(jí)
  40.         }
  41. //外部中斷0中斷初始化
  42. void AMing_ConfigExitIint0()
  43.         {
  44.         IT0 = 1;        //選擇為下降沿觸發(fā)方式(為1代表下降沿觸發(fā),為0代表低電平觸發(fā))
  45.         EX0 = 1;        //使能外部中斷0        
  46.         PX0 = 1;                //設(shè)為高優(yōu)先級(jí)
  47.         }
  48. //外部中斷1中斷初始化
  49. void AMing_ConfigExitIint1()
  50.         {
  51.         IT1 = 1;          //選擇為下降沿觸發(fā)方式
  52.         EX1 = 1;                //使能外部中斷1        
  53.         PX1 = 1;                //設(shè)為高優(yōu)先級(jí)
  54.         }
  55. //數(shù)碼管顯示函數(shù)
  56. void AMing_Display(void)
  57.         {           
  58.         uint p2=0;                         //用于記錄P2的變化
  59.         uint p0=0;                         //用于記錄P0的變化
  60.         uint i=0;
  61.         uint j=0;
  62.         i = (ulint)(360*AMing_F*(float)AMing_n/5000/AMing_k);           //360*AMing_F*t   t是單位周期相位超前時(shí)間,單位是s
  63.         p2 = AMing_LED[i%10];
  64.         j = AMing_LED[i/100]<<4;
  65.         p0 = j+AMing_LED[i%100/10];
  66.         P2 = 0x00;
  67.         P0 = 0x00;      
  68.         AMing_Delay(50);               
  69.         P2 = p2;
  70.         P0 = p0;
  71.         }

  72. //主函數(shù)
  73. void main(void)            //主函數(shù),單片機(jī)開(kāi)機(jī)后就是從這個(gè)函數(shù)開(kāi)始運(yùn)行
  74.         {
  75.         P1 = 0xFF;
  76.         P3 = 0xFF;
  77.         P2 = 0x00;
  78.         P0 = 0x00;
  79.         AMing_ConfigExitIint0();
  80.         AMing_ConfigExitIint1();
  81.         AMing_time_init();
  82.         while(1)               //死循環(huán),單片機(jī)初始化后,將一直運(yùn)行這個(gè)死循環(huán)
  83.                 {
  84.         //                                        AMing_Delay(1);        //等待multisim               
  85.                         if(AMing_k_Flag)
  86.                                 {
  87.                                 AMing_Display();                  //數(shù)碼管顯示
  88.                                 AMing_k = AMing_k_Flag = 0;                      //重置標(biāo)志
  89.                                 AMing_n = 0;                      //清零
  90.                                 EA = 1;                     //開(kāi)總中斷
  91.                                 }
  92.                 }
  93.         }
  94. //外部中斷0中斷服務(wù)函數(shù)
  95. //由相移前的波整形后下降沿觸發(fā)
  96. void extInt0ISR() interrupt 0
  97.         {
  98.         AMing_k++;
  99.         ET0=1;                                                                  //開(kāi)定時(shí)器0中斷
  100.   TR0=1;                                                                  //開(kāi)定時(shí)器0    //開(kāi)始計(jì)時(shí)
  101.         }                     
  102. //外部中斷1中斷服務(wù)函數(shù)
  103. //由相移后的波整形后下降沿觸發(fā)
  104. void extInt1ISR() interrupt 2
  105.         {
  106.         if(AMing_k)
  107.                 {                                      //判斷外部中斷0是否已觸發(fā),以確定基準(zhǔn)
  108.                 ET0=0;                                                                  //關(guān)定時(shí)器0中斷
  109.                 TR0=0;                                                                  //關(guān)定時(shí)器0
  110.                 if(AMing_k >= AMing_T)
  111.                         {                 //
  112.                         AMing_k_Flag = 1;                 //標(biāo)志位置1
  113.                         EA = 0;                     //關(guān)總中斷
  114.                         }
  115.                 }
  116.         }
  117. //定時(shí)器0中斷
  118. void timer() interrupt 1                                          //定時(shí)器0中斷
  119.         {
  120.         AMing_n++;            //AMing_n(200us)
  121.         }
復(fù)制代碼

Multisim14仿真文件51hei附件下載: 51單片機(jī)的Multisim仿真.7z (875.56 KB, 下載次數(shù): 29)

評(píng)分

參與人數(shù) 1黑幣 +90 收起 理由
admin + 90 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 人人鲁人人莫人人爱精品 | 在线视频亚洲 | 激情av| 久久久久久成人 | 99久热 | 亚洲 欧美 日韩在线 | 国产在线精品一区二区三区 | 精品久久久久国产 | 亚洲三区视频 | 亚洲国产精品一区二区三区 | 久久国色 | 国产伦一区二区三区四区 | 国产一区免费 | 免费一区二区三区在线视频 | 亚洲综合成人网 | 精品久久久久久久久久久久久久 | 黄色一级免费看 | www.久久| 欧美精品久久久久久久久久 | 中文字幕不卡视频在线观看 | 亚洲乱码一区二区 | 成人免费大片黄在线播放 | 欧美色a v| 午夜免费视频 | 日韩午夜 | 日本一区二区三区四区 | а√中文在线8 | 久久亚洲91| 日韩av免费在线电影 | 日本精品久久久一区二区三区 | 一区二区中文字幕 | 久久久蜜桃 | 女女百合av大片一区二区三区九县 | 成人网视频 | 亚洲导航深夜福利涩涩屋 | 亚洲不卡av在线 | 伊人狠狠干 | 日产精品久久久一区二区福利 | 欧美精品久久久久久 | 搞av.com| 亚洲第一区国产精品 |