S為顯示的數
- #include "MSP430F5529.h"
- #define uchar unsigned char
- #define uint unsigned int
- #define CPU_F ((double)8000000) //外部高頻晶振8MHZ
- //#define CPU_F ((double)32768) //外部低頻晶振32.768KHZ
- #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))
- //12864/1602液晶控制管腳
- #define RS_CLR P1OUT &= ~BIT3 //RS置低
- #define RS_SET P1OUT |= BIT3 //RS置高
- #define RW_CLR P1OUT &= ~BIT4 //RW置低
- #define RW_SET P1OUT |= BIT4 //RW置高
- #define EN_CLR P1OUT &= ~BIT5 //E置低
- #define EN_SET P1OUT |= BIT5 //E置高
- //彩屏/12864液晶/1602液晶的數據口,三液晶共用
- #define DataDIR P3DIR //數據口方向
- #define DataPort P3OUT //P4口為數據口
- void Port_init()
- {
- P1DIR|=BIT0;
- P1OUT|=BIT0;
- P3SEL = 0x00;
- P3DIR = 0xFF; //數據口輸出模式
- P1SEL = 0x00;
- P1DIR|= BIT3 + BIT4 + BIT5; //控制口設置為輸出模式
- }
- 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;
- }
- unsigned char xs3[15]={'0','1','2','3','4','5','6','7','8','9','.','-','M'};
- uchar S,m,j,k;
- void celiang()
- {
- m=S/100;
- j=(S-m*100)/10;
- k=S%10;
- }
- void sxx(unsigned char x, unsigned char y,unsigned char data)
- {
- uchar wei;
- if(y==0)
- {
- LCD_write_com(0x80);
- wei=0x80+x;
- LCD_write_com(wei);
- LCD_write_data(data);
- }
- else
- {
- LCD_write_com(0xC0);
- wei=0xC0+x;
- LCD_write_com(wei);
- LCD_write_data(data);
- }
- }
- void LCD_clear(void)
- {
- LCD_write_com(0x01); //清屏幕顯示
- delay_ms(5);
- }
- 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 )
- {
- WDTCTL = WDTPW + WDTHOLD;
- Port_init(); //系統初始化,設置IO口屬性
- delay_ms(100); //延時100ms
- LCD_init(); //液晶參數初始化設置
- LCD_clear(); //清屏
- celiang();
- while (1)
- {
- S=100;
- sxx(0,1, xs3[m]);
- sxx(1,1, xs3[j]);
- sxx(2,1, xs3[k]);
- }
- }
復制代碼
|