主程序 * 文件名称: Jiuzhouxuese.c 转速计的设计(LCD 显示)的主程序 * 原 理: T1 计数,T0 计时,电动机每转动一周产生 16 个脉冲,T1 采集一分钟 内的脉冲数,后即可计算出转速 * 版本信息: 2011-10-23 ---------------------------------------------------------------*/ #include "LCD1602.h" #include #define uint unsigned int #define uchar unsigned char bit flag; //计满 1 秒钟标志位 uchar count=100; //储存定时器 T0中断次数 uint Speed; //储存电机转速 uchar DispBuffer[4];//存放转换成液晶显示字符(ASCII)的数组 /*------------------------------------------------------------ 功能:主函数 说明:使用晶振为12MHz 的芯片,定时0.01秒。计时器初值为C=65536-0.01/10^(-6)=0D8F0H ---------------------------------------------------------------*/ void main(void) { TMOD=0x51; //T1 工作于计数模式 1,T0 工作于计时模式1; TH0=0xd8; //定时器 T0 赋初值 TL0=0xf0; EA=1; //开总中断 ET0=1; //定时器 T0 中断允许 TR0=1; //启动定时器 T0 while(1) { TR1=1; //计数T1 启动 TH1=0; //计数T1 高8 位赋初值0 TL1=0; //计数T1 低8 位赋初值0 flag=0; //时间还未满1 秒钟 while(flag==0) //时间未满等待 Speed=(TH1*256+TL1)*60/16; //计算速度,每周产生16 个脉冲 } } /*------------------------------------------------------------- 函数功能:定时器 T0 的中断服务函数 --------------------------------------------------------------*/ void Time0(void ) interrupt 1 using 1 //定时器T0 的中断编号为 1,使用第 1 组工作寄存器 { count--; //T0 每中断 1 次,count 减 1 LCD_Initial();//液晶初始化 if(count%4==0) {DispBuffer[0]=Speed/1000+0x30; //将显示数据并分解出千位转换成 ASCII 码 } if (count%4==1) {DispBuffer[1]=Speed%1000/100+0x30;// 将显示数据并分解出百位转换成 ASCII 码 } if(count%4==2) {DispBuffer[2]=Speed%100/10+0x30;//将显示数据并分解出十位转换成 ASCII 码 } if(count%4==3) { DispBuffer[3]=Speed%10+0x30 ; // 将显示数据并分解出个位转换成ASCII 码 } LCD_Prints(1,0,DispBuffer); //LCD 显示数据 w...