新聞中心

HT66F50的應用

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
今年有些意外,還得研究研究HT66F50。PDF里面已經(jīng)講解了它強大的功能,這里我就不講了。(個人覺得我這種條件下使用,芯片上沒有集成串口通信,有點遺憾。)

下面我簡單介紹一下我在使用的過程中遇到的一些和46F49E/46RU232之間的區(qū)別:

本文引用地址:http://butianyuan.cn/article/201611/321151.htm

一、使用過程的區(qū)別:

1.從新開發(fā)環(huán)境IDE-3000中集成的頭文件來看,66F50只給出了相應寄存器的入口地址申明,而并沒有像其他兩款芯片的頭文件一樣給出每一個I/O的申明,這使得在使用過程中很是不方便(個人覺得)。因此不得不在使用之前,自己將對應的I/O在頭文件申明一遍。

2.66F50引腳的重置功能更加強大。--這也導致在使用過程中對相應寄存器的設(shè)置變得更加復雜,不過習慣和熟悉了就好。

3.從個人學習和使用條件上而言,這款芯片上沒有集成串口功能,有點遺憾。不過這也符合盛群公司在芯片命名上的特點。比如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; //拉高控制,準備寫數(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++;
}
}


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作為時鐘
_pbc=0x00; //設(shè)置pb口為輸出模式
_pbpu=0xff; //帶上拉電阻
_pac=0xff; //PA口全部用于輸入
_papu=0xff; //PA口帶上拉電阻
}

void main()
{
init(); //初始化單片機
init12864(); //初始化12864
com(0x01); //清屏
delay(5);
com(0x83); //寫入顯示地址
delay(5);
dat(1); //寫入數(shù)據(jù)
while(1);
}

要寫的東西太多了,基于時間的關(guān)系,現(xiàn)在就只能寫到這里了,以后有時間再寫吧!



關(guān)鍵詞: HT66F50串口通

評論


技術(shù)專區(qū)

關(guān)閉