?? new_disp.c
字號(hào):
#include "iom16v.h"
#define SS PB4
#define MOSI PB5
#define SCK PB7
#define _asm asm
#define WDR() asm("wdr")
#define SEI() asm("sei")
#define CLI() asm("cli")
#define a1 0x04
#define a2 0x0c
#define a3 0x14
#define a4 0x1c
#define a5 0x24
#define a6 0x2c
#define a7 0x34
#define a8 0x3c
#define a9 0x44
const char S[11]={0xaf,0x06,0x6d,0x4f,0xc6,0xcb,0xeb,0x0e,0xef,0xcf,0x00};
void port_init(void)//口方向設(shè)置
{
DDRA = 0x00;
PORTA = 0x00;
DDRB = 0xff;
DDRC = 0XFC;
DDRD = 0xF0;
}
void delay_us(int time)//微秒級(jí)延時(shí)程序
{
do
{
time--;
}
while (time>1);
}
void delay_ms(unsigned int time)//毫秒級(jí)延時(shí)程序
{
while(time!=0)
{
delay_us(1000);
time--;
}
}/*
void Delay()
{
unsigned char i;
for(i=0;i<10;i++); /*用于調(diào)整CLK 脈沖寬度*/
//}
void SendBit(unsigned char dat,unsigned char bitcnt)
{
unsigned char i;
CLI();
for(i=0;i<bitcnt;i++)
{
if(( dat & 0X80 ) == 0)
PORTB &=(~(1<<MOSI));
else
PORTB |=(1<<MOSI); /*發(fā)送數(shù)據(jù)由高位到低位傳送*/
//Delay();
delay_us(10);
PORTB |=(1<<SCK); /*置時(shí)鐘線為高通知被控器開始接收數(shù)位*/
//Delay();
delay_us(10);
PORTB &=(~(1<<SCK)); /*鉗住總線準(zhǔn)備下一個(gè)數(shù)據(jù)位*/
dat=dat<<1; /*發(fā)送數(shù)據(jù)左移一位*/
}
SEI();
}
void Start_spi()
{
PORTB |=(1<<SS);
PORTB |=(1<<SCK);
PORTB |=(1<<MOSI);
//Delay();
delay_us(10);
PORTB &=(~(1<<SS));PORTB &=(~(1<<SS));
PORTB &=(~(1<<SCK));PORTB &=(~(1<<SCK));
}
void SendByte(unsigned char dat)
{
SendBit(dat,8); /*發(fā)送字節(jié)*/
}
void SENDCOMA(unsigned char com)
{
Start_spi();
SendBit(0X80,4); //*發(fā)送設(shè)置命令I(lǐng)D=100 0*
SendByte(com); //*發(fā)送命令字*
}
void SENDCOMB(unsigned char adr)
{
Start_spi();
SendBit(0XA0,3); /*發(fā)送寫顯示RAM 命令I(lǐng)D=101 */
SendBit(adr,6); /*指定寫入地址*/
}
void disp_init(void)
{
unsigned char i;
SENDCOMA(0X0a); /*禁止WDT溢出標(biāo)志輸出*/
SENDCOMA(0X52); //設(shè)置偏壓,背極數(shù) 定義1/3 偏壓4背極
SENDCOMA(0X30); //*使用內(nèi)部256KRC 振蕩器*
SENDCOMA(0X02); //*啟動(dòng)振蕩器*
SENDCOMA(0X06); //LCDON
SENDCOMA(0X08);//timer dis
SENDCOMB(0x00); //*把數(shù)據(jù)指針指回0 接著寫入數(shù)據(jù)*
for(i=0;i<15;i++) /*寫入16 字節(jié)數(shù)據(jù)*/
{
SendByte(0x0); /*寫入數(shù)據(jù)*/
}
}
void disp_off(void)
{
SENDCOMA(0X04);//lcdoff
SENDCOMA(0X00);//sys dis
//SENDCOMA(0X0c);//timer en
}
void disp(char add,char dat)
{
switch(add)
{
case 1: add=a1;break;
case 2: add=a2;break;
case 3: add=a3;break;
case 4: add=a4;break;
case 5: add=a5;break;
case 6: add=a6;break;
case 7: add=a7;break;
case 8: add=a8;break;
case 9: add=a9;break;
}
SENDCOMB(add); //write address
SendByte(S[dat]); //write data
//SendByte(S[dat]); //write data
}
void main(void)
{
char i,j;
port_init();
disp_init();
for(i=1,j=9;i<10;i++,j--) disp(i,j);
//disp(2,3);
while(1);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -