今年有些意外,還得研究研究HT66F50。PDF里面已經(jīng)講解了它強(qiáng)大的功能,這里我就不講了。(個(gè)人覺得我這種條件下使用,芯片上沒有集成串口通信,有點(diǎn)遺憾。)下面我簡單介紹一下我在使用的過程中遇到的一些和46F49E/46RU232之間的區(qū)別:
本文引用地址:http://m.butianyuan.cn/article/201611/321151.htm一、使用過程的區(qū)別:
1.從新開發(fā)環(huán)境IDE-3000中集成的頭文件來看,66F50只給出了相應(yīng)寄存器的入口地址申明,而并沒有像其他兩款芯片的頭文件一樣給出每一個(gè)I/O的申明,這使得在使用過程中很是不方便(個(gè)人覺得)。因此不得不在使用之前,自己將對(duì)應(yīng)的I/O在頭文件申明一遍。
2.66F50引腳的重置功能更加強(qiáng)大。--這也導(dǎo)致在使用過程中對(duì)相應(yīng)寄存器的設(shè)置變得更加復(fù)雜,不過習(xí)慣和熟悉了就好。
3.從個(gè)人學(xué)習(xí)和使用條件上而言,這款芯片上沒有集成串口功能,有點(diǎn)遺憾。不過這也符合盛群公司在芯片命名上的特點(diǎn)。比如HT46F49E和HT46RU232兩款芯片中,前者就是不帶串口功能,而后者則帶有串口功能。
二.下面就舉一個(gè)簡單的例子吧。
利用HT66F50在12864上顯示一個(gè)1、***本程序是在其他程序中截取的一部分,看起來有些凌亂和多余。
#include "HT66F50.h"
#define en _pb3 //PB3 --12864使能端口定義
#define rs _pb4 //PB4
#define rw _pa0 //PB5
#define CY _c //進(jìn)位
void delay(unsigned int t)
{
unsigned int x;
for(;t>0;t--)
for(x=110;x>0;x--);
}
void com(unsigned char com)
{
unsigned char i;
delay(2);
rs=1; //拉高控制,準(zhǔn)備寫數(shù)據(jù)
for(i=5;i>0;i--) //先寫5個(gè)1
{
rw=1;
en=1;
en=0;
}
for(i=3;i>0;i--) //寫3個(gè)0 寫指令控制
{
rw=0;
en=1;
en=0;
}
for(i=4;i>0;i--) //寫高4位
{
com=com<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--) //再寫4個(gè)0
{
rw=0;
en=1;
en=0;
}
for(i=4;i>0;i--) //寫低4位
{
com=com<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--) //寫4個(gè)0
{
rw=0;
en=1;
en=0;
}
rs=0;
}
void dat(unsigned char dat)
{
unsigned char i;
delay(2);
rs = 1;
for(i=5;i>0;i--) //先寫4個(gè)1
{
rw=1;
en=1;
en=0;
}
for(i=3;i>0;i--) //RW 寫數(shù)據(jù)控制
{
rw=!rw;
en=1;
en=0;
}
for(i=4;i>0;i--) //寫高4位數(shù)據(jù)
{
dat=dat<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--) //寫4個(gè)0
{
rw=0;
en=1;
en=0;
}
for(i=4;i>0;i--) //寫低4位數(shù)據(jù)
{
dat=dat<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--) //再寫4個(gè)0
{
rw=0;
en=1;
en=0;
}
rs=0; //拉低,數(shù)據(jù)寫完
}
void LCD_string(unsigned char *p)
{
while(*p)
{
dat(*p);
p++;
}
}
void init12864()
{
com(0x01);//清屏
delay(5);
com(0x30);//寫控制字0x30
delay(5);
com(0x30);
delay(5);
com(0x0c);//寫顯示狀態(tài)
delay(5);
com(0x01);//寫清屏指令
delay(5);
com(0x06);
}
void init()
{
_smod=0x01; //使用FH作為時(shí)鐘
_pbc=0x00; //設(shè)置pb口為輸出模式
_pbpu=0xff; //帶上拉電阻
_pac=0xff; //PA口全部用于輸入
_papu=0xff; //PA口帶上拉電阻
}
void main()
{
init(); //初始化單片機(jī)
init12864(); //初始化12864
com(0x01); //清屏
delay(5);
com(0x83); //寫入顯示地址
delay(5);
dat(1); //寫入數(shù)據(jù)
while(1);
}
要寫的東西太多了,基于時(shí)間的關(guān)系,現(xiàn)在就只能寫到這里了,以后有時(shí)間再寫吧!
評(píng)論