虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

amp

  • 16 16点阵显示汉字原理及显示程序

    16 16点阵显示汉字原理及显示程序 #include "config.h" #define                DOTLED_LINE_PORT        PORTB #define                DOTLED_LINE_DDR                DDRB #define                DOTLED_LINE_PIN                PINB #define                DOTLED_LINE_SCKT        PB1 #define                DOTLED_LINE_SCKH        PB5 #define                DOTLED_LINE_SDA                PB3 #define                DOTLED_ROW_PORT                PORTC #define                DOTLED_ROW_DDR                DDRC #define                DOTLED_ROW_PIN                PINC #define                DOTLED_ROW_A0                PC0 #define                DOTLED_ROW_A1                PC1 #define                DOTLED_ROW_A2                PC2 #define                DOTLED_ROW_A3                PC3 #define                DOTLED_ROW_E                PC4 uint8 font[] = { /*--  调入了一幅图像:这是您新建的图像  --*/ /*--  宽度x高度=16x16  --*/ 0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10, 0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00 }; static void TransmitByte(uint8 byte); static void SelectRow(uint8 row); static void FlipLatchLine(void); static void TransmitByte(uint8 byte) {         uint8 i;                  for(i = 0 ; i < 8 ; i ++)         {                 if(byte &amp; (1 << i))                 {                         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA);                 }                 else                 {                         DOTLED_LINE_PORT &amp;= ~_BV(DOTLED_LINE_SDA);                 }                 //__delay_cycles(100);                 DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);                 DOTLED_LINE_PORT &amp;= ~_BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);         } } static void SelectRow(uint8 row) {           //row -= 1;         row |= DOTLED_ROW_PIN &amp; 0xe0;         DOTLED_ROW_PORT = row; } static void FlipLatchLine(void) {         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT);         DOTLED_LINE_PORT &amp;= ~_BV(DOTLED_LINE_SCKT); } void InitDotLedPort(void) {         DOTLED_LINE_PORT &amp;= ~(_BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH));         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA);         DOTLED_LINE_DDR |= _BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH) | _BV(DOTLED_LINE_SDA);                  DOTLED_ROW_PORT |= 0x1f;         DOTLED_ROW_PORT &amp;= 0xf0;         DOTLED_ROW_DDR |= 0x1f; } void EnableRow(boolean IsEnable) {         if(IsEnable)         {                 DOTLED_ROW_PORT &amp;= ~_BV(DOTLED_ROW_E);         }         else         {                 DOTLED_ROW_PORT |= _BV(DOTLED_ROW_E);         } } void PrintDotLed(uint8 * buffer) {         uint8 i , tmp;                  for(i = 0 ; i < 16 ; i ++)         {                 tmp = *buffer ++;                 TransmitByte(~tmp);                 tmp = *buffer ++;                 TransmitByte(~tmp);                 SelectRow(i);                 FlipLatchLine();         } } void main(void) {         InitDotLedPort();                  EnableRow(TRUE);                  while(1)         {                 PrintDotLed(font);                 __delay_cycles(5000);         }          } //---------------------------------------------------- config.h文件 #ifndef        _CONFIG_H #define        _CONFIG_H //#define                GCCAVR #define                CPU_CYCLES        7372800L #ifndef                GCCAVR #define                _BV(bit)        (1 << (bit)) #endif #define                MSB                0x80 #define                LSB                0x01 #define                FALSE                0 #define                TRUE                1 typedef                unsigned char        uint8; typedef                unsigned int        uint16; typedef                unsigned long        uint32; typedef                unsigned char        boolean; #include <ioavr.h> #include <inavr.h> #include "dotled.h" #endif //-----

    标签: 16 点阵显示 汉字 显示程序

    上传时间: 2013-11-18

    上传用户:mnacyf

  • 4x4鍵盤的设计与制作

    三種方法讀取鍵值􀂄 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。􀂉 中斷式􀂄 在鍵盤按下時產生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態判斷哪個按鍵被按下。􀂄 本實驗採用中斷式實現使用者鍵盤介面。􀂉 掃描法􀂄 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應列的鍵被按下。否則掃描下一行。􀂉 反轉法􀂄 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。􀂄 根據讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結構。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設計電路。 //-----------4X4键盘程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&amp;0x0f)!=0x0f) //是否有按键按下 {delayms(1); //延时去抖动 if((PINC&amp;0x0f)!=0x0f) //有按下则判断 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //复位 PORTC=0x0f; while((PINC&amp;0x0f)!=0x0f) //按键是否放开 { display(data); } i=4; //计算返回码 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0x80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的键盘码 } } else return 17; //没有按键按下 }

    标签: 4x4 鍵盤

    上传时间: 2013-11-12

    上传用户:a673761058

  • 51单片机C语言编程实例

    C语言编程基础:1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD &amp; 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3    2. void main( void )  //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口    3. {    4.  P1_3 = 1;   //给P1_3赋值1,引脚P1.3就能输出高电平VCC    5.  While( 1 );  //死循环,相当 LOOP: goto LOOP;    6. }   注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。在某引脚输出低电平的编程方法:(比如P2.7引脚)代码1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2.7    2. void main( void )  //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口    3. {    4.  P2_7 = 0;   //给P2_7赋值0,引脚P2.7就能输出低电平GND    5.  While( 1 );  //死循环,相当 LOOP: goto LOOP;    6. }   在某引脚输出方波编程方法:(比如P3.1引脚)代码1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P3.1    2. void main( void )  //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口    3. {    4.  While( 1 )  //非零表示真,如果为真则执行下面循环体的语句    5.  {    6. P3_1 = 1;  //给P3_1赋值1,引脚P3.1就能输出高电平VCC    7.   P3_1 = 0;  //给P3_1赋值0,引脚P3.1就能输出低电平GND    8.  }    //由于一直为真,所以不断输出高、低、高、低……,从而形成方波    9. }   将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) )

    标签: 51单片机C语言 编程实例

    上传时间: 2013-11-02

    上传用户:zengduo

  • 使用jtag接口通过网口烧写程序

    什么是JTAG 到底什么是JTAG呢? JTAG(Joint Test Action Group)联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port&amp;#0;测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System rogrammable&amp;#0;在线编程),对FLASH等器件进行编程。 JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程 JTAG的一些说明 通常所说的JTAG大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一般支持JTAG的CPU内都包含了这两个模块。 一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。 上面说的只是JTAG接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。 例如下载程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要参照SOC DataSheet的寄存器说明,设置RAM的基地址,总线宽度,访问速度等等。有的SOC则还需要Remap,才能正常工作。运行Firmware时,这些设置由Firmware的初始化程序完成。但如果使用JTAG接口,相关的寄存器可能还处在上电值,甚至时错误值,RAM不能正常工作,所以下载必然要失败。要正常使用,先要想办法设置RAM。在ADW中,可以在Console窗口通过Let 命令设置,在AXD中可以在Console窗口通过Set命令设置。

    标签: jtag 接口 烧写程序

    上传时间: 2013-10-23

    上传用户:aeiouetla

  • FPGA,SOPC简明教程

    FPGA&amp;SOPC简明教程

    标签: FPGA SOPC 简明教程

    上传时间: 2013-11-10

    上传用户:huql11633

  • WP196-平面显示器中的Xilinx器件

      According to CIBC World Markets, Equity Research, theFlat Panel Display (FPD) industry has achieved sufficientcritical mass for its growth to explode. Thus, it can nowattract the right blend of capital investments and R&amp;Dresources to drive technical innovation toward continuousimprovement in view quality, manufacturing efficiency,and system integration. These in turn are sustainingconsumer interest, penetration, revenue growth, and thepotential for increasing long-term profitability for industryparticipants. CIBC believes that three essential conditionsare now converging to drive the market forward

    标签: Xilinx 196 WP 平面显示器

    上传时间: 2013-10-18

    上传用户:日光微澜

  • 基于FPGA 的方向滤波器指纹图像增强算法实现

    设计了一种基于FPGA纯硬件方式实现方向滤波的指纹图像增强算法。设计采用寄存器传输级(RTL)硬件描述语言(Verilog HDL),利用时分复用和流水线处理等技术,完成了方向滤波指纹图像增强算法在FPGA上的实现。整个系统通过了Modelsim的仿真验证并在Terasic公司的DE2平台上完成了硬件测试。设计共消耗了3716个逻辑单元,最高处理速度可达92.93MHz。以50MHz频率工作时,可在0.5s以内完成一幅256&amp;amp;amp;#215;256指纹图像的增强处理。

    标签: FPGA 方向 指纹 图像增强算法

    上传时间: 2013-10-12

    上传用户:拢共湖塘

  • 8051VHDL代码

    8051参考设计,与其他8051的免费IP相比,文档相对较全,Oregano System 提供 This is version 1.3 of the MC8051 IP core. September 2002: Oregano Systems - Design &amp; Consulting GesmbH Change history: - Improved tb_mc8051_siu_sim.vhd to verify duplex operation. - Corrected problem with duplex operation in file   mc8051_siu_rtl.vhd

    标签: 8051 VHDL 代码

    上传时间: 2014-12-28

    上传用户:tb_6877751

  • MIMO原理及测试

      介绍了MIMO的基本原理,并在此基础上对MIMO在不同移动通信系统中的应用进行了阐述,最后介绍了R&amp;S公司的相应测试解决方案。   1 引言   对于所有的无线通信系统而言,无论是3GPP UMTS这样的移动无线网络,还是像WLAN那样的无线局域网,除了通过高阶调制或更大的信号带宽这样传统的方式来提高数据速率以外,还可以通过多天线技术来提高信道的容量。作为未来移动通信的必选项目,MIMO已经引起了更多的关注,而对于MIMO系统的实现和测试,也成为通信行业的热点及难点。本文在介绍MIMO的基本原理以及在MIMO不同移动通信标准表现形式的基础上,介绍R&amp;S公司提供的相应测试解决方案,可以满足不同客户、不同标准及不同阶段的MIMO系统测试需求。   2 MIMO基本原理   根据不同的传输信道类型,可以在无线系统中使用相应的分集方式。目前,主要的分集方式包括时间分集(不同的时隙和信道编码)、频率分集(不同的信道、扩频和OFDM)以及空间分集等。多天线系统利用的就是空间方式,而MIMO作为典型的多天线系统,可以明显提高传输速率。而在实际的无线系统中,可以根据实际情况使用一种或者多种分集方式。

    标签: MIMO 测试

    上传时间: 2013-12-26

    上传用户:dave520l

  • GSM GPRS&GPS模块 硬件手册

    GSM/GPR&amp;GPS模块 GPRS+GPS二合一 无线通信模块

    标签: GPRS GSM GPS 模块

    上传时间: 2013-10-19

    上传用户:zfyiaaa