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

Void

  • 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 & (1 << i))                 {                         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA);                 }                 else                 {                         DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SDA);                 }                 //__delay_cycles(100);                 DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);                 DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);         } } static Void SelectRow(uint8 row) {           //row -= 1;         row |= DOTLED_ROW_PIN & 0xe0;         DOTLED_ROW_PORT = row; } static Void FlipLatchLine(Void) {         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT);         DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKT); } Void InitDotLedPort(Void) {         DOTLED_LINE_PORT &= ~(_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 &= 0xf0;         DOTLED_ROW_DDR |= 0x1f; } Void EnableRow(boolean IsEnable) {         if(IsEnable)         {                 DOTLED_ROW_PORT &= ~_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&0x0f)!=0x0f) //是否有按键按下 {delayms(1); //延时去抖动 if((PINC&0x0f)!=0x0f) //有按下则判断 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //复位 PORTC=0x0f; while((PINC&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 & 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

  • 《51单片机C语言应用程序实例精讲》

    /* 4位8段数码管分别动态显示“1234”, */   #include "7LEDShow.h"   Void main() {        DIGPORT = 0;                                    // 关闭显示               TMOD = 0x01;                                         // T0工作方式1          /* 2ms 定时设置 */        time0_tmp = 65536-time0*fosc/12;        TH0 = (time0_tmp/256);        TL0 = (time0_tmp%256);               TR0 = 1;        ET0 = 1;        EA = 1;               digbit = 0x01;                                         // 从第一位数码管开始

    标签: 51单片机C语言 应用程序

    上传时间: 2013-12-12

    上传用户:kachleen

  • I2C总线驱动程序

    1 /**————————————————————2 〖说明〗I2C总线驱动程序(用两个普通IO模拟I2C总线)3 包括100Khz(T=10us)的标准模式(慢速模式)选择,4 和400Khz(T=2.5us)的快速模式选择,5 默认11.0592Mhz的晶振。6 〖文件〗PCF8563T.C ﹫2001/11/2 77 〖作者〗龙啸九天 c51@yeah.net http://www.c51bbs.co /8 〖修改〗修改建议请到论坛公布 http://www.c51bbs.co m9 〖版本〗V1.00A Build 080310 —————————————————————*/1112 #ifndef SDA13 #define SDA P0_014 #define SCL P0_115 #endif1617 extern uchar SystemError;1819 #define uchar unsigned char20 #define uint unsigned int21 #define Byte unsigned char22 #define Word unsigned int23 #define bool bit24 #define true 125 #define false 02627 #define SomeNOP(); _nop_();_nop_();_nop_();_nop_();2829 /**--------------------------------------------------------------------------------30 调用方式:Void I2CStart(Void) ﹫2001/07/0 431 函数说明:私有函数,I2C专用32 ---------------------------------------------------------------------------------*/33 Void I2CStart(Void)34 {35 EA=0;36 SDA=1; SCL=1; SomeNOP();//INI37 SDA=0; SomeNOP(); //START38 SCL=0;39 }4041 /**--------------------------------------------------------------------------------42 调用方式:Void I2CStop(Void) ﹫2001/07/0 443 函数说明:私有函数,I2C专用44 ---------------------------------------------------------------------------------*/45 Void I2CStop(Void)46 {47 SCL=0; SDA=0; SomeNOP(); //INI48 SCL=1; SomeNOP(); SDA=1; //STOP49 EA=1;50 }5152 /**--------------------------------------------------------------------------------53 调用方式:bit I2CAck(Void) ﹫2001/07/0 454 函数说明:私有函数,I2C专用,等待从器件接收方的应答55 ---------------------------------------------------------------------------------*/56 bool WaitAck(Void)57 {58 uchar errtime=255;//因故障接收方无ACK,超时值为255。59 SDA=1;SomeNOP();60 SCL=1;SomeNOP();61 while(SDA) {errtime--; if (!errtime) {I2CStop();SystemError=0x11;return false;}}62 SCL=0;63 return true;

    标签: I2C 总线 驱动程序

    上传时间: 2014-04-11

    上传用户:xg262122

  • ADS1210 ADS1211 C程序

    include "macrodefine.h"#include "lpc2294.h" //ADS1210初始化子程序Void AD_Init(Void){ Delayus(2); SPI1_Communation(0x64); SPI1_Communation(0x72); //单极性,SDOUT独立,先MSB,REF使用内部 SPI1_Communation(0x20); //自校准模式,增益1,通道0 SPI1_Communation(0x87); //TURBO=16, SPI1_Communation(0xa0); //数据更新率100}//读取ADS1210转换结果子程序uint32 Read_AD_Data(Void){ uint8 i=0; uint8 Data_Temp[3]; uint32 Result_HEX=0; Delayus(1); SPI1_Communation(0xc0); for(i=0;i<3;i++) {  Data_Temp[i] =SPI1_Communation(0xff); }

    标签: ADS 1210 1211 C程序

    上传时间: 2013-10-10

    上传用户:suicone

  • C语言函数大全(语法着色版)

        C语言函数大全,已包含绝大部分的函数。每个函数包含函数名,功能,用法,举例,内容详尽。希望对大家有所帮助~~   函数名: abort   功 能: 异常终止一个进程   用 法: Void abort(Void);   程序例:   #include   #include   int main(Void)   {   printf("Calling abort()\n");   abort();   return 0; /* This is never reached */   }   函数名: abs   功 能: 求整数的绝对值   用 法: int abs(int i);   程序例:   #include   #include   int main(Void)   {   int number = -1234;   printf("number: %d absolute value: %d\n", number, abs(number));   return 0;   }

    标签: C语言 函数

    上传时间: 2013-12-06

    上传用户:feifei0302

  • 飞思卡尔智能车的舵机测试程序

    飞思卡尔智能车的舵机测试程序 #include <hidef.h>      /* common defines and macros */#include <MC9S12XS128.h>     /* derivative information */#pragma LINK_INFO DERIVATIVE "mc9s12xs128" Void SetBusCLK_16M(Void)             {       CLKSEL=0X00;        PLLCTL_PLLON=1;          //锁相环电路允许位    SYNR=0x00 | 0x01;        //SYNR=1    REFDV=0x80 | 0x01;          POSTDIV=0x00;            _asm(nop);              _asm(nop);    while(!(CRGFLG_LOCK==1));       CLKSEL_PLLSEL =1;          } Void PWM_01(Void) {     //舵机初始化   PWMCTL_CON01=1;    //0和1联合成16位PWM;    PWMCAE_CAE1=0;    //选择输出模式为左对齐输出模式    PWMCNT01 = 0;     //计数器清零;    PWMPOL_PPOL1=1;    //先输出高电平,计数到DTY时,反转电平    PWMPRCLK = 0X40;    //clockA 不分频,clockA=busclock=16MHz;CLK B 16分频:1Mhz     PWMSCLA = 0x08;    //对clock SA 16分频,pwm clock=clockA/16=1MHz;         PWMCLK_PCLK1 = 1;   //选择clock SA做时钟源    PWMPER01 = 20000;   //周期20ms; 50Hz;    PWMDTY01 = 1500;   //高电平时间为1.5ms;     PWME_PWME1 = 1;   

    标签: 飞思卡尔智能车 舵机 测试程序

    上传时间: 2013-11-04

    上传用户:狗日的日子

  • VC代码收集

    一、改变视图背景色:     在CView的OnDraw函数中添写如下一段程序代码:     Void CFileNameView::OnDraw(CDC* pDC)     {  CFileNameDoc* pDoc = GetDocument();  ASSERT_VALID(pDoc);  CRect rectClient;  CBrush brushBkColor;  GetClientRect(rectClient);  brushBkColor.CreateSolidBrush(RGB(255,0,0)); //颜色设置  pDC->DPtoLP(rectClient);  pDC->FillRect(rectClient,&brushBkColor);  …     }

    标签: VC代码

    上传时间: 2013-10-27

    上传用户:liuqy

  • c8051f330 C程序源代码

    //------------------------------------------------------------------------------------//此程序为ADC转换程序,可以选择向ADC0BUSY写1或用定时器0,1,2,3作为ADC的启动信号。////------------------------------------------------------------------------------------//头文件定义//------------------------------------------------------------------------------------//#include <c8051f330.h>               #include <stdio.h> //-----------------------------------------------------------------------------// 定义16位特殊功能寄存器//----------------------------------------------------------------------------- sfr16 ADC0     = 0xbd;                sfr16 TMR0RL   = 0xca;                                                                                               sfr16 TMR1RL   = 0xca;                 sfr16 TMR2RL   =0xca;                 sfr16 TMR3RL   =0xca;               sfr16 TMR0     = 0xCC;              sfr16 TMR1     = 0xCC;                sfr16 TMR2     = 0xcc;               sfr16 TMR3     = 0xcc;               //-----------------------------------------------------------------------------// 全局变量定义//-----------------------------------------------------------------------------char i;int result;                       //-----------------------------------------------------------------------------//定义常量//-----------------------------------------------------------------------------#define SYSCLK       49000000        #define SAMPLE_RATE  50000             //------------------------------------------------------------------------------------// 定义函数//------------------------------------------------------------------------------------Void SYSCLK_Init (Void);Void PORT_Init (Void);Void Timer0_Init (int counts);Void Timer1_Init (int counts);Void Timer2_Init (int counts);Void Timer3_Init (int counts);Void ADC0_Init(Void);Void ADC0_ISR (Void);Void ADC0_CNVS_ADC0h(Void);//------------------------------------------------------------------------------------// 主程序//------------------------------------------------------------------------------------ Void main (Void) {       int ADCRESULT[50] ;  int k;                     PCA0MD &= ~0x40;                       // 禁止看门狗                   SYSCLK_Init ();                        PORT_Init ();    Timer0_Init (SYSCLK/SAMPLE_RATE);     //Timer1_Init (SYSCLK/SAMPLE_RATE);     //选择相应的启动方式   //Timer2_Init (SYSCLK/SAMPLE_RATE);    //Timer3_Init (SYSCLK/SAMPLE_RATE);          ADC0_Init();   EA=1;   while(1)            {     //ADC0_CNVS_ADC0h();  k=ADC0;    ADCRESULT[i]=result;                   //此处设断点,观察ADCRESULT的结果          }   }

    标签: c8051f330 C程序 源代码

    上传时间: 2013-10-13

    上传用户:SimonQQ