MSP430单片机原理及应用 实验

2019-04-15 18:29发布

单片机原理及应用 课程实验(二)

实验项目:MSP430简单程序设计
实验目的:学会用C语言进行简单程序设计
实验要求:掌握编写排序程序
实验内容:
(1)设计一个对8个数据(0-255,任意设置)的由小到大排序程序。
(2)将结果显示在LCD显示器上。
程序代码如下: #include #include "Config.h" #include #include #include int ans; // 全局变量控制输出 // 初始化IO口子程序 void Port_init() { P4SEL = 0x00; P4DIR = 0xFF; //数据口输出模式 P5SEL = 0x00; P5DIR|= BIT5 + BIT6 + BIT7; //控制口设置为输出模式 } // 显示屏命令写入函数 void LCD_write_com(unsigned char com) { RS_CLR; RW_CLR; EN_SET; DataPort = com; //命令写入端口 delay_ms(5); EN_CLR; } // 显示屏数据写入函数 void LCD_write_data(unsigned char data) { RS_SET; RW_CLR; EN_SET; DataPort = data; //数据写入端口 delay_ms(5); EN_CLR; } // 显示屏清空显示 void LCD_clear() { LCD_write_com(0x01); //清屏幕显示 ans = 0; //ans清零 delay_ms(100); } // 显示屏字符串写入函数 void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) { if(ans<16) LCD_write_com(0x80 + x); //第一行显示 else LCD_write_com(0xC0 + x); //第二行显示 while(*s) { LCD_write_data(*s); s++; } } // 显示屏初始化函数 void LCD_init() { ans = 0; LCD_write_com(0x38); //显示模式设置 delay_ms(5); LCD_write_com(0x08); //显示关闭 delay_ms(5); LCD_write_com(0x01); //显示清屏 delay_ms(5); LCD_write_com(0x06); //显示光标移动设置 delay_ms(5); LCD_write_com(0x0C); //显示开及光标设置 delay_ms(5); } // 主程序 void main(void) { WDT_Init(); //看门狗设置 Clock_Init(); //系统时钟设置 Port_init(); //系统初始化,设置IO口属性 delay_ms(100); //延时100ms LCD_init(); //液晶参数初始化设置 LCD_clear(); //清屏 int a[8]={12,123,22,2,1,125,19,3};//自己定义数据 int i, j; //对数据进行排序 for(i=0;i<8;i++) { for(j=0;j<7-i;j++) { if(a[j]>a[j+1]) { int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } while (1) { //字符串输出显示 LCD_clear(); ans = 0; int k = 0; for(i=0;i<15;i++) { char str[3]; if(i%2==0) { if(a[k]/100==0) //不够三位数字 { if(a[k]/10==0) //只有一位数字 { str[2] = a[k]%10+'0'; str[0] = str[1] = '0'; } else //两位数字 { str[2] = a[k]%10+'0'; str[0] = '0'; str[1] = a[k]/10+'0'; } } else //三位数字 { str[2] = a[k]%10+'0'; str[0] = a[k]/100+'0'; str[1] = a[k]%100/10+'0'; } LCD_write_str(ans%16,ans/16, str); k++; ans += 3; } else { LCD_write_str(ans%16,ans/16,"<"); ans++; } } delay_ms(2000); } }