案例:基于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口显示
-
- }
复制代码
|