找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4081|回复: 0
打印 上一主题 下一主题
收起左侧

7脚12864spi单片机源程序,直接函数调用

[复制链接]
跳转到指定楼层
楼主
7脚12864spi程序,直接函数调用


单片机源程序如下:
  1. #include "yejin.h"

  2. const uchar num[]={
  3. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/

  4. 0X00,0X00,0X08,0X08,0X1F,0X00,0X00,0X00,0X00,0X00,0X04,0X04,0XFC,0X04,0X04,0X00,/*"1",1*/

  5. 0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/

  6. 0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,/*"3",3*/

  7. 0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,/*"4",4*/

  8. 0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/

  9. 0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,/*"6",6*/

  10. 0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,/*"7",7*/

  11. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/

  12. 0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/};
  13. /************微秒延时************/
  14. void delay_us(unsigned long int us)
  15. {
  16. unsigned long int i;

  17. for( i=0;i<us;i++);
  18. }
  19. /**************毫秒延时************/
  20. void delay_ms(unsigned int ms)
  21. {
  22. unsigned int i,j;
  23. for( i=0;i<ms;i++)
  24. for(j=0;j<1141;j++);
  25. }
  26. /*************************************/
  27. void SPI_init(void)
  28. {
  29.   DDRB |= 0xBF;
  30.   SPCR = 0x50; //主机,使能spi,高位先,上升沿起
  31.   SPSR = 0x01; //2倍频
  32. }

  33. //******************端口初始化函数*************
  34. void port_init()
  35. {
  36. DDRB=0Xff;      //SCK、MOSI、SS置位为输出
  37. }
  38. //***************SPI发送************************
  39. void lcd_wrByte(uint data,uint dc)
  40. {
  41.   if(dc==0) DC_0;
  42.   if(dc==1) DC_1;
  43.   SPDR = data;
  44.   while ((SPSR & 0x80) == 0);
  45. }

  46. /*********************OLED 设置坐标*********************/
  47. void lcd_Set_xy(uchar x, uchar y)
  48. {
  49.         lcd_wrByte(0xb0+y,0);
  50.         lcd_wrByte(((x&0xf0)>>4)|0x10,0);
  51.         lcd_wrByte((x&0x0f)|0x01,0);
  52. }
  53. /*********************OLED复位************************************/
  54. void lcd_CLS(void)
  55. {
  56.         uchar y,x;
  57.         for(y=0;y<8;y++)
  58.         {
  59.                 lcd_wrByte(0xb0+y,0);
  60.                 lcd_wrByte(0x01,0);
  61.                 lcd_wrByte(0x10,0);
  62.                 for(x=0;x<128;x++)
  63.                 lcd_wrByte(0,1);
  64.         }
  65. }
  66. /*********************OLED初始化************************************/
  67. void lcd_Init(void)
  68. {       
  69.         RES_0;
  70.         delay_ms(500);//初始化之前的延时
  71.         RES_1;
  72.         lcd_wrByte(0xae,0);//关闭oled面板
  73.         lcd_wrByte(0x00,0);//设置低列地址
  74.         lcd_wrByte(0x10,0);//设置高列地址
  75.         lcd_wrByte(0x40,0);//设置开始行地址设置映射RAM显示开始行(0x00 0x3F)
  76.         lcd_wrByte(0x81,0);//设置对比控制寄存器
  77.         lcd_wrByte(duibidu,0); // 设置输出对比度
  78.         lcd_wrByte(0xa1,0);//设置列映射     0xa0左右反置 0xa1正常
  79.         lcd_wrByte(0xc8,0);//扫描方向   0xc0上下反置 0xc8正常
  80.         lcd_wrByte(0xa6,0);//设置正常显示
  81.         lcd_wrByte(0xa8,0);//设置多种比列(1到64)
  82.         lcd_wrByte(0x3f,0);//1/64
  83.         lcd_wrByte(0xd3,0);//设置显示补偿(0x00 0x3F)
  84.         lcd_wrByte(0x00,0);//抵消
  85.         lcd_wrByte(0xd5,0);//设置显示时钟分频/振荡器频率
  86.         lcd_wrByte(0x80,0);//设置分割比,设置时钟为100帧/秒
  87.         lcd_wrByte(0xd9,0);//设置pre-charge时期
  88.         lcd_wrByte(0xf1,0);//将预充电设置为15个时钟,放电为1个时钟
  89.         lcd_wrByte(0xda,0);//设置com pin硬件配置
  90.         lcd_wrByte(0x12,0);//
  91.         lcd_wrByte(0xdb,0);//设置vcomh电压
  92.         lcd_wrByte(0x40,0);//取消VCOM等级
  93.         lcd_wrByte(0x20,0);//设置内存寻址模式(0x00/0x01/0x02)
  94.         lcd_wrByte(0x02,0);//页面寻址模式
  95.         lcd_wrByte(0x8d,0);//设置充电泵启用/禁用
  96.         lcd_wrByte(0x14,0);//显示时启用
  97.         lcd_wrByte(0xa4,0);//全部显示开,恢复内存内容显示,输出内存中的内容
  98.         lcd_wrByte(0xa6,0);// 禁用反显示(0xa6/a7)
  99.         lcd_wrByte(0xaf,0);//打开lcd面板
  100.         lcd_CLS(); //初始清屏
  101. }
  102. /*****************功能描述:显示16*16点阵  显示的坐标(x,y),y为页范围0~7****************************/
  103. void lcd_16x16(uchar x,uchar y,uchar N,uchar zi[])
  104. {
  105.         uchar wm=0;
  106.         uint adder=32*N;
  107.         lcd_Set_xy(x,y);
  108.         for(wm = 0;wm < 16;wm++)            //上页
  109.         {
  110.                 //lcd_wrByte(zi[adder],1);
  111.                 adder ++;
  112.         }
  113.         lcd_Set_xy(x,y + 1);
  114.         for(wm = 0;wm < 16;wm++)           //下页
  115.         {
  116.                 //lcd_wrByte(zi[adder],1);
  117.                 adder ++;
  118.         }                  
  119. }
  120. /*******************功能描述:显示8*16         显示的坐标(x,y),y为页范围0~7,N第几个字****************/
  121. void lcd_8x16(uchar x,uchar y,uchar N)
  122. {
  123.         uchar wm=0;
  124.         uint adder=16*N;
  125.         lcd_Set_xy(x , y);
  126.         for(wm = 0;wm < 8;wm++)            //上页
  127.         {
  128.                 lcd_wrByte(num[adder],1);
  129.                 adder ++;
  130.         }
  131.         lcd_Set_xy(x,y + 1);
  132.         for(wm = 0;wm < 8;wm++)           //下页
  133.         {
  134.                 lcd_wrByte(num[adder],1);
  135.                 adder ++;
  136.         }                  
  137. }
  138. /***********功能描述:显示显示BMP图片起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/
  139. void lcd_BMP(uchar x,uchar y,uchar chang,uchar kuan,uchar BMP[])
  140. {
  141.         uchar wm=0,su,hen;
  142.         uint i,j,adder;
  143.         lcd_Set_xy(x,y);
  144.         if(kuan%8==0)  su=kuan/8;
  145.         else su=kuan/8+1;
  146.         for(i = y;i < su;i++)            
  147.         {
  148.                 lcd_Set_xy(x,i);
  149.                 for(j=x;j<chang;j++)
  150.                 {
  151.                  lcd_wrByte(BMP[adder++],1);
  152.                 }
  153.         }
  154.                 
  155. }
复制代码

所有资料51hei提供下载:
液晶.zip (2.26 KB, 下载次数: 245)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表