今年有些意外,還得研究研究HT66F50。PDF里面已經(jīng)講解了它強大的功能,這里我就不講了。(個人覺得我這種條件下使用,芯片上沒有集成串口通信,有點遺憾。)下面我簡單介紹一下我在使用的過程中遇到的一些和46F49E/46RU232之間的區(qū)別:
本文引用地址:http://2s4d.com/article/201611/321151.htm一、使用過程的區(qū)別:
1.從新開發(fā)環(huán)境IDE-3000中集成的頭文件來看,66F50只給出了相應(yīng)寄存器的入口地址申明,而并沒有像其他兩款芯片的頭文件一樣給出每一個I/O的申明,這使得在使用過程中很是不方便(個人覺得)。因此不得不在使用之前,自己將對應(yīng)的I/O在頭文件申明一遍。
2.66F50引腳的重置功能更加強大。--這也導(dǎo)致在使用過程中對相應(yīng)寄存器的設(shè)置變得更加復(fù)雜,不過習(xí)慣和熟悉了就好。
3.從個人學(xué)習(xí)和使用條件上而言,這款芯片上沒有集成串口功能,有點遺憾。不過這也符合盛群公司在芯片命名上的特點。比如HT46F49E和HT46RU232兩款芯片中,前者就是不帶串口功能,而后者則帶有串口功能。
二.下面就舉一個簡單的例子吧。
利用HT66F50在12864上顯示一個1、***本程序是在其他程序中截取的一部分,看起來有些凌亂和多余。
#include "HT66F50.h"
#define en _pb3 //PB3 --12864使能端口定義
#define rs _pb4 //PB4
#define rw _pa0 //PB5
#define CY _c //進位
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個1
{
rw=1;
en=1;
en=0;
}
for(i=3;i>0;i--) //寫3個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個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個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個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個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個0
{
rw=0;
en=1;
en=0;
}
rs=0; //拉低,數(shù)據(jù)寫完
}
void LCD_string(unsigned char *p)
{
while(*p)
{
dat(*p);
p++;