网站地图 | 加入收藏 | English

网站首页 产品列表 软件下载 技术资料 付款方式 发货查询 关于我们 淘宝商城 论坛
搜索 高级/组合搜索
网站新闻
所有新闻
HiFi音响文章
站内新闻
单片机工具资料
汇编程序实例
C语言程序实例
单片机提高资料
单片机初学资料
单片机软件下载
单片机技术资料
  您的位置: 首页 >> 文章列表 >> 基于ATMEGA16的LCD1602显示程序实现

基于ATMEGA16的LCD1602显示程序实现


作者:单片机爱好者   转载自:单片机工具之家  发布日期:2011-4-17

本程序调试通过,正常显示
#include <iom16v.h>
#include "1602.h"
void main(void) {
unsigned char i;
unsigned char *p;

PORTB = 0xFF;     /*电平设置*/
DDRB = 0xFF;     /*方向输出*/

PORTA = 0xFF;
DDRA = 0xFF;
delay_ms(100);


LCD_init();
while (1) {
   i = 1;
   p = "www.pic16.net";
   LCD_clear();
   LCD_write_str(0,0,"CV:");
   delay_ms(50);
   while (*p) {
    LCD_write_char(i,1,*p);
    i ++;
    p ++;
    delay_ms(50);
    }
   delay_ms(50);
   }
}
以上是主函数程序,
1602.h程序如下:
#include <iom16v.h>
//#include "lcd1602.h"
//PortA(0.1.2) for control pin and PortB for data and com
#define RS_CLR PORTA &= ~(1 << PA2)
#define RS_SET PORTA |= (1 << PA2)
#define RW_CLR PORTA &= ~(1 << PA1)
#define RW_SET PORTA |= (1 << PA1)
#define EN_CLR PORTA &= ~(1 << PA0)
#define EN_SET PORTA |= (1 << PA0)
/*延时函数*/
void delay_us(unsigned int n) {
unsigned int i;
for(i=0;i<n;i++);
}
/*延时函数*/
void delay_ms(unsigned int i) {
unsigned int a, b;
for (a = 1; a < i; a++)
   for (b = 1; b<1000; b++)
    ; 
}

/*显示屏命令写入函数*/
void LCD_write_com(unsigned char com) {

RS_CLR;
RW_CLR;
EN_SET;
PORTB = com;
delay_us(5);
EN_CLR;
}
/*显示屏命令写入函数*/
void LCD_write_data(unsigned char data) {
RS_SET;
RW_CLR;
EN_SET;
PORTB = data;
delay_us(5);
EN_CLR;
}
/*显示屏清空显示*/
void LCD_clear(void) {
LCD_write_com(0x01);
delay_ms(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_write_num(unsigned char x,unsigned char y,unsigned char data_num) {

     if (y == 0) {
      LCD_write_com(0x80 + x);
      }
     else {
      LCD_write_com(0xC0 + x);
      }
   
     LCD_write_data( 48+data_num); 
}
/*显示屏初始化函数*/
void LCD_init(void) {

DDRB = 0xFF;       /*I/O口方向设置*/
DDRA |= (1 << PA0) | (1 << PA1) | (1 << PA2);
// DDRB = 0xFF;

LCD_write_com(0x38);     /*显示模式设置*/
delay_ms(5);
LCD_write_com(0x38);
delay_ms(5);
LCD_write_com(0x38);
delay_ms(5);
LCD_write_com(0x38);

LCD_write_com(0x08);     /*显示关闭*/
LCD_write_com(0x01);     /*显示清屏*/
LCD_write_com(0x06);     /*显示光标移动设置*/
delay_ms(5);
LCD_write_com(0x0C);     /*显示开及光标设置*/


【版权声明】
  1.任何网站转载本站内容必需注明“来源:单片机工具之家”。
  2.本网转载自其它媒体的信息,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
  3.未经本站明确许可,任何网站不得非法盗链软件下载连接及抄袭本网站原创内容资源。
  4.违反上述声明者,本网将追究其相关法律责任。谢谢!

分享到:
更多


关于我们
网站介绍
联系我们
付款方式
银行汇款
货到付款
发货方式
快递运输
上门自提
售后服务
退换货政策
质保承诺
购买方式
购物流程
在线订购

公司名称:深圳市乾龙盛电子科技有限公司   永久域名:http://www.pic16.net  网站名称:单片机工具之家
公司地址:广东省深圳市宝安区龙华镇民治路牛栏前大厦15楼A1502室  电话:0755-28187975  13715306011  联系人:唐先生
展销柜台:广东省深圳市福田区新亚洲电子二期三楼N3D033室(华强电子世界附件)【查看地图】  联系电话:0755-82543360
:淘宝商店   :qls@cxqmcu.com   :qls@cxqmcu.com
销售点击Q我:243355504 (唐永红)先生   技术支持点击Q我:443935535 (钟先生)
网站版权:单片机工具之家  粤ICP备09028690号