完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PIC16F877A lcd1602 4线 仿真
PIC 编程学习 初学者 软件 MPLAB X IDE 编译器 XC2.0 main.c #include //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #pragma config WDTE = OFF //看门狗定时器使能位(禁止WDT) #pragma config PWRTE = ON //上电延时定时器使能位(PWRT使能) #pragma config BOREN = OFF //欠压复位使能位(禁止BOR) #pragma config LVP = OFF //低电压(单电源)在线串行编程使能位(RB3为数字I / O,MCLR上的HV必须用于编程) #pragma config FOSC = HS //振荡器选择位(HS振荡器) #define uchar unsigned char //在编译时用unsigned char替代uchar #define LCDRS RC0 //#define rw RC1 #define LCDEN RC2 //static bit LCDRS @ ((unsigned)&PORTB*8+5); //LCD寄存器选择位 //static bit LCDEN @ ((unsigned)&PORTB*8+4); //LCD使能位 void WriteLcdBye(uchar c); //写字节函数 void ClearLcd(void); // 清屏函数 void WriteLcdStr(const char * s); //写字符串 void GotoLine(uchar x,uchar y); //确定显示位置x=线号 y=位置 void Delay10Us(uchar x); //约延时x*10Us void Delay1Ms(uchar x); //约延时x*1Ms void WriteLcdBye(uchar c) ////写字节函数 { PORTB = (PORTB & 0xF0) | (c >> 4); LCDEN=1; LCDEN=0; PORTB = (PORTB & 0xF0) | (c & 0x0F); LCDEN=1; LCDEN=0; Delay10Us(1); //4改1 } void ClearLcd(void) // 清屏函数 { LCDRS = 0; WriteLcdBye(0x01); Delay1Ms(2); } void WriteLcdStr(const char * s) //写字符串 { LCDRS = 1; // RS=1表示写入数据寄存器 while(*s) WriteLcdBye(*s++); } void GotoLine(uchar x,uchar y) //确定显示位置x=线号 y=位置 { LCDRS = 0; if(x==1) WriteLcdBye(0x80+y); else WriteLcdBye(0xC0+y); } void InitLcd(void) //初始化 { LCDRS = 0; // RS=0,以下数据写入的是LCD命令寄存器 Delay1Ms(1); //15改1 PORTB = 0x03; LCDEN=1; LCDEN=0; Delay1Ms(1); //5改1 LCDEN=1; LCDEN=0; Delay10Us(1); //10改1 LCDEN=1; LCDEN=0; Delay1Ms(1); //5改1 PORTB = 0x02; // 设定LCD为四线数据传输方式工作 LCDEN=1; LCDEN=0; Delay10Us(4); WriteLcdBye(0x28); // 4位传输,5*8的字体 WriteLcdBye(0x08); // 关闭LCD WriteLcdBye(0x0C); // 关闭光标 //WriteLcdBye(0x0F); // 开LCD,打开滑标并闪烁 WriteLcdBye(0x06); } void Delay10Us(uchar x) { uchar i; while(x--) { for(i=0;i<7;i++) continue; } } void Delay1Ms(uchar x) { while(x--) Delay10Us(100); } void main(void) //主函数 { TRISC=0x00; TRISB=0x00; InitLcd(); while(1) { GotoLine(1,3); WriteLcdStr("microchip"); GotoLine(2,3); WriteLcdStr("PIC16F877A"); } } |
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2077 浏览 1 评论
3497 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2330 浏览 2 评论
2757 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4015 浏览 5 评论
963浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6347浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 17:07 , Processed in 0.739525 second(s), Total 75, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号