標題: 單片機脈沖測量儀程序+Proteus仿真 [打印本頁]
作者: 123。、、 時間: 2020-7-3 15:51
標題: 單片機脈沖測量儀程序+Proteus仿真
要求:脈沖測量儀:利用MCS-51系統的T0和T1,測量脈沖周期和點空比,測量結果顯示的LED或LCD顯示器上。仿真說明1、在仿真圖中,通過p32按鍵輸入模擬脈沖(手動輸入模擬)
2、也可將單刀雙擲開關擲向脈沖一端,觀察數值
LCD顯示格式: 周期: xxxu HIGHT
占空比:xx% xxxu
(u表示單位us;
HIGHT表示高電平時間;
占空比=高電平時間/周期)
開發環境:protues7.8 keil
程序說明:
void delay(long num) 延時函數
void Interrupt_Init() 定時器中斷設置
void w_data(uchar dat) 寫數據
void w_cmd(uchar cmd) 寫命令
void w_string(uchar addr_start,uchar *p) 發送字符串到LCD
void Init_LCD1602(void) 初始化1602LCD
void main() 主程序
void EXTI0 () interrupt 0 中斷服務程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
圖片1.png (50.8 KB, 下載次數: 55)
下載附件
2020-7-3 15:42 上傳
源程序:(僅展示部分內容,全部需下載附件查看)
#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, 下載次數: 63)
2020-7-3 15:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
keil程序.zip
(34.83 KB, 下載次數: 57)
2020-7-3 15:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |