技术交流群:

嵌入式实训营1:19429950

单片机实训营2:60851063

嵌入式实训营3:88043995

嵌入式实训营4:85407149

单片机实训营5:68715458

嵌入式实训营6:37440927

嵌入式实训营7:103762590

嵌入式实训营8:108914440

单片机实训营9:2334655

嵌入式实训营10:147218754

课程大纲
就业中心
实训平台
助学贷款
ARM2148显示实验注意要点
来源:原创 发布时间:2009-6-18 作者:

SuperARM显示实验注意要点

有客户在做SuperARM显示实验遇到了这样的问题,就是在数码管和LCD同时显示时,很容易出现显示错乱。为此我们特别为客户编写了“综合实验3“,以显示我们的产品没有任何问题。同时我们也针对此现象作如下解释:

数码管和LCD的数据传输都是用的芯片的SSP1功能,其中P0.22(CS0)用于片选连接LCD数据口的74HC595P0.24(CS1)用于片选连接LCD数据口的74HC595。他们共同调用函数:void  InitializeSSP(void)int8u  SSP_SendData(int32u SPI_CS,int8u data)完成SSP得初始化和数据传送。

有一点书要注意,完成一次刷屏,需要多次调用SSP_SendData( ),这样就有可能发生这样的情况,正在执行刷屏调用SSP_SendData( ),此函数执行到中途,此时发生了任务切换,然后跳入数码管调用SSP_SendData( ),这事就可能会出

现显示错乱。

要解决这样的问题有多种方法,现边说两种简单的。

1.建立一个互斥信号量,用于控制程序对函数SSP_SendData( )的访问,只要有函数调用SSP_SendData( ),互斥信号量就标记为不可用。防止重入。

2.采用临介区代码的方法:在进入SSP_SendData( )函数时,关中断,退出时开中断。具体代码如下:

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

函数名称:SSP_SendData()

函数功能:SSP接口向SPI总线发送数据。

入口参数:data        待发送的数据

出口参数:返回值为读取的数据

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

int8u  SSP_SendData(int32u SPI_CS,int8u data)

{  

int16u temp;

OS_ENTER_CRITICAL();         //关中断

Set_Output(SPI_CS,0);         // 片选SPI   

    SSPDR = data;

    while( (SSPSR & 0x01) == 0 );     // 等待TFE置位,即发送FIFO

    while( (SSPSR & 0x04) == 0 );     // 等待TFE置位,即发送FIFO空 

    temp = SSPDR;        

Output(SPI_CS,1);  

OS_EXIT_CRITICAL();         //开中断    

    return(temp);

}

免费讲座 最新优惠 关于我们 校企合作 代理经销 联系我们

公司总部服务地址:深圳市宝安区民治大道东边商务大楼1188  ,电话:0755-26457584

南山实训基地:深圳市南山区南新路与桃源路交汇处苏豪名厦705室,0755-88846901

龙华实训基地:深圳市宝安区民治大道东边商务大楼1188 ,0755-23055792

沙井实训基地:深圳宝安区沙井街道创新路沙井广场1号楼1506室,0755-88846901

布吉实训基地: 深圳布吉街道深惠路与百合路交汇百合银都国际D栋19G(百合酒店D栋

罗湖实训基地:深圳罗湖区银湖路轩阁花园A栋1楼

全国免费咨询电话:400 625 6655,0755-88846901,企业培训洽谈专线:0755-88846901

在线咨询:QQ(313807838),双休日及节假日值班手机:13510783517

院校合作洽谈专线:0755-88846901,13689599325,在线咨询:QQ(1056110335)

©2007-2012 深圳信盈达电子有限公司 版权所有 ,ICP备案号:粤ICP备09072292

首页 > 电子综合技术 > ARM2148显示实验注意要点