最新日志

发表于:2008-6-5 13:50:29
标签:无标签

0

生活日记

最近一直在忙毕设,好长时间没有更新过了,等忙过这阵,好好整理一下最近做的东西,以后可能主要回做一些软件无线电方向的东西,主要是用FPGA和DSP。希望大家多多支持,多多交流!

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类:    |    来源: 原创

评论(0) | 阅读(101)
发表于:2008-3-5 10:15:22
标签:液晶  NOKIA5110  驱动  单片机  

0

NOKIA5110液晶驱动程序

前一段时间调试过的NOKIA5110液晶的驱动程序,希望对朋友们有用。这款液晶还是挺好用的的20几块钱,可以显示字符,汉字和图形。

rar

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(1) | 阅读(488)
发表于:2008-2-26 17:28:07
标签:AVR  单片机  简介  

0

最近想接触一下AVR,先来个简介吧!

ATmel 挪威设计中心的A先生与V先生,于97年设计出一款使用RISC指令集的8位单片机,起名为AVR

AVR 性能简介:

AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点:

1:在相同的系统时钟下AVR运行速度最快;

2: 芯片内部的Flsah、EEPROM、SRAM容量较大;

3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP);

4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;

5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;

6:内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口;丰富的中断源等。

目前支持AVR单片机编译器的语言主要有汇编语言、C语言、BASIC语言等。其中C编译器主要有CodeVisionAVR、AVRGCC、IAR、ICCAVR等,C语言编译器由于它具有功能强大、 运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。

AVR的主要特性

高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。

早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的 CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。

AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。当然这种速度上的升跃,是以高可靠性为其后盾的。

AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。

AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部 RAM。

AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。

AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。其中与8/16位定时器配合的具有多达10 位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。AVR单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。

增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。

面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4种组合的多机通信。SPI支持主/从机等4种组合的多机通信。

AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。

AVR单片机具有多种省电休眠模式,且可宽电压运行(5-2.7V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。 AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定时器/计数器、具替换功能的I/O端口…… )于一身,充分体现了单片机技术的从“片自为战”向“片上系统SoC”过渡的发展方向。

综上所述,AVR单片机博采众长,又具独特技术,不愧为8位机中的佼佼者。

AVR系列单片机的选型

AVR单片机系列齐全,可适用于各种不同场合的要求。AVR单片机有3个档次:

低档Tiny系列AVR单片机: 主要有Tiny11/12/13/15/26/28等;

中档AT90S系列AVR 单片机: 主要有AT90S1200/2313/8515/8535等; (正在淘汰或转型到Mega中)

高档ATmega系列AVR单片机: 主要有ATmega8/16/32/64/128( 存储容量为8/16/32/64/128 KB)以及ATmega8515/8535等。

点击此处查看原文 >>

系统分类: 汽车电子   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(523)
发表于:2008-2-19 15:00:50
标签:ST7920  液晶12864  图形显示  GDRAM  

1

ST7920为芯片的液晶12864图形显示注意问题

ST7920控制器关于图形的显示部分使用过程中总结的经验,希望对初学者有帮助。最后有显示图形的测试程序。

1.         关于液晶屏上的地址

屏幕上的地址的安排如下:

0x80

0x81

0x82

0x83

0x84

0x85

0x86

0x87

0x90

0x91

0x92

0x93

0x94

0x95

0x96

0x97

0x88

0x89

0x8a

0x8b

0x8c

0x8d

0x8e

0x8f

0x98

0x99

0x9a

0x9b

0x9c

0x9d

0x9e

0x9f

2.         关于绘图方式

利用绘图方式时,要注意几个问题:

a)         注意液晶屏上不同位置对应的地址。

b)        在写GDRAM前,先在GDRAM写全0x00。保证写入图形数据后没有噪点。

c)        每次写16位数据前都要先关闭图形显示,写完后开启图形显示。

3.         利用自带字符显示“三”的问题

如果软件用的是KEIL的话,利用ST7920显示“三”时,可能会出现什么都没有显示。其实这是KEIL的一个BUG。是因为无法显示0xfd所造成的。在KEIL文件夹的BIN文件夹下安装以下补丁就可解决。

rar

 

补充一个显示图形的程序:

rar

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(2) | 阅读(982)
发表于:2008-2-17 19:48:35
标签:液晶  12864  单片机  

0

刚刚完成测试的12864液晶显示程序

       今天发一个刚刚完成的12864的程序,控制芯片是ST7920。采用8位并行控制方式。这个测试程序仅仅是测试利用自带字库进行显示。即显示CGROM自带的汉字。

        以后会慢慢补充上CGRAM和GDRAM的显示方式。

        刚刚调通了显示CGRAM内容的程序,利用CGRAM可以自定义四个字型。最后有测试工程。

 

主程序如下:

*************************************************
试验名称:test_lcd12864
试验功能:测试LCD12864的CGROM显示方式
版本 :V1.1
修改时间:2008-2-17晚
修改内容:精简程序,减小不必要的延时
*************************************************/
#include
#include

#define uchar unsigned char
#define uint  unsigned int

void Display(void);

void main(void)
{

 LcdInit();
 LcdClear();
 Display();
}

/********************************
函数名称:Display()显示测试结果
入口参数:无
返回参数:无
********************************/
void Display(void)
{
 DisplayCgrom(0x82,"测试成功");
 DisplayCgrom(0x90,"西安电子科技大学");
 DisplayCgrom(0x8a,"段文博");
 DisplayCgrom(0x9a,"2008-2-17");

 

头文件如下:

#ifndef LCD_12864_2008_02_17
#define LCD_12864_2008_02_17

#include

#define uchar unsigned char
#define uint  unsigned int


sbit LCD_RS=P1^2;  //数据/命令选择
sbit LCD_RW=P1^1;  //读写控制
sbit LCD_EN=P1^0;  //片选信号
#define LCD_DATA P0  //8 bit数据线

#define LOW   0
#define HIGH  1


//初始化指令
#define CLEAR_SCREEN 0x01  //清屏指令:清屏且AC值为00H
#define AC_INIT   0x02  //将AC设置为00H。且游标移到原点位置
#define CURSE_ADD  0x06  //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)
#define FUN_MODE  0x30  //工作模式:8位基本指令集
#define DISPLAY_ON  0x0c  //显示开,显示游标,且游标位置反白
#define DISPLAY_OFF  0x08  //显示关
#define CURSE_DIR  0x14  //游标向右移动:AC=AC+1
#define SET_CG_AC  0x40  //设置AC,范围为:00H~3FH
#define SET_DD_AC  0x80


/*******************************************************
函数名称:delay(uint t)延时函数。对于12M晶振大约延时1ms
入口参数:t
出口参数:无
*******************************************************/
void delay(uint t) 
{
  uint i;
  while(t--)
  {
     for(i=0;i<125;i++)
       ;
  }
}

/*********************************
函数名称:write_cmd(uint lcd_cmd)写指令
入口参数:lcd_cmd
返回参数:无
*********************************/
void WriteCmd12864(uchar lcd_cmd)
{
 LCD_RS=LOW;   
 LCD_RW=LOW;   
 LCD_EN=HIGH;  
 LCD_DATA=lcd_cmd;
 LCD_EN=LOW;   
}


/********************************
函数名称:write_data(uint lcd_data)写数据
入口参数:current_data
返回参数:无
********************************/
void WriteData12864(uchar lcd_data)
{
 LCD_RS=HIGH;
 LCD_RW=LOW;
 LCD_EN=HIGH;
 LCD_DATA=lcd_data;
 LCD_EN=LOW;
}

/********************************
函数名称:Write12864(uint)写数据
入口参数:cmd,data
返回参数:无
********************************/
void Write12864(uchar lcd_cmd,uchar lcd_data)
{
 WriteCmd12864(lcd_cmd);
 WriteData12864(lcd_data);
}

/***************************************************
函数名称:SetCurse(uchar x,uchar y)设置数据指针
入口参数:x,y
出口参数:无
***************************************************/
//void SetCurse(uchar x,uchar y)
//{

//}

/********************************
函数名称:ReadBusy()判忙
入口参数:无
返回参数:"1"忙;"0"不忙
********************************/
void ReadBusy(void)
{
 uchar i="5";
    while(i--);
}

/********************************
函数名称:LcdInit()初始化
入口参数:无
返回参数:无
********************************/
void LcdInit()
{
 delay(50);
 WriteCmd12864(FUN_MODE);
 delay(1);
 WriteCmd12864(FUN_MODE);
 delay(1);
 WriteCmd12864(DISPLAY_ON);
 delay(1);
 WriteCmd12864(CLEAR_SCREEN);
 delay(20);
// WriteCmd12864(CURSE_ADD);
}

/********************************
函数名称:LcdClear()清屏
入口参数:无
返回参数:无
********************************/
void LcdClear(void)
{
 ReadBusy();
 WriteCmd12864(CLEAR_SCREEN);
 delay(3);
}


/********************************
函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字
入口参数:无
返回参数:无
********************************/
void DisplayCgrom(uchar addr,uchar *hz)
{
 ReadBusy();
 WriteCmd12864(addr);
 ReadBusy();
 while(*hz != '\0')
 {
  WriteData12864(*hz);
  hz++;
  ReadBusy();
 }
}

#endif

下面是完整的工程:

rar

下面是测试显示CGRAM内容的工程:

rar

       

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(3) | 阅读(1097)
发表于:2007-12-26 20:56:30
标签:无标签

0

发一个这款单片机上用的电子钟的程序

rar

这个试验用到了液晶LCD1602,时钟芯片DS1302,温度传感器DS18B20,利用四个按键调整时间,Key1选择要调整的项目,Key2加计数,Key3减计数,Key4快速返回.初学者可以参考一下,有什么问题可以交流.博客公告里有我的联系方式.

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 原创

评论(0) | 阅读(576)
发表于:2007-12-10 21:32:50
标签:无标签

0

STC单片机的优点

          最近会有一些初学者问STC单片机和AT系列的区别,现在一般用在学习板上的都是STC系列的.因为支持串口下载,起始STC还有一些优点,我也是从网上找来的.

STC单片机的优点:
加密性强,很难解密或破解,解密费用很高、国内能解密的人少,一般的仿制者望而退步
.
超强抗干扰
:
1
、高抗静电(ESD保护
)
2
、轻松过 2KV/4KV快速脉冲干扰(EFT 测试
)
3
、宽电压,不怕电源抖动

4
、宽温度范围,-40~85

5
I/O 口经过特殊处理

6
、单片机内部的电源供电系统经过特殊处理

7
、单片机内部的时钟电路经过特殊处理

8
、单片机内部的复位电路经过特殊处理

9
、单片机内部的看门狗电路经过特殊处理

三大降低单片机时钟对外部电磁辐射的措施
:
     ——
出口欧美的有力保证

1
、禁止ALE输出
;
2
、如选 6 时钟/机器周期,外部时钟频率可降一半
;
3
、单片机时钟振荡器增益可设为
1/2Gain.
超低功耗
:
1
、掉电模式:典型功耗
<0.1 μ A  
2
、空闲模式:典型功耗
2mA
3
、正常工作模式:典型功耗
4mA-7mA
4
、掉电模式可由外部中断唤醒,适用于电池

    
供电系统,如水表、气表、便携设备等
.
在系统可编程,无需编程器,可远程升级

可送 STC-ISP 下载编程器,1 万片//

可供应内部集成 MAX810 专用复位电路的单片机
,
只有 D 版本才有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时 RESET 脚直接短到地

STC单片机直接替换ATMEL,PHILIPS,Winbond产品

STC89C516RD+
取代
P89C51RD2/RD+/RD,W78E516
STC89C516RD+
取代
AT89C51RD2
STC89C58RD+
取代
PHILIPS P89C51RC2/RC+/RC
STC89C58RD+
取代
AT89C51RC2/RC,89C55
STC89C54RD+,
取代
AT89C55,89S52/53,89S8252
STC89C54RD+,STC89C53RC
取代
W78E54,W78E58

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(620)
发表于:2007-12-1 8:54:30
标签:无标签

0

关于这块开发板的原理图和PCB

        这几天经常有网友跟我要这块开发板的原理图和PCB,也许是想着自己学习一下吧。不过既然想自己动手从制板学起,原理图到是可以参考一下,PCB感觉没有必要,因为原理图争确的话,PCB基本没有什么问题,而且这个学习板对电磁兼容以及干扰斗没有太大的要求,我也只是考虑了一下各个芯片电源的滤波,以及AD输入和参考电压的滤波,其他感觉没有什么,也不会有太大影响,自己感觉这块板子布局还是不错的,呵呵......所以如果有想学的朋友可以自己动手试着做一下,从设计原理图,制板,到开发程序,调试,这几个过程完整的走一遍,相信就会对单片机开发有一个整体的了解了,还希望大家有时间多光临我的博客。

       下面是这块板子的原理图,大家可以参考。pdf

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(696)
发表于:2007-11-26 11:10:13
标签:无标签

0

试验板已经调试好,现将演示图片发上来

点击看大图

未装液晶的图片

左右两边的带跳线冒的排针是所有IO的扩展插座。左边从上到下依次为P00~P07,VCC(红色跳线冒),P10~P17。右边从上到下依次为P20~P27,GND,P30~P37。

最下面的黄色跳线冒为现在ADC0831的模拟输入。可以选择从电位器的分压值作为输入,也可以选择检测DS1302备用的纽扣电池(为了美观安装在开发板的背面)的电量。

点击看大图

这是一个综合试验:

ADC0831,DS18B20,DS1302演示试验,数码管显示为采样电压值

 

点击看大图

ADC0831调试试验,调节电位器的值,显示实时采集到的电压。

点击看大图

DS18B20调试试验,DS18B20为开发板右下角最右边一个按键上面外形和三极管一样的东东,用手按在上面就可以改变液晶上显示的数值。

点击看大图

AT24C02调试试验。第一行的数值为从AT24C02读出来得数值。第二行为写进去的数值。

由于用手机拍的色泽很差,真的很遗憾,等借到好的相机一定马上把照片换掉。实际板子比图片漂亮很多,很亮丽!

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(8) | 阅读(1291)
发表于:2007-11-10 19:53:30
标签:无标签

0