找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stm32c8t6 lcd1602的设计源码

[复制链接]
跳转到指定楼层
楼主
ID:311924 发表于 2018-4-19 19:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如附件所示

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

  2. unchar count,s1num;
  3. char miao,shi,fen;
  4. unchar table[] =  "      ZNSYS    ";
  5. unchar table1[] =  "    00 00.00";

  6. void LCD_GPIO_init(void){
  7.         GPIO_InitTypeDef GPIO_InitStructure;
  8.         //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  9.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
  10.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
  11.         DBGMCU_CR&=0xFFFFFFDF;
  12.        
  13.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  15.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;       
  16.         GPIO_Init(GPIOB, &GPIO_InitStructure);       
  17.        
  18.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  20.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;       
  21.         GPIO_Init(GPIOB, &GPIO_InitStructure);       
  22.                
  23.        
  24.         GPIO_SetBits(GPIOB,GPIO_Pin_All);  
  25. }

  26. void LCD_GPIO_WriteData(unchar data)
  27. {
  28.         part_h_o=((data&0x80)>>7);
  29.         part_g_o=((data&0x40)>>6);
  30.         part_f_o=((data&0x20)>>5);
  31.         part_e_o=((data&0x10)>>4);
  32.         part_d_o=((data&0x08)>>3);
  33.         part_c_o=((data&0x04)>>2);
  34.         part_b_o=((data&0x02)>>1);
  35.         part_a_o=((data&0x01));
  36. }

  37. unchar LCD_GPIO_RedData(void)
  38. {
  39.         unchar data=0x00;
  40.         data=0x80&(data+0x7f+part_a_i);
  41.         data=0xc0&(data+0x3f+part_b_i);
  42.         data=0xe0&(data+0x1f+part_c_i);
  43.         data=0xf0&(data+0x0f+part_d_i);
  44.         data=0xf8&(data+0x07+part_e_i);
  45.         data=0xfc&(data+0x03+part_f_i);
  46.         data=0xfe&(data+0x01+part_g_i);
  47.         data=0xff&(data+0x00+part_h_i);
  48.         return data;
  49. }
  50. void LCD_Write_com(unchar com)
  51. {
  52.         lcd_rs=0;
  53.         lcd_en=0;
  54.         LCD_GPIO_WriteData(com);
  55.         delay_us(50);
  56.         lcd_en=1;
  57.         delay_us(50);
  58.         lcd_en=0;       
  59. }

  60. void LCD_Write_date(unchar date)
  61. {

  62.         lcd_rs=1;
  63.         lcd_en=0;
  64.         LCD_GPIO_WriteData(date);
  65.         delay_us(50);
  66.         lcd_en=1;
  67.         delay_us(50);
  68.         lcd_en=0;       
  69. }

  70. void LCD_Init(void)
  71. {

  72.         unchar num;

  73.         lcd_en=0;
  74.         fen=59;
  75.         miao=53;
  76.         shi=23;             
  77.   lcd_rw=0;
  78.         LCD_Write_com(0x38);//16*2显示,5*7点阵,8位数据接口
  79.         LCD_Write_com(0x0c);//开显示,不显示光标
  80.         LCD_Write_com(0x06);//写个字符地址加一
  81.         LCD_Write_com(0x01);//显示清0,数据指针清零
  82.         LCD_Write_com(0x80);
  83.         for(num=0;num<15;num++)
  84.                 {

  85.                         LCD_Write_date(table[num]);
  86.                         delay_us(50);
  87.                 }
  88.         LCD_Write_com(0x80+0x40);

  89.         for(num=0;num<12;num++)
  90.                 {
  91.                         LCD_Write_date(table1[num]);
  92.                         delay_us(50);

  93.                 }
  94. }

  95. void Write_num(unchar add,unchar date){//add 4 7 10
  96.         unchar shi,ge;
  97.         shi=date/10;
  98.         ge=date%10;
  99.         LCD_Write_com(0x80+0x40+add);
  100.         LCD_Write_date(0x30+shi);
  101.         LCD_Write_date(0x30+ge);
  102. }
  103. /*void write_sfm(unchar add,unchar date)
  104. {
  105.         unchar shi,ge;
  106.         shi=date/10;
  107.         ge=date%10;
  108.         LCD_Write_com(0x80+0x40+add);
  109.         LCD_Write_date(0x30+shi);
  110.         LCD_Write_date(0x30+ge);
  111. }
  112. void keyscan()
  113. {
  114.         if(s1==0)       
  115.         {
  116.                 delay(5);
  117.                 if(s1==0)
  118.                 {        s1num++;
  119.                         while(!s1);
  120.                         if(s1num==1)
  121.                         {
  122.                                 TR0=0;
  123.                                 LCD_Write_com(0x80+0x40+10);
  124.                                 LCD_Write_com(0x0f);
  125.                         }
  126.         }
  127.                         if(s1num==2)
  128.                         {
  129.                                 write_com(0x80+0x40+7);
  130.                         }
  131.                         if(s1num==3)
  132.                         {
  133.                                 write_com(0x80+0x40+4);
  134.                         }
  135.                         if(s1num==4)
  136.                         {
  137.                                 s1num=0;
  138.                                 write_com(0x0c);
  139.                         }

  140.                                
  141.                 }
  142.                 if(s1num!=0)
  143.                 {
  144.                         if(s2==0)
  145.                         {
  146.                                 delay(5);
  147.                                 if(s2==0)
  148.                                 {
  149.                                         while(!s2);
  150.                                         if(s1num==1)
  151.                                         {
  152.                                                 miao++;
  153.                                                 if(miao==60)
  154.                                                         miao=0;
  155.                                                 write_sfm(10,miao);
  156.                                                 write_com(0x80+0x40+10);
  157.                                                
  158.                                                
  159.                                         }
  160.                                         if(s1num==2)
  161.                                         {
  162.                                                 fen++;
  163.                                                 if(fen==60)
  164.                                                         fen=0;
  165.                                                 write_sfm(7,fen);
  166.                                                 write_com(0x80+0x40+7);
  167.                                         }
  168.                                         if(s1num==3)
  169.                                         {
  170.                                                 shi++;
  171.                                                 if(shi==24)
  172.                                                         shi=0;
  173.                                                 write_sfm(4,shi);
  174.                                                 write_com(0x80+0x40+4);
  175.                                         }
  176.                                 }
  177.                         }
  178.                         if(s3==0)
  179.                         {
  180.                                 delay(5);
  181.                                 if(s3==0)
  182.                                 {
  183.                                         while(!s3);
  184.                                         if(s1num==1)
  185.                                         {
  186.                                                 if(miao==0)
  187.                                                 {
  188.                                                         miao=59;
  189.                                                         write_sfm(10,miao);
  190.                                                         write_com(0x80+0x40+10);
  191.                                
  192.                                                 miao--;
  193.                                                 if(miao==-1)
  194.                                                         miao=59;
  195.                                                 write_sfm(10,miao);
  196.                                                 write_com(0x80+0x40+10);
  197.                                         }
  198.                                         if(s1num==2)
  199.                                         {
  200.                                                 fen--;
  201.                                                 if(fen==-1)
  202.                                                         fen=59;
  203.                                                 write_sfm(7,fen);
  204.                                                 write_com(0x80+0x40+7);
  205.                                         }
  206.                                         if(s1num==3)
  207.                                         {
  208.                                                 shi--;
  209.                                                 if(shi==-1)
  210.                                                         shi=23;
  211.                                                 write_sfm(4,shi);
  212.                                                 write_com(0x80+0x40+4);
  213.                                         }
  214.                                 }
  215.                         }
  216.                 }
  217. }
  218. void main()
  219. {
  220.         LCD_init();
  221.         while(1)
  222.         {
  223.                 keyscan();
  224.                
  225.         }
  226. //        while(1);
  227. }
  228. /////////////////////////////////////////////////////////////////////////////////////此处属于中断

  229. void timer0() interrupt 1
  230. ……………………

  231. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
LCD1602.zip (2.16 KB, 下载次数: 103)


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

使用道具 举报

沙发
ID:526282 发表于 2019-5-4 09:42 | 只看该作者
老哥好使嘛
回复

使用道具 举报

板凳
ID:168926 发表于 2019-11-29 19:18 | 只看该作者
这个可以用吗
回复

使用道具 举报

地板
ID:917844 发表于 2021-5-10 18:58 | 只看该作者
有接线图吗
回复

使用道具 举报

5#
ID:663396 发表于 2021-5-12 20:13 | 只看该作者
就两文件
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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