|
單片機(jī)用的是AVR系列的Atmega64 LCD1602源程序+proteus仿真
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)源程序如下:
- #include <iom64v.h>
- #include <macros.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define RS_H PORTE|=BV(0)
- #define RS_L PORTE&=~BV(0)
- #define RW_H PORTE|=BV(1)
- #define RW_L PORTE&=~BV(1)
- #define EN_H PORTE|=BV(2)
- #define EN_L PORTE&=~BV(2)
- void delay(uint ms)
- {
- uint i,j;
- for(i=0;i<ms;i++)
- {
- for(j=0;j<1141;j++);
- }
- }
- void write_com(uchar com) //寫命令函數(shù)
- {
- RS_L; //RS置低,寫指令
- RW_L; //RW置低,寫操作
- PORTD=com;
- delay(1);
- EN_H; //使能端拉高
- delay(1);
- EN_L; //使能端拉低
- }
- void write_dat(uchar dat) //寫數(shù)據(jù)函數(shù)
- {
- RS_H;
- RW_L;
- PORTD=dat;
- delay(1);
- EN_H;
- delay(1);
- EN_L;
- }
- void Lcd1602_init()
- {
- DDRD=0XFF;
- DDRE|=BV(0)|BV(1)|BV(2);
- EN_L;
- write_com(0X38);
- delay(1);
- write_com(0X01);
- delay(1);
- write_com(0X06);
- delay(1);
- write_com(0X0c);
- delay(1);
- }
- void Lcd1602_Display(uchar addr,uchar num,uchar dat)
- {
- write_com(addr+num);
- write_dat(dat);
- }
- void main()
- {
- uchar i;
-
- Lcd1602_init();
- //write_com(0X80+n); n=0,1,2...15 第一行顯示
- //write_com(0x80+0x40+n); n=0,1,2...15 第二行顯示
- Lcd1602_Display(0x80,0,'5');
- Lcd1602_Display(0x80+0x40,0,'5');
-
- }
復(fù)制代碼
所有資料51hei提供下載:
LCD1602.zip
(72.6 KB, 下載次數(shù): 62)
2019-3-29 11:22 上傳
點(diǎn)擊文件名下載附件
|
|