小妹的困惑 方波还是脉冲惹得祸
时间:10-02
整理:3721RD
点击:
stc89c52的定时器1可以当做计数器用,当我把定时器0定时1s,计数器1计数,来测的外界信号的频率,而外接的信号由LM393转换之后的0-4v的方波,然而显示在12864的值一直不变为00000,哪位大侠有做过的,是不是计数器1计算的是脉冲,而不是脉冲,应该用外部中断来做,哪位大侠能否帮帮忙,弄了好些天,没什么结果,江湖救急啊,下面是小妹的代码
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uint counter_1=0,counter_0=0,result;
- uchar table[5]={0},num;
- bit flag=0;
- unsigned long number;
- #define LCD_data P0 //数据口
- sbit LCD_RS = P3^5; //寄存器选择输入
- sbit LCD_RW = P3^6; //液晶读/写控制
- sbit LCD_EN = P3^4; //液晶使能控制
- sbit LCD_PSB = P1^2; //串/并方式控制
- sbit wela = P2^6;
- sbit dula = P2^7;
- void delay_1ms(uint x)
- {
- uint i,j;
- for(j=0;j<x;j++)
- for(i=0;i<110;i++);
- }
- /*******************************************************************/
- /* */
- /*写指令数据到LCD */
- /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
- /* */
- /*******************************************************************/
- void write_cmd(uchar cmd)
- {
- LCD_RS = 0;
- LCD_RW = 0;
- LCD_EN = 0;
- P0 = cmd;
- delay_1ms(5);
- LCD_EN = 1;
- delay_1ms(5);
- LCD_EN = 0;
- }
- /*******************************************************************/
- /* */
- /*写显示数据到LCD */
- /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
- /* */
- /*******************************************************************/
- void write_dat(uchar dat)
- {
- LCD_RS = 1;
- LCD_RW = 0;
- LCD_EN = 0;
- P0 = dat;
- delay_1ms(5);
- LCD_EN = 1;
- delay_1ms(5);
- LCD_EN = 0;
- }
- /*********************************************************/
- /* */
- /* 设定显示位置 */
- /* */
- /*********************************************************/
- void lcd_pos(uchar X,uchar Y)
- {
- uchar pos;
- if (X==0)
- {X=0x80;}
- else if (X==1)
- {X=0x90;}
- else if (X==2)
- {X=0x88;}
- else if (X==3)
- {X=0x98;}
- pos = X+Y ;
- write_cmd(pos); //显示地址
- }
- /*******************************************************************/
- /* */
- /* LCD初始化设定 */
- /* */
- /*******************************************************************/
- void lcd_init()
- {
- LCD_PSB = 1; //并口方式
- write_cmd(0x30); //基本指令操作
- delay_1ms(5);
- write_cmd(0x0C); //显示开,关光标
- delay_1ms(5);
- write_cmd(0x01); //清除LCD的显示内容
- delay_1ms(5);
- }
- /************频率检测阶段的定时器0和计数器1的设置*********/
可以用定时器的记数模式
不错的资料,感谢小编分享
不错的资料,感谢小编分享
不错的资料,感谢小编分享
不错的资料,感谢小编分享
不错的资料,感谢小编分享
不错的资料,感谢小编分享