历史上的今天
今天是:2024年11月16日(星期六)
2019年11月16日 | 0802LCD 4位显示程序 PIC单片机C语言程序
2019-11-16 来源:51hei
#include #include //#include"head.h" #define uchar unsigned char #define uint unsigned int #pragma config FOSC = XT // Oscillator Selection bits (XT oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled) #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled) #pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) //char tab[]="0123456789"; #define uchar unsigned char #define uint unsigned int void LCD_write_cmd(uchar command); void LCD_write_command(uchar command); void LCD_en_write(void); void LCD_set_xy( unsigned char x, unsigned char y ); void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s); void LCD_write_data(unsigned char data); void delay_nus(unsigned int n); void delay_nms(unsigned int n); #define RS RC2 #define EN RC3 #define DB7 RC7 #define DB6 RC6 #define DB5 RC5 #define DB4 RC4 #define LCD_DATA_PORT PORTC #define LCD_DATA_TRIS TRISC /*------------------------------------------------------------------------------ 函数说明 ------------------------------------------------------------------------------*/ void LCD_init() { TRISD=0x00; //数据口方向为输出 PORTD=0x00; TRISC=0x00; //数据口方向为输出 PORTC=0x00;//设置EN、RS/数据为输出 LCD_write_cmd(0x30);//4位的指令 delay_nms(5); LCD_write_cmd(0x30); delay_nus(200); LCD_write_cmd(0x30); delay_nms(1); LCD_write_cmd(0x20); LCD_write_cmd(0x20); //4位显示 LCD_write_cmd(0x80); LCD_write_cmd(0x00); //显示开 游标、闪烁不显示 LCD_write_cmd(0x80); LCD_write_cmd(0x00); //清屏 LCD_write_cmd(0x01); LCD_write_cmd(0x00); //两行 5*7 LCD_write_cmd(0xc0); } void LCD_write_cmd(uchar command) //写指令 { delay_nus(10); RS=0; EN=0;//使能清零 LCD_DATA_PORT&=0x0f; //清除端口 delay_nus(2); EN=1; LCD_DATA_PORT |= (command & 0xf0);//高4位不用改 delay_nus(2); EN=0; } void LCD_write_command(uchar command) //写指令 { LCD_write_cmd(command); LCD_write_cmd(command<<4); } void LCD_write_data(unsigned char data) //写数据 { delay_nus(10); RS=1; EN=0;//使能清零 LCD_DATA_PORT&=0x0f; EN=1; LCD_DATA_PORT |= (data & 0xf0);//高4位不用改 delay_nus(2); EN=0; delay_nus(2); LCD_DATA_PORT&=0x0F; //清低四位 EN=1; LCD_DATA_PORT |= ((data << 4) & 0xf0);//发送低4位 delay_nus(2); EN=0; } void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1 { LCD_set_xy( X, Y ); //写地址 while (*s) // 写显示字符 { LCD_write_data( *s ); s ++; } } void LCD_set_xy( unsigned char x, unsigned char y ) //写地址函数 { unsigned char address; if (y == 0) address = 0x80 + x; else address = 0xc0 + x; LCD_write_command( address); } void delay_nms(unsigned int n) //N ms延时函数 { uint a,b; for(a=n;a>0;a--) for(b=80;b>0;b--); } void delay_nus(unsigned int n) //N us延时函数 { unsigned int i; for (i=0;i void main() { LCD_init(); // LCD_write_command(0x0d); //光标开 while(1) { RD0=1; delay_nms(1000); RD0=0; delay_nms(1000); LCD_write_string(0,0,"ceshiLCD"); LCD_write_string(0,1,"hahahaha"); delay_nms(2000); } }
史海拾趣
|
1 引言 汽车仪表是驾驶员与汽车的信息交流界面,对汽车安全以及经济行驶具有重要作用。近年来,随着汽车电子技术的发展,汽车仪表显示信息也不断增加,而传统机械指针式汽车组合仪表则无法满足现在使用需求。特别是计算机、微电子和 ...… 查看全部问答> |
|
extern ROMChain_t *OEMRomChain; 这段编译错误 在eboot main.c 添加 multibin xip 过程中, 添加 InitRomChain() 函数中,引用了 全局变量 extern ROMChain_t *OEMRomChain; OEMRomChain 指针对应是 public\\common\\oak\\inc\\Bcoemglobal.h 文件中 #define OEMRomChain g_pOemGlobal->pRO ...… 查看全部问答> |
|
个人求有PHS基站控制器软件开发经验辅导老师(可兼职,深圳) 本人欲从事PHS基站控制器软件开发,因无此方面的经验,想请位有这方面经验的辅导老师。 主要工作是帮助本人分析一个现有PHS基站控制器软件源程序,然后修正程序中的一些BUG。 时间方面可以是灵活按排(工作日、业余均可),报酬可以按时/日/周/月等 ...… 查看全部问答> |
|
请问linuxlogo默认是在左上角显示的,现在要求显示到右下角,并且企鹅图像倒置 相当于把默认显示转180度,请问这个哪里可以改。 可以修改fbcon.c吗?新人求救!!… 查看全部问答> |
|
各位大侠们,麻烦帮忙看看这个例子,是我毕业设计的题目,由于单片机C编程学得不精,这几天一直在调程序都没法调出来,还请各位大虾们帮帮忙!万分感激!!! 硬件实现功能: 1、从机U2按键按下,在本机显示,同时将按键值送往主机U1,在主机显示 ...… 查看全部问答> |
|
中*美*爱*梯*科*技, .NET外企软件工程师班将于2007年9月10日开课, 开课第一周免费试听, 欢迎大家踊跃报名参加! 中*美*爱*梯*科*技向学员郑重承诺: 百分之百保证就业, 月薪3000——8000, 就不了业者退还全部学费! ...… 查看全部问答> |
|
1,#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || ;请问这个加了红色背景的是什么意思;特别是IS—是什么意思,后面这一句是什么意思… 查看全部问答> |




