基于msp430单片机的电机调速系统内容摘要:

ucTemp = P2INamp。 0x0F。 Delay_Nms(20)。 if(ucTemp != 0x0F) {//判断该列是否有按键按下 Delay_Nms(15)。 if(ucTemp==(P2INamp。 0x0F)) { switch(ucTemp)//如果有,则判断行号 四川理工学院挑战杯论文 第 16 页 共 32 页 { case 0x0E: ucLine=1。 break。 case 0x0D: ucLine=2。 break。 case 0x0B: ucLine=3。 break。 case 0x07: ucLine=4。 break。 default: ucLine=5。 break。 } } while((P2INamp。 0x0F) != 0x0f)//等待按键放开 Delay_Nms(25)。 while((P2INamp。 0x0F) != 0x0f) //等待按键放开 Delay_Nms(5)。 /****** 判断键值 ******/ switch(ucLine+(ucRow+1)*10) { case 11: key=1。 break。 case 12: key=2。 break。 case 13: key=3。 break。 case 14: key=3。 break。 case 21: key=3。 break。 case 22: key=3。 break。 case 23: key=3。 break。 case 24: key=3。 break。 case 31: key=3。 break。 case 32: key=3。 break。 case 33: key=3。 break。 case 34: key=3。 break。 case 41: key=3。 break。 case 42: key=3。 break。 case 43: key=11。 break。 case 44: key=10。 break。 } if(key==1) { clear_row(0x94)。 Write_Data(0x30+key)。 k = key。 } else if(key==2) { clear_row(0x94)。 Write_Data(0x30+key)。 k=key。 } else if(key==11) clear_row(0x94)。 else return k。 } 四川理工学院挑战杯论文 第 17 页 共 32 页 } } } 程序二: LCD12864 显示文件 define uchar unsigned char define uint unsigned int void Delay_1ms(void)。 void Delay_Nms(uint n)。 void Write_Cmd(uchar cod)。 void Write_Data(uchar dat)。 void Ini_Lcd(void)。 void Disp_HZ(uchar addr,const uchar * pt,uchar num)。 void Disp_ND(uchar addr,uint thickness)。 void Draw_TX(uchar Yaddr,uchar Xaddr)。 void Draw_PM(const uchar *ptr)。 void display(uchar add,uint cont)。 void display_str(uchar *str)。 void Clear_GDRAM(void)。 uchar Read_Data()。 void dis_line(uchar yaddr)。 void dis_lin(uchar ystar,uchar xstar,uchar yend,uchar xend)。 include typedef unsigned char uchar。 typedef unsigned int uint。 define LCD_DataIn P5DIR=0x00//数据口方向设置为输入 define LCD_DataOut P5DIR=0xff//数据口方向设置为输出 define LCD2MCU_Data P5IN define MCU2LCD_Data P5OUT define LCD_CMDOut P3DIR|=0x07 //P3 口的低三位设置为输出 define LCD_RS_H P3OUT|=BIT0 // define LCD_RS_L P3OUTamp。 =~BIT0 // define LCD_RW_H P3OUT|=BIT1 // define LCD_RW_L P3OUTamp。 =~BIT1 // define LCD_EN_H P3OUT|=BIT2 // define LCD_EN_L P3OUTamp。 =~BIT2 // void Delay_1ms(void) { uchar i。 for(i = 150。 i 0。 i) _NOP()。 } void Delay_Nms(uint n) { uint i。 for(i = n。 i 0。 i) Delay_1ms()。 } void Write_Cmd(uchar cmd) 四川理工学院挑战杯论文 第 18 页 共 32 页 { uchar lcdtemp = 0。 LCD_RS_L。 LCD_RW_H。 LCD_DataIn。 do //判忙 { LCD_EN_H。 _NOP()。 lcdtemp = LCD2MCU_Data。 LCD_EN_L。 } while(lcdtemp amp。 0x80)。 LCD_DataOut。 LCD_RW_L。 MCU2LCD_Data = cmd。 LCD_EN_H。 _NOP()。 LCD_EN_L。 } void Write_Data(uchar dat) { uchar lcdtemp = 0。 LCD_RS_L。 LCD_RW_H。 LCD_DataIn。 do //判忙 { LCD_EN_H。 _NOP()。 lcdtemp = LCD2MCU_Data。 LCD_EN_L。 } while(lcdtemp amp。 0x80)。 LCD_DataOut。 LCD_RS_H。 LCD_RW_L。 MCU2LCD_Data = dat。 LCD_EN_H。 _NOP()。 LCD_EN_L。 } void Ini_Lcd(void) { 四川理工学院挑战杯论文 第 19 页 共 32 页 LCD_CMDOut。 //液晶控制端口设置为输出 Delay_Nms(500)。 Write_Cmd(0x30)。 //基本指令集 Delay_1ms()。 Write_Cmd(0x02)。 // 地址归位 Delay_1ms()。 Write_Cmd(0x0c)。 //整体显示打开 ,游标关闭 Delay_1ms()。 Write_Cmd(0x01)。 //清除显示 Delay_1ms()。 Write_Cmd(0x06)。 //游标右移 Delay_1ms()。 Write_Cmd(0x80)。 //设定显示的起始地址 } void Disp_HZ(uchar addr,const uchar * pt,uchar num) { uchar i。 Write_Cmd(addr)。 for(i = 0。 i (num*2)。 i++) Write_Data(*(pt++))。 } uchar Read_Data() { uchar lcdtemp = 0。 uchar data=0。 LCD_RS_L。 LCD_RW_H。 LCD_DataIn。 do //判忙 { LCD_EN_H。 _NOP()。 lcdtemp = LCD2MCU_Data。 LCD_EN_L。 } while(lcdtemp amp。 0x80)。 LCD_DataIn。 LCD_RS_H。 LCD_RW_H。 LCD_EN_H。 _NOP()。 data = LCD2MCU_Data。 _NOP()。 LCD_EN_L。 四川理工学院挑战杯论文 第 20 页 共 32 页 return data。 } void Clear_GDRAM(void) { uchar i,j,k。 Write_Cmd(0x34)。 //打开扩展指令集 i = 0x80。 for(j = 0。 j 32。 j++) { Write_Cmd(i++)。 Write_Cmd(0x80)。 for(k = 0。 k 16。 k++) { Write_Data(0x00)。 } } i = 0x80。 for(j = 0。 j 32。 j++) { Write_Cmd(i++)。 Write_Cmd(0x88)。 for(k = 0。 k 16。 k++) { Write_Data(0x00)。 } } Write_Cmd(0x30)。 //回到基本指令集 } /****************************** 在指定位置画点 *******************************/ void Draw_TX(uchar Yaddr,uchar Xaddr) { uchar row,tier,tier_y。 uchar data[2]。 Write_Cmd(0x34)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。