当前位置:首页 > 单片机 > 单片机
[导读]/********************************************************************1602液晶显示********************************************************************/ #include #define CPU_F ((double)8000000) #define

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

1602液晶显示

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

#include

#define CPU_F ((double)8000000)

#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))

#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define P10 3

#define P11 6

#define P12 7

#define RS_CLR P3OUT &= ~(1 << P10) //RS置低

#define RS_SET P3OUT |= (1 << P10) //RS置高

#define RW_CLR P3OUT &= ~(1 << P11) //RW置低

#define RW_SET P3OUT |= (1 << P11) //RW置高

#define EN_CLR P3OUT &= ~(1 << P12) //E置低

#define EN_SET P3OUT |= (1 << P12) //E置高

#define DataPort P4OUT //P4口为数据口

#define KeyPort P1IN //独立键盘接在P14~P17

#define LED P2OUT //LED灯接在P2上

uchar key;

uchar temp,keynum = 0;

int shi=23,fen=59,miao=58;

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

// 系统时钟初始化

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

void Clock_Init()

{

uchar i;

BCSCTL1&=~XT2OFF; //打开XT振荡器

BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ

do{

IFG1&=~OFIFG; //清除震荡标志

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

_NOP(); //延时等待

}

while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待

IFG1&=~OFIFG;

}

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

// MSP430内部看门狗初始化

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

void WDT_Init()

{

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

}

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

// 初始化IO口子程序

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

void Port_init()

{

P1SEL = 0x00; //P2普通IO功能

P1DIR = 0x0F; //P24~P27输入模式,外部电路已接上拉电阻

P2SEL = 0x00; //P5口普通IO功能

P2DIR = 0xFF;

// LED = 0X00; //P5口输出模式

P4SEL = 0x00;

P4DIR = 0xFF;

P3SEL = 0x00;

P3DIR|= BIT3 + 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_sfm(uchar add,uchar dat)

{

uchar a,b;

a = dat/10;

b = dat%10;

LCD_write_com(0xc0 + add);

LCD_write_data(a+0x30);

LCD_write_data(b+0x30);

}

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

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

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

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 clock(void)

{

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

}

LCD_write_sfm(2,shi);

}

LCD_write_sfm(5,fen);

}

LCD_write_sfm(8,miao);

}

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

// 按键检测

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

uchar Key_Scan(void)

{

uchar key_check;

uchar key_checkin;

key_check

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

‌MSP430电容触摸‌是指使用MSP430微控制器(MCU)实现的电容触摸感应技术。MSP430系列MCU以其低功耗和丰富的外设模块著称,特别适用于电容触摸应用。

关键字: MSP430

在许多领域得到广泛的应用,特别是它的超级低功耗特性,是目前所有其他单片机无法比拟的

关键字: TI公司 MSP430

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

摘 要:为了能通过串口采集电能参数,完成一种基于串口的三相电能采集设备的研制,设计了电能采集设备的硬件和软件部分。其中硬件采用MCU+专用电能计量芯片的结构,结构简单;软件则用于实现输入、输出、三相电能参数的采集和串行通...

关键字: 电能采集 ATT7022B MSP430 串口

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器技术,这些功能可以变得更加智能和经济。TI 推出的MSP430™MCU 可以帮助您在楼宇自动化解决方案中,...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器技术,这些功能可以变得更加智能和经济。TI 推出的MSP430™MCU 可以帮助您在楼宇自动化解决方案中,...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器(MCU)技术,这些功能可以变得更加智能和经济。为设计出更出色的楼宇自动化解决方案,应选择合适的元件来实现...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器(MCU)技术,这些功能可以变得更加智能和经济。为设计出更出色的楼宇自动化解决方案,应选择合适的元件来实现...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!让我们试想一下一种可以减少模拟组件数量并缩小电路板尺寸的设计。使用这种设计,您可以针对特定应用定制功能,并针对性能、功耗、尺寸和成本进行优化。现在,一个简单的MSP430™MCU就可以满足上述所有功...

关键字: MCU MSP430

作为光源,无论从发光效率、全彩色,还是寿命,都已取得了辉煌的成果,而且还在不断深化之中。LCD发明以来,背光源在不断地进步,由单色到彩色,由厚到薄,由侧置荧光灯式到平板荧光灯式。

关键字: 3寸TFT MSP430 驱动
关闭