?? ht1621.c
字號:
//-----------------------函數聲明--------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
//-----------------------定義HT1261 LCD控制寄存器命令參數-----------------------------------------------
#define BIAS 0X52
#define RC256 0X30
#define SYSTEN 0X02
#define SYSDIS 0X00
#define LCDON 0X06
//-----------------------HT1261 LCD接口管腳聲明--------------------------------------------------------
//sbit lc=PSW^0;
sbit lcd_data=P1^0;
sbit lcd_cs=P1^1;
sbit lcd_wr=P1^3;
//-----------------------定義變量--------------------------------------------------------
#define data_num 16
uchar X1[data_num]; //X1用于存儲需要寫入顯示寄存器的數據
//--------------------------------------------------------------------------------------------------
// 函數名稱: lcdint
// 函數功能: 初始化HT1621
//--------------------------------------------------------------------------------------------------
void lcdint(void) //初始化HT1621.
{
lcd_cs=0;
lcd_wr=1;
_nop_();
lcd_wr=0;
_nop_();
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: sendb0
// 入口參數: id,n id為要送到SPI總線上的數據,n表示把id高位開始的n位送出
// 函數功能: 基本操作,單片機寫數據到總線上,連續送n位數據
// id的最高位為第一位,連續n位數據
//--------------------------------------------------------------------------------------------------
void sendb0(uchar id,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
if(id>=0x80)
lcd_data=1;
else
lcd_data=0;
lcd_wr=1;
_nop_();
_nop_();
lcd_wr=0;
_nop_();
_nop_();
id<<=1;
}
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: sendcom
// 入口參數: command
// 函數功能:送命令字
//--------------------------------------------------------------------------------------------------
void sendcom(uchar command)
{
uchar a=0x80,i=4,d=8;
lcdint();
sendb0(a,i);
sendb0(command,d);
lcd_wr=1;
lcd_cs=1;
lcd_data=1;
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: INT1621
// 函數功能: 初始化設置各控制寄存器
//--------------------------------------------------------------------------------------------------
void INT1621(void)
{
uchar command;
command=BIAS; // 1/3 bais . 4 duty
sendcom(command);
command=RC256; //啟動內部256KRC 振蕩器
sendcom(command);
command=SYSTEN;
sendcom(command);
command=LCDON; //啟動LCD
sendcom(command);
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: send1621data
// 函數功能: 寫數據到ht1621內部的顯示緩沖區RAM,往HT1621 display buffer RAM送要顯示的數據
//--------------------------------------------------------------------------------------------------
void send1621data()
{
uchar a=0x01,b=0x80,c=0x40,d=0x08;
uchar j,k;
lcdint();
sendb0(b,a);
sendb0(c,d); //從display buffer RAM 0x0000 開始
for(j=0;j<16;j++) //將X1[]數組的數據逐個送到RAM
{
k=X1[j];
sendb0(k,d);
}
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: 主函數
//--------------------------------------------------------------------------------------------------
main()
{
for(;;)
{
INT1621();
send1621data();
// ...............
// ...............
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -