- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MSP430程序库四printf和scanf函数移植课案
MSP430程序库四printf和scanf函数移植printf 和scanf函数是C语言中最常用的输入出函数,从学习C语言开始,就开始使用这两个函数,然而当写用C语言写单片机程序时却不能使用这两个函数,总觉得单片机的C语言和一般的C语言差别很大,写起来不大方便;其实,单片机的C语言也是标准C语言上扩展或是改动的,都支持格式化输入输出函数(printf 和scanf);事实上,printf,scanf只负责格式化输入输出的字符,至于从哪儿输入,输出到哪儿,他们分别依靠getchar和putchar函数,只要实现单片机上的getchar函数和putchar函数,即可正常使用printf函数和scanf函数,这可以给我们单片机的信息交互带来很多方便。下面我们就来实现他们的移置。
硬件介绍:
硬件部分只需字符型输入输出设备:scanf从输入字符型设备读取字符,printf输出到字符型输出设备。在这里,我选用的字符型输入设备是超级终端,通过串口与单片机连接,输入字符;输出设备是超级终端和12864的液晶。scanf从串口读入字符,printf输出字符到串口和液晶。
有关串口的预提信息参考:MSP430程序库二UART异步串口。
有关液晶的具体信息参考:MSP430程序库三12864液晶程序库。
scanf还可以从按键读取信息,可以参考移置方法自行移置。
程序实现:
printf
单片机在调用printf时,printf是负责将数据解析成ASCII码流,通过调用putchar函数依次将字符发出。如果在putchar内编写从串口发送一字节数据,则printf的结果将从单片机串口发送出;如果putchar是向液晶写字符,让液晶显示一个字符,则printf的结果将显示在液晶上。本程序实现putchar同时向串口和液晶同时发送一个字符(液晶是显示一个字符)。
putchar函数如下:
int putchar(int ch)
{
putchar2Com(ch);
putchar2Lcd(ch);
return (ch);
}
程序先向串口发送一个字符,然后像向晶发送字符。
其中:putchar2Com,向串口发送一个字符,代码如下:
int putchar2Com(int ch)
{
if (ch == \n) // \n(回车)扩展成 \n\r (回车+换行)
{
UartWriteChar(\r) ; //0x0d 换行
}
UartWriteChar(ch); //从串口发出数据
return (ch);
}
代码仅仅调用向串口写字符的函数UartWriteChar(ch)(详见Uart.c,在二中有介绍),当要输出换行时,需先输出’\n’将光标移至本行首位置,还需要’\r’(换行)才能将光标置于下一行起始位置,即将’\n’扩展为’\r’,’\n’两个字节依次发出。
purchar2Lcd函数比较复杂,因为我所使用的12864液晶是中文字库的液晶,每行8个地址,可以显示8个中文字符或16个英文字符,而putchar只发出一个字节,需要判断每个地址的前半字还是后半字(因为每个字可以显示中文,如果中文的两个字节在相邻的两个地址上,将不会显示,或是显示乱码)。
上代码:
int putchar2Lcd(int ch)
{
char addr,dat;
if (ch == \n) // \n(回车),换行
{
ChangeNextRow();
}
else
{
addr = LcdReadAddr();
if(ch 0x80)
{
LcdWriteData(ch);
}
else
{
LcdWriteData(0x20); //写入一个空字符,根据地址判断是否为前半字
if(addr == LcdReadAddr()) //前半字 从新写入ch字符
{
LcdWriteComm(addr);
LcdWriteData(ch);
}
else
{
LcdWriteComm(addr);
dat = LcdReadData();
您可能关注的文档
- 几何概型6..ppt
- 几何量公差与检测试卷习题及答案14.doc
- 几十种鸡肉熟食加工成熟配方.doc
- 几种制冷技术机理的研究.doc
- ModernFamily英文简介.pptx
- 几种常见的文言句式.ppt
- 几何三大变换之旋转探讨.doc
- MQTT分析.docx
- 几何误差对加工精度的影响.pptx
- MRP模式研究报告.pptx
- 2025-2026学年小学心理健康三年级下册浙教版(2021)教学设计合集.docx
- 2025-2026学年小学科学一年级下册(2024)人教鄂教版(2024)教学设计合集.docx
- 高频精选:城投会计笔试试题及答案.doc
- 高频精选:城投会计笔试题目及答案.doc
- 2025-2026学年小学科学一年级下册大象版(2024)教学设计合集.docx
- 2025-2026学年小学心理健康四年级北师大版(2016)教学设计合集.docx
- 2025-2026学年小学科学一年级下册人教鄂教版(2024)教学设计合集.docx
- 高频精选:池州医院笔试题目及答案.doc
- 2025-2026学年小学心理健康四年级鄂科版教学设计合集.docx
- 生涯规划与选择的班会.pptx
最近下载
- 怎样恢复已删除的文件.doc VIP
- 2025年中国铁道橡胶垫板数据监测报告.docx
- (NEW)电子科技大学数学科学学院857概率论与数理统计历年考研真题汇编(含部分答案).pdf
- 2023-2024全国初中物理竞赛试题精选精编第05讲凸透镜成像(解析版).docx VIP
- 2001-2016年电子科技大学《601数学分析》历年考研真题汇总(含部分答案).pdf VIP
- 古典文献学第二章 文献的形成和流布.ppt VIP
- 2025年综合窗口岗位工作人员招聘考试笔试试题(附答案).docx VIP
- 纪念中国红军长征胜利89周年PPT课件.pptx VIP
- 2025年中国衬橡胶设备数据监测报告.docx
- 中央民族大学非事业编制合同制职工招聘笔试试题及答案2021.docx VIP
文档评论(0)