当前位置:首页 > 直流电机调速测速系统开发 - 图文
2011届本科生毕业设计(论文)
{ INTCONbits.INT0IE=0; MyTMR3.ChangeFlag=0;//如果标志为1,则置0 MyTMR3.LowCounter=TMR3L;//读取TMR3寄存器的内容 MyTMR3.LowCounter=TMR3H; MyTMR3.LowCounter<<=8; MyTMR3.LowCounter|=TMR3L; FreqFlag=0; CycleFlag=1; } else { MyTMR3.ChangeFlag=1;//如果标志为0,则置1 MyTMR3.HighCounter=0;//清相关变量 MyTMR3.LowCounter=0; } }
if(1==INTCONbits.TMR0IF)//定时1S时间到 {
INTCONbits.TMR0IF=0;//TMR0溢出标志位清0 TMR0H=(65536-31250)/256;//先写高字节 TMR0L=(65536-31250)%6;//再写低字节
T1CONbits.TMR1ON=0;//TMR1计数器停止工作 MyTMR1.LowCounter=TMR1L; MyTMR1.LowCounter=TMR1H; MyTMR1.LowCounter<<=8; MyTMR1.LowCounter|=TMR1L; CycleFlag=0; FreqFlag=1; } }
//------------------------------------------------------------------- //---低优先中断服务程序函数
#pragma interruptlow SystemInterruptISR void SystemInterruptISR(void) {
if(1==PIR1bits.TMR1IF)//如果TMR1溢出 {
PIR1bits.TMR1IF=0;//清TMR1溢出标志位 MyTMR1.HighCounter++;//TMR1软计数器加1 }
46
2011届本科生毕业设计(论文)
if(1==PIR2bits.TMR3IF)//如果TMR3溢出 {
PIR2bits.TMR3IF=0;//清TMR3溢出标志位 MyTMR3.HighCounter++;//TMR3软计数器加1 } }
(2)16x2LCDDriver.cLCD显示驱动源文件 #include
#include \
//16X2LCD的延时子程序
void lcd_delay(unsigned int delaytime) {
while(delaytime)delaytime--; }
//向LCD写入命令的子程序
void write_lcd_command(unsigned char write_command) {
lcd_delay(40); RsCLR;//Rs=0 RWCLR;//RW=0
LCDPORT=write_command;//写命令字 ENsET;//EN=1; ENCLR;//EN=0 }
//向LCD写入数据的子程序
void write_lcd_data(unsigned char write_data) {
lcd_delay(40); RssET;//Rs=1 RWCLR;//RW=0
LCDPORT=write_data;//写数据 ENsET;//EN=1 ENCLR;//EN=0 }
//初始化LCD的子程序 void initize_lcd(void) {
unsigned char i; ENCLR;
for(i=200;i>0;i--)lcd_delay(248);//延时45ms write_lcd_command(0x3f); for(i=4;i>0;i--)lcd_delay(248);
47
共分享92篇相关文档