历史上的今天
返回首页

历史上的今天

今天是:2025年04月10日(星期四)

正在发生

2019年04月10日 | 实验二:MSP430简单程序设计

2019-04-10 来源:eefocus

1.实验目的


    学会用C语言进行简单程序设计。


2.实验要求


    掌握编写排序程序。


3.实验内容


(1)设计一个对8个数据(0-255,任意设置)的由小到大排序程序。


(2)将结果显示在LCD显示器上。


4.参考资料


#include

#include "Config.h"

 

//*************************************************************************

// 初始化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(void) 

{

LCD_write_com(0x01);            //清屏幕显示

delay_ms(5);

}

 

//***********************************************************************

// 显示屏字符串写入函数

//***********************************************************************

void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) 

{


    if (y == 0) 

    {

    LCD_write_com(0x80 + x);        //第一行显示

    }

    else 

    {

    LCD_write_com(0xC0 + x);        //第二行显示

    }

    

    while (*s) 

    {

    LCD_write_data( *s);

    s ++;

    }

}

 

//***********************************************************************

// 显示屏单字符写入函数

//***********************************************************************

void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) 

{


    if (y == 0) 

    {

    LCD_write_com(0x80 + x);        //第一行显示

    }

    else 

    {

    LCD_write_com(0xC0 + x);        //第二行显示

    }

    

    LCD_write_data( data);  

}

 

//***********************************************************************

// 显示屏初始化函数

//***********************************************************************

void LCD_init(void) 

{

    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]={5,6,2,4,3,1,8,7};

     int i, j;

     

     for(i=0;i<8;i++)

     {

          for(j=0;j<8;j++)

          {

              if(a[i]

              {

                  int t = a[i];

                  a[i]=a[j];

                  a[j] = t;

              }

          }

     }

     

     while (1) 

      {

             //字符串输出显示

LCD_clear();

LCD_write_str(0,0,"Array:");

for(i=0;i<15;i++)

                {

                    if(i%2==0)

                       LCD_write_char(i,1,a[i/2]+'0');

                    else

                       LCD_write_char(i,1,'<');

                }

delay_ms(2000);

      }

}

推荐阅读

史海拾趣

CalAmp公司的发展小趣事

在业务拓展方面,CalAmp公司始终保持着敏锐的市场洞察力。某年,公司成功推出了RFID动物溯源和共享单车智能等新业务。这些新业务不仅为公司带来了新的增长点,也进一步拓宽了其业务范围。虽然新产品线的毛利率较低,对公司的整体毛利率和净利率产生了一定影响,但公司通过优化成本结构和提升运营效率,逐步改善了这一状况。同时,公司与澳大利亚利德品有限公司签订的品牌授权及合作协议,也为公司未来的盈利能力提升奠定了基础。

EDO Corp公司的发展小趣事

在1930年代,Eclipse Magnetics这个名字首次出现,标志着品牌的诞生。当时,该公司主要从事磁性产品的研究和开发。进入1940年代,Eclipse Magnetics逐渐崭露头角,成为一个独立的公司。在电子行业的早期,该公司凭借其独特的磁性技术,开始在市场中占据一席之地。

HDP_Power公司的发展小趣事

在制药工业中,Eclipse Magnetics的磁选机技术得到了广泛应用。通过与制药企业的合作,Eclipse Magnetics成功解决了制药过程中可能存在的金属污染问题。这种合作不仅提升了制药企业的产品质量,也进一步巩固了Eclipse Magnetics在电子行业的地位。

Ferranti Electric Inc公司的发展小趣事

Ferranti Electric Inc公司的历史可追溯到1880年,由Sebastian Ziani de Ferranti(塞巴斯蒂安·齐亚尼·德·费兰蒂)在英国创立。作为发电机及壳式变压器的发明者之一,费兰蒂博士不仅拥有交流发电机、高压电缆、断路器等176项专利,而且他的创新精神也为公司的创立和发展奠定了坚实的基础。初创时期,公司就专注于电气产品的研发和生产,逐渐在电气行业崭露头角。

BLACK&DECKER公司的发展小趣事

随着公司的不断发展壮大,BLACK&DECKER开始进军国际市场。1993年,公司在中国成立了第一家工厂,这标志着BLACK&DECKER全球化战略的重要一步。此后,公司通过在全球范围内设立生产基地和销售网络,不断扩大品牌影响力。同时,BLACK&DECKER还通过收购其他知名品牌,如得伟(DeWalt)等,进一步巩固了其在电子行业中的领先地位。

Autonics公司的发展小趣事

作为一家具有社会责任感的企业,Autonics不仅注重经济效益的发展,还积极参与公益事业和环保活动。公司致力于推动绿色生产,减少对环境的影响。同时,Autonics还关注员工福利和社会贡献,为员工提供良好的工作环境和发展空间,积极回馈社会。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上五个故事仅是对Autonics公司发展起来的一些重要阶段的概括性描述,并未涉及具体的细节和内部信息。如需了解更多关于Autonics公司的发展历程和故事,建议查阅相关新闻报道、行业分析报告或公司官方网站。

问答坊 | AI 解惑

CodeVision AVR 1.25.8 pro

发个AVR的C编译器,第一次发,不知行不行…

查看全部问答>

请问如何开发一个计算机体系结构的实验箱

我们最近要做一个计算机系统结构的实验箱,我不知从何入手。 实验箱主要是这样的, 核心FPGA板 留给用户设计各种cpu , 比如 流水cpu  超标量cpu 等,也就是用来给学生自己开发cpu。 我要做的就是做一个控制部分的电路设计。可以 控制 ...…

查看全部问答>

[请问]怎样在EVC4.0SP4中引用miracl库函数?

我在工程的Header Files里添加了miracl.h和mirdef.h两个头文件,还添加了ms32.lib文件,但在编程中使用otnum()等等miracl库中的函数时仍提示错误。 Repw.obj : error LNK2019: unresolved external symbol \"int __cdecl otnum(struct bigtype *,v ...…

查看全部问答>

关于对嵌入式开发了解的问题

  小弟由于想转入到嵌入式开发的领域中来,所以需要一些最基本的了解,以便有一个更清晰的学习开端,请多多指教:      问题1:在网上查了下嵌入式开发的理解,但越看越晕,一会儿是嵌入式开发,一会儿是linux嵌入 ...…

查看全部问答>

VC开发驱动怎么设置环境啊。急。

想在VC里面写驱动 但是搭建环境完全不会  哪个好心人给我详细说明。。…

查看全部问答>

蓝牙DUN初始化问题

蓝牙新手,想请教下 void DunInit(Task theAppTask, dun_device_type type_of_device, uint16 RI, uint16 DTR, uint16 DCD, uint16 DSR, uint16 priority); 这个DUN初始化函数的参数该如何设定 附上dun.h中的函数说明: /*!     &n ...…

查看全部问答>

求专门为IXP425定制的linux kernel或者patch

求专门为IXP425定制的linux kernel或者patch,或者告诉我下载地址,谢谢了…

查看全部问答>

MSP430中断嵌套机制

(1)430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT。(2)当进入中断程序时,只要不在中断中再次开中断,刚总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行。(3)若在中断A中开了总中断,刚可以响应 ...…

查看全部问答>

EDA实验与实践 moto_test

module moto_test(clock,key,duty_cycle,pwm_en,pwm_in,motoa,motob,led); input clock;                            //系统时钟(48MHz) input[2:0] ...…

查看全部问答>