导航:首页 > 操作系统 > msp430单片机显示

msp430单片机显示

发布时间:2022-05-21 11:12:30

1. msp430单片机控制7寸液晶显示屏推荐一个液晶显示屏

车库里,每个车位位置装一个传感器,比如光电传感器,有车挡住光了就表示有车,或线圈传感器,感应到汽车就输出一个信号。
信息送给msp430,430驱动一个7寸液晶屏,显示出来画面。
7寸显示屏有很多,某宝上一搜一大堆,比如群创,天马等等。

2. MSP430单片机接什么型号的显示屏(显示元件)呢

8位数码的LCD液晶显示屏,使用起来很方便的,只要两根IO线控制就可以了,工作电压2.7到5.5V都可以工作.资料详细见http://www.sunman.cn/chinese/proct/SMS0801B.asp
其他两种方案网站上都有.

3. 初学者求助,用msp430单片机实现LCD显示电子时钟程序

哎。。。哥表示这个问题给2小时应该可以基本搞定,3小时程序基本优化完成。最后表示,你得自己花时间,你花10个小时,也是你自己的。我花1小时,知识也不属于你。

4. MSP430单片机电压测量和显示问题

用两个电阻分压即可,msp430系列单片机的a/d口的输入阻抗足够高。

5. MSP430单片机如何不用中断实现数码管显示,急求程序

1、动态显示:通过主程序调用数码管显示程序,定时更新;
2、静态显示:通过引脚直接驱动即可。
以上2种方法都不需要定时器中断。

6. MSP430单片机温控系统中,外部温度传感器读到的电压值如何转换为我想要的温度值,用液晶显示

一、用自带 ADC 加温度系数电阻,通常是负温度系数电阻。

首先要校准温度,用温度计测试室温,然后采集你当前的电压值, 然后升高温度测试第二组温度和电压值,不需要太精准的话 就可以算出斜率。 TEP= A*斜率+B AB的值可以用室温的值计算出来。

二、采用已经封装好的数字温度传感器,可以直接读出温度值。这个相对比较简单。做I2C协议或者1WIRE的协议就可以、

三、加热问题,一般是用GPIO控制继电器,控制电热丝加热。 单片机一般只有3.3V 电压低电流大不适合做加热。 一般用大电压,在相同的功率下,电流小。

有其他的问题再发站内信

7. 用C语言编写程序使MSP430单片机实现数字时钟(显示年月日,时分秒,最好也能显示星期)

我以前倒是做过,不过程序还有点问题,调时间的时候容易过界,但正常走时候就正常了。开发环境用的IAR,单片机用f149,显示用的1602的四线模式。
你自己看着改程序吧,其实我也是51上移植过去的。

悲剧了,帖不下了.我帖在我博客里了啊,自己去找吧.
主程序
__________________________分隔线____________________________________

#include <msp430x14x.h>
#include "ds1302.h"
#include "LCD1602x4_mps.h"

#define DS1302_SECOND 0x81 //时钟芯片的寄存器位置,存放时间
#define DS1302_MINUTE 0x83
#define DS1302_HOUR 0x85
#define DS1302_WEEK 0x8b
#define DS1302_DAY 0x87
#define DS1302_MONTH 0x89
#define DS1302_YEAR 0x8d

unsigned char DateString[11],TimeString[9],week_value[2],TempBuffer[7]; //
char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;
char done,count,temp,flag,up_flag,down_flag;
//unsigned int temp_value=0,temp_max=0;temp_min=0; //温度值

void DateToStr(void) //将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DateString[]
{ unsigned char Year,Month,Day,Week;
Year=rtc_getyear();
Month=rtc_getmon();
Day=rtc_getdate();
Week=rtc_getday();

if(hide_year<2) //这里的if,else语句都是判断位闪烁,<2显示数据,>2就不显示,输出字符串为 2007/07/22
{
DateString[0] = '2';
DateString[1] = '0';
DateString[2] = Year/10 + '0';
DateString[3] = Year%10 + '0';
}
else
{
DateString[0] = ' ';
DateString[1] = ' ';
DateString[2] = ' ';
DateString[3] = ' ';
}
DateString[4] = '/';
if(hide_month<2)
{
DateString[5] = Month/10 + '0';
DateString[6] = Month%10 + '0';
}
else
{
DateString[5] = ' ';
DateString[6] = ' ';
}
DateString[7] = '/';
if(hide_day<2)
{
DateString[8] = Day/10 + '0';
DateString[9] = Day%10 + '0';
}
else
{
DateString[8] = ' ';
DateString[9] = ' ';
}
if(hide_week<2)
{
week_value[0] = Week%10 + '0'; //星期的数据另外放到 week_value[]数组里,跟年,月,日的分开存放,因为等一下要在最后显示
}
else
{
week_value[0] = ' ';
}
week_value[1] = '\0';

DateString[10] = '\0'; //字符串末尾加 '\0' ,判断结束字符
}

void TimeToStr(void) //将时,分,秒数据转换成液晶显示字符放到数组 TimeString[];
{ unsigned char Hour,Minute,Second;
Hour=rtc_gethour();
Minute=rtc_getmin();
Second=rtc_getsec();
if(hide_hour<2)
{
TimeString[0] = Hour/10 + '0';
TimeString[1] = Hour%10 + '0';
}
else
{
TimeString[0] = ' ';
TimeString[1] = ' ';
}
TimeString[2] = ':';
if(hide_min<2)
{
TimeString[3] = Minute/10 + '0';
TimeString[4] = Minute%10 + '0';
}
else
{
TimeString[3] = ' ';
TimeString[4] = ' ';
}
TimeString[5] = ':';
if(hide_sec<2)
{
TimeString[6] = Second/10 + '0';
TimeString[7] = Second%10 + '0';
}
else
{
TimeString[6] = ' ';
TimeString[7] = ' ';
}
DateString[8] = '\0';
}

void show_time() //液晶显示程序
{
TimeToStr(); //时间数据转换液晶字符
DateToStr(); //日期数据转换液晶字符
// ReadTemp(); //开启温度采集程序
// temp_to_str(); //温度数据转换成液晶字符
LCD_PutStr(TempBuffer,25); //显示温度
LCD_PutStr(DateString,0); //显示日期
LCD_PutStr(week_value,15); //显示星期
LCD_PutStr(" Week",10); //在液晶上显示 字母 week
LCD_PutStr(TimeString,16); //显示时间
}
////////////////////////////////////////////////////////////////////////////

void outkey() //跳出调整模式,返回默认显示
{ unsigned char Second;
if (!(P1IN&BIT0))
{
count=0;
hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;
Second=dataread(DS1302_SECOND);
datawrite(0x8e,0x00); //写入允许
datawrite(0x80,Second&0x7f);
datawrite(0x8E,0x80); //禁止写入
done=0;//temp_max=0;sund=1;
while(!(P1IN&BIT0));
delay_nms(2);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Upkey()//升序按键
{
if(!(P1IN&BIT1))
{
switch(count)
{case 1:
temp=dataread(DS1302_SECOND); //读取秒数
temp=temp+1; //秒数加1
up_flag=1; //数据调整后更新标志
if((temp&0x7f)>0x59) //超过59秒,清零
temp=0;
break;
case 2:
temp=dataread(DS1302_MINUTE); //读取分数
temp=temp+1; //分数加1
up_flag=1;
if(temp>0x59) //超过59分,清零
temp=0;
break;
case 3:
temp=dataread(DS1302_HOUR); //读取小时数
temp=temp+1; //小时数加1
up_flag=1;
if(temp>0x23) //超过23小时,清零
temp=0;
break;
case 4:
temp=dataread(DS1302_WEEK); //读取星期数
temp=temp+1; //星期数加1
up_flag=1;
if(temp>0x7)
temp=1;
break;
case 5:
temp=dataread(DS1302_DAY); //读取日数
temp=temp+1; //日数加1
up_flag=1;
if(temp>0x31)
temp=1;
break;
case 6:
temp=dataread(DS1302_MONTH); //读取月数
temp=temp+1; //月数加1
up_flag=1;
if(temp>0x12)
temp=1;
break;
case 7:
temp=dataread(DS1302_YEAR); //读取年数
temp=temp+1; //年数加1
up_flag=1;
if(temp>0x99)
temp=0;
break;
default:break;
}

while(!(P1IN&BIT1));
delay_nms(2);
}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Downkey()//降序按键
{
if(!(P1IN&BIT2))
{
switch(count)
{case 1:
temp=dataread(DS1302_SECOND); //读取秒数
temp=temp-1; //秒数减1
down_flag=1; //数据调整后更新标志
if((temp&0x7f)>0x59) //小于0秒,返回59秒
temp=0x59;
break;
case 2:
temp=dataread(DS1302_MINUTE); //读取分数
temp=temp-1; //分数减1
down_flag=1;
if(temp>0x59)
temp=0x59; //小于0秒,返回59秒
break;
case 3:
temp=dataread(DS1302_HOUR); //读取小时数
temp=temp-1; //小时数减1
down_flag=1;
if(temp==0x00)
temp=0x23;
break;
case 4:
temp=dataread(DS1302_WEEK); //读取星期数
temp=temp-1; //星期数减1
down_flag=1;
if(temp==0x00)
temp=0x07;
break;
case 5:
temp=dataread(DS1302_DAY); //读取日数
temp=temp-1; //日数减1
down_flag=1;
if(temp==0x00)
temp=0x31;
break;
case 6:
temp=dataread(DS1302_MONTH); //读取月数
temp=temp-1; //月数减1
down_flag=1;
if(temp==0x00)
temp=0x12;
break;
case 7:
temp=dataread(DS1302_YEAR); //读取年数
temp=temp-1; //年数减1
down_flag=1;
if(temp>0x99)
temp=0x99;
break;
default:break;
}

while(!(P1IN&BIT2));
delay_nms(2);
}
}

void Setkey()//模式选择按键
{
if(!(P1IN&BIT3))
{
count=count+1; //Setkey按一次,count就加1
done=1; //进入调整模式
while(!(P1IN&BIT3));
delay_nms(2);
}

}

void keydone()//按键功能执行
{ unsigned char Second;
if(flag==0) //关闭时钟,停止计时
{ datawrite(0x8e,0x00); //写入允许
temp=dataread(DS1302_SECOND);
datawrite(0x80,temp|0x80);
datawrite(0x8e,0x80); //禁止写入
flag=1;
}
Setkey(); //扫描模式切换按键
switch(count)
{
case 1:do //count=2,调整秒
{
outkey(); //扫描跳出按钮
Upkey(); //扫描加按钮
Downkey(); //扫描减按钮
if(up_flag==1||down_flag==1) //数据更新,重新写入新的数据
{
datawrite(0x8e,0x00); //写入允许
datawrite(0x80,temp|0x80); //写入新的秒数
datawrite(0x8e,0x80); //禁止写入
up_flag=0;
down_flag=0;
}

hide_sec++; //位闪计数
if(hide_sec>3)
hide_sec=0;
show_time(); //液晶显示数据
}while(count==2);break;
case 2:do //count=3,调整分
{
hide_sec=0;
outkey();
Upkey();
Downkey();
if(temp>0x60)
temp=0;
if(up_flag==1||down_flag==1)
{
datawrite(0x8e,0x00); //写入允许
datawrite(0x82,temp); //写入新的分数
datawrite(0x8e,0x80); //禁止写入
up_flag=0;
down_flag=0;
}
hide_min++;
if(hide_min>3)
hide_min=0;
show_time();
}while(count==3);break;
case 3:do //count=4,调整小时
{
hide_min=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
datawrite(0x8e,0x00); //写入允许
datawrite(0x84,temp); //写入新的小时数
datawrite(0x8e,0x80); //禁止写入
up_flag=0;
down_flag=0;
}
hide_hour++;
if(hide_hour>3)
hide_hour=0;
show_time();
}while(count==4);break;
case 4:do //count=5,调整星期
{
hide_hour=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
datawrite(0x8e,0x00); //写入允许
datawrite(0x8a,temp); //写入新的星期数
datawrite(0x8e,0x80); //禁止写入
up_flag=0;
down_flag=0;
}
hide_week++;
if(hide_week>3)
hide_week=0;
show_time();
}while(count==5);break;
case 5:do //count=6,调整日
{
hide_week=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
datawrite(0x8e,0x00); //写入允许
datawrite(0x86,temp); //写入新的日数
datawrite(0x8e,0x80); //禁止写入
up_flag=0;
down_flag=0;
}
hide_day++;
if(hide_day>3)
hide_day=0;
show_time();
}while(count==6);break;
case 6:do //count=7,调整月
{
hide_day=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
datawrite(0x8e,0x00); //写入允许
datawrite(0x88,temp); //写入新的月数
datawrite(0x8e,0x80); //禁止写入
up_flag=0;
down_flag=0;
}
hide_month++;
if(hide_month>3)
hide_month=0;
show_time();
}while(count==7);break;
case 7:do //count=8,调整年
{
hide_month=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
datawrite(0x8e,0x00); //写入允许
datawrite(0x8c,temp); //写入新的年数
datawrite(0x8e,0x80); //禁止写入
up_flag=0;
down_flag=0;
}
hide_year++;
if(hide_year>3)
hide_year=0;
show_time();
}while(count==8);break;
case 8: count=0;hide_year=0; //count8, 跳出调整模式,返回默认显示状态
Second=dataread(0x80);
datawrite(0x8e,0x00); //写入允许
datawrite(0x80,Second&0x7f);
datawrite(0x8E,0x80); //禁止写入
done=0; //temp_max=0;sund=1;
break; //count=7,开启中断,标志位置0并退出
default:break;

}

}
////////////////////////////////////////////////////////////////////////////

void rtcinit ()
{
rtc_wp(0);
rtc_stop(0);
rtc_charger(1,1);
}

void sysinit ()
{ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P4OUT = 0xff;
P4DIR = 0xff;
P5OUT = 0x0f;
P5DIR = 0xf0;
P6OUT = 0xfc;
P6DIR = 0xfc;
}

void main ()
{ unsigned char temp;
sysinit ();
rtcinit ();
LCD_init(); //液晶初始化
_EINT();
while (1)
{
while(done==1)
keydone(); //进入调整模式
while(done==0)
{
temp=rtc_getsec();
delay_nms(10);
if(temp!=rtc_getsec())
show_time(); //液晶显示数据
flag=0;
Setkey(); //扫描各功能键
}

}

}

8. msp430单片机的七段数码管显示程序编译

定时器计数,数码管显示,定时中断到更新数码管显示

9. MSP430f149单片机如何把从DS1302获取的时、分、秒在12864液晶屏上显示出来

我的参考程序,你看看

10. 给MSP430单片机数字信号后,单片机对其处理然后显示的程序怎么写,大概提示一下就行,

你可以连接一个按键,用数码管来显示按键按下次数,既有数字信号输入,又有显示。这样的数字信号不是太复杂,适合刚学的新手进行练习用.........

阅读全文

与msp430单片机显示相关的资料

热点内容
单片机有4个8位的io口 浏览:895
win10rar解压缩软件 浏览:164
plc教程pdf 浏览:665
pythonshell清屏命令 浏览:278
检测到加密狗注册服务器失败 浏览:203
解压后手机如何安装 浏览:518
极客学院app为什么下架 浏览:13
图片批量压缩绿色版 浏览:651
东北程序员帅哥 浏览:707
加密封条风噪小 浏览:974
安阳少儿编程市场 浏览:499
云服务器建设原理 浏览:259
javajunit4for 浏览:847
华为服务器如何进阵列卡配置 浏览:435
apache服务器ip地址访问 浏览:720
如何买到安卓手机预装软件 浏览:537
冤罪百度云不要压缩 浏览:88
苏州云存储服务器 浏览:177
解压收纳原声 浏览:387
java注册验证 浏览:377