❶ 需要一個用按鍵控制一個LED燈亮度的c語言程序
/**52系列單片機,晶振12MHz,P1.0輸出100Hz方波(即周期10ms),方波由T0定時器產生
P1.3接按鍵
K1,每按一次按鍵,方波占空比改變一次,依次為:1/10→2/10→……→9/10→1/10,如此循環**/
#include"reg52.h"
//包含52系列頭文件
#define
uchar
unsigned
char
//定義
無符號字元型
#define
uint
unsigned
int
//定義
無符號整型
#define
TRUE
1
//定義
邏輯真
#define
FALSE
0
//定義
邏輯假
#define
th0
0xfc
//100Hz(10ms),占空比分母10,則其最小時間單位應該為10ms/10=1ms,故定時器T0定時時間為
1ms
#define
tl0
0x18
//1ms
at
12HMz
Fosc
#define
DutyDeno
10
//定義
占空比分母
為:10
sbit
WaveOut=P1^0;
//定義
方波輸出
介面
sbit
Key1=P1^3;
//定義
按鍵Key1
介面
uchar
DutyNume=1;
//定義
占空比分子
變數,並初始化為
1(即
占空比
為:1/10)
void
Timer0()
interrupt
1
//定時器T0
中斷
函數
{
static
uchar
ty_time=0;
//定義靜態變數,作為
占空比
輸出時間的參考值(1ms)
TL0=tl0;
TH0=th0;
//重賦定時器初值,1ms
ty_time=++ty_time%DutyDeno;
//該句等效於:ty_time++;ty_time%=DutyDeno;
if(ty_time
評論
0
0
0
載入更多
❷ 單片機 用C語言怎麼編寫用一個按鈕,控制一盞燈的亮與滅的程序
讀取連接按鍵的IO口,判斷是否為低電平,如果是,延時(十毫秒左右可以),再次讀取IO口,判斷是否為低電平,如果是則表示有有效的按鍵按下,接著用while判斷等待按鍵釋放,然後讓連接led的IO口電平取反以控制其亮滅(是強電的燈可以通過此處控制繼電器的合、閉來控制燈的亮滅)。參考程序:if(key==0){delayms(10);if(key==10){while(key==0);//等待按鍵釋放,IO口恢復高電平led=!led;//按鍵控製程序}}
❸ C語言控制LED燈
//!沒有硬體方案,以下只包含邏輯
intpush_count=0;//記錄按鈕按下次數
//!處理亮燈
voidlight(intled_num)
{
switch(led_num)
{
case1:
{
;//點亮燈1
}break;
case2:
{
;//點亮燈1
}break;
default:
;//滅所有燈
break;
}
}
//!處理按鍵中斷
voidpush_interrupt()
{
//判斷按鍵是否有效
push_count++;
if(1==push_count)
{
light(1);
}
elseif(2==push_count)
{
light(2);
}
elseif(8==push_count)
{
light(0);
push_count=0;
}
}
❹ 用C語言編寫一個單片機控制LED燈閃爍變化的編程 急用!!!!!!!!!
C語言實現LED燈閃爍控制配套51單片機開發板。
#include //包含單片機寄存器的頭文件
/****************************************
函數功能:延時一段時間
*****************************************/
void delay(void) //兩個void意思分別為無需返回值,沒有參數傳遞。
{
unsigned int i; //定義無符號整數,最大取值范圍65535。
for(i=0;i<20000;i++) //做20000次空循環。
; //什麼也不做,等待一個機器周期。
}
/*******************************************************
函數功能:主函數 (C語言規定必須有也只能有1個主函數)。
********************************************************/
void main(void)
{
while(1) //無限循環。
{
P0=0xfe; //P1=1111 1110B, P0.0輸出低電平。
delay(); //延時一段時間。
P0=0xff; //P1=1111 1111B, P0.0輸出高電平。
delay(); //延時一段時間。
}
}
單片機驅動LED燈的源程序:
#include<reg52.h> //頭文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定義。
void delay_ms(uint);//mS級帶參數延時函數。
void main()
{
while(1)
{
LED1=0;
delay_ms(1000);
LED1=1;
delay_ms(1000);
}
}
void delay_ms(uint z) //延時子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(4)c語言控制led燈亮的程序擴展閱讀:
單片機應用分類:
通用型:
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
匯流排型:
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。
通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
參考資料來源:網路-單片機
❺ 用C語言編寫一個單片機控制LED燈閃爍三次的程序,急求!
# P1上接LED等。
#include "reg51.h"
void delayms(unsigned int x)
{
int i,j;
for(i=x;i>0;i--)
for(j=0;j<120;j++);
}
void main(void)
{
char i;
for(i=0;i<6;i++)
{
P1 = ~P1;
delayms(1000);
}
while(1);
}
❻ 寫出點亮2盞LED燈的c語言程序
單片機的話,如埠上電默認高電平,那直接led一頭接電源一頭接埠,一個led對應一個埠。
一、簡單講:想要燈亮,就將對應埠置0。反之就是燈滅。
二、詳細講:假設用keil編寫,新建工程->選擇單片機型號->新建源文件->設置output(點魔術棒圖標勾選create hex file)。
我們用P2^0埠連接一個led(led另一端連電源)。先給埠起別名sbit led1=P2^0;之後代碼中需要燈亮就寫led1=0;即可。(頭文件自行導入)。
程序寫好,編譯後將生成的hex(路徑在之前的設置中)寫入單片機或載入到模擬電路中運行。
❼ 點亮一個LED的C語言程序,
//請依照你的硬體輸入相對值#defineKEY_ACTIVE_LEVEL(請輸入)#defineKEY1_PIN(請輸入)#defineKEY2_PIN(請輸入)#defineLED_ON_LEVEL(請輸入)#defineLED_LOW_LEVEL(請輸入)#defineLED_PIN(請輸入)unsignedcharis_key1_press(void){reutrn(KEY1_PIN==KEY_ACTIVE_LEVEL)l}unsignedcharis_key2_press(void){reutrn(KEY2_PIN==KEY_ACTIVE_LEVEL)l}voidset_led_to(unsignedcharvalue){LED_PIN=value;}voidmain(void){while(1){if(is_key1_press()&&is_key2_press()){set_led_to(LED_ON_LEVEL);}else{set_led_to(LED_OFF_LEVEL);}}}
❽ 單片機用c語言,按鈕控制一個LED燈,要求按下松開,LED亮,按下松開,LED暗!循環
1、首先打開桌面上的keil軟體,在進行對51單片機進行編程時最常用的就是keil軟體。
❾ 用簡單的C語言程序控制LED燈的點亮
初始化部分你要自己根據晶元資料寫,數碼管部分可以根據數碼管的資料做數組xs[10]={0x3b……}要看數碼管引腳定義了,看原理圖看不出來的,可以做個200MS的定時器,然後計數5次就是1S
直接給數碼管的IO口附數組的值,如P1=xs[5];要看你給的是哪個IO口了,我這邊看不清你的原理圖,LED亮200MS後就換動作太快,看不出效果,可以把時間加長