历史上的今天
今天是:2024年10月22日(星期二)
2019年10月22日 | ATMEGA128的1602LCD显示驱动程序
2019-10-22 来源:51hei
本实验开发板的电源选择5V。
单片机源程序:
//ATMEGA128的1602型LCD显示驱动程序
//编译环境 ICCAVR 7.16A
//系统时钟7.3728MHZ,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms
//忠兴电子元件店编辑
//日期:2010.01.14
//***********************************************************************
// 包含文件
//***********************************************************************
#include #include #include #include #define uchar unsigned char #define uint unsigned int #define RS_CLR PORTF &= ~(1 << PF1) //RS置低 #define RS_SET PORTF |= (1 << PF1) //RS置高 #define RW_CLR PORTF &= ~(1 << PF2) //RW置低 #define RW_SET PORTF |= (1 << PF2) //RW置高 #define EN_CLR PORTF &= ~(1 << PF3) //E置低 #define EN_SET PORTF |= (1 << PF3) //E置高 #define Data_IO PORTA //液晶数据口 #define Data_DDR DDRA //数据口方向寄存器 #define D_LE0 PORTD &= ~(1 << PD4) //数码管段控制位为0,锁存端口数据 #define D_LE1 PORTD |= (1 << PD4) //数码管段控制位为1,锁存器输出与端口一致 #define W_LE0 PORTD &= ~(1 << PD5) //数码管位控制位为0 #define W_LE1 PORTD |= (1 << PD5) //数码管位控制位为1 //************************************************************************* // 初始化子程序 //************************************************************************* void system_init() { Data_IO = 0xFF; //电平设置 Data_DDR = 0xFF; //方向输出 PORTF = 0xFF; //电平设置 DDRF = 0xFF; //方向输出 PORTD=0xFF; DDRD=0xFF; D_LE1; //关掉数码管,以免显示乱码 W_LE1; Data_IO=0xFF; //关数码管 W_LE0; } //*********************************************************************** // 显示屏命令写入函数 //*********************************************************************** void LCD_write_com(unsigned char com) { RS_CLR; RW_CLR; EN_SET; Data_IO = com; delay_nms(5); EN_CLR; } //*********************************************************************** // 显示屏数据写入函数 //*********************************************************************** void LCD_write_data(unsigned char data) { RS_SET; RW_CLR; EN_SET; Data_IO = data; delay_nms(5); EN_CLR; } //*********************************************************************** // 显示屏清空显示 //*********************************************************************** void LCD_clear(void) { LCD_write_com(0x01); delay_nms(5); } //*********************************************************************** // 显示屏字符串写入函数 //*********************************************************************** void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0) { LCD_write_com(0x80 + x); } else { LCD_write_com(0xC0 + x); } while (*s) { LCD_write_data( *s); s ++; } } //*********************************************************************** // 显示屏单字符写入函数 //*********************************************************************** void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) { if (y == 0) { LCD_write_com(0x80 + x); } else { LCD_write_com(0xC0 + x); } LCD_write_data( data); } //*********************************************************************** // 显示屏初始化函数 //*********************************************************************** void LCD_init(void) { DDRA = 0xFF; //I/O口方向设置 DDRA |= (1 << PA5) | (1 << PA6) | (1 << PA7); LCD_write_com(0x38); //显示模式设置 delay_nms(5); LCD_write_com(0x08); //显示关闭 delay_nms(5); LCD_write_com(0x01); //显示清屏 delay_nms(5); LCD_write_com(0x06); //显示光标移动设置 delay_nms(5); LCD_write_com(0x0C); //显示开及光标设置 delay_nms(5); } //************************************************************************* // 主程序 //************************************************************************* void main(void) { unsigned char i; unsigned char *p; system_init(); //系统初始化,设置IO口属性 delay_nms(100); //延时100ms LCD_init(); //液晶参数初始化设置 while (1) { i = 1; p = "zhongxingdianzi"; //字符串输出显示 …………
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 03:46 编辑 主要用于微弱小信号放大,尤其是做传感器的微弱信号,AD620与OP07配合,AD620可做前级放大,OP07可做二级放大 … 查看全部问答> |
|
近年来,移动通信的市场需求增长迅速,当前的移动通信系统已经可以使用成熟的信号处理技术来获取更高的信息传输速率。下一代无线系统的设计难度将增大,主要体现在对多标准和可重配置性的支持。不同的通信标准在中心频率、信号带宽、信噪比和线性度 ...… 查看全部问答> |
|
请教各位大侠,我现在想集成一个8位的CAN控制器在APB总线上 CAN控制器的输入输出数据都是8位的,而APB总线的输入输出数据都是32位的。。。 那把这个控制器集成在APB总线上的时候怎么处理比较合理? 高24位补零,好像太浪费了。。。CAN的波特率比 ...… 查看全部问答> |
|
作者:Chris Cockrill 德州仪器如今,现代设计公司不仅正在努力寻找功耗更低的更小型器件,同时他们还希望为工业自动化、PC、服务器以及电信设备等应用降低成本。实现这些目标的绊脚石是:设计人员使用运行在单一电压下的处理器,其需要 ...… 查看全部问答> |
|
全新未拆封 MSP430 开发板 MSP-EXP430G2 LaunchPad 带触摸板 本帖最后由 nwcheroes 于 2014-7-21 23:48 编辑 全新未拆封 MSP430 开发板 MSP-EXP430G2 LaunchPad 带触摸板 50不包邮,淘宝交易 http://item.taobao.com/item.htm?id=40208386645 … 查看全部问答> |




