打印

为什么我的STM8用12864显示int的时候会从32768变到了-32768

[复制链接]
1235|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
爱的偏方|  楼主 | 2013-9-2 21:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
就是我的stm8在计数的时候会从32768,即为65536的一半就变到了-32768
沙发
爱的偏方|  楼主 | 2013-9-2 21:02 | 只看该作者
#include <stm8s208c8.h>
#include <delay.h>
/*------------------------------------------------
                                                                12864 管脚设置
------------------------------------------------*/
_Bool CS @PA_ODR:3;
_Bool SID @PA_ODR:6;
_Bool SCLK  @PB_ODR:7;

void LCDGPIO_Init(void)//定义12864端口
{
        PA_DDR |= 0X48;
        PA_CR1 |= 0X48;
        PB_DDR |= 0X80;
        PB_CR1 |= 0X80;
}
/* 写命令函数 */
void Write_Com(unsigned char com)
{
        unsigned char i,i_data;
        i_data=0xf8;
        CS=1;
        SCLK=0;
        for(i=8;i>0;i--)
        {
                SID=(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data<<=1;
        }
        i_data=(com&0xf0);
        for(i=8;i>0;i--)
        {
                SID=(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data<<=1;
        }
        i_data=com;
        i_data<<=4;
        for(i=8;i>0;i--)
        {
                SID=(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data<<=1;
        }
        CS=0;
        DelayMs(10);
}

/* 写数据函数 */
void Write_Data(unsigned char data)
{
        unsigned char i,i_data;
        i_data=0xfa;
        CS=1;
        for(i=8;i>0;i--)
        {
                SID=(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data<<=1;
        }
        i_data=(data&0xf0);
        for(i=8;i>0;i--)
        {
                SID=(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data<<=1;
        }
        i_data=data;
        i_data<<=4;
        for(i=8;i>0;i--)
        {
                SID=(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data<<=1;
        }
}

/* 屏幕初始化 */
void LCD_Init(void)
{
        Write_Com(0x30); //基本指令操作
  DelayMs(5);
        Write_Com(0x0C); //显示开,关光标
  DelayMs(5);
  Write_Com(0x06); //光标的移动方向
  DelayMs(5);
  Write_Com(0x01); //清除LCD的显示内容
  DelayMs(5);
}

/* 设定位置函数 */
void LCD_Position(unsigned char X,unsigned char Y)
{
        unsigned char pos;
        if(X==1) X=0X80;
        if(X==2) X=0X90;
        if(X==3) X=0X88;
        if(X==4) X=0X98;
        pos=X+Y;
        Write_Com(pos);
}
/* 清屏函数 */
void Clr_Screen(void)
{
        Write_Com(0x30);
        DelayMs(5);
        Write_Com(0x01);
        DelayMs(5);
}

/* 写字符串函数 */
void Put_String(unsigned char X,unsigned char Y,
unsigned char *s)
{
        unsigned char num=0;
        LCD_Position(X,Y);
        while(*s)
        {
                Write_Data(*s);
                s++;
                DelayUs(50);
        }
}

使用特权

评论回复
板凳
soso| | 2013-9-2 21:13 | 只看该作者
噶科技阿克江艾光

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝