案例:基于CD4511的兩位數顯示脈沖計數器
計數器T0,工作方式0,對外部脈沖進行計數,當外部脈沖數量達到1000后,LED顯示加一。
我就不太懂那個程序“外部脈沖數量達到1000后,LED顯示加一”,是怎么加到1000的。
是這段程序嗎?
void Counter0(void){
if(TF0==1){
TF0=0;
/*計數器初值設置*/
TH0=0xe0;
TL0=0x18;
counter++;
if(counter>=99){
counter=0;
}
}
}
還有這個也看不懂,返回函數是什么?
//顯示函數
void disply(unsigned char BCD){
unsigned char x,y;//定義x,y兩個變量
x=BCD%10;//取i的個位字符BCD編碼放于x中
y=BCD/10;//取i的十位字符BCD編碼放于y中
y<<=4;//x左移4位
data_buf=y|x;//返回各位與十位的組合BCD編碼并送至P2口顯示
}
總程序如下:(心態崩了看不懂,求大佬指點)- #include <reg51.h>
- void Counter0(void);
- void Counter_Init(void);
- void disply(unsigned char BCD);
- sfr data_buf=0xA0;//顯示數據端口
- unsigned char counter;//全局變量,用于保存計數值
- void main()
- {
- counter=0;
- Counter_Init();
- while(1){
- Counter0();
- disply(counter);
- }
-
- }
- void Counter_Init(void){
- TMOD=0x04;//工作方式的設置
- /*計數器初值設置*/
- TH0=0xe0;//初始值設置,7192轉為13位后的高8位
- TL0=0x18;//初始值設置,7192轉為13位后的低8位
- /*關閉計數器中斷*/
- EA=0;
- ET0=0;
- /*啟動計數器*/
- TR0=1;//啟動T0
- }
- void Counter0(void){
- if(TF0==1){
- TF0=0;
- /*計數器初值設置*/
- TH0=0xe0;
- TL0=0x18;
- counter++;
- if(counter>=99){
- counter=0;
- }
- }
- }
- //顯示函數
- void disply(unsigned char BCD){
- unsigned char x,y;//定義x,y兩個變量
- x=BCD%10;//取i的個位字符BCD編碼放于x中
- y=BCD/10;//取i的十位字符BCD編碼放于y中
-
- y<<=4;//x左移4位
- data_buf=y|x;//返回各位與十位的組合BCD編碼并送至P2口顯示
-
- }
復制代碼
|