收藏 分销(赏)

飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例.doc

上传人:xrp****65 文档编号:7662645 上传时间:2025-01-11 格式:DOC 页数:3 大小:36.50KB 下载积分:10 金币
下载 相关 举报
飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例.doc_第1页
第1页 / 共3页
飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
13.3.2 LCD编程C语言程序例 (1)LCD编程C语言子函数 LCD编程汇编子函数(LcdShow.c) /*文件描述:本文件包含了用HD44780显示相关的3个子程序 * * 1. LCDShow:在LCD上显示32个字符 * * 2. LcdInit:初始化Lcd * * 3. Lcd_Command:执行给定的cmd命令 * *-------------《嵌入式应用技术基础教程》--------------*/ //[以下为子程序源代码] //[头文件] #include "GP32C.h" //包含头文件 #define LcdData PTB //Lcd显示数据传送口 #define LcdData_D DDRB //数据口方向寄存器 #define LcdCtrl PTC //Lcd控制信号传送口 #define LcdCtrl_D DDRC //控制口方向寄存器 #define LcdRS 0 //Lcd寄存器选择信号PTC0 #define LcdRW 1 //读写信号接PTC1 #define LcdE 2 //Lcd使能信号接PTC2 //内部调用子程序 void Lcd_Command(unsigned char cmd); //命令执行子程序 void LcdInit(void); //Lcd初始化子程序 /*LcdShow:在HD44780显示屏上显示数据--------------------* *功能描述:在HD44780显示屏上显示str中的32个数据 * *参 数:str:待显示数组 * *返 回:无 * *------------------以上为子程序说明-------------------*/ void lcdshow(unsigned char str[]) { unsigned char i; LcdInit(); //调用Lcd初始化子程序 //显示第1行16个字符 LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令 LcdCtrl&=~(1<<LcdRW); Lcd_Command(0b10000000); //后7位为DDRAM地址0x00 LcdCtrl|=1<<LcdRS; //RS、R/W=10,写数据到DDRAM中 LcdCtrl&=~(1<<LcdRW); for (i=0;i<16;i++) //逐个显示 Lcd_Command(str[i]); //显示第2行16个字符 LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令 LcdCtrl&=~(1<<LcdRW); Lcd_Command(0b11000000); //后7位为DDRAM地址0x40 LcdCtrl|=1<<LcdRS; //RS、R/W=10,写数据到DDRAM中 LcdCtrl&=~(1<<LcdRW); for (i=16;i<32;i++) //逐个显示 Lcd_Command(str[i]); } /*LcdInit:初始化Lcd------------------------------------* *功 能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1 * *参 数:无 * *返 回:无 * *-----------------------------------------------------*/ void LcdInit(void) { unsigned char i; LcdData_D=0b11111111; //数据口为输出 LcdCtrl_D|=(1<<LcdE); //控制口低三位为输出 LcdCtrl_D|=(1<<LcdRS); LcdCtrl_D|=(1<<LcdRW); LcdCtrl|=(1<<LcdE); //E=1 LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令 LcdCtrl&=~(1<<LcdRW); Lcd_Command(0b00111000); //8位数据接口,2行,5*7点阵 Lcd_Command(0b00001000); //关显示,关光标显示,不闪烁 Lcd_Command(0b00000001); //清屏 for(i=0;i<250;i++); //延时>1.6ms for(i=0;i<250;i++); Lcd_Command(0b00010100); //光标右移一个字符位,AC自动加1 Lcd_Command(0b00001100); //开显示,关光标显示,不闪烁 } /*Lcd_Command:执行给定的cmd命令------------------------* *功 能:执行给定的cmd命令,且延时 * *参 数:cmd:待执行的命令 * *返 回:无 * *-----------------------------------------------------*/ void Lcd_Command(unsigned char cmd) { unsigned char i; for (i=0;i<20;i++); //等待>40us LcdData=cmd; //把指令码送到Lcd数据传送口 LcdCtrl|=(1<<LcdE); //Lcd开始接收数据 asm("NOP"); asm("NOP"); asm("NOP"); LcdCtrl&=~(1<<LcdE); //Lcd结束接收数据 for (i=0;i<20;i++); //等待>40us } (2)主函数 实例编号:C07 路径:\C\C07_ 液晶LCD显示(Lcd.prj) /*-----------------------------------------------------* *工 程 名:Lcd.prj * *硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接 * * 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接 * *功能:1.初始显示:"Wait Receiving.." "Soochow 2005.08" * * 2.等待接收字符,当收到32个字符时显示,重复此功能 * *----------《嵌入式应用技术基础教程》教学实例---------*/ /*[头文件]*/ #include "SCI.h" //串行通信子程序头文件 #include "GP32C.h" //包含头文件 /*[函数声明]*/ extern void lcdshow(unsigned char *str); extern void SCIInit(void); /*[主程序]*/ const unsigned char DispalyInit[]="Wait Receiving.. Soochow 2005.08"; void main(void) { unsigned char data[32]; SCIInit(); //调串行口初始化子程序 lcdshow((unsigned char *)DispalyInit); //程序总循环入口 while(1) { //接收PC机发送的32个数据,并存放到data数组中 if (SCIReN(32,data)==0) //调用显示子程序把字符串送LCD显示 lcdshow((unsigned char *)data); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服