基于51單片機的帶時間顯示和緊急控制的交通燈的設(shè)計。 此程序在硬件上調(diào)試通,用定時器1延時,外部中斷0接緊急控制,R0為100MS延時常數(shù),R2為狀態(tài)延時常數(shù),8279控制數(shù)碼管顯示時間,用P1口控制雙色燈
上傳時間: 2013-12-23
上傳用戶:wang0123456789
LED閃爍控制。使用I/O口直接控制,采用軟件延時方法。
上傳時間: 2017-07-09
上傳用戶:咔樂塢
LED控制,流星管,長度、速度、延時等參數(shù)隨機,MCU用STC12C5410,c語言
上傳時間: 2017-07-17
上傳用戶:qiaoyue
單片機應(yīng)用關(guān)于交通燈的控制,帶二十秒,十秒,0.5秒延時
標(biāo)簽: 單片機應(yīng)用 交通燈 控制
上傳時間: 2013-12-06
上傳用戶:懶龍1988
一個用PIC控制LED數(shù)碼管(三個數(shù)碼管并排用的那種)的程序,可以延時顯示幾組數(shù)
上傳時間: 2017-08-14
上傳用戶:清風(fēng)冷雨
8位七段碼動態(tài)掃描控制VHDL設(shè)計。動態(tài)掃描模塊,延時模塊,譯碼模塊。設(shè)計采用狀態(tài)機思路。
標(biāo)簽: VHDL 動態(tài)掃描 8位 七段碼
上傳時間: 2014-12-08
上傳用戶:1966640071
介紹Verilog HDL, 內(nèi)容包括: – Verilog應(yīng)用 – Verilog語言的構(gòu)成元素 – 結(jié)構(gòu)級描述及仿真 – 行為級描述及仿真 – 延時的特點及說明 – 介紹Verilog testbench • 激勵和控制和描述 • 結(jié)果的產(chǎn)生及驗證 – 任務(wù)task及函數(shù)function – 用戶定義的基本單元(primitive) – 可綜合的Verilog描述風(fēng)格
上傳時間: 2013-12-19
上傳用戶:shanml
在本課中,我們要用一個按鍵來實現(xiàn)跑馬燈的 10 級調(diào)速。這又會涉及到鍵的去抖的問 題。 本課的試驗結(jié)果是,每按一次按鍵,跑馬速度就降低一級,共 10 級。 這里我們又增加了一個變量 speedlever,來保存當(dāng)前的速度檔次。 在按鍵里的處理中,多了當(dāng)前檔次的延時值的設(shè)置。 請看程序: ―――――――――――――――― #define uchar unsigned char //定義一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一個 52 標(biāo)準(zhǔn)內(nèi)核的頭文件 sbit P10 = P1^0; //頭文件中沒有定義的 IO 就要自己來定義了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //長定時溢出標(biāo)記,預(yù)置是 0 uchar speed=10; //設(shè)置一個變量保存默認(rèn)的跑馬燈的移動速度 uchar speedlever=0; //保存當(dāng)前的速度檔次 char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的 //一個按鍵控制的 10 級變速跑馬燈試驗 void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預(yù)定的寫入 P1 的值 uchar ledi; //用來指示顯示順序 uint n; RCAP2H =0x10; //賦 T2 的預(yù)置值 0x1000,溢出 30 次就是 1 秒鐘 RCAP2L =0x00; TR2=1; //啟動定時器 ET2=1; //打開定時器 2 中斷 EA=1; //打開總中斷 while(1) //主程序循環(huán) { if(ldelay) //發(fā)現(xiàn)有時間溢出標(biāo)記,進入處理 { ldelay=0; //清除標(biāo)記 P1=ledp[ledi]; //讀出一個值送到 P1 口 ledi++; //指向下一個 if(ledi==4) { ledi=0; //到了最后一個燈就換到第一個 } } if(!K1) //如果讀到 K1 為 0 { for(n=0;n<1000;n++); //等待按鍵穩(wěn)定 while(!K1); //等待按鍵松開 for(n=0;n<1000;n++); //等待按鍵穩(wěn)定松開 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //檔次和延時之間的預(yù)算法則,也可以用查表方法,做出 不規(guī)則的法則 } } } //定時器 2 中斷 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比較一個變化的數(shù)值,以實現(xiàn)變化的時間溢出,同時限制了最慢速 度為 1 秒 { t=0; ldelay=1;//每次長時間的溢出,就置一個標(biāo)記,以便主程序處理 } } ―――――――――――――――――――――― 請打開 lesson11 目錄的工程,編譯,運行,看結(jié)果: 按 K1,速度則降低一次,總共 10 個檔次。
上傳時間: 2017-11-06
上傳用戶:szcyclone
LED 一般是恒流操作的,如何改變 LED 的亮度呢?答案就是 PWM 控制。在一定的 頻率的方波中,調(diào)整高電平和低電平的占空比,即可實現(xiàn)。比如我們用低電平點亮一個 LED 燈,我們假設(shè)把一個頻率周期分為 10 個時間等份,如果方波中的高低電平占空比是 9:1, 這是就是一個比較暗的亮度,如果方波中高低電平占空比是 10:0,這時,全部是高電平, 燈是滅的。如果占空比是 5:5,就是一個中間亮度,如果高低比是 1:9,是一個比較亮的 亮度,如果高低是 0:10,這時全部是低電平,就是最亮的。 實際上應(yīng)用中,電視屏幕墻中的幾十百萬 LED 象素都是這樣控制的,而且每一個象素 都有紅綠藍 3 個 LED,每個 LED 可以變化的亮度是幾百到幾萬或者更多的級別,以實現(xiàn)真 彩色的顯示。還有在您的手機中,背光燈的亮度如果是可以變化的,也應(yīng)該是這種工作方式。 目前的城市彩燈也有很多都使用了 LED,需要控制亮度是也是 PWM 控制。 下面來分析我們的例程,在這個例程中,我們將定時器 2 溢出定為 1/1200 秒。每 10 次脈沖輸出一個 120HZ 頻率。這每 10 次脈沖再用來控制高低電平的 10 個比值。這樣,在 每個 1/120 秒的方波周期中,我們都可以改變方波的輸出占空比,從而控制 LED 燈的 10 個 級別的亮度。 為什么輸出方波的頻率要 120HZ 這么高?因為如果頻率太低,人眼就會看到閃爍感 覺。一般起碼要在 60HZ 以上才感覺好點,120HZ 就基本上看不到閃爍,只能看到亮度的變 化了。 下面請看程序,程序中有比較多的注釋: ――――――――――――――――――――――― #define uchar unsigned char //定義一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一個 52 標(biāo)準(zhǔn)內(nèi)核的頭文件 sbit P10 = P1^0; //要控制的 LED 燈 sbit K1= P3^2; //按鍵 K1 uchar scale;//用于保存占空比的輸出 0 的時間份額,總共 10 份 char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的 //模擬 PWM 輸出控制燈的 10 個亮度級別 void main(void) // 主程序 { uint n; RCAP2H =0xF3; //賦 T2 的預(yù)置值,溢出 1 次是 1/1200 秒鐘 RCAP2L =0x98; TR2=1; //啟動定時器 ET2=1; //打開定時器 2 中斷 EA=1; //打開總中斷 while(1) //程序循環(huán) { ;//主程序在這里就不斷自循環(huán),實際應(yīng)用中,這里是做主要工作 for(n=0;n<50000;n++); //每過一會兒就自動加一個檔次的亮度 scale++; if(scale==10)scale=0; } } //1/1200 秒定時器 2 中斷 timer2() interrupt 5 { static uchar tt; //tt 用來保存當(dāng)前時間在一秒中的比例位置 TF2=0; tt++; if(tt==10) //每 1/120 秒整開始輸出低電平 { tt=0; if(scale!=0) //這里加這一句是為了消除滅燈狀態(tài)產(chǎn)生的鬼影 P10=0; } if(scale==tt) //按照當(dāng)前占空比切換輸出高電平 P10=1; } ―――――――――――――――――― 在主程序中,每延時一段時間,就自動換一個占空比,以使亮度自動變化,方便觀察。 編譯,運行,看結(jié)果。 可以看到,LED 的亮度以每種亮度 1 秒左右不斷變化,共有 10 個級別。
上傳時間: 2017-11-06
上傳用戶:szcyclone
STM32F407VGT6精確脈沖控制步進電機源碼,采用STM32F407VGT6芯片,拋棄單脈沖輸出方式,直接使用普通PWM輸出方式精確輸出脈沖個數(shù),每個脈沖都可以改變頻率和占空比。PWM+中斷,簡單粗暴。#include "sys.h"#include "delay.h"#include "pwm1.h"#include "pwm2.h"#include "pwm3.h"//注釋見pwm1.c文件extern int count2;int main(void){ delay_init(168); //初始化延時函數(shù) TIM2_Init(1,167); TIM3_Init(1,167); TIM5_Init(1,167); // delay_ms(1000); TIM2_OUTPUT(); TIM3_OUTPUT(); TIM5_OUTPUT(); while(1) { //TIM2每次輸出完10個脈沖后間隔100ms再次輸出 if(count2 >= 10){ delay_ms(100); TIM2_OUTPUT(); } }
標(biāo)簽: stm32f407vgt6 脈沖控制 步進電機
上傳時間: 2021-10-26
上傳用戶:xsr1983
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1