欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
在stc15w單片機上的lcd12864顯示源程序(并口方式)
[打印本頁]
作者:
012138ww
時間:
2018-7-8 09:00
標題:
在stc15w單片機上的lcd12864顯示源程序(并口方式)
基于在stc15w上的顯示
LCD12864實驗步驟:
1、將12864按照正確方向插到開發板J4上面;
1、MINI USB連接線給開發板通電下載程序,下載軟件中內部IRC時鐘選擇11.0592MHZ;
2、下載程序后,撥動RP1調節顯示灰度,LCD12864顯示正常(若不行,則LCD12864上的可調電位器也要調節)。
0.jpg
(51.45 KB, 下載次數: 39)
下載附件
2018-7-9 03:32 上傳
單片機源程序如下:
/****************************************Copyright (c)息---------------------------------------------------------------------------------
** 文件名 : main.c
**--------------------------------------------------------------------------------------------------------
** 作 者: 三棱鏡
** 創建日期: 2016-4-25
** 初始版本: V1.0
** 描 述: LCD12864顯示實驗
**--------------修改信息-----------------------------------------------------------------------------------
** 修改人 :
** 修改日期:
** 當前版本:
** 修改記錄:
**********************************************************************************************************/
#include <15W4KxxS4.h>
#include <stdint.h>
#include "config.h"
#include "lcd.h"
#include "hal_delay.h"
/***************************************************************************
* 描 述 : 主函數
* 參 數 : 無
* 返回值 : 無
**************************************************************************/
int main()
{
/////////////////////////////////////////////////
//注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為
// 高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用
//相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
/////////////////////////////////////////////////
P0M1 = 0; P0M0 = 0; //設置P0.0~P0.7為準雙向口
P1M1 = 0; P1M0 = 0; //設置P1.0~P1.7為準雙向口
P3M1 = 0; P3M0 = 0; //設置P3.0~P3.7為準雙向口
P4M1 = 0; P4M0 = 0; //設置P4.0~P4.7為準雙向口
P5M1 = 0; P5M0 = 0; //設置P5.0~P5.7為準雙向口
P2M1 = 0; P2M0 = 0;
LCD_Init(); //LCD初始化
delay_ms(10);
Fill_GDRAM(0x00); //清屏
delay_ms(10);
LCD_ShowString(1,2,8,"LCD12864");
LCD_ShowString(2,2,8,"液晶模塊");
while(1);
}
/*********************************END FILE********************************************/
復制代碼
/****************************************Copyright (c)
**
**--------------文件信息---------------------------------------------------------------------------------
** 文件名 : lcd.c
**--------------------------------------------------------------------------------------------------------
** 作 者: 三棱鏡
** 創建日期: 2016-9-10
** 初始版本: V1.0
** 描 述: LCD12864驅動程序
**--------------修改信息-----------------------------------------------------------------------------------
** 修改人 :
** 修改日期:
** 當前版本:
** 修改記錄:
**********************************************************************************************************/
#include <15W4KxxS4.h>
#include <math.h>
#include "config.h"
#include "lcd.h"
#include "hal_delay.h"
/***************************************************************************
* 描 述 : LCD12864液晶判忙程序。如LCD為“忙”狀態,一直等待直到LCD空閑
* 參 數 : 無
* 返回值 : 無
**************************************************************************/
void Busy(void)
{
uchar busy;
do
{
RW = 1; RS = 0; //讀
E = 1; //使能液晶模塊.0=關閉使能端,1=打開使能端
P0M0=0x00;
P0M1=0x00; //設置P2.0~P2.7為準雙向口
busy=P0; //讀取P2狀態
delay_5us(10);
E = 0; //關閉液晶模塊使能端.0=關閉使能端,1=打開使能端
}while(busy&0x80); //判斷BUSY位是否工作:1=內部在工作,0=空閑
}
/***************************************************************************
* 描 述 : LCD12864液晶模塊從當前地址讀RAM數據
* 參 數 : 無
* 返回值 : Dat:讀取的數據
**************************************************************************/
uchar ReadDat(void)
{
uchar Dat;
P0 = 0xff;
Busy(); //判忙
RW = 1;RS = 1; //讀
E = 1; //使能液晶模塊.0=關閉使能端,1=打開使能端
Dat=P0; //保存讀取的數據
delay_5us(1);
E = 0; //關閉液晶模塊使能端.0=關閉使能端,1=打開使能端
delay_5us(1);
return Dat;
}
/***************************************************************************
* 描 述 : LCD12864液晶命令寫入程序
* 參 數 : cmd[in]:寫入的命令
* 返回值 : 無
**************************************************************************/
void Write_Cmd(uchar cmd)
{
Busy(); //判忙
RW=0; RS=0; //寫指令
P0M1 = 0;
P0M0 = 0xff; //設置P2.0~P2.7為推挽輸出
P0=cmd; //寫入命令
E=1; //使能液晶模塊.0=關閉使能端,1=打開使能端
delay_5us(1);
E=0; //關閉液晶模塊使能端.0=關閉使能端,1=打開使能端
delay_5us(1);
}
/***************************************************************************
* 描 述 : LCD12864液晶數據寫入程序
* 參 數 : dat[in]:寫入的數據
* 返回值 : 無
**************************************************************************/
void Write_Data(uchar dat)
{
Busy(); //判忙
RW=0;RS=1; //寫數據
P0M1 = 0;
P0M0 = 0xff; //設置P2.0~P2.7為推挽輸出
P0=dat; //寫入數據
E =1; //使能液晶模塊
delay_5us(3);
E =0; //關閉液晶模塊使能端
}
/**************************************************************************
* 描 述 : 指定位置顯示單個字符
* 參 數 : row[in]:行,范圍1~4
* :column[in]:列,范圍0~7
* :chr[in]:字符編碼
* 返回值 : 無
**************************************************************************/
void LCD_ShowChar(uchar row,uchar column,uchar chr)
{
uchar Address;
//row判斷第幾行,column判斷第幾列,0x80為液晶行初始地址
if(row == 1)Address=0x80+column;
if(row == 2){Address=0x90+column;}
if(row == 3){Address=0x88+column;}
if(row == 4){Address=0x98+column;}
Write_Cmd(Address); //寫入地址命令到LCD12864
Write_Data(chr); //寫入顯示數據到LCD12864
}
/***************************************************************************
* 描 述 : 字符串顯示
* 參 數 : row[in]:行,范圍1~4
* :column[in]:列,范圍0~7
* :num[in]:字符個數,注意一個漢字=2個字符
* :s[in]:指向待顯示的字符串
* 返回值 : 無
**************************************************************************/
void LCD_ShowString(uchar row,uchar column,uchar num,uchar *s)
{
uchar Address;
//row判斷第幾行,column判斷第幾列,0x80為液晶行初始地址
if(row == 1)Address=0x80+column;
if(row == 2){Address=0x90+column;}
if(row == 3){Address=0x88+column;}
if(row == 4){Address=0x98+column;}
Write_Cmd(Address); //寫入顯示起始地址
while(num) //寫入顯示數據的大小
{
Write_Data(*(s++)); //寫入顯示數據到LCD12864
num--;
}
}
/***************************************************************************
* 描 述 : 填充,當如數數據為0的時候即可實現清屏
* 參 數 : dat[in]:填充的數據
* 返回值 : 無
**************************************************************************/
void Fill_GDRAM(uchar dat)
{
uchar i,j,k;
uchar GDRAM_X=0x80;
uchar GDRAM_Y=0x80;
for(i=0;i<2;i++)
{
for(j=0;j<32;j++)
{
for(k=0;k<8;k++)
{
Write_Cmd(0x34);
Write_Cmd(GDRAM_Y+j);
Write_Cmd(GDRAM_X+k);
Write_Data(dat);
Write_Data(dat);
}
}
GDRAM_X=0x88;
}
Write_Cmd(DRAM_ON);//開啟繪圖模式
Write_Cmd(0x30); //恢復基本指令集,關閉繪圖模式
}
/***************************************************************************
* 描 述 : LCD12864液晶初始化程序
* 參 數 : 無
* 返回值 : 無
**************************************************************************/
void LCD_Init(void)
{
E = 0;
delay_ms(1);
Write_Cmd(0x30); // 基本指令集
delay_ms(1);
Write_Cmd(0x02); // 地址歸位
delay_ms(1);
Write_Cmd(0x0c); // 整體顯示打開,游標關閉
delay_ms(1);
Write_Cmd(0x06); // 游標右移
delay_ms(1);
Write_Cmd(0x80); // 設定顯示的起始地址
delay_ms(1);
Write_Cmd(0x01); // 清除顯示
delay_ms(10); // 這個延時必須要有,否則可能會出現花屏
}
/*********************************END FILE********************************************/
復制代碼
所有資料51hei提供下載:
實驗52 - LCD12864顯示字符漢字.rar
(90.61 KB, 下載次數: 135)
2018-7-8 08:59 上傳
點擊文件名下載附件
壓縮包
下載積分: 黑幣 -5
作者:
linyin
時間:
2018-7-12 18:28
感覺好高科技,能不能教我兩招?
作者:
zxq9781
時間:
2018-7-16 09:49
無法下載,扣了10幣
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1