實驗目的:
通過實驗,掌握如何通過74hc595擴充套件io口,掌握如何運用動態掃瞄的方法驅動多位數碼管;
實驗內容:
判斷按鍵sw8(int1)是否按下,並對按鍵次數計數,顯示在數碼管之上;(微控制器剛啟動後,數碼管顯示為全0,當第一次按下sw8後,數碼管顯示0001,當第二次按下sw8後,數碼管顯示0002)
**實現:
// target : m16
// crystal: 7.3728mhz
#include #include #define clr_shclk() portb&=~(1<<1) //移位時鐘 sclk
#define set_shclk() portb|=(1<<1) //移位時鐘 sclk,上公升沿
#define clr_stclk() portb&=~(1<<0) //鎖存時鐘 rclk
#define set_stclk() portb|=(1<<0) //拉高鎖存時鐘,上公升沿
#define clr_ds() porta&=~(1<<0) //清零
#define set_ds() porta|=(1<<0) //置位
#define uchar unsigned char
#define uint unsigned int
//定義字元表
unsigned char led_7[14]=;
uchar led_buf[4]=;
unsigned int count=0;
void delay_ms(unsigned int time) //延時函式
time--;
}}
void port_init(void) //初始化io
void hc595send(unsigned char snddata)
else
clr_shclk(); //移位時鐘 sclk
set_shclk(); //移位時鐘 sclk,上公升沿
}clr_stclk();
set_stclk(); //拉高鎖存時鐘,上公升沿
}//call this routine to initialize all peripherals
void init_devices(void)
void handle_data(uint count,uchar led_buf) //處理資料
void display(void) 顯示函式
}void get_key(void) 按鍵函式 }}
int main(void)
return 0;
}
按鍵數碼管顯示實驗
要求 能夠實現本微控制器按下鍵盤,能夠在數碼管上顯示鍵盤值。連線 將片選cs0鏈結到key led cs。define ledlen 6 xdata unsigned char outbit at 0x8002 位控制口 xdata unsigned char outseg at 0x8004 段控...
數碼管顯示
數碼管顯示 最近因為對突然對電子感興趣,前幾天在路過電子 時買了乙個數碼管。因為以前總是紙上談兵,根本沒實驗過,連數碼見都沒見過,所以開始覺得將這塊數碼管顯示出來是非常具有挑戰性的工作。今天正好有空,拿來了我的數碼管,並在網上看了一些資料,才發現並不是想象中的那麼難,其實更準確的說是太簡單了。不到半...
數碼管顯示
一 區分數碼管的類別 共陰數碼管 即所有數碼管的陰極接在一起。要使某個數碼管點亮,只需置上高電平,中該位置 1 共陽數碼管 即所有數碼管的陽極接在一起。要使某個數碼管點亮,只需置上低電平,中該位置 0 二 單個數碼管顯示 a h 表示單個數碼管上面的8個led。根據共陰共陽的特性,點亮相應的led,...