找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機脈沖測量儀程序+Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
ID:664592 發(fā)表于 2020-7-3 15:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
要求:脈沖測量儀利用MCS-51系統(tǒng)的T0和T1,測量脈沖周期和點空比,測量結果顯示的LED或LCD顯示器上。仿真說明1、在仿真圖中,通過p32按鍵輸入模擬脈沖(手動輸入模擬)
2、也可將單刀雙擲開關擲向脈沖一端,觀察數(shù)值


        LCD顯示格式:        周期:  xxxu    HIGHT
                         占空比:xx%     xxxu


                        (u表示單位us;
                         HIGHT表示高電平時間;
                         占空比=高電平時間/周期)

開發(fā)環(huán)境:protues7.8 keil

程序說明:
void delay(long num)                               延時函數(shù)
void Interrupt_Init()                                  定時器中斷設置
void w_data(uchar dat)                                 寫數(shù)據(jù)
void w_cmd(uchar cmd)                                  寫命令
void w_string(uchar addr_start,uchar *p)        發(fā)送字符串到LCD
void Init_LCD1602(void)                         初始化1602LCD
void main()                                        主程序
void EXTI0 () interrupt 0                        中斷服務程序

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



源程序:(僅展示部分內容,全部需下載附件查看)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit RS=P2^0;        
sbit RW=P2^1;         
sbit EN=P2^2;            
uchar count = 0;
bit flag = 1;  
long PWM_PER;
long Pwm_High;
void delay(long num)
{
        while(num--);
}

void Interrupt_Init()
{
        TMOD = 0x19;
        TH1 = 0;
        TL1 = 0;
        TH0 = 0;
        TL0 = 0;
        IT0 = 1;
        IT1 = 1;
        //TR0 = 1;  
        EX0 = 1;
        EA = 1;        
}

void w_data(uchar dat)
{
    RS=1;            
        P0=dat;               
        delay(500);            
        EN=1;      
        delay(500);         
        EN=0;
}

void w_cmd(uchar cmd)      
{
          RS=0;                 
        EN=0;               
        P0=cmd;                    
        delay(500);               
        EN=1;               
        delay(500);               
        EN=0;         
}      

void w_string(uchar addr_start,uchar *p)
{
  w_cmd(addr_start);
  while(*p!='\0')
  {
   w_data(*p++);
  }
}  

void Init_LCD1602(void)
{
  RW=0;
  w_cmd(0x38);
  w_cmd(0x0C);
  w_cmd(0x06);
  w_cmd(0x01);
  w_cmd(0x0F);
}        


void main()
{
        uint Pwm_percentage;
                Init_LCD1602();
        Interrupt_Init();
        w_string(0x80,"PER:");               
        w_string(0x80+9,"u");         
                w_string(0x80+11,"HIGHT");         
        w_string(0xc0,"DUT:");         
        w_string(0xc0+8,"%");         
                w_string(0xc0+15,"u");         

        while(1)
        {

                if(flag)
                {
                                                w_cmd(0x84);        
                                                w_data(0x30+PWM_PER/10000);         
                        w_data(0x30+PWM_PER%10000/1000);
                        w_data(0x30+PWM_PER%1000/100);
                        w_data(0x30+PWM_PER%100/10);
                        w_data(0x30+PWM_PER%10);

                                                w_cmd(0xC4);           
                        w_data(0x30+Pwm_percentage/100);        
                        w_data(0x30+Pwm_percentage%100/10);        
                                                w_data(0x2e);                                 
                        w_data(0x30+Pwm_percentage%10);                  }

全部資料51hei下載地址:
protues仿真.zip (49.5 KB, 下載次數(shù): 63)
keil程序.zip (34.83 KB, 下載次數(shù): 57)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表