我的主控芯片用的是msp430f4250,想让1602显示固定的数字1234,程序如下:
#include <msp430f4250.h>//引用头文件
#define uchar unsigned char
#define uint unsigned int
void delay(long unsigned int n)
{uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<2;j++);
//延时子程序
}
void WriteCommandLcd(unsigned char wdata)//向1602液晶写入命令子程序;
{
P5OUT&=~0x10;//RS清零,代表命令;
P5OUT&=~0x08;//RW清零;
P5OUT&=~0x04;//使能E清零;
delay(500); //短暂延时,代替检测忙状态
P5OUT|= 0x04;//使能E置1;
P2OUT=wdata;//送出命令或数据
delay(500);//短暂延时,代替检测忙状态
P5OUT&=~0x04;//使能E清零,下降沿将命令或数据送入1602;
}
void WriteDataLcd(unsigned char wdata)//向1602液晶写入数据子程序;
{
P5OUT|= 0x10;//RS置1,代表数据;
P5OUT&=~0x08;//RW清零;
P5OUT&=~0x04;//使能E清零;
delay(500); //短暂延时,代替检测忙状态
P5OUT|= 0x04;//使能E置1;
P2OUT=wdata;//送出命令或数据
delay(500);//短暂延时,代替检测忙状态
P5OUT&=~0x04;//使能E清零,下降沿将命令或数据送入1602;
}
//LCD初始化
void lcd_init(void)
{
delay(5000);
WriteCommandLcd(0x38);//显示模式设置,设置为16X2显示,5X7点阵,8位数据接口
delay(500);
WriteCommandLcd(0x01); //显示清屏
//WriteCommandLcd(0x0c); //开显示,关闭光标,当然光标也就不能显示了;(1)
//WriteCommandLcd(0x0e); //开显示,显示光标,但是光标不闪烁;(2)
WriteCommandLcd(0x0f); //开显示,显示光标,光标闪烁;(3)
WriteCommandLcd(0x06); //读写操作时地址自动加1
}
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗复位
while(1)
{
P2DIR = 0xff;//设置P2为输出状态
P5DIR = 0xff;//设置P6为输出状态
lcd_init(); //初始化子程序;
WriteCommandLcd(0x80);//从第一行第一个位置开始显示数据,第一行第一个位置的地址是80H;
WriteDataLcd(0x30+0);//在第一行第一个位置显示数字0;让1602显示0必须向其送ASCII码,0的ASCII是30H;
WriteDataLcd(0x30+1);//在第一行第二个位置显示数字1;1的ASCII是31H,以下类推
WriteDataLcd(0x30+2);//显示数字2;
WriteDataLcd(0x30+3);//显示数字3;
while(1);//程序停
}
}
我把程序下到板子里,背光亮,但是显示不出来数值,各位帮我看看是什么问题?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这类程序最常见就是mcu的运行频率改变了,原来的程序就运行失败了
虽然您的回复,没有解决我的问题,还是决定给分您,因为通过您的回答我还是学到了东西的
一周热门 更多>